Compare commits
4 Commits
9eceaacec8
...
f2d1e6e2ae
| Author | SHA1 | Date | |
|---|---|---|---|
| f2d1e6e2ae | |||
| 011a8b42f2 | |||
| 215afddfa7 | |||
| 23431c5e4a |
@@ -87,14 +87,6 @@ _Updated: 2026-05-05 (interns-repo-read-skill-updates done — both skills 0.2.0
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## ⚪ [setup-projects-meta-token-leak] — fix token leak: `setup-projects-meta` falls back to `https://USER:TOKEN@host/...` clone URL on auth failure, persists token in `.git/config`
|
|
||||||
**Status:** ready
|
|
||||||
**Where I stopped:** (not started) — surfaced 2026-05-06 during factory-bootstrap field-test on fresh Win11 laptop. Phase 4 of `/setup-projects-meta` ran `git clone https://git.kzntsv.site/...` first; it failed with `Failed to authenticate user` (Bash tool runs git non-interactive; GCM not available there). Skill auto-retried with `git clone https://USER:TOKEN@host/...` — succeeded BUT git persists the URL with embedded creds in `.git/config` of the cloned repo. Two repos affected (`projects-meta-mcp`, `projects-wiki`). Field-test mitigation: PAT rotated, `git remote set-url origin <clean-url>` in both clones.
|
|
||||||
**Next action:** in `setup-projects-meta/SKILL.md` Phase 4, replace the credential-in-URL retry with the per-invocation extraheader form: `git -c http.extraheader="Authorization: token $T" clone <url> <target>`. The extraheader is request-scoped — git does NOT persist it in the cloned repo's `.git/config`. Verify on the field-test ноуте: re-clone, `git -C <repo> config --get remote.origin.url` should print the bare URL, no token. Bump `setup-projects-meta` version (PATCH — security fix). Update SKILL.md README. Field-test artefact: `.factory/L0/install-log.md` шаг 11c-1 в gitea `OpeItcLoc03/factory`.
|
|
||||||
**Branch:** master
|
|
||||||
<!-- created-by: vitya@.meeting-room (director) / from: factory-bootstrap field-test / 2026-05-06 -->
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## ⚪ [refresh-project-bootstrap] — Run the `project-bootstrap` skill in this repo to refresh its layout to the canonical state (git, .gitignore, README.md, .wiki/, .tasks/, CLAUDE.md). The skill handles both greenfield bootstrap and refresh of existing repos.
|
## ⚪ [refresh-project-bootstrap] — Run the `project-bootstrap` skill in this repo to refresh its layout to the canonical state (git, .gitignore, README.md, .wiki/, .tasks/, CLAUDE.md). The skill handles both greenfield bootstrap and refresh of existing repos.
|
||||||
**Status:** ready
|
**Status:** ready
|
||||||
@@ -222,9 +214,9 @@ version: 0.1.0
|
|||||||
|
|
||||||
**Reference:** правило выкристаллизовалось в брейнсторме interns 2026-05-05, проверено многократно в `.meeting-room/` сессиях. Source content до удаления memory лежал в `feedback_brainstorm_recommend_dont_menu.md` (memory была удалена 2026-05-06 после переноса в `~/.claude/CLAUDE.md`, который сам теперь временный).
|
**Reference:** правило выкристаллизовалось в брейнсторме interns 2026-05-05, проверено многократно в `.meeting-room/` сессиях. Source content до удаления memory лежал в `feedback_brainstorm_recommend_dont_menu.md` (memory была удалена 2026-05-06 после переноса в `~/.claude/CLAUDE.md`, который сам теперь временный).
|
||||||
|
|
||||||
**Status:** ready
|
**Status:** 🟢 Done
|
||||||
**Where I stopped:** (not started)
|
**Where I stopped:** trigger-line `recommend, don't menu` добавлен в `project-bootstrap/assets/CLAUDE.md.template`; ряд добавлен в Step 5.6 trigger→fulfiller table; override уже был упомянут в `recommend-dont-menu/SKILL.md` секция "## Override"; `project-bootstrap` bumped 1.8.0 → 1.9.0 (MINOR — adds trigger to canon set); rebuilt + installed, version 1.9.0 confirmed on disk.
|
||||||
**Next action:** skill-creator: подобрать имя (recommend-dont-menu vs alternatives), выбрать trigger-фразу, создать SKILL.md, добавить triger-line в project-bootstrap template, убрать дубликат из ~/.claude/CLAUDE.md.
|
**Next action:** (none — kept until merged)
|
||||||
**Branch:** n/a
|
**Branch:** n/a
|
||||||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: .meeting-room / 2026-05-06T18:31:57.105Z -->
|
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: .meeting-room / 2026-05-06T18:31:57.105Z -->
|
||||||
|
|
||||||
|
|||||||
BIN
dist/project-bootstrap.skill
vendored
BIN
dist/project-bootstrap.skill
vendored
Binary file not shown.
BIN
dist/recommend-dont-menu.skill
vendored
Normal file
BIN
dist/recommend-dont-menu.skill
vendored
Normal file
Binary file not shown.
@@ -1,19 +1,21 @@
|
|||||||
---
|
---
|
||||||
name: project-bootstrap
|
name: project-bootstrap
|
||||||
version: 1.7.0
|
version: 1.9.0
|
||||||
description: >
|
description: >
|
||||||
Initializes or upgrades a project in the current folder: git, .gitignore, README.md,
|
Initializes or upgrades a project in the current folder: git, .gitignore, README.md,
|
||||||
.wiki/ using Karpathy's method, .tasks/ for task tracking, CLAUDE.md with skill triggers.
|
.wiki/ using Karpathy's method, .tasks/ for task tracking, CLAUDE.md with skill triggers.
|
||||||
|
Creates remote Gitea repo and syncs projects-meta cache for greenfield projects.
|
||||||
Use this skill when the user says "initialize project", "bootstrap", "setup project",
|
Use this skill when the user says "initialize project", "bootstrap", "setup project",
|
||||||
"upgrade project", "add wiki", "add tasks", "start project", "set everything up",
|
"upgrade project", "add wiki", "add tasks", "start project", "set everything up",
|
||||||
or launches the agent in a new or existing folder and wants to configure the workspace.
|
"create new project", or launches the agent in a new folder and wants a full setup.
|
||||||
Trigger even if the user just says "let's start a project" or "set it all up".
|
Trigger even if the user just says "let's start a project" or "set it all up".
|
||||||
---
|
---
|
||||||
|
|
||||||
# Project Bootstrap
|
# Project Bootstrap
|
||||||
|
|
||||||
Sets up a complete working environment for a monorepo project in one pass.
|
Sets up a complete working environment for a monorepo project in one pass.
|
||||||
Operates in two modes: **init** (new project) and **upgrade** (existing project).
|
Operates in three modes: **greenfield-full** (new project + remote create), **add-remote**
|
||||||
|
(existing git without remote), and **upgrade** (existing project).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -24,18 +26,26 @@ Check what already exists in the current directory:
|
|||||||
```bash
|
```bash
|
||||||
ls -la
|
ls -la
|
||||||
git rev-parse --git-dir 2>/dev/null && echo "git:yes" || echo "git:no"
|
git rev-parse --git-dir 2>/dev/null && echo "git:yes" || echo "git:no"
|
||||||
|
git remote get-url origin 2>/dev/null && echo "remote:yes" || echo "remote:no"
|
||||||
|
ls -A 2>/dev/null | grep -q . && echo "empty:no" || echo "empty:yes"
|
||||||
[ -d .wiki ] && echo "wiki:yes" || echo "wiki:no"
|
[ -d .wiki ] && echo "wiki:yes" || echo "wiki:no"
|
||||||
[ -d .tasks ] && echo "tasks:yes" || echo "tasks:no"
|
[ -d .tasks ] && echo "tasks:yes" || echo "tasks:no"
|
||||||
[ -f CLAUDE.md ] && echo "claude:yes" || echo "claude:no"
|
[ -f CLAUDE.md ] && echo "claude:yes" || echo "claude:no"
|
||||||
[ -f README.md ] && echo "readme:yes" || echo "readme:no"
|
[ -f README.md ] && echo "readme:yes" || echo "readme:no"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Determine mode:
|
||||||
|
- **greenfield-full**: `git:no` + `empty:yes` — new project, will create remote
|
||||||
|
- **add-remote**: `git:yes` + `remote:no` — existing git, offer to create remote
|
||||||
|
- **upgrade**: otherwise — existing project, upgrade only
|
||||||
|
|
||||||
Show the user a summary in one block — what was found, what will be created:
|
Show the user a summary in one block — what was found, what will be created:
|
||||||
|
|
||||||
```
|
```
|
||||||
Found: ✅ git ❌ .wiki ✅ .tasks ❌ CLAUDE.md ✅ README.md
|
Mode: greenfield-full (new project + remote create)
|
||||||
Create: .wiki CLAUDE.md
|
|
||||||
Skip: git (exists) .tasks (exists) README.md (exists)
|
Found: (empty directory)
|
||||||
|
Create: git .wiki .tasks CLAUDE.md .gitignore README.md remote
|
||||||
```
|
```
|
||||||
|
|
||||||
Ask one question: "Looks right? Shall we proceed?" — and wait for confirmation.
|
Ask one question: "Looks right? Shall we proceed?" — and wait for confirmation.
|
||||||
@@ -56,6 +66,69 @@ If it exists — leave it untouched.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Step 1.5 — Remote create (greenfield-full / add-remote modes)
|
||||||
|
|
||||||
|
Only in **greenfield-full** or **add-remote** mode. Skip for upgrade mode.
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
Read `~/.config/projects-mcp/auth.toml` to get Gitea credentials:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# POSIX (Linux/macOS/git-bash):
|
||||||
|
source ~/.config/projects-mcp/auth.toml 2>/dev/null || true
|
||||||
|
# Windows PowerShell:
|
||||||
|
Get-Content ~/.config/projects-mcp/auth.toml | Select-String "base_url|token"
|
||||||
|
```
|
||||||
|
|
||||||
|
If auth file missing → stop and tell user: run `/setup-projects-meta` first.
|
||||||
|
|
||||||
|
### Validate project name
|
||||||
|
|
||||||
|
Current folder name becomes the repo name. Must be:
|
||||||
|
- **Latin only** — a-z, 0-9, hyphens
|
||||||
|
- **kebab-case** — lowercase, hyphens between words
|
||||||
|
- **Not a duplicate** — check via Gitea API
|
||||||
|
|
||||||
|
```bash
|
||||||
|
PROJECT_NAME=$(basename "$PWD")
|
||||||
|
# Validate: only latin alnum + hyphen, no leading/trailing hyphen
|
||||||
|
echo "$PROJECT_NAME" | grep -qE '^[a-z0-9]+(-[a-z0-9]+)*$' || {
|
||||||
|
echo "❌ Invalid project name: '$PROJECT_NAME'. Use latin kebab-case (e.g. 'my-project')."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Create repo via Gitea API
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Extract base_url and token from auth.toml (POSIX):
|
||||||
|
BASE_URL=$(grep "^base_url" ~/.config/projects-mcp/auth.toml | cut -d'"' -f2)
|
||||||
|
TOKEN=$(grep "^token" ~/.config/projects-mcp/auth.toml | cut -d'"' -f2)
|
||||||
|
|
||||||
|
# Create repo:
|
||||||
|
curl -X POST "$BASE_URL/api/v1/user/repos?token=$TOKEN" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "{\"name\":\"$PROJECT_NAME\",\"private\":false,\"auto_init\":false}"
|
||||||
|
```
|
||||||
|
|
||||||
|
On failure → stop and show error. Duplicate name = suggest rename or delete existing.
|
||||||
|
|
||||||
|
### Add remote and push
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git remote add origin "$BASE_URL/$USER/$PROJECT_NAME.git"
|
||||||
|
git branch -M master
|
||||||
|
git push -u origin master
|
||||||
|
```
|
||||||
|
|
||||||
|
For **add-remote** mode (git exists, push local commits after adding remote):
|
||||||
|
```bash
|
||||||
|
git push -u origin master # or main if that's the current branch
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Step 2 — README.md
|
## Step 2 — README.md
|
||||||
|
|
||||||
If it does not exist — create a minimal one:
|
If it does not exist — create a minimal one:
|
||||||
@@ -371,6 +444,7 @@ Mismatch between template and map → silent gaps in the recommendation.
|
|||||||
| `pull remote before work` | `pulling-before-work` | skill | `~/.claude/skills/pulling-before-work/SKILL.md` | `bash scripts/install.sh pulling-before-work` |
|
| `pull remote before work` | `pulling-before-work` | skill | `~/.claude/skills/pulling-before-work/SKILL.md` | `bash scripts/install.sh pulling-before-work` |
|
||||||
| `follow project discipline` | `project-discipline` | skill | `~/.claude/skills/project-discipline/SKILL.md` | `bash scripts/install.sh project-discipline` |
|
| `follow project discipline` | `project-discipline` | skill | `~/.claude/skills/project-discipline/SKILL.md` | `bash scripts/install.sh project-discipline` |
|
||||||
| `delegate to interns when allowed` | `using-interns` | skill | `~/.claude/skills/using-interns/SKILL.md` | `bash scripts/install.sh using-interns` |
|
| `delegate to interns when allowed` | `using-interns` | skill | `~/.claude/skills/using-interns/SKILL.md` | `bash scripts/install.sh using-interns` |
|
||||||
|
| `recommend, don't menu` | `recommend-dont-menu` | skill | `~/.claude/skills/recommend-dont-menu/SKILL.md` | `bash scripts/install.sh recommend-dont-menu` |
|
||||||
| `we're on Windows` / `we're on Linux` / `we're on macOS` | `active-platform` | skill | `~/.claude/skills/active-platform/SKILL.md` | `bash scripts/install.sh active-platform` |
|
| `we're on Windows` / `we're on Linux` / `we're on macOS` | `active-platform` | skill | `~/.claude/skills/active-platform/SKILL.md` | `bash scripts/install.sh active-platform` |
|
||||||
|
|
||||||
### Algorithm
|
### Algorithm
|
||||||
@@ -462,6 +536,7 @@ Print a final report:
|
|||||||
CLAUDE.md — skill triggers
|
CLAUDE.md — skill triggers
|
||||||
.gitignore — standard template
|
.gitignore — standard template
|
||||||
README.md — starter file
|
README.md — starter file
|
||||||
|
remote — Gitea repo created and pushed
|
||||||
|
|
||||||
Skipped (already existed):
|
Skipped (already existed):
|
||||||
git — left untouched
|
git — left untouched
|
||||||
@@ -470,6 +545,41 @@ Next step: describe the project in README.md and start your first task —
|
|||||||
say "use task management system".
|
say "use task management system".
|
||||||
```
|
```
|
||||||
|
|
||||||
|
For **greenfield-full** mode, append to summary:
|
||||||
|
```
|
||||||
|
Remote: <Gitea URL>
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 8 — projects-meta sync (greenfield-full mode)
|
||||||
|
|
||||||
|
Only in **greenfield-full** mode. Re-sync the projects-meta cache so the new
|
||||||
|
project becomes visible to `mcp__projects-meta__*` tools.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# POSIX:
|
||||||
|
node ~/projects/.common/lib/projects-meta-mcp/dist/sync.js
|
||||||
|
|
||||||
|
# Windows PowerShell:
|
||||||
|
node ~/projects/.common/lib/projects-meta-mcp/dist/sync.js
|
||||||
|
```
|
||||||
|
|
||||||
|
Verify the project is now visible:
|
||||||
|
```bash
|
||||||
|
# Via MCP (if available in current session):
|
||||||
|
# mcp__projects-meta__meta_status
|
||||||
|
|
||||||
|
# Or manually check the cache file exists:
|
||||||
|
ls -la ~/projects/.common/lib/projects-meta-mcp/cache/projects.json
|
||||||
|
```
|
||||||
|
|
||||||
|
If the sync script doesn't exist → skip with informational message:
|
||||||
|
```
|
||||||
|
ℹ️ projects-meta sync script not found at ~/projects/.common/lib/projects-meta-mcp/dist/sync.js
|
||||||
|
Run /setup-projects-meta to install it. The new repo is already created in Gitea.
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Rules
|
## Rules
|
||||||
|
|||||||
@@ -9,4 +9,5 @@ check across all projects
|
|||||||
pull remote before work
|
pull remote before work
|
||||||
follow project discipline
|
follow project discipline
|
||||||
delegate to interns when allowed
|
delegate to interns when allowed
|
||||||
|
recommend, don't menu
|
||||||
we're on Windows
|
we're on Windows
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
name: project-discipline
|
name: project-discipline
|
||||||
version: 0.1.0
|
version: 0.1.1
|
||||||
description: >
|
description: >
|
||||||
Codifies four cross-project discipline rules: (1) project CLAUDE.md /
|
Codifies five cross-project discipline rules: (1) project CLAUDE.md /
|
||||||
.wiki/CLAUDE.md / .tasks/ override defaults from any other skill (specs
|
.wiki/CLAUDE.md / .tasks/ override defaults from any other skill (specs
|
||||||
go to .wiki/concepts/, not docs/superpowers/specs/; tasks to .tasks/,
|
go to .wiki/concepts/, not docs/superpowers/specs/; tasks to .tasks/,
|
||||||
not docs/superpowers/plans/); (2) all work on master/main, no feature
|
not docs/superpowers/plans/); (2) all work on master/main, no feature
|
||||||
@@ -12,8 +12,10 @@ description: >
|
|||||||
(4) commit freely, never push without explicit per-session user approval
|
(4) commit freely, never push without explicit per-session user approval
|
||||||
— grant via "разреши автопуш" / "allow auto-push", revoke via "отзови"
|
— grant via "разреши автопуш" / "allow auto-push", revoke via "отзови"
|
||||||
/ "revoke", session end resets to ask-mode; force/delete/non-ff push
|
/ "revoke", session end resets to ask-mode; force/delete/non-ff push
|
||||||
always asks. Activated by "follow project discipline" trigger in
|
always asks; (5) transit-zone / brainstorm workspaces — artifacts
|
||||||
CLAUDE.md (added by project-bootstrap v1.5.0+).
|
go to .brainstorm/ or global wiki only via explicit user direction,
|
||||||
|
never auto-promote by analogy. Activated by "follow project discipline"
|
||||||
|
trigger in CLAUDE.md (added by project-bootstrap v1.5.0+).
|
||||||
---
|
---
|
||||||
|
|
||||||
# project-discipline
|
# project-discipline
|
||||||
@@ -107,6 +109,20 @@ A grant covers ordinary fast-forward push to the configured upstream. Anything e
|
|||||||
|
|
||||||
**What counts as "push":** only `git push` family commands. Local commits, `git stash push`, etc. are not push; the grant does not apply.
|
**What counts as "push":** only `git push` family commands. Local commits, `git stash push`, etc. are not push; the grant does not apply.
|
||||||
|
|
||||||
|
## Rule 5 — Transit-zone / brainstorm workspaces
|
||||||
|
|
||||||
|
Some workspaces are **transit zones** — discussion areas with no `.tasks/`, where brainstorm artifacts are explicitly NOT auto-promoted to project wikis.
|
||||||
|
|
||||||
|
**Default destination for brainstorm artifacts:**
|
||||||
|
- **In-progress brainstorm outputs** → `.brainstorm/<topic>.md` (or whatever the workspace's README/CLAUDE.md declares)
|
||||||
|
- **Mature, cross-cutting outputs** → `~/projects/.wiki/concepts/<topic>-design.md` via `mcp__projects-meta__knowledge_ingest` — **only** when user explicitly directs this
|
||||||
|
|
||||||
|
**Agent must NOT auto-promote** brainstorm artifacts to global wikis by analogy with Rule 1. Convergence-moment (move from workspace to permanent wiki) is a user decision, not an automatic action.
|
||||||
|
|
||||||
|
**Example:** `~/projects/.meeting-room/` is a transit zone. Its CLAUDE.md explicitly states "no `.tasks/`, transit zone, artifacts go to `.brainstorm/` or global wiki via user command." Rule 1's "project conventions override" applies, but the override is explicit in the workspace contract — auto-promotion by analogy would violate that contract.
|
||||||
|
|
||||||
|
**When in doubt:** ask the user "this goes to `.brainstorm/`, or should I promote to shared wiki?" rather than assuming.
|
||||||
|
|
||||||
## Out of scope
|
## Out of scope
|
||||||
|
|
||||||
The skill **does not**:
|
The skill **does not**:
|
||||||
|
|||||||
32
skills/recommend-dont-menu/README.md
Normal file
32
skills/recommend-dont-menu/README.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# recommend-dont-menu
|
||||||
|
|
||||||
|
One recommendation, not a menu. When the user asks "what should we do?", give your best choice with reasoning and trade-offs — don't enumerate A/B/C/D options.
|
||||||
|
|
||||||
|
## What it does
|
||||||
|
|
||||||
|
Overrides the `superpowers:brainstorming` default of presenting multiple options. Instead, respond with:
|
||||||
|
|
||||||
|
```
|
||||||
|
Я рекомендую X, потому что Y₁, Y₂. Trade-off: Z. Возражения?
|
||||||
|
```
|
||||||
|
|
||||||
|
Only mention alternatives when they're genuinely competitive or carry an important trade-off.
|
||||||
|
|
||||||
|
## When to use
|
||||||
|
|
||||||
|
During design discussions, architecture reviews, brainstorming, or any "what should we do" question.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
bash scripts/install.sh recommend-dont-menu
|
||||||
|
```
|
||||||
|
|
||||||
|
## Trigger line
|
||||||
|
|
||||||
|
Add to `CLAUDE.md`:
|
||||||
|
```
|
||||||
|
prefer single recommendations
|
||||||
|
```
|
||||||
|
|
||||||
|
Or use `project-bootstrap` (v1.9.0+) which includes this trigger in its template.
|
||||||
60
skills/recommend-dont-menu/SKILL.md
Normal file
60
skills/recommend-dont-menu/SKILL.md
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
name: recommend-dont-menu
|
||||||
|
version: 0.1.0
|
||||||
|
description: >
|
||||||
|
Use during design discussions, brainstorming, architecture reviews, or any
|
||||||
|
"what should we do" question — give one argued recommendation with explicit
|
||||||
|
trade-offs, not a multiple-choice menu. Override of superpowers:brainstorming
|
||||||
|
default. Works on any agent — pure response-style rule, no tool mappings needed.
|
||||||
|
---
|
||||||
|
|
||||||
|
# recommend-dont-menu
|
||||||
|
|
||||||
|
> One recommendation, not a menu. When the user asks "what should we do?" or "which is better?", give your best choice with reasoning and trade-offs. Don't enumerate A/B/C/D options — menus slow down decision-making when one option is clearly better.
|
||||||
|
|
||||||
|
## When this runs
|
||||||
|
|
||||||
|
**At session start** — when `CLAUDE.md` contains any trigger line:
|
||||||
|
- `prefer single recommendations`
|
||||||
|
- `recommend, don't menu`
|
||||||
|
- `argued recommendations`
|
||||||
|
- `give me your best shot`
|
||||||
|
|
||||||
|
**On explicit reference** — when user says "give me a recommendation", "don't menu", "what do you think?", or close variants.
|
||||||
|
|
||||||
|
## Default mode
|
||||||
|
|
||||||
|
For design questions, architecture choices, "what should we do" queries:
|
||||||
|
|
||||||
|
```
|
||||||
|
Я рекомендую X, потому что Y₁, Y₂. Trade-off: Z. Возражения?
|
||||||
|
```
|
||||||
|
|
||||||
|
**Only mention alternatives if:**
|
||||||
|
- They're genuinely close to the recommended option, OR
|
||||||
|
- They carry an important trade-off the user should weigh
|
||||||
|
|
||||||
|
Then, briefly:
|
||||||
|
```
|
||||||
|
Если важно W — лучше X', но добавляет сложность; иначе X.
|
||||||
|
```
|
||||||
|
|
||||||
|
**Don't enumerate options** for the sake of appearing comprehensive. Menus are noise when one option dominates — they force the user to read through losing choices and bury your reasoning behind an oblique list instead of a responsible recommendation.
|
||||||
|
|
||||||
|
## Override
|
||||||
|
|
||||||
|
This skill **overrides** `superpowers:brainstorming` where that skill prefers multiple-choice options. User instructions > skill defaults.
|
||||||
|
|
||||||
|
If `superpowers:brainstorming` is active in the session, this skill's response style takes precedence for design/brainstorming questions.
|
||||||
|
|
||||||
|
## Cross-agent applicability
|
||||||
|
|
||||||
|
This skill is **pure response-style** — it works on any agent (Claude, Gemini, Copilot) without tool mappings. No `references/copilot-tools.md` or equivalent needed.
|
||||||
|
|
||||||
|
## Why this exists
|
||||||
|
|
||||||
|
The pattern emerged from iterative refinement across `claude-skills` brainstorm sessions and `.meeting-room/` discussions. When agents dump 4-option menus for every question, users skim or disengage. A single argued recommendation with clear trade-offs leads to faster convergence and better decisions. When alternatives are genuinely competitive, mention them — but don't manufacture variants.
|
||||||
|
|
||||||
|
## Reference
|
||||||
|
|
||||||
|
Original rule lived in `~/.claude/CLAUDE.md` as a per-machine instruction. Moving to a skill makes it portable: all machines bootstrapped with `project-bootstrap` inherit it, and cross-agent compatibility is explicit.
|
||||||
Reference in New Issue
Block a user