@event4u/agent-config 1.21.0 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent-src/commands/agents/cleanup.md +31 -17
- package/.agent-src/commands/bug-fix.md +1 -0
- package/.agent-src/commands/bug-investigate.md +1 -0
- package/.agent-src/commands/challenge-me/vision.md +348 -0
- package/.agent-src/commands/challenge-me/with-docs.md +333 -0
- package/.agent-src/commands/challenge-me.md +61 -0
- package/.agent-src/commands/commit/in-chunks.md +30 -10
- package/.agent-src/commands/commit.md +46 -6
- package/.agent-src/commands/compress.md +19 -13
- package/.agent-src/commands/cost-report.md +120 -0
- package/.agent-src/commands/council/default.md +64 -17
- package/.agent-src/commands/create-pr/description-only.md +8 -0
- package/.agent-src/commands/create-pr.md +99 -80
- package/.agent-src/commands/feature/plan.md +13 -7
- package/.agent-src/commands/grill-me.md +38 -0
- package/.agent-src/commands/judge/steps.md +1 -1
- package/.agent-src/commands/memory/add.md +16 -8
- package/.agent-src/commands/memory/promote.md +17 -9
- package/.agent-src/commands/optimize/rtk.md +16 -11
- package/.agent-src/commands/prepare-for-review.md +12 -6
- package/.agent-src/commands/project-analyze.md +31 -20
- package/.agent-src/commands/review-changes.md +24 -15
- package/.agent-src/commands/roadmap/ai-council.md +183 -0
- package/.agent-src/commands/roadmap/create.md +20 -10
- package/.agent-src/commands/roadmap/process-full.md +58 -0
- package/.agent-src/commands/roadmap/process-phase.md +69 -0
- package/.agent-src/commands/roadmap/process-step.md +57 -0
- package/.agent-src/commands/roadmap.md +44 -16
- package/.agent-src/commands/threat-model.md +1 -0
- package/.agent-src/contexts/augment-infrastructure.md +1 -1
- package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +53 -18
- package/.agent-src/contexts/contracts/frugality-charter.md +57 -0
- package/.agent-src/contexts/execution/roadmap-process-loop.md +125 -0
- package/.agent-src/contexts/skills-and-commands.md +1 -1
- package/.agent-src/rules/architecture.md +9 -0
- package/.agent-src/rules/ask-when-uncertain.md +3 -13
- package/.agent-src/rules/caveman-speak.md +78 -0
- package/.agent-src/rules/direct-answers.md +5 -14
- package/.agent-src/rules/improve-before-implement.md +1 -0
- package/.agent-src/rules/invite-challenge.md +71 -0
- package/.agent-src/rules/markdown-safe-codeblocks.md +6 -7
- package/.agent-src/rules/no-cheap-questions.md +4 -14
- package/.agent-src/rules/token-efficiency.md +5 -7
- package/.agent-src/skills/adr-create/SKILL.md +197 -0
- package/.agent-src/skills/adversarial-review/SKILL.md +1 -0
- package/.agent-src/skills/agent-docs-writing/SKILL.md +23 -1
- package/.agent-src/skills/ai-council/SKILL.md +132 -8
- package/.agent-src/skills/bug-analyzer/SKILL.md +1 -0
- package/.agent-src/skills/command-writing/SKILL.md +23 -0
- package/.agent-src/skills/context-authoring/SKILL.md +23 -0
- package/.agent-src/skills/conventional-commits-writing/SKILL.md +23 -0
- package/.agent-src/skills/guideline-writing/SKILL.md +22 -0
- package/.agent-src/skills/persona-writing/SKILL.md +153 -0
- package/.agent-src/skills/readme-writing/SKILL.md +20 -0
- package/.agent-src/skills/readme-writing-package/SKILL.md +19 -0
- package/.agent-src/skills/roadmap-management/SKILL.md +7 -7
- package/.agent-src/skills/roadmap-writing/SKILL.md +157 -0
- package/.agent-src/skills/rule-writing/SKILL.md +22 -0
- package/.agent-src/skills/script-writing/SKILL.md +226 -0
- package/.agent-src/skills/skill-writing/SKILL.md +23 -0
- package/.agent-src/skills/systematic-debugging/SKILL.md +22 -2
- package/.agent-src/skills/technical-specification/SKILL.md +58 -1
- package/.agent-src/skills/test-driven-development/SKILL.md +24 -0
- package/.agent-src/skills/threat-modeling/SKILL.md +1 -0
- package/.agent-src/templates/agent-settings.md +87 -3
- package/.agent-src/templates/command.md +30 -9
- package/.agent-src/templates/roadmaps.md +10 -2
- package/.agent-src/templates/rule.md +8 -0
- package/.agent-src/templates/skill.md +49 -0
- package/.claude-plugin/marketplace.json +14 -2
- package/AGENTS.md +3 -3
- package/CHANGELOG.md +73 -0
- package/README.md +5 -5
- package/config/agent-settings.template.yml +22 -0
- package/docs/architecture.md +4 -4
- package/docs/contracts/command-clusters.md +45 -1
- package/docs/customization.md +72 -0
- package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +126 -0
- package/docs/decisions/INDEX.md +15 -0
- package/docs/getting-started.md +2 -2
- package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +27 -19
- package/docs/guidelines/agent-infra/carve-out-predicates.md +17 -0
- package/docs/guidelines/agent-infra/mcp-request-signing.md +199 -0
- package/docs/guidelines/agent-infra/naming.md +1 -1
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +11 -4
- package/package.json +1 -1
- package/scripts/_lib/__init__.py +5 -0
- package/scripts/_lib/script_output.py +140 -0
- package/scripts/_phase2_shim_helper.py +1 -1
- package/scripts/adr/regenerate_index.py +79 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_add_quiet.py +149 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_inject_quiet_flag.py +33 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_v2.sh +36 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_verbosity.sh +26 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_per_task.sh +41 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_silent_taskfiles.py +98 -0
- package/scripts/check_augmentignore.py +4 -1
- package/scripts/check_command_count_messaging.py +4 -1
- package/scripts/check_compressed_paths.py +4 -1
- package/scripts/check_council_layout.py +4 -1
- package/scripts/check_council_references.py +4 -1
- package/scripts/check_iron_law_prominence.py +3 -1
- package/scripts/check_md_language.py +3 -1
- package/scripts/check_memory_proposal.py +3 -1
- package/scripts/check_public_catalog_links.py +4 -1
- package/scripts/check_reply_consistency.py +8 -2
- package/scripts/check_roadmap_trackable.py +4 -1
- package/scripts/compile_router.py +27 -0
- package/scripts/compress.py +33 -19
- package/scripts/cost/budget.mjs +152 -0
- package/scripts/cost/track.mjs +144 -0
- package/scripts/council_cli.py +127 -10
- package/scripts/first-run.sh +3 -9
- package/scripts/install-hooks.sh +19 -1
- package/scripts/install.py +17 -12
- package/scripts/install.sh +19 -8
- package/scripts/lint_examples.py +6 -2
- package/scripts/lint_handoffs.py +4 -1
- package/scripts/lint_load_context.py +4 -1
- package/scripts/lint_roadmap_complexity.py +6 -2
- package/scripts/lint_rule_interactions.py +4 -1
- package/scripts/lint_rule_tiers.py +4 -1
- package/scripts/measure_frugality_savings.py +164 -0
- package/scripts/migrate_command_suggestions.py +2 -2
- package/scripts/runtime_dispatcher.py +11 -0
- package/scripts/schemas/command.schema.json +5 -0
- package/scripts/schemas/rule.schema.json +5 -0
- package/scripts/schemas/skill.schema.json +5 -0
- package/scripts/skill_linter.py +208 -3
- package/.agent-src/commands/roadmap/execute.md +0 -109
|
@@ -145,30 +145,44 @@ After each action:
|
|
|
145
145
|
|
|
146
146
|
Progress Phase {n}: [{completed}/{total}]
|
|
147
147
|
██████████░░░░░░ 60%
|
|
148
|
-
|
|
149
|
-
> 1. Continue with next action
|
|
150
|
-
> 2. Stop here
|
|
151
148
|
```
|
|
152
149
|
|
|
153
|
-
|
|
150
|
+
Per `verbosity.routine_confirmations` (default `false`):
|
|
154
151
|
|
|
155
|
-
|
|
152
|
+
- `false` → continue to the next action silently. User can interrupt
|
|
153
|
+
any time; "continue" is dominant once cleanup is in flight.
|
|
154
|
+
- `true` → ask:
|
|
155
|
+
```
|
|
156
|
+
> 1. Continue with next action
|
|
157
|
+
> 2. Stop here
|
|
158
|
+
```
|
|
156
159
|
|
|
157
|
-
|
|
158
|
-
═══════════════════════════════════════════════
|
|
159
|
-
✅ CLEANUP SUMMARY
|
|
160
|
-
═══════════════════════════════════════════════
|
|
160
|
+
### 5. Summary (verbosity-gated)
|
|
161
161
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
✏️ Updated: {count} files
|
|
166
|
-
📄 Created: {count} contexts
|
|
162
|
+
After completing a phase or all actions, read
|
|
163
|
+
`verbosity.post_action_reports` from `.agent-settings.yml` (default
|
|
164
|
+
`minimal`).
|
|
167
165
|
|
|
168
|
-
|
|
166
|
+
- `off` → emit nothing on success; surface errors only.
|
|
167
|
+
- `minimal` (default) → one line:
|
|
168
|
+
`→ Cleanup: {moved} moved · {deleted} deleted · {updated} updated · {remaining} remaining`.
|
|
169
|
+
- `full` → multi-line block:
|
|
169
170
|
|
|
170
|
-
|
|
171
|
-
|
|
171
|
+
```
|
|
172
|
+
═══════════════════════════════════════════════
|
|
173
|
+
✅ CLEANUP SUMMARY
|
|
174
|
+
═══════════════════════════════════════════════
|
|
175
|
+
|
|
176
|
+
📁 Moved: {count} files
|
|
177
|
+
🔗 Merged: {count} files
|
|
178
|
+
🗑️ Deleted: {count} files
|
|
179
|
+
✏️ Updated: {count} files
|
|
180
|
+
📄 Created: {count} contexts
|
|
181
|
+
|
|
182
|
+
Remaining: {count} actions in {phases} phases
|
|
183
|
+
|
|
184
|
+
═══════════════════════════════════════════════
|
|
185
|
+
```
|
|
172
186
|
|
|
173
187
|
### Rules
|
|
174
188
|
|
|
@@ -3,6 +3,7 @@ name: bug-fix
|
|
|
3
3
|
skills: [bug-analyzer, pest-testing]
|
|
4
4
|
description: Plan and implement a bug fix — based on investigation, with quality checks and test verification
|
|
5
5
|
disable-model-invocation: true
|
|
6
|
+
council_depth: deep
|
|
6
7
|
suggestion:
|
|
7
8
|
eligible: true
|
|
8
9
|
trigger_description: "fix this bug, patch the issue, resolve this error"
|
|
@@ -3,6 +3,7 @@ name: bug-investigate
|
|
|
3
3
|
skills: [bug-analyzer, sentry-integration]
|
|
4
4
|
description: Investigate a bug — auto-detect ticket from branch, gather Jira/Sentry/description context, trace root cause
|
|
5
5
|
disable-model-invocation: true
|
|
6
|
+
council_depth: deep
|
|
6
7
|
suggestion:
|
|
7
8
|
eligible: true
|
|
8
9
|
trigger_description: "why is this broken, investigate this error, trace the root cause"
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: challenge-me:vision
|
|
3
|
+
cluster: challenge-me
|
|
4
|
+
sub: vision
|
|
5
|
+
description: "Stress-test a plan or idea by one-question-at-a-time interview until 95% confidence — emits a copyable Markdown vision pitch for tickets, roadmaps, or fresh-chat handoff."
|
|
6
|
+
disable-model-invocation: true
|
|
7
|
+
suggestion:
|
|
8
|
+
eligible: true
|
|
9
|
+
trigger_description: "challenge me on this plan, grill me, grill me on this, grill me on the vision, grill me on the idea, grill me until it's clear, grill me hard, frag mich durch, dreh mich durch die Mangel"
|
|
10
|
+
trigger_context: "user has a fuzzy plan/idea/feature draft and wants it sharpened interactively rather than reconstructed in one shot"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# /challenge-me vision
|
|
14
|
+
|
|
15
|
+
> Walk a decision tree by asking one question at a time, each with a
|
|
16
|
+
> recommended answer, until the agent reaches **95% confidence** in what
|
|
17
|
+
> the user actually wants — then emit a copyable Markdown pitch the user
|
|
18
|
+
> can paste into a ticket, roadmap, or fresh-chat handoff.
|
|
19
|
+
|
|
20
|
+
## Welcome
|
|
21
|
+
|
|
22
|
+
If the user invokes `/challenge-me vision` (or `/challenge-me` defaulting
|
|
23
|
+
here) with no body, render once:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
Drop the seed — a plan, idea, ticket draft, or design sketch — and I'll
|
|
27
|
+
walk you through a decision tree, one question per turn, until I'm 95%
|
|
28
|
+
sure what you want. Then you get a copyable Markdown pitch.
|
|
29
|
+
|
|
30
|
+
Stop early any time by typing `!pitch` (or `!Vision pitchen`).
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Skip the welcome if the user invokes `/challenge-me vision <seed>` directly.
|
|
34
|
+
|
|
35
|
+
## When NOT to use
|
|
36
|
+
|
|
37
|
+
| Phrasing | Route to |
|
|
38
|
+
|---|---|
|
|
39
|
+
| "refine this prompt before /work" | [`/refine-prompt`](../refine-prompt.md) |
|
|
40
|
+
| "refine this Jira ticket" | [`/refine-ticket`](../refine-ticket.md) |
|
|
41
|
+
| "poke holes in my plan" (one-shot, no Q&A) | `adversarial-review` skill |
|
|
42
|
+
| "ask another model" | `ai-council` skill |
|
|
43
|
+
| "challenge me against existing docs/glossary" | `/challenge-me with-docs` |
|
|
44
|
+
|
|
45
|
+
## Default stop condition — 95% confidence
|
|
46
|
+
|
|
47
|
+
Unless the user names a different stop condition (`--until=N`,
|
|
48
|
+
`--keep-going`, or natural-language equivalents like `"5 questions"` /
|
|
49
|
+
`"keep going forever"`), the default is:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
KEEP ASKING UNTIL CONFIDENCE ≥ 95% OR THE USER PITCHES.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### What "load-bearing" means
|
|
56
|
+
|
|
57
|
+
A branch is **load-bearing** when its answer would change at least one of:
|
|
58
|
+
|
|
59
|
+
- the **goal** sentence,
|
|
60
|
+
- the **in-scope / out-of-scope** boundary,
|
|
61
|
+
- a **hard constraint**, or
|
|
62
|
+
- one of the **acceptance criteria**.
|
|
63
|
+
|
|
64
|
+
A branch that only changes wording, tone, or cosmetics is **not**
|
|
65
|
+
load-bearing — close it without asking. This is the same test for the
|
|
66
|
+
"why it matters" line in every question block (see Step 1).
|
|
67
|
+
|
|
68
|
+
**Examples — load-bearing vs cosmetic:**
|
|
69
|
+
|
|
70
|
+
| Question | Load-bearing? | Why |
|
|
71
|
+
|---|---|---|
|
|
72
|
+
| "Should anonymous users see this page?" | yes | flips an AC + scope boundary |
|
|
73
|
+
| "Soft-delete or hard-delete on cancel?" | yes | flips a hard constraint + rollback path |
|
|
74
|
+
| "Should the button be primary or secondary colour?" | no | wording / cosmetic, no AC change |
|
|
75
|
+
| "Should we name the column `cancelled_at` or `canceled_at`?" | no | naming, no behaviour change |
|
|
76
|
+
|
|
77
|
+
### What "branch" means (for Condition 2)
|
|
78
|
+
|
|
79
|
+
A **branch** = an entry in the agent's internal working list of open
|
|
80
|
+
dimensions (Step 0.3 in the procedure). A branch is **new** when the
|
|
81
|
+
agent's last applied answer would, on a re-evaluation of dimensions,
|
|
82
|
+
add at least one entry that passes the load-bearing test above. A
|
|
83
|
+
branch that only refines an existing entry's text without flipping
|
|
84
|
+
goal / scope / constraint / AC is **not** new.
|
|
85
|
+
|
|
86
|
+
### The four 95% conditions (AND, not OR)
|
|
87
|
+
|
|
88
|
+
Confidence reaches 95% when **all four** hold simultaneously:
|
|
89
|
+
|
|
90
|
+
1. Every load-bearing branch surfaced so far has a resolved answer
|
|
91
|
+
(recommendation accepted, alternative picked, explicitly skipped).
|
|
92
|
+
2. The agent re-evaluated its internal working list (Step 0.3) after
|
|
93
|
+
applying the user's last answer, and **no new load-bearing branch**
|
|
94
|
+
(passing the load-bearing test above) was added.
|
|
95
|
+
3. Goal, in-scope, out-of-scope, hard constraints, success criteria, and
|
|
96
|
+
**at least two edge cases that affect AC observability or rollback**
|
|
97
|
+
all have explicit answers (not "TBD", not "probably", not "we'll see").
|
|
98
|
+
4. The agent has **cached a draft pitch** (Goal + In/Out + Constraints +
|
|
99
|
+
AC) at the end of every turn, and the user's **last two answers** did
|
|
100
|
+
not modify any of those four sections.
|
|
101
|
+
|
|
102
|
+
Condition 4 is observable, not introspective: the agent maintains the
|
|
103
|
+
draft pitch as state, diffs it against the previous turn's draft, and
|
|
104
|
+
declares stable only when two consecutive turns produce identical
|
|
105
|
+
sections.
|
|
106
|
+
|
|
107
|
+
When all four hold, the agent does **not** ask another question — it goes
|
|
108
|
+
straight to Step 4.
|
|
109
|
+
|
|
110
|
+
## Flags
|
|
111
|
+
|
|
112
|
+
- `--until=95%` (default) — stop when the four 95% conditions hold.
|
|
113
|
+
- `--until=N` — stop after N answered questions, even if confidence is
|
|
114
|
+
lower. Emit the pitch with an `Open assumptions` block listing what
|
|
115
|
+
is still fuzzy.
|
|
116
|
+
- `--keep-going` — never auto-stop; only the user's pitch trigger ends
|
|
117
|
+
the interview.
|
|
118
|
+
|
|
119
|
+
## Steps
|
|
120
|
+
|
|
121
|
+
### Step 0: Inspect (codebase first, ALWAYS)
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
EXPLORE THE CODEBASE BEFORE THE FIRST QUESTION.
|
|
125
|
+
NEVER ASK WHAT `grep`, `view`, OR `codebase-retrieval` ANSWERS IN SECONDS.
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
1. **Read the seed.** The user's first message (or
|
|
129
|
+
`/challenge-me vision <seed>` body) is the artefact under examination —
|
|
130
|
+
a plan, idea, ticket draft, design sketch.
|
|
131
|
+
2. **Look up before asking.** Existing routes, model fields, conventions,
|
|
132
|
+
feature flags, previous similar features → resolve from the repo.
|
|
133
|
+
Surface findings briefly in the next question block ("Repo says X
|
|
134
|
+
already exists at `path/to/file.php`"). The user should never have to
|
|
135
|
+
answer a question the codebase already answers.
|
|
136
|
+
3. **List the open dimensions** internally — goal, scope, users, data,
|
|
137
|
+
constraints, success criteria, edge cases, rollback. Do not surface
|
|
138
|
+
this list; it is the agent's todo, not the user's.
|
|
139
|
+
|
|
140
|
+
### Step 1: Ask one question per turn
|
|
141
|
+
|
|
142
|
+
Every turn after Step 0 emits exactly **one** question block. Before
|
|
143
|
+
writing the block, validate the question against the load-bearing test:
|
|
144
|
+
**if the answer cannot change goal / scope / hard constraints / AC, do
|
|
145
|
+
not ask** — close the branch and move to the next.
|
|
146
|
+
|
|
147
|
+
````markdown
|
|
148
|
+
**Question N · confidence ~XX%**
|
|
149
|
+
|
|
150
|
+
<one-sentence question, anchored to a specific decision>
|
|
151
|
+
|
|
152
|
+
**Why it matters:** <one line — which AC, scope boundary, or hard
|
|
153
|
+
constraint this unblocks>.
|
|
154
|
+
|
|
155
|
+
1. **<recommended option>** — recommended because <one line>.
|
|
156
|
+
2. <alternative option>
|
|
157
|
+
3. <alternative option>
|
|
158
|
+
4. Skip / not relevant
|
|
159
|
+
|
|
160
|
+
> Reply with a number, a free-form answer, or type **`!pitch`**
|
|
161
|
+
> (or **`!Vision pitchen`**) to lock in the current understanding and
|
|
162
|
+
> get the Markdown pitch.
|
|
163
|
+
````
|
|
164
|
+
|
|
165
|
+
**Rules for the question block.**
|
|
166
|
+
|
|
167
|
+
- One question per turn — non-negotiable, per
|
|
168
|
+
[`ask-when-uncertain`](../../rules/ask-when-uncertain.md) Iron Law.
|
|
169
|
+
- The recommended option is always **option 1** and labelled **bold**.
|
|
170
|
+
- 3–4 options total. More than 4 means the question is too broad — split it.
|
|
171
|
+
- "Skip / not relevant" must always be present so the user can prune dead
|
|
172
|
+
branches.
|
|
173
|
+
- Walk the tree depth-first: resolve a branch's children before moving
|
|
174
|
+
to the next sibling, unless the user explicitly jumps.
|
|
175
|
+
- The `Why it matters` line MUST cite an AC number, a scope boundary, or
|
|
176
|
+
a named hard constraint. "Good to know" / "for context" / "to be safe"
|
|
177
|
+
are placeholders — rewrite or drop the question.
|
|
178
|
+
|
|
179
|
+
### Step 2: Apply the answer
|
|
180
|
+
|
|
181
|
+
1. Number reply (`1`, `2`, …) → adopt that option.
|
|
182
|
+
2. Free-form reply → integrate verbatim, do not re-interpret.
|
|
183
|
+
3. "Skip" / "skip" / "n/a" → branch closed, do not revisit unless reopened.
|
|
184
|
+
4. Pitch trigger fired → jump straight to Step 4, even if confidence < 95%.
|
|
185
|
+
|
|
186
|
+
#### Pitch trigger — strict matching
|
|
187
|
+
|
|
188
|
+
The pitch trigger requires **explicit syntax** to avoid false positives
|
|
189
|
+
on natural sentences like "I'd pitch this to the team".
|
|
190
|
+
|
|
191
|
+
| Match | Example | Fires? |
|
|
192
|
+
|---|---|---|
|
|
193
|
+
| `!pitch` (or any `!`-prefixed variant) at line start | `!pitch`, `!Vision pitchen`, `!pitch it` | yes |
|
|
194
|
+
| `/pitch` at line start | `/pitch` | yes |
|
|
195
|
+
| Whole reply is exactly `pitch` (case-insensitive, no other words) | `pitch` | yes |
|
|
196
|
+
| `pitch` inside a sentence | "I would pitch this on Monday" | **no** |
|
|
197
|
+
| `pitch mich` / `ship vision` inside prose | natural-language fragment | **no** |
|
|
198
|
+
|
|
199
|
+
`DE: "!Vision pitchen", "/Vision pitchen", "/pitche das", whole reply "pitch" · EN: "!pitch the vision", "/pitch the vision", whole reply "pitch"`
|
|
200
|
+
|
|
201
|
+
If the agent is unsure whether the user pitched, it confirms once
|
|
202
|
+
(numbered options: `1. emit pitch · 2. continue interview`) instead of
|
|
203
|
+
guessing.
|
|
204
|
+
|
|
205
|
+
### Step 3: Re-score and continue
|
|
206
|
+
|
|
207
|
+
Re-evaluate the four 95%-conditions internally. If not yet reached, ask
|
|
208
|
+
the next question. If reached, go to Step 4 without asking.
|
|
209
|
+
|
|
210
|
+
### Step 4: Validate before pitching
|
|
211
|
+
|
|
212
|
+
Before emitting the pitch, run this checklist internally:
|
|
213
|
+
|
|
214
|
+
1. All four 95%-conditions hold (or the user fired the pitch trigger).
|
|
215
|
+
2. Every adopted answer is reflected in the pitch — no orphan branches.
|
|
216
|
+
3. Acceptance criteria are observable and testable in the project's
|
|
217
|
+
existing test surface — not "works correctly" / "looks better".
|
|
218
|
+
4. The recommended next-step command actually exists in this project.
|
|
219
|
+
|
|
220
|
+
If any check fails, ask one more question instead of pitching.
|
|
221
|
+
|
|
222
|
+
### Step 5: Emit the pitch
|
|
223
|
+
|
|
224
|
+
Output a single fenced Markdown block the user can copy verbatim. Shape:
|
|
225
|
+
|
|
226
|
+
````markdown
|
|
227
|
+
```markdown
|
|
228
|
+
# <one-line vision title>
|
|
229
|
+
|
|
230
|
+
**Goal:** <verb + object + observable result>
|
|
231
|
+
|
|
232
|
+
**In scope:**
|
|
233
|
+
- <bullet>
|
|
234
|
+
- <bullet>
|
|
235
|
+
|
|
236
|
+
**Out of scope:**
|
|
237
|
+
- <bullet>
|
|
238
|
+
|
|
239
|
+
**Constraints (hard):**
|
|
240
|
+
- <bullet>
|
|
241
|
+
|
|
242
|
+
**Acceptance criteria:**
|
|
243
|
+
1. <observable, testable>
|
|
244
|
+
2. <observable, testable>
|
|
245
|
+
3. <observable, testable>
|
|
246
|
+
|
|
247
|
+
**Open assumptions:**
|
|
248
|
+
- assumes: <line>
|
|
249
|
+
|
|
250
|
+
**Recommended next step:** <one sentence — e.g. "/work \"<pitch goal>\"" or
|
|
251
|
+
"create roadmap with /roadmap-create">.
|
|
252
|
+
```
|
|
253
|
+
````
|
|
254
|
+
|
|
255
|
+
The outer fence uses four backticks so the inner triple-backtick stays
|
|
256
|
+
literal when the user copies it.
|
|
257
|
+
|
|
258
|
+
### Step 6: Hand back
|
|
259
|
+
|
|
260
|
+
After the pitch is emitted, end the turn. Do **not** propose to also
|
|
261
|
+
implement the pitch, write it to a roadmap, or commit anything — the
|
|
262
|
+
pitch is conversational output the user copies into the next command
|
|
263
|
+
(`/work`, `/roadmap-create`, `/feature-plan`, …).
|
|
264
|
+
|
|
265
|
+
If the user wants the next step run, they invoke it explicitly.
|
|
266
|
+
|
|
267
|
+
## Output format
|
|
268
|
+
|
|
269
|
+
1. **Per-turn question block** — one numbered question with a recommended
|
|
270
|
+
option, until 95% or pitch trigger.
|
|
271
|
+
2. **Final pitch** — a single copyable fenced Markdown block (Step 5 shape).
|
|
272
|
+
3. **One-line handoff suggestion** under the pitch — which command to run
|
|
273
|
+
next (`/work`, `/roadmap-create`, `/feature-plan`, etc.).
|
|
274
|
+
|
|
275
|
+
## Examples
|
|
276
|
+
|
|
277
|
+
```
|
|
278
|
+
/challenge-me vision
|
|
279
|
+
/challenge-me vision We need a shareable read-only view for non-paying users
|
|
280
|
+
/challenge-me vision --until=5 Build a CSV export for the dashboard
|
|
281
|
+
/challenge-me vision --keep-going Re-architect the notifications pipeline
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## Gotchas
|
|
285
|
+
|
|
286
|
+
- The model wants to ask *the user* what the codebase already answers
|
|
287
|
+
(existing routes, conventions, model fields). Run the lookup first;
|
|
288
|
+
only ask when the codebase is silent.
|
|
289
|
+
- Confidence inflation — the model marks itself 95% after 2 questions
|
|
290
|
+
because the user nodded along. The four conditions are AND, not OR.
|
|
291
|
+
Recheck **all four** every turn before stopping.
|
|
292
|
+
- Recommendation drift — the agent keeps changing option 1 across turns
|
|
293
|
+
because new context arrived. That is fine *within* the interview; it
|
|
294
|
+
is a red flag *at pitch time*. If the pitch shape changed in the last
|
|
295
|
+
turn, ask one more question.
|
|
296
|
+
- Stacked questions — the model bundles "scope and rollback?" into one
|
|
297
|
+
block. Split. Always one decision per question.
|
|
298
|
+
- Too many options — 7-option blocks are not a tree, they are a survey.
|
|
299
|
+
Cap at 4; split the question if 4 is not enough.
|
|
300
|
+
|
|
301
|
+
## Rules
|
|
302
|
+
|
|
303
|
+
- **One question per turn** — non-negotiable, per
|
|
304
|
+
[`ask-when-uncertain`](../../rules/ask-when-uncertain.md) Iron Law.
|
|
305
|
+
- **No auto-execution** — emit the pitch, not the implementation it
|
|
306
|
+
describes. Do not chain into `/work` or `/roadmap-create` without
|
|
307
|
+
explicit user invocation.
|
|
308
|
+
- **No file writes** — the pitch is conversational. No commits, no
|
|
309
|
+
roadmap edits, no `agents/` writes.
|
|
310
|
+
- **Codebase first** — Step 0 forbids asking what `grep`, `view`, or
|
|
311
|
+
`codebase-retrieval` would answer in seconds.
|
|
312
|
+
- **Welcome once** — render the welcome only on the first no-body
|
|
313
|
+
invocation per session.
|
|
314
|
+
- **Mirror the user's language** — the question blocks and pitch use
|
|
315
|
+
the language the user wrote in (`language-and-tone` Iron Law). The
|
|
316
|
+
pitch trigger syntax (`!pitch`, `/pitch`, whole reply `pitch`) stays
|
|
317
|
+
literal in any language.
|
|
318
|
+
|
|
319
|
+
## Do NOT
|
|
320
|
+
|
|
321
|
+
- Do NOT ask multiple questions in one turn.
|
|
322
|
+
- Do NOT proceed past 95% without emitting the pitch — silent inflation
|
|
323
|
+
defeats the contract.
|
|
324
|
+
- Do NOT paraphrase the user's free-form answers when applying them.
|
|
325
|
+
Verbatim or summarised-with-quote, never re-worded.
|
|
326
|
+
- Do NOT include implementation steps in the pitch. The pitch is intent
|
|
327
|
+
+ acceptance criteria; implementation is the next command's job.
|
|
328
|
+
- Do NOT skip the "skip / not relevant" option — pruning is part of the
|
|
329
|
+
tree.
|
|
330
|
+
- Do NOT re-emit the full pitch every turn. Pitch only fires at 95% or
|
|
331
|
+
on explicit trigger.
|
|
332
|
+
|
|
333
|
+
## See also
|
|
334
|
+
|
|
335
|
+
- [`/challenge-me with-docs`](with-docs.md) — sibling variant that adds
|
|
336
|
+
glossary / `CONTEXT.md` awareness and load-bearing claim-vs-code
|
|
337
|
+
verification.
|
|
338
|
+
- [`/refine-prompt`](../refine-prompt.md) — one-shot prompt scoring before
|
|
339
|
+
`/work`.
|
|
340
|
+
- [`/refine-ticket`](../refine-ticket.md) — ticket reconstruction.
|
|
341
|
+
- [`/optimize-prompt`](../optimize-prompt.md) — sibling pattern (interactive
|
|
342
|
+
polishing).
|
|
343
|
+
- [`ask-when-uncertain`](../../rules/ask-when-uncertain.md) — the
|
|
344
|
+
one-question-per-turn Iron Law this command is built on.
|
|
345
|
+
- Inspiration: `mattpocock/skills/skills/productivity/grill-me/SKILL.md`
|
|
346
|
+
— same spirit (relentless decision-tree interview, one question at a
|
|
347
|
+
time, recommended answer per question), restructured to our command
|
|
348
|
+
shape with explicit stop heuristic and copyable pitch contract.
|