@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
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cost-report
|
|
3
|
+
description: Capture token cost from the active Claude Code session, append to the local sessions store, and surface the 50/75/90/100% budget alert ladder with cost-profile suggestions.
|
|
4
|
+
skills: [file-editor]
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
suggestion:
|
|
7
|
+
eligible: true
|
|
8
|
+
trigger_description: "check this session's token cost, see budget utilization, surface 50/75/90/100% alert ladder"
|
|
9
|
+
trigger_context: "user wants to know how expensive the active Claude Code session is or whether it crosses a budget threshold"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<!-- cloud_safe: noop -->
|
|
13
|
+
|
|
14
|
+
# /cost:report
|
|
15
|
+
|
|
16
|
+
Records the current Claude Code session's token usage and checks it against
|
|
17
|
+
the configured budget. Local-only: writes to
|
|
18
|
+
`agents/cost-tracking/sessions.jsonl` (no MCP / external services).
|
|
19
|
+
|
|
20
|
+
## Steps
|
|
21
|
+
|
|
22
|
+
### 1. Capture the active session
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
node scripts/cost/track.mjs
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Emits a Markdown summary of the session (model breakdown, per-tier cost,
|
|
29
|
+
total USD) and appends a JSON record to
|
|
30
|
+
`agents/cost-tracking/sessions.jsonl`.
|
|
31
|
+
|
|
32
|
+
If `track.mjs` exits 2 with `no Claude Code project dir`, the user is not in
|
|
33
|
+
a Claude Code session — surface that and stop.
|
|
34
|
+
|
|
35
|
+
### 2. Check the budget
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
node scripts/cost/budget.mjs check
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Reads the runtime budget config under `agents/cost-tracking/` (set via step 4
|
|
42
|
+
if missing) and the JSONL store, computes utilization, and prints the alert
|
|
43
|
+
level.
|
|
44
|
+
|
|
45
|
+
### 3. Surface the alert ladder
|
|
46
|
+
|
|
47
|
+
The check output already includes the level. Translate it into a
|
|
48
|
+
profile recommendation per the table:
|
|
49
|
+
|
|
50
|
+
| Level | Utilization | Recommendation |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| 🟢 OK | < 50% | within budget — no action |
|
|
53
|
+
| 🟡 INFO | ≥ 50% | log notification, no UX disruption |
|
|
54
|
+
| 🟠 WARNING | ≥ 75% | suggest [`/set-cost-profile balanced→minimal`](set-cost-profile.md) |
|
|
55
|
+
| 🔴 CRITICAL | ≥ 90% | recommend model downgrades, consider [`/set-cost-profile minimal`](set-cost-profile.md) |
|
|
56
|
+
| 🛑 HARD_STOP | ≥ 100% | halt non-essential work; review before continuing (`budget.mjs check` exits 1) |
|
|
57
|
+
|
|
58
|
+
If `level` ≥ WARNING and the current `cost_profile` in `.agent-settings.yml`
|
|
59
|
+
is not already `minimal`, add an explicit suggestion sentence:
|
|
60
|
+
|
|
61
|
+
> Run [`/set-cost-profile`](set-cost-profile.md) to switch from your
|
|
62
|
+
> current profile to a leaner one.
|
|
63
|
+
|
|
64
|
+
### 4. First-run: prompt to set a budget
|
|
65
|
+
|
|
66
|
+
If `budget.mjs check` reports `no budget configured`, ask the user (one
|
|
67
|
+
question per turn — see [`ask-when-uncertain`](../rules/ask-when-uncertain.md)):
|
|
68
|
+
|
|
69
|
+
> No budget set yet. What monthly USD cap do you want to track against?
|
|
70
|
+
> (e.g. 25, 50, 200)
|
|
71
|
+
|
|
72
|
+
On reply, run:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
node scripts/cost/budget.mjs set <usd>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Then re-run step 2.
|
|
79
|
+
|
|
80
|
+
### 5. Period filter (optional)
|
|
81
|
+
|
|
82
|
+
If the user asks for spend in a specific window — "this week", "today",
|
|
83
|
+
"this month" — re-run with `BUDGET_PERIOD`:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
BUDGET_PERIOD=week node scripts/cost/budget.mjs check
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Allowed values: `today`, `week`, `month`, `all` (default).
|
|
90
|
+
|
|
91
|
+
## Rules
|
|
92
|
+
|
|
93
|
+
- **Local-only.** Never persist cost data to remote stores. The
|
|
94
|
+
JSONL store and the `budget.json` config both live inside `agents/`,
|
|
95
|
+
which is gitignored by default in consumer projects.
|
|
96
|
+
- **Don't auto-switch profiles.** This command surfaces a recommendation;
|
|
97
|
+
the user runs [`/set-cost-profile`](set-cost-profile.md) themselves.
|
|
98
|
+
Auto-mutation of `.agent-settings.yml` would breach
|
|
99
|
+
[`commit-policy`](../rules/commit-policy.md) and
|
|
100
|
+
[`scope-control`](../rules/scope-control.md).
|
|
101
|
+
- **Honor HARD_STOP.** When `budget.mjs check` exits 1, surface the alert
|
|
102
|
+
prominently and stop the current task — do not keep working through the
|
|
103
|
+
cap silently.
|
|
104
|
+
|
|
105
|
+
## See also
|
|
106
|
+
|
|
107
|
+
- [`/set-cost-profile`](set-cost-profile.md) — change `cost_profile` in
|
|
108
|
+
`.agent-settings.yml`.
|
|
109
|
+
- [`/agent-status`](agent-status.md) — per-conversation token estimate
|
|
110
|
+
(different scope: in-flight estimate, not historical actuals).
|
|
111
|
+
- [`scripts/cost/track.mjs`](../../scripts/cost/track.mjs) — tracker source.
|
|
112
|
+
- [`scripts/cost/budget.mjs`](../../scripts/cost/budget.mjs) — budget source.
|
|
113
|
+
|
|
114
|
+
## Attribution
|
|
115
|
+
|
|
116
|
+
Forked from
|
|
117
|
+
[`ruvnet/ruflo`](https://github.com/ruvnet/ruflo)
|
|
118
|
+
`plugins/ruflo-cost-tracker/scripts/{track,budget}.mjs`. The MCP
|
|
119
|
+
`memory_store` dependency was replaced with a local JSONL append; the
|
|
120
|
+
50/75/90/100% alert ladder and pricing tiers are preserved verbatim.
|
|
@@ -30,17 +30,34 @@ The user invoked `/council default` on exactly one input mode:
|
|
|
30
30
|
Optional invocation flag: `mode:api|manual` overrides the per-member
|
|
31
31
|
and global mode for this call only (see Step 2.5).
|
|
32
32
|
|
|
33
|
-
Optional **rounds**: `rounds:N` (1-3) overrides the multi-round
|
|
34
|
-
count. Round 1 sees the artefact alone. Round 2+ sees the
|
|
35
|
-
anonymised critiques from the previous round
|
|
36
|
-
stripped). Total spend = N × single-round
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
33
|
+
Optional **rounds**: `rounds:N` (1-3) overrides the multi-round
|
|
34
|
+
debate count. Round 1 sees the artefact alone. Round 2+ sees the
|
|
35
|
+
artefact plus anonymised critiques from the previous round
|
|
36
|
+
(provider/model identity stripped). Total spend = N × single-round
|
|
37
|
+
cost; surface this in the cost gate.
|
|
38
|
+
|
|
39
|
+
Optional **depth**: `depth:deep` raises the round floor to
|
|
40
|
+
`ai_council.deep_min_rounds` (default `3`, max'd with `min_rounds`)
|
|
41
|
+
for architecture, refactoring, or bug-diagnosis artefacts. Set
|
|
42
|
+
explicitly by the user, or derived from `council_depth: deep`
|
|
43
|
+
declared in the frontmatter of the active rule, skill, or command —
|
|
44
|
+
the host translates that to `--depth deep` on the CLI. If multiple
|
|
45
|
+
active artefacts disagree, **deep wins** (max policy). Explicit
|
|
46
|
+
`rounds:N` overrides depth.
|
|
47
|
+
|
|
48
|
+
The default comes from `ai_council.min_rounds` in
|
|
49
|
+
`.agent-settings.yml` (default `2` so members critique each other at
|
|
50
|
+
least once before convergence). **Do NOT ask the user "how many
|
|
51
|
+
rounds?"** when `rounds:N` is unset or `N <= min_rounds` — proceed
|
|
52
|
+
with the settings default. Ask only when the artefact is genuinely
|
|
53
|
+
complex and you want more depth than `min_rounds` provides; surface
|
|
54
|
+
the proposal as a numbered choice (per `ask-when-uncertain`) with
|
|
55
|
+
the cost delta.
|
|
56
|
+
|
|
57
|
+
Resolution chain (highest priority first):
|
|
58
|
+
1. `rounds:N` / `--rounds N` — explicit user override.
|
|
59
|
+
2. `depth:deep` / `--depth deep` — floors at `max(deep_min_rounds, min_rounds)`.
|
|
60
|
+
3. `ai_council.min_rounds` — default.
|
|
44
61
|
|
|
45
62
|
Optional **mode_override**: `mode_override=pr|design|optimize` swaps
|
|
46
63
|
the system-prompt addendum for one of the specialised lenses
|
|
@@ -135,6 +152,7 @@ Once the user picks `1`, invoke the same arguments with `run` plus
|
|
|
135
152
|
--output agents/council-sessions/<UTC-timestamp>.json \
|
|
136
153
|
--confirm \
|
|
137
154
|
[--rounds 1|2|3] \
|
|
155
|
+
[--depth standard|deep] \
|
|
138
156
|
[--input-mode …] [--max-tokens …] [--mode-override …] \
|
|
139
157
|
[--original-ask "<framing sentence>"]
|
|
140
158
|
```
|
|
@@ -143,7 +161,13 @@ Once the user picks `1`, invoke the same arguments with `run` plus
|
|
|
143
161
|
`.agent-settings.yml` (or `2` if unset). Pass `--rounds N` only when
|
|
144
162
|
the user explicitly asked for a different count or a complex
|
|
145
163
|
artefact justifies more depth — do not pass `--rounds 1` to "save
|
|
146
|
-
money" by default; settings owner already chose `min_rounds`.
|
|
164
|
+
money" by default; the settings owner already chose `min_rounds`.
|
|
165
|
+
|
|
166
|
+
`--depth` defaults to `standard`. Set `--depth deep` when the
|
|
167
|
+
active rule, skill, or command declares `council_depth: deep` in
|
|
168
|
+
its frontmatter; the floor becomes
|
|
169
|
+
`max(ai_council.deep_min_rounds, ai_council.min_rounds)` (default
|
|
170
|
+
`3`). If `--rounds N` is also passed, `--rounds` wins.
|
|
147
171
|
|
|
148
172
|
The CLI:
|
|
149
173
|
|
|
@@ -169,12 +193,35 @@ the **Convergence / Divergence** section yourself:
|
|
|
169
193
|
- **Agreements** — points all members made (or did not contradict).
|
|
170
194
|
- **Disagreements** — points where members took opposing positions.
|
|
171
195
|
- **Unique insights** — points raised by exactly one member.
|
|
172
|
-
- **Suggested next actions** — translated into concrete options for
|
|
173
|
-
the user.
|
|
174
196
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
197
|
+
### 5a. Apply the critical-evaluation lens
|
|
198
|
+
|
|
199
|
+
Before turning findings into options, run every finding through the
|
|
200
|
+
*Critical evaluation* checklist from the
|
|
201
|
+
[`ai-council` skill](../../skills/ai-council/SKILL.md#critical-evaluation--convener-skeptic-stance):
|
|
202
|
+
codebase fit · locked-decision conflict · already addressed · cost
|
|
203
|
+
/ benefit · hallucination. Cite host evidence (file:line, ADR,
|
|
204
|
+
contract) for each verdict.
|
|
205
|
+
|
|
206
|
+
Render a **Host verdict** table after `Convergence / Divergence`:
|
|
207
|
+
|
|
208
|
+
| # | Finding (one-line) | Member(s) | Verdict | Reason (host evidence) |
|
|
209
|
+
|---|---|---|---|---|
|
|
210
|
+
| 1 | … | sonnet, gpt-4o | `accept` | matches `path/to/file.py:42` |
|
|
211
|
+
| 2 | … | sonnet | `accept-with-modification` | scope creep — narrow to module X |
|
|
212
|
+
| 3 | … | gpt-4o | `reject` | contradicts ADR `docs/decisions/foo.md` |
|
|
213
|
+
| 4 | … | sonnet | `needs-input` | ambiguous — open question for user |
|
|
214
|
+
|
|
215
|
+
The host is the convener **and** the skeptic — never paraphrase
|
|
216
|
+
council output as host reasoning, and never auto-promote convergence
|
|
217
|
+
to correctness.
|
|
218
|
+
|
|
219
|
+
### 5b. Translate verdicts into user options
|
|
220
|
+
|
|
221
|
+
End with a numbered-options block carrying the host verdict per
|
|
222
|
+
finding (e.g. `1. [accept] Apply finding 1 — <patch summary>`,
|
|
223
|
+
`2. [reject] Skip finding 2 — <reason>` — user can override). Always
|
|
224
|
+
include "discard council input" as an option.
|
|
178
225
|
|
|
179
226
|
### 6. Hard floor — text only
|
|
180
227
|
|
|
@@ -13,6 +13,14 @@ suggestion:
|
|
|
13
13
|
|
|
14
14
|
# /create-pr:description-only
|
|
15
15
|
|
|
16
|
+
> **Carve-out:** this command's *purpose* is the copyable preview of
|
|
17
|
+
> the PR description. It therefore **ignores**
|
|
18
|
+
> `verbosity.preview_artifacts` and `commands.create_pr.preview_description`
|
|
19
|
+
> — both flags govern only the bare `/create-pr` flow's preview-and-
|
|
20
|
+
> adjust loop. Removing the preview here would make the command a
|
|
21
|
+
> no-op. Do not "fix" this; the suppression flags only apply when the
|
|
22
|
+
> PR is actually being created.
|
|
23
|
+
|
|
16
24
|
## Input
|
|
17
25
|
|
|
18
26
|
The user may or may not provide a PR URL or branch name.
|
|
@@ -45,100 +45,119 @@ Uses `/create-pr:description-only` to generate the PR content, then creates the
|
|
|
45
45
|
|
|
46
46
|
### 2. Generate PR content
|
|
47
47
|
|
|
48
|
-
Run `/create-pr:description-only` to generate the PR title and body.
|
|
48
|
+
Run `/create-pr:description-only` Steps 1–4 to generate the PR title and body.
|
|
49
49
|
This handles: Jira ticket extraction, diff analysis, commit messages, **PR template filling**.
|
|
50
50
|
|
|
51
51
|
**CRITICAL**: The PR body MUST use the project's PR template (`.github/pull_request_template.md`).
|
|
52
52
|
Read the template file and fill in its sections. If the template does not exist, use the
|
|
53
53
|
fallback structure defined in `/create-pr:description-only`. NEVER invent a custom body structure.
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
### 2b. Offer council review (B2 hook)
|
|
58
|
-
|
|
59
|
-
If `.agent-settings.yml` has `ai_council.enabled: true` **and** at least
|
|
60
|
-
one member is enabled, ask (in the user's language):
|
|
61
|
-
|
|
62
|
-
> 1. Run the council on this diff before opening the PR? (billable)
|
|
63
|
-
> 2. Skip council review
|
|
64
|
-
|
|
65
|
-
Suppress when `personal.autonomy: on` (council is billable; autonomy
|
|
66
|
-
must not silently spend — see `road-to-ai-council.md` Decision 3).
|
|
67
|
-
|
|
68
|
-
If picked **1**:
|
|
69
|
-
|
|
70
|
-
- Compute the diff range — `origin/<default>..HEAD` from step 1.
|
|
71
|
-
- Run `/council diff:<base>..<head>` with `original_ask` set to the
|
|
72
|
-
PR title from step 2 (the user's framing of the change).
|
|
73
|
-
- Surface findings to the user before step 3. **Do not** auto-edit
|
|
74
|
-
the PR body or block PR creation — output is advisory.
|
|
75
|
-
- Optional: offer to append a one-paragraph "Council notes" section
|
|
76
|
-
to the PR description for reviewer transparency. Default: skip.
|
|
77
|
-
|
|
78
|
-
If picked **2** → continue.
|
|
79
|
-
|
|
80
|
-
### 3. Create the PR
|
|
81
|
-
|
|
82
|
-
Once the user approves the content from step 2:
|
|
83
|
-
|
|
84
|
-
- **Head branch**: Use the EXACT output of `git branch --show-current` from step 1.
|
|
85
|
-
**NEVER** reuse a branch name from earlier in the conversation — always use the fresh value.
|
|
86
|
-
- **Base branch**: Default branch (`main` / `master`).
|
|
87
|
-
- Ask the user:
|
|
88
|
-
```
|
|
89
|
-
> 1. Create as draft
|
|
90
|
-
> 2. Create as ready for review
|
|
91
|
-
```
|
|
92
|
-
- Create the PR via GitHub API with the approved title and body.
|
|
93
|
-
- **CRITICAL**: Set the `draft` parameter based on the user's choice:
|
|
94
|
-
- Option 1 → `"draft": true`
|
|
95
|
-
- Option 2 → `"draft": false`
|
|
96
|
-
- Do NOT default to draft. The user's choice is the ONLY factor.
|
|
97
|
-
- **After creating with `draft: false`**: The GitHub REST API sometimes ignores
|
|
98
|
-
`draft: false` and creates a draft anyway. Always verify by running:
|
|
99
|
-
```bash
|
|
100
|
-
gh pr view {number} --json isDraft --jq '.isDraft'
|
|
101
|
-
```
|
|
102
|
-
If it returns `true`, fix it immediately:
|
|
103
|
-
```bash
|
|
104
|
-
gh pr ready {number}
|
|
105
|
-
```
|
|
55
|
+
**Preview gate** — read `commands.create_pr.preview_description` from
|
|
56
|
+
`.agent-settings.yml` (default `false` when unset):
|
|
106
57
|
|
|
107
|
-
|
|
58
|
+
- `false` (default): skip Steps 5–6 of `/create-pr:description-only` (the
|
|
59
|
+
copyable preview block + adjust loop). Use the generated title and body
|
|
60
|
+
directly in Step 3 below. This saves agent tokens by avoiding a full
|
|
61
|
+
re-render of the description in chat. The user can still edit the PR
|
|
62
|
+
body in the GitHub UI after creation.
|
|
63
|
+
- `true`: run Steps 5–6 of `/create-pr:description-only` — present the
|
|
64
|
+
title and body as copyable blocks and ask for adjustments before
|
|
65
|
+
proceeding. The user reviews and adjusts the content in that step.
|
|
108
66
|
|
|
109
|
-
|
|
67
|
+
### 2b. Council review — explicitly excluded
|
|
110
68
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
69
|
+
`/create-pr` does **not** prompt for council review, even when
|
|
70
|
+
`ai_council.enabled: true`. Invoking the PR command is an explicit
|
|
71
|
+
delivery action; interrupting it with a billable opt-in question is
|
|
72
|
+
out of scope.
|
|
114
73
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
`Co-authored by Augment Code`, unsolicited `augmentcode.com` link.
|
|
119
|
-
3. If any present, strip with surrounding `---` and trailing
|
|
120
|
-
whitespace, then `PATCH /pulls/{number}` with cleaned body.
|
|
121
|
-
4. Re-fetch to verify. If the pattern reappears, repeat once; if
|
|
122
|
-
still present, surface to user and stop (no strip/PATCH loop).
|
|
123
|
-
5. Note in the reply how many footers were removed (or "clean").
|
|
74
|
+
Users who want a council pass on the diff run `/council diff:<base>..<head>`
|
|
75
|
+
**before** `/create-pr`. Do not re-add the prompt here without an explicit
|
|
76
|
+
user request.
|
|
124
77
|
|
|
125
|
-
|
|
78
|
+
### 3. Create the PR (draft-vs-ready, verbosity-gated)
|
|
126
79
|
|
|
127
|
-
|
|
80
|
+
- **Head branch**: EXACT output of `git branch --show-current` from step 1.
|
|
81
|
+
- **Base branch**: default branch (`main` / `master`).
|
|
128
82
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
83
|
+
**Behavior change vs. legacy:** with `verbosity.routine_confirmations:
|
|
84
|
+
false` (default), `/create-pr` creates the PR as draft silently. Override
|
|
85
|
+
per-invocation with `:ready` / `:final` / `:draft`. Restore the prompt
|
|
86
|
+
by flipping `routine_confirmations: true`. See
|
|
87
|
+
[`docs/customization.md` § Verbosity](../../docs/customization.md#verbosity).
|
|
88
|
+
|
|
89
|
+
Resolve `"draft"` (first match wins):
|
|
90
|
+
|
|
91
|
+
1. `:ready` / `:final` arg → `false`.
|
|
92
|
+
2. `:draft` arg → `true`.
|
|
93
|
+
3. `routine_confirmations: true` → ask `1. draft / 2. ready`.
|
|
94
|
+
4. Default → `true` (silent draft).
|
|
95
|
+
|
|
96
|
+
Create the PR with the approved title/body and the resolved `draft`.
|
|
97
|
+
|
|
98
|
+
**Verify after `draft: false`** — the GitHub REST API sometimes ignores
|
|
99
|
+
the flag:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
gh pr view {number} --json isDraft --jq '.isDraft'
|
|
103
|
+
# returns true → gh pr ready {number}
|
|
135
104
|
```
|
|
136
105
|
|
|
106
|
+
**Silent-draft postscript** (rule 4) → see step 4b.
|
|
107
|
+
|
|
108
|
+
### 4. After creation
|
|
109
|
+
|
|
110
|
+
#### 4a. Strip attribution footers (mandatory)
|
|
111
|
+
|
|
112
|
+
Some `github-api` tool surfaces append attribution server-side after
|
|
113
|
+
the agent has sent a clean body. Per
|
|
114
|
+
[`no-attribution-footers`](../rules/no-attribution-footers.md), every
|
|
115
|
+
PR body must be re-checked and stripped after every write.
|
|
116
|
+
|
|
117
|
+
Run this strip-pass **after PR creation and after every body PATCH**:
|
|
118
|
+
|
|
119
|
+
1. Re-fetch the PR body:
|
|
120
|
+
```
|
|
121
|
+
GET /repos/{owner}/{repo}/pulls/{number}
|
|
122
|
+
```
|
|
123
|
+
2. Search the body (case-insensitive) for any of:
|
|
124
|
+
- `Generated with [Augment Code]` / `🤖 Generated with`
|
|
125
|
+
- `Pull Request opened by [Augment Code]`
|
|
126
|
+
- `Co-authored by Augment Code`
|
|
127
|
+
- Any `augmentcode.com` link the user did not ask for
|
|
128
|
+
3. If any pattern is present, remove it together with surrounding
|
|
129
|
+
`---` separators and trailing whitespace, then:
|
|
130
|
+
```
|
|
131
|
+
PATCH /repos/{owner}/{repo}/pulls/{number}
|
|
132
|
+
{ "body": "<cleaned body>" }
|
|
133
|
+
```
|
|
134
|
+
4. Re-fetch the body once more to verify the strip stuck. If a
|
|
135
|
+
pattern reappears (server re-injection), repeat steps 2–4 once;
|
|
136
|
+
if it still reappears, surface the issue to the user and stop
|
|
137
|
+
(do not enter a strip/PATCH loop).
|
|
138
|
+
5. Briefly note in the reply how many footers were removed (or
|
|
139
|
+
"no footers found" if clean).
|
|
140
|
+
|
|
141
|
+
#### 4b. Show the PR URL (verbosity-gated)
|
|
142
|
+
|
|
143
|
+
Per `verbosity.post_action_reports` (default `minimal`):
|
|
144
|
+
|
|
145
|
+
- `off` → nothing.
|
|
146
|
+
- `minimal` → `→ #N opened: <url>`. Append `→ created as draft — run
|
|
147
|
+
\`gh pr ready N\` to flip` when silent-draft (rule 4); omit on ready.
|
|
148
|
+
- `full` → multi-line: PR number, URL, draft state, base/head, ready-reminder.
|
|
149
|
+
|
|
150
|
+
#### 4c. Jira transition (only when transitioned)
|
|
151
|
+
|
|
152
|
+
Linked ticket + `routine_confirmations: true` → ask `1. Yes / 2. No`.
|
|
153
|
+
Default (`false`) → skip silently. **Only emit a transition line when
|
|
154
|
+
an actual Jira API call succeeded** — never announce "skipped".
|
|
155
|
+
|
|
137
156
|
### Rules
|
|
138
157
|
|
|
139
|
-
- **Always use the PR template** from `.github/pull_request_template.md
|
|
140
|
-
- **
|
|
141
|
-
- **Push the branch first** if
|
|
142
|
-
- **
|
|
143
|
-
- Only create the PR — never merge
|
|
144
|
-
- Only commit or push with explicit
|
|
158
|
+
- **Always use the PR template** from `.github/pull_request_template.md`.
|
|
159
|
+
- **Preview is opt-in** — `commands.create_pr.preview_description` (default `false`). `/create-pr:description-only` always previews.
|
|
160
|
+
- **Push the branch first** if needed (with permission).
|
|
161
|
+
- **No attribution footers** — see [`no-attribution-footers`](../rules/no-attribution-footers.md); strip-pass at 4a defends against tool injection.
|
|
162
|
+
- Only create the PR — never merge.
|
|
163
|
+
- Only commit or push with explicit permission.
|
|
@@ -209,16 +209,22 @@ Mir sind noch ein paar offene Fragen aufgefallen:
|
|
|
209
209
|
Hast du dazu schon eine Meinung?
|
|
210
210
|
```
|
|
211
211
|
|
|
212
|
-
### 5d. Offer council idea-validation (B4 hook)
|
|
212
|
+
### 5d. Offer council idea-validation (B4 hook, verbosity-gated)
|
|
213
213
|
|
|
214
|
-
Once
|
|
215
|
-
|
|
216
|
-
|
|
214
|
+
Once rounds 1–4 have converged but **before** step 6 writes the file,
|
|
215
|
+
read `verbosity.offer_council_in_delivery` from `.agent-settings.yml`
|
|
216
|
+
(default `false`):
|
|
217
217
|
|
|
218
|
-
|
|
219
|
-
|
|
218
|
+
- `false` (default): skip the prompt silently. When `ai_council.enabled:
|
|
219
|
+
true`, emit one line: `→ council skipped (set
|
|
220
|
+
verbosity.offer_council_in_delivery: true to enable, or run
|
|
221
|
+
/council directly)`. When `ai_council.enabled: false`, emit nothing.
|
|
222
|
+
- `true`: ask (in the user's language):
|
|
220
223
|
|
|
221
|
-
|
|
224
|
+
> 1. Run the council on this idea before writing the plan? (billable)
|
|
225
|
+
> 2. Skip — write the plan now
|
|
226
|
+
|
|
227
|
+
Also suppress when `personal.autonomy: on` (council is billable).
|
|
222
228
|
|
|
223
229
|
If picked **1**:
|
|
224
230
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: grill-me
|
|
3
|
+
description: Alias for /challenge-me — interactive grill-style interview that sharpens a fuzzy plan/idea into a copyable Markdown pitch
|
|
4
|
+
cluster: challenge-me
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
suggestion:
|
|
7
|
+
eligible: true
|
|
8
|
+
trigger_description: "grill me, grill me on this, grill me on this plan, grill me through this, grill me on the idea, grill me until it's clear, grill me hard"
|
|
9
|
+
trigger_context: "user has a fuzzy plan/idea/feature draft and wants it sharpened interactively rather than reconstructed in one shot"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /grill-me
|
|
13
|
+
|
|
14
|
+
Alias for [`/challenge-me`](challenge-me.md). Identical behaviour,
|
|
15
|
+
sub-commands (`vision`, `with-docs`), and in-interview triggers
|
|
16
|
+
(`!pitch`, `!roadmap`, `!ai`).
|
|
17
|
+
|
|
18
|
+
## Sub-commands
|
|
19
|
+
|
|
20
|
+
| Sub-command | Routes to | Purpose |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| `/grill-me vision` | `commands/challenge-me/vision.md` | 95%-confidence interview, emits a vision pitch |
|
|
23
|
+
| `/grill-me with-docs` | `commands/challenge-me/with-docs.md` | Same flow plus glossary + claim-vs-code check vs `CONTEXT.md` / ADRs |
|
|
24
|
+
|
|
25
|
+
## Dispatch
|
|
26
|
+
|
|
27
|
+
1. Parse: `/grill-me <sub-command> [flags] [seed]`.
|
|
28
|
+
2. Load [`commands/challenge-me.md`](challenge-me.md) and follow its
|
|
29
|
+
`## Dispatch` verbatim with the same sub-command + flags + seed.
|
|
30
|
+
3. Unknown / missing sub-command → print menu from `challenge-me.md`.
|
|
31
|
+
|
|
32
|
+
## Rules
|
|
33
|
+
|
|
34
|
+
- Thin alias — all behaviour, triggers, cost-gate, file-write rules
|
|
35
|
+
live in [`challenge-me.md`](challenge-me.md) and the routed sub-commands.
|
|
36
|
+
Do not duplicate them here; edit them there.
|
|
37
|
+
- Suggestion engine surfaces this for free-form "grill me" prompts;
|
|
38
|
+
`/grill-me` is the direct invocation path.
|
|
@@ -7,7 +7,7 @@ description: Execute an ordered plan step by step with a judge gate between step
|
|
|
7
7
|
disable-model-invocation: true
|
|
8
8
|
suggestion:
|
|
9
9
|
eligible: false
|
|
10
|
-
rationale: "Subagent orchestration — overlaps /work and /roadmap
|
|
10
|
+
rationale: "Subagent orchestration — overlaps /work and /roadmap:process-*; keep explicit."
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# /judge steps
|
|
@@ -115,14 +115,22 @@ link resolves. Broken link → block and ask the user to fix.
|
|
|
115
115
|
- Duplicate of an existing entry (step 2) — update instead.
|
|
116
116
|
- Missing `source:` — an entry without evidence cannot be reviewed.
|
|
117
117
|
|
|
118
|
-
## Output format
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
118
|
+
## Output format (verbosity-gated)
|
|
119
|
+
|
|
120
|
+
Read `verbosity.post_action_reports` from `.agent-settings.yml` (default
|
|
121
|
+
`minimal`).
|
|
122
|
+
|
|
123
|
+
- `off` → emit nothing on success; surface gate failures only.
|
|
124
|
+
- `minimal` (default) → one line:
|
|
125
|
+
`✅ Added <type>/<id> (gate: PASS)`.
|
|
126
|
+
- `full` → multi-line block:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
✅ Added <type>/<id> (confidence: <high|medium|low>)
|
|
130
|
+
Path: agents/memory/<type>.yml (or agents/memory/<type>/<hash>.yml)
|
|
131
|
+
Gate: scripts/check_memory.py → PASS
|
|
132
|
+
Next: commit and link from the relevant skill/command.
|
|
133
|
+
```
|
|
126
134
|
|
|
127
135
|
## See also
|
|
128
136
|
|
|
@@ -120,15 +120,23 @@ git push -u origin memory/promote-<curated-id>
|
|
|
120
120
|
# Then route to /create-pr with the memory-promote template hint.
|
|
121
121
|
```
|
|
122
122
|
|
|
123
|
-
### 7. Report
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
> -
|
|
131
|
-
|
|
123
|
+
### 7. Report (verbosity-gated)
|
|
124
|
+
|
|
125
|
+
Read `verbosity.post_action_reports` from `.agent-settings.yml` (default
|
|
126
|
+
`minimal`).
|
|
127
|
+
|
|
128
|
+
- `off` → emit nothing on success; surface errors only.
|
|
129
|
+
- `minimal` (default) → one line:
|
|
130
|
+
`→ Promoted <sig-id> → <curated-id> (PR: <url or branch>)`.
|
|
131
|
+
- `full` → multi-line block:
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
> ✅ Promotion drafted.
|
|
135
|
+
> - Signal: <sig-id>
|
|
136
|
+
> - Curated: <curated-id> in agents/memory/<type>.yml
|
|
137
|
+
> - PR: <url or branch name>
|
|
138
|
+
> - Next: review + merge
|
|
139
|
+
```
|
|
132
140
|
|
|
133
141
|
## Safety
|
|
134
142
|
|
|
@@ -103,17 +103,22 @@ Run a quick test to confirm rtk picks up the filters:
|
|
|
103
103
|
rtk config 2>&1 | tail -5
|
|
104
104
|
```
|
|
105
105
|
|
|
106
|
-
### 7. Present results
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
106
|
+
### 7. Present results (verbosity-gated)
|
|
107
|
+
|
|
108
|
+
Read `verbosity.post_action_reports` from `.agent-settings.yml` (default
|
|
109
|
+
`minimal`).
|
|
110
|
+
|
|
111
|
+
- `off` → emit nothing on success; surface errors only.
|
|
112
|
+
- `minimal` (default) → one line: `→ N filters configured in .rtk/rtk.toml`.
|
|
113
|
+
- `full` → multi-line summary table:
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
| # | Filter | Match | Max Lines |
|
|
117
|
+
|---|---|---|---|
|
|
118
|
+
| 1 | phpstan | phpstan\|quality:phpstan\|vendor/bin/phpstan | 80 |
|
|
119
|
+
| 2 | pest | pest\|phpunit\|artisan test | 60 |
|
|
120
|
+
| ... | ... | ... | ... |
|
|
121
|
+
```
|
|
117
122
|
|
|
118
123
|
### Rules
|
|
119
124
|
|
|
@@ -80,12 +80,18 @@ Once all merges succeed:
|
|
|
80
80
|
git checkout {head-branch-of-target-PR}
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
-
### 7. Report
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
-
|
|
83
|
+
### 7. Report (verbosity-gated)
|
|
84
|
+
|
|
85
|
+
Read `verbosity.post_action_reports` from `.agent-settings.yml` (default
|
|
86
|
+
`minimal`).
|
|
87
|
+
|
|
88
|
+
- `off` → emit nothing on success; surface warnings/errors only.
|
|
89
|
+
- `minimal` (default) → one line:
|
|
90
|
+
`→ {branch} ready · {N} branches merged · {warnings or "clean"}`.
|
|
91
|
+
- `full` → multi-line block listing:
|
|
92
|
+
- Which branch chain was processed (in order)
|
|
93
|
+
- That the target branch is now checked out and up to date
|
|
94
|
+
- Any warnings (e.g. branch was already up to date)
|
|
89
95
|
|
|
90
96
|
## Rules
|
|
91
97
|
|