@dtlabs/ai-toolkit 0.1.5 → 0.1.7
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/.claude/agents/assessment-manager.md +526 -72
- package/.claude/agents/project-manager.md +5 -5
- package/.claude/commands/check-interventions.md +152 -0
- package/.claude/commands/next-intervention.md +113 -0
- package/.claude/skills/assess-codebase/SKILL.md +129 -4
- package/CHANGELOG.md +80 -2
- package/CLAUDE.md +35 -1
- package/docs/procedures/approval-gates.md +22 -14
- package/docs/procedures/assessment-findings-gate.md +120 -0
- package/docs/procedures/token-estimation.md +37 -5
- package/package.json +1 -1
- package/docs/procedures/assessment-approval-gate.md +0 -60
|
@@ -52,7 +52,7 @@ state = {
|
|
|
52
52
|
|
|
53
53
|
### 2a. Cross-feature analysis
|
|
54
54
|
|
|
55
|
-
Compare `feature.md` against each `registry` entry for OVERLAP, DEPENDENCY, or CONFLICT (see `docs/procedures/feature-registry.md`). Show the cross-feature report to the user. If conflicts are found, use `AskUserQuestion`
|
|
55
|
+
Compare `feature.md` against each `registry` entry for OVERLAP, DEPENDENCY, or CONFLICT (see `docs/procedures/feature-registry.md`). Show the cross-feature report to the user. If conflicts are found, output a hard-stop message and wait for a text reply before continuing. Do NOT use `AskUserQuestion` — it cannot be answered through the agent relay chain. If `registry` is empty, output "No prior features — no cross-reference needed."
|
|
56
56
|
|
|
57
57
|
### 2b. Build execution plan
|
|
58
58
|
|
|
@@ -75,7 +75,7 @@ feature.md
|
|
|
75
75
|
Planning rules:
|
|
76
76
|
1. Skip agents whose output is fresh — unless `--force`
|
|
77
77
|
2. Order by dependency — no agent starts until its inputs are fresh
|
|
78
|
-
3. Parallelize independent agents — use `run_in_background: true`
|
|
78
|
+
3. Parallelize independent agents — invoke multiple Agent tool calls in the same response (do NOT use `run_in_background: true` — background completion notifications are not delivered to sub-agent contexts)
|
|
79
79
|
4. Re-run downstream agents when an upstream agent ran
|
|
80
80
|
|
|
81
81
|
### 2c. Show plan to user before executing
|
|
@@ -176,7 +176,7 @@ Read `{PREFIX}-Work-Breakdown.md` Section 4 to extract: phase order, tasks per p
|
|
|
176
176
|
### 6d. Execution loop (per phase)
|
|
177
177
|
1. Identify ready tasks (all dependencies completed)
|
|
178
178
|
2. Group by domain — batch independent tasks to the same agent
|
|
179
|
-
3. Dispatch in parallel
|
|
179
|
+
3. Dispatch in parallel by invoking multiple Agent tool calls in the same response where no inter-dependency — do NOT use `run_in_background: true` from within a sub-agent context
|
|
180
180
|
4. Wait for all agents in phase
|
|
181
181
|
5. When ALL tasks of a User Story are done → trigger US review
|
|
182
182
|
6. Proceed to next phase only when current phase is fully complete and all completed US reviews have passed
|
|
@@ -300,8 +300,8 @@ To add a new agent: create `.claude/agents/my-agent.md` with a clear `descriptio
|
|
|
300
300
|
- **PR targets `develop`** — never push directly; do NOT auto-merge
|
|
301
301
|
- **Plan before executing** — always show the plan first
|
|
302
302
|
- **Never re-run fresh agents** unless `--force`
|
|
303
|
-
- **Parallelize where possible** — independent agents
|
|
304
|
-
- **Gates are hard stops** —
|
|
303
|
+
- **Parallelize where possible** — invoke multiple Agent tool calls in the same response for independent agents; never use `run_in_background: true` from within a sub-agent (background notifications are not delivered to sub-agent contexts)
|
|
304
|
+
- **Gates are hard stops** — output the hard-stop text and wait for a text reply from the user; write `{PREFIX}-Approvals.md`, verify it on disk. Do NOT use `AskUserQuestion` — it cannot be answered through the agent relay chain. Never auto-approve, never assume, never skip
|
|
305
305
|
- **Pre-condition check at Phase 6** — read `{PREFIX}-Approvals.md` and verify both gates ✅ before touching the codebase. If missing, return to the gate
|
|
306
306
|
- **Review at US level** — not per task
|
|
307
307
|
- **Commit per US** — `feat({PREFIX}): implement US-XX — {title}`
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Check Interventions — full reconciliation view of all interventions from an assessment run: document presence, Approvals/Index consistency, and feature-actioning status. Usage: /check-interventions [prefix]"
|
|
3
|
+
argument-hint: "[assessment-prefix]"
|
|
4
|
+
allowed-tools: Read, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Produce a full reconciliation table for all interventions from a completed assessment run.
|
|
8
|
+
|
|
9
|
+
## Step 1 — Resolve prefix
|
|
10
|
+
|
|
11
|
+
If `$ARGUMENTS` is empty:
|
|
12
|
+
- Glob `docs/assessments/ASSESS-*/` to list available assessment folders.
|
|
13
|
+
- Output the list and say: "Please specify a prefix from the list above (e.g. `/check-interventions ASSESS-001`)."
|
|
14
|
+
- STOP.
|
|
15
|
+
|
|
16
|
+
Otherwise:
|
|
17
|
+
- If the argument is digits-only (e.g. `001`), prepend `ASSESS-` to form `ASSESS-001`.
|
|
18
|
+
- Strip any trailing slash.
|
|
19
|
+
- Use this as `{PREFIX}` for all subsequent steps.
|
|
20
|
+
|
|
21
|
+
## Step 2 — Check assessment directory
|
|
22
|
+
|
|
23
|
+
If `docs/assessments/{PREFIX}/` does not exist:
|
|
24
|
+
```
|
|
25
|
+
❌ Assessment directory not found: docs/assessments/{PREFIX}/
|
|
26
|
+
Run /assess-codebase to start a new assessment.
|
|
27
|
+
```
|
|
28
|
+
STOP.
|
|
29
|
+
|
|
30
|
+
## Step 3 — Read Approvals file
|
|
31
|
+
|
|
32
|
+
File path: `docs/assessments/{PREFIX}/{PREFIX}-Approvals.md`
|
|
33
|
+
|
|
34
|
+
If the file does not exist:
|
|
35
|
+
```
|
|
36
|
+
❌ Approvals file not found: docs/assessments/{PREFIX}/{PREFIX}-Approvals.md
|
|
37
|
+
The assessment pipeline's Findings Gate must complete before this command can run.
|
|
38
|
+
```
|
|
39
|
+
STOP.
|
|
40
|
+
|
|
41
|
+
Read the file. If it does NOT contain `## Interventions Flagged for Feature Delivery`:
|
|
42
|
+
```
|
|
43
|
+
❌ This Approvals file uses a pre-FTR-003 format (missing "Interventions Flagged for Feature Delivery" section).
|
|
44
|
+
This command requires the FTR-003 format produced by assessment-manager Phase 5.
|
|
45
|
+
```
|
|
46
|
+
STOP.
|
|
47
|
+
|
|
48
|
+
Parse the Markdown table under `## Interventions Flagged for Feature Delivery`. Extract all rows (both `Yes` and `No`). Record:
|
|
49
|
+
- `INT-NNN` identifier (normalise by stripping leading zeros for matching)
|
|
50
|
+
- `Flagged` value (`Yes`, `No`, or malformed if any other value)
|
|
51
|
+
- Full `Intervention` column value (e.g. `INT-001 — sql-injection-hardening`) to extract the slug — the slug is the part after ` — `
|
|
52
|
+
|
|
53
|
+
## Step 4 — Read Interventions Index
|
|
54
|
+
|
|
55
|
+
File path: `docs/assessments/{PREFIX}/{PREFIX}-Interventions-Index.md`
|
|
56
|
+
|
|
57
|
+
If the file does not exist:
|
|
58
|
+
- Set `index_available = false`
|
|
59
|
+
- Note: Title, Criticality, and cross-file consistency checks will be skipped or shown as `—`.
|
|
60
|
+
|
|
61
|
+
If the file exists:
|
|
62
|
+
- Set `index_available = true`
|
|
63
|
+
- Parse the Markdown table: extract columns `ID`, `Title`, `Criticality` for each row.
|
|
64
|
+
|
|
65
|
+
## Step 5 — Build unified intervention list
|
|
66
|
+
|
|
67
|
+
Collect all INT-NNN identifiers from:
|
|
68
|
+
1. The Approvals file (all rows)
|
|
69
|
+
2. The Interventions Index (all rows, if available)
|
|
70
|
+
|
|
71
|
+
Union both sets (deduplicated). This is the full list to reconcile.
|
|
72
|
+
|
|
73
|
+
For each entry, retain the **original padded identifier** from the source file (e.g., `INT-001`) as the canonical form — this is what is used in file-system glob operations. Stripping leading zeros is applied **only when comparing two identifiers from different sources** to determine whether they refer to the same intervention (e.g., `INT-001` and `INT-1` are treated as equal for deduplication only).
|
|
74
|
+
|
|
75
|
+
## Step 6 — For each intervention, collect data
|
|
76
|
+
|
|
77
|
+
For each INT-NNN in the unified list:
|
|
78
|
+
|
|
79
|
+
**a. Doc file status:**
|
|
80
|
+
- Glob `docs/assessments/{PREFIX}/{PREFIX}-{INT-NNN}-*.md`
|
|
81
|
+
- If one or more files found: `✅ present`
|
|
82
|
+
- If no files found: `❌ missing`
|
|
83
|
+
|
|
84
|
+
**b. In Approvals:**
|
|
85
|
+
- `Yes` if INT-NNN is in the Approvals table, `No` otherwise
|
|
86
|
+
|
|
87
|
+
**c. Flagged value:**
|
|
88
|
+
- From Approvals table: `Yes`, `No`, or `⚠️ malformed ({value})` if not exactly `Yes`/`No`
|
|
89
|
+
- If INT-NNN not in Approvals: `n/a`
|
|
90
|
+
|
|
91
|
+
**d. In Interventions Index:**
|
|
92
|
+
- `Yes` if INT-NNN is in the Index, `No` otherwise (or `—` if index unavailable)
|
|
93
|
+
|
|
94
|
+
**e. Title and Criticality:**
|
|
95
|
+
- From Interventions Index if available; else `—`
|
|
96
|
+
|
|
97
|
+
**f. Actioned status (only for interventions where Flagged = Yes):**
|
|
98
|
+
- Glob `internal_docs/features/FTR-*/` and `docs/features/FTR-*/`
|
|
99
|
+
- For each feature folder, apply the two-step heuristic:
|
|
100
|
+
1. **Slug match:** folder name contains the INT-NNN slug (case-insensitive substring)
|
|
101
|
+
2. **Body match (fallback):** read `feature.md`; body contains the INT-NNN identifier string (case-insensitive)
|
|
102
|
+
- If a match is found: `✅ actioned → {matched-folder}`
|
|
103
|
+
- If no match: `⏳ pending`
|
|
104
|
+
- If Flagged is not `Yes`: `n/a`
|
|
105
|
+
|
|
106
|
+
## Step 7 — Render reconciliation table
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
📊 Intervention Reconciliation — {PREFIX}
|
|
110
|
+
════════════════════════════════════════════════════════════════
|
|
111
|
+
|
|
112
|
+
| INT-NNN | Title | Criticality | Flagged | Doc file | Actioned |
|
|
113
|
+
|---------|----------------|-------------|---------|-------------|------------------|
|
|
114
|
+
| INT-001 | {title} | CRITICAL | Yes | ✅ present | ✅ actioned → FTR-010-... |
|
|
115
|
+
| INT-002 | {title} | HIGH | Yes | ✅ present | ⏳ pending |
|
|
116
|
+
| INT-003 | {title} | MEDIUM | No | ❌ missing | n/a |
|
|
117
|
+
| INT-004 | {title} | LOW | No | ✅ present | n/a |
|
|
118
|
+
|
|
119
|
+
Total: {N} interventions | {K} flagged | {A} actioned | {P} pending
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
If `index_available = false`, note above the table:
|
|
123
|
+
```
|
|
124
|
+
⚠️ Interventions Index not found — Title and Criticality columns not available.
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Step 8 — Render inconsistency list
|
|
128
|
+
|
|
129
|
+
Collect all inconsistencies:
|
|
130
|
+
|
|
131
|
+
- For each INT-NNN in Approvals that is NOT in the Interventions Index (when index available):
|
|
132
|
+
`INT-NNN: present in Approvals but not in Interventions Index`
|
|
133
|
+
- For each INT-NNN in Interventions Index that is NOT in Approvals (when index available):
|
|
134
|
+
`INT-NNN: present in Interventions Index but missing from Approvals`
|
|
135
|
+
- For each row in Approvals where `Flagged` is not exactly `Yes` or `No`:
|
|
136
|
+
`INT-NNN: malformed Flagged value '{value}' (expected 'Yes' or 'No')`
|
|
137
|
+
|
|
138
|
+
If no inconsistencies:
|
|
139
|
+
```
|
|
140
|
+
────────────────────────────────────────
|
|
141
|
+
✅ No inconsistencies found.
|
|
142
|
+
════════════════════════════════════════════════════════════════
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
If inconsistencies exist:
|
|
146
|
+
```
|
|
147
|
+
────────────────────────────────────────
|
|
148
|
+
⚠️ Inconsistencies ({N}):
|
|
149
|
+
• INT-NNN: present in Approvals but not in Interventions Index
|
|
150
|
+
• INT-NNN: malformed Flagged value 'Approved' (expected 'Yes' or 'No')
|
|
151
|
+
════════════════════════════════════════════════════════════════
|
|
152
|
+
```
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Next Intervention — finds the next un-actioned flagged intervention from an assessment run and suggests the /define-feature invocation to start on it. Usage: /next-intervention [prefix]"
|
|
3
|
+
argument-hint: "[assessment-prefix]"
|
|
4
|
+
allowed-tools: Read, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Find the next un-actioned flagged intervention from a completed assessment run.
|
|
8
|
+
|
|
9
|
+
## Step 1 — Resolve prefix
|
|
10
|
+
|
|
11
|
+
If `$ARGUMENTS` is empty:
|
|
12
|
+
- Glob `docs/assessments/ASSESS-*/` to list available assessment folders.
|
|
13
|
+
- Output the list and say: "Please specify a prefix from the list above (e.g. `/next-intervention ASSESS-001`)."
|
|
14
|
+
- STOP.
|
|
15
|
+
|
|
16
|
+
Otherwise:
|
|
17
|
+
- If the argument is digits-only (e.g. `001`), prepend `ASSESS-` to form `ASSESS-001`.
|
|
18
|
+
- Strip any trailing slash.
|
|
19
|
+
- Use this as `{PREFIX}` for all subsequent steps.
|
|
20
|
+
|
|
21
|
+
## Step 2 — Check assessment directory
|
|
22
|
+
|
|
23
|
+
If `docs/assessments/{PREFIX}/` does not exist:
|
|
24
|
+
```
|
|
25
|
+
❌ Assessment directory not found: docs/assessments/{PREFIX}/
|
|
26
|
+
Run /assess-codebase to start a new assessment.
|
|
27
|
+
```
|
|
28
|
+
STOP.
|
|
29
|
+
|
|
30
|
+
## Step 3 — Read Approvals file
|
|
31
|
+
|
|
32
|
+
File path: `docs/assessments/{PREFIX}/{PREFIX}-Approvals.md`
|
|
33
|
+
|
|
34
|
+
If the file does not exist:
|
|
35
|
+
```
|
|
36
|
+
❌ Approvals file not found: docs/assessments/{PREFIX}/{PREFIX}-Approvals.md
|
|
37
|
+
The assessment pipeline's Findings Gate must complete before this command can run.
|
|
38
|
+
```
|
|
39
|
+
STOP.
|
|
40
|
+
|
|
41
|
+
Read the file. If it does NOT contain the section heading `## Interventions Flagged for Feature Delivery`:
|
|
42
|
+
```
|
|
43
|
+
❌ This Approvals file uses a pre-FTR-003 format (missing "Interventions Flagged for Feature Delivery" section).
|
|
44
|
+
This command requires the FTR-003 format produced by assessment-manager Phase 5.
|
|
45
|
+
```
|
|
46
|
+
STOP.
|
|
47
|
+
|
|
48
|
+
## Step 4 — Extract flagged interventions
|
|
49
|
+
|
|
50
|
+
Parse the Markdown table under `## Interventions Flagged for Feature Delivery`.
|
|
51
|
+
- Extract all rows where the `Flagged` column value is exactly `Yes` (case-sensitive).
|
|
52
|
+
- Preserve document order (top-to-bottom).
|
|
53
|
+
|
|
54
|
+
If no rows are flagged:
|
|
55
|
+
```
|
|
56
|
+
ℹ️ No interventions were flagged for feature delivery in this assessment.
|
|
57
|
+
```
|
|
58
|
+
STOP.
|
|
59
|
+
|
|
60
|
+
## Step 5 — Check for matching feature folders
|
|
61
|
+
|
|
62
|
+
Glob both:
|
|
63
|
+
- `internal_docs/features/FTR-*/`
|
|
64
|
+
- `docs/features/FTR-*/`
|
|
65
|
+
|
|
66
|
+
For each flagged intervention, determine whether it is "actioned" using this two-step heuristic (attempt slug match first, then body match as fallback):
|
|
67
|
+
|
|
68
|
+
1. **Slug match:** Does any feature folder name contain the INT-NNN slug from the `Intervention` column (case-insensitive substring)?
|
|
69
|
+
- The `Intervention` column format is `INT-NNN — {slug}` (e.g. `INT-001 — sql-injection-hardening`). The slug is the part after ` — `.
|
|
70
|
+
2. **Body match (fallback):** For any folder that did NOT match by slug, read its `feature.md` and check whether the INT-NNN identifier string (e.g. `INT-001`) appears anywhere in the body (case-insensitive).
|
|
71
|
+
|
|
72
|
+
An intervention is "actioned" if either check returns true for at least one feature folder.
|
|
73
|
+
|
|
74
|
+
Normalise INT-NNN identifiers by stripping leading zeros before comparison (e.g. `INT-001` and `INT-1` are the same).
|
|
75
|
+
|
|
76
|
+
## Step 6 — Find the first un-actioned intervention
|
|
77
|
+
|
|
78
|
+
Scan the flagged interventions in document order and find the first one that is NOT actioned.
|
|
79
|
+
|
|
80
|
+
If all flagged interventions are actioned:
|
|
81
|
+
```
|
|
82
|
+
✅ All flagged interventions have been actioned. ({N} of {N} flagged)
|
|
83
|
+
|
|
84
|
+
Actioned interventions:
|
|
85
|
+
• INT-001 — {slug} → {matched-feature-folder}
|
|
86
|
+
• INT-002 — {slug} → {matched-feature-folder}
|
|
87
|
+
...
|
|
88
|
+
```
|
|
89
|
+
STOP.
|
|
90
|
+
|
|
91
|
+
## Step 7 — Output the next un-actioned intervention
|
|
92
|
+
|
|
93
|
+
Construct the document path:
|
|
94
|
+
```
|
|
95
|
+
docs/assessments/{PREFIX}/{PREFIX}-{INT-NNN}-{slug}.md
|
|
96
|
+
```
|
|
97
|
+
(Glob `docs/assessments/{PREFIX}/{PREFIX}-{INT-NNN}-*.md` to find the actual filename if the slug in the path differs from the Approvals column.)
|
|
98
|
+
|
|
99
|
+
Output:
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
🔖 Next un-actioned intervention: {INT-NNN} — {slug}
|
|
103
|
+
|
|
104
|
+
Document path: docs/assessments/{PREFIX}/{PREFIX}-{INT-NNN}-{slug}.md
|
|
105
|
+
Suggested command: /define-feature docs/assessments/{PREFIX}/{PREFIX}-{INT-NNN}-{slug}.md
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
If some interventions were already actioned, append:
|
|
109
|
+
```
|
|
110
|
+
Previously actioned ({K} of {N} flagged):
|
|
111
|
+
• INT-001 — {slug} → {matched-feature-folder}
|
|
112
|
+
...
|
|
113
|
+
```
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Assess Codebase — starts the
|
|
2
|
+
description: "Assess Codebase — starts the codebase assessment pipeline (parallel assessment → findings consolidation → intervention documents → findings gate). Usage: /assess-codebase [path] [--scope=architecture,security,quality,concurrency,devops] [--force]"
|
|
3
3
|
argument-hint: "[path] [--scope=architecture,security,quality,concurrency,devops] [--force]"
|
|
4
|
-
disable-model-invocation: true
|
|
5
4
|
---
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
# Assess Codebase
|
|
7
|
+
|
|
8
|
+
Orchestrates the full codebase assessment pipeline by spawning the `assessment-manager` agent
|
|
9
|
+
and, once it completes, recording the real token consumption in a dedicated file.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Step 1 — Spawn the Assessment Manager
|
|
14
|
+
|
|
15
|
+
Spawn the `assessment-manager` agent with the exact arguments the user provided:
|
|
8
16
|
|
|
9
17
|
```
|
|
10
18
|
subagent_type: assessment-manager
|
|
@@ -13,4 +21,121 @@ prompt: <path> [--scope=...] [--force]
|
|
|
13
21
|
|
|
14
22
|
If no path is provided, use `.` (current working directory).
|
|
15
23
|
|
|
16
|
-
|
|
24
|
+
Wait for the agent to complete. Capture its full result, including the `<usage>` block
|
|
25
|
+
that appears at the end of the tool result (format: `subagent_tokens: N`).
|
|
26
|
+
|
|
27
|
+
The assessment-manager handles the full pipeline internally — it presents the Phase 5 Findings Gate
|
|
28
|
+
to the user, records the acknowledgement and flagged interventions, and ends at the summary.
|
|
29
|
+
The skill waits for the agent to complete and proceeds to Step 2 regardless of outcome.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Step 2 — Extract orchestrator token usage
|
|
34
|
+
|
|
35
|
+
From the `<usage>` block of the assessment-manager result, read:
|
|
36
|
+
- `subagent_tokens` — total tokens consumed by the assessment-manager agent itself (input + output)
|
|
37
|
+
- `duration_ms` — wall-clock duration of the assessment-manager run
|
|
38
|
+
|
|
39
|
+
If the `<usage>` block is missing: log warning
|
|
40
|
+
`"assessment-manager produced no <usage> block; orchestrator token data unavailable"`
|
|
41
|
+
and set `actual_tokens = "N/A"`.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Step 3 — Complete Token Estimate file
|
|
46
|
+
|
|
47
|
+
The assessment-manager will have written `{PREFIX}-Token-Estimate.md` at
|
|
48
|
+
`docs/assessments/{PREFIX}/{PREFIX}-Token-Estimate.md` with assessment and
|
|
49
|
+
intervention-documentation rows. Read that file, then **append** the following in order:
|
|
50
|
+
|
|
51
|
+
### 3a — Orchestrator row
|
|
52
|
+
|
|
53
|
+
The orchestrator row is NOT added to any of the three phase-level tables (Assessment agents, Intervention documentation, Remediation agents). It appears only in the Actuals vs Estimate section (Step 3b below).
|
|
54
|
+
|
|
55
|
+
For use in Step 3b, compute the orchestrator row values as follows:
|
|
56
|
+
|
|
57
|
+
- Estimated tokens: 80,000 (baseline from estimation model)
|
|
58
|
+
- Estimated cost: $0.4320 — computed as `80,000 × $0.005400 / 1,000` using the sonnet blended
|
|
59
|
+
rate from `docs/pricing.md`. If `docs/pricing.md` is missing, use `"N/A"` for est_cost.
|
|
60
|
+
- Actual tokens: value from `subagent_tokens` in the `<usage>` block; `"N/A"` if block was missing
|
|
61
|
+
- Actual cost: `(actual_tokens / 1,000) × blended_rate_per_1k`, formatted to 4 decimal places; `"N/A"` if actual_tokens is `"N/A"` or pricing data is unavailable
|
|
62
|
+
|
|
63
|
+
### 3b — Actuals vs Estimate section
|
|
64
|
+
|
|
65
|
+
Append a horizontal rule (`---`) followed by an Actuals vs Estimate section. Include one
|
|
66
|
+
row for every agent that ran: all assessment agents, intervention-documentation-standard,
|
|
67
|
+
and the assessment-manager orchestrator.
|
|
68
|
+
|
|
69
|
+
```markdown
|
|
70
|
+
## Actuals vs Estimate
|
|
71
|
+
|
|
72
|
+
| Agent | Task/Scope | Model | Est. tokens | Actual tokens | Delta | Est. cost ($) | Actual cost ($) | Duration |
|
|
73
|
+
|-------|------------|-------|-------------|---------------|-------|---------------|-----------------|----------|
|
|
74
|
+
| {agent} | {scope} | {model} | {est} | {actual} | {±delta} | {est_cost} | {actual_cost} | {Xmin Ys} |
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Column rules:
|
|
78
|
+
- **Delta**: `actual_tokens − est_tokens`; show as `+N` or `−N`. Show `"N/A"` if either
|
|
79
|
+
value is missing.
|
|
80
|
+
- **Duration**: convert `duration_ms` to `Xmin Ys` where available; use `"—"` where not.
|
|
81
|
+
- Rows with `"N/A"` actual tokens are still shown in the table but excluded from any
|
|
82
|
+
aggregate calculations.
|
|
83
|
+
|
|
84
|
+
### 3c — Estimation accuracy by agent type (conditional)
|
|
85
|
+
|
|
86
|
+
If 2 or more distinct model tiers appear in the rows that have non-`"N/A"` actual tokens
|
|
87
|
+
(e.g., haiku AND sonnet), append:
|
|
88
|
+
|
|
89
|
+
```markdown
|
|
90
|
+
## Estimation accuracy by agent type
|
|
91
|
+
|
|
92
|
+
| Model | Count | Avg est. tokens | Avg actual tokens | Avg delta | Trend |
|
|
93
|
+
|-------|-------|-----------------|-------------------|-----------|-------|
|
|
94
|
+
| {model} | {N} | {avg_est} | {avg_actual} | {avg_delta} | {trend} |
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Column rules:
|
|
98
|
+
- One row per model tier (e.g., `haiku`, `sonnet`)
|
|
99
|
+
- Exclude rows with `"N/A"` actual tokens from all averages
|
|
100
|
+
- **Trend**: `"over-target"` if avg delta > +20% of avg est; `"under-target"` if avg delta
|
|
101
|
+
< −20% of avg est; otherwise `"on-target"`
|
|
102
|
+
|
|
103
|
+
### 3d — Grand Total section
|
|
104
|
+
|
|
105
|
+
Update the Grand Total section already written in the file: replace the
|
|
106
|
+
`"partial — updated at pipeline end"` marker with `"Final"` and fill in the computed values:
|
|
107
|
+
|
|
108
|
+
```markdown
|
|
109
|
+
## Grand Total (Final)
|
|
110
|
+
|
|
111
|
+
| Metric | Estimated | Actual | Delta | Delta % |
|
|
112
|
+
|--------|-----------|--------|-------|---------|
|
|
113
|
+
| Total tokens (all agents) | {sum_est} | {sum_actual} | ±{delta} | {delta_pct} |
|
|
114
|
+
| Total cost ($) | ${sum_est_cost} | ${sum_actual_cost} | ±${delta_cost} | {delta_cost_pct} |
|
|
115
|
+
| Total wall-clock | — | {Xmin Ys} | — | — |
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Column rules:
|
|
119
|
+
- **Delta %**: `(delta / estimated) × 100` at 1 decimal place; show `"N/A"` if estimated is 0
|
|
120
|
+
|
|
121
|
+
Summation rules:
|
|
122
|
+
- Sum all agents' tokens and costs; exclude `"N/A"` rows from sums
|
|
123
|
+
- Cost values: 2 decimal places for subtotals and totals; 4 decimal places for per-row costs
|
|
124
|
+
- The "Remediation" section in the Token Estimate file contains a static note (not a placeholder); leave it as-is
|
|
125
|
+
- Wall-clock: convert `duration_ms` from the assessment-manager result to minutes/seconds
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Step 4 — Report to user
|
|
130
|
+
|
|
131
|
+
After writing to the Token Estimate file, report:
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
Assessment pipeline complete.
|
|
135
|
+
Token estimate + actuals → {PREFIX}-Token-Estimate.md
|
|
136
|
+
Approvals → docs/assessments/{PREFIX}/{PREFIX}-Approvals.md
|
|
137
|
+
Process log → docs/assessments/{PREFIX}/{PREFIX}-process-log.txt
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
If the Token Estimate file does not exist (assessment-manager failed before writing it):
|
|
141
|
+
note this in the report but do not halt — the skill has completed its work.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,81 @@
|
|
|
1
|
-
## 0.1.
|
|
2
|
-
## 0.1.
|
|
1
|
+
## 0.1.4 (2026-07-21)
|
|
2
|
+
## 0.1.7 (2026-07-23)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* add effort estimation and actuals tracking to project manager workflow ([0b81915](https://github.com/dtlab-tech/ai-toolkit/commit/0b819154584c725ccca09a825888aee8f3f5f34f))
|
|
8
|
+
* add effort estimation and actuals tracking to project manager workflow ([f9e74ef](https://github.com/dtlab-tech/ai-toolkit/commit/f9e74ef39972e3f0f3b0d3b6e4311d15fa9035cc))
|
|
9
|
+
* add GitHub Actions workflow to auto-publish to npm on merge to main ([f8d89ea](https://github.com/dtlab-tech/ai-toolkit/commit/f8d89ea20364796ce699b8228041f7f436ff3bdd))
|
|
10
|
+
* add GitHub Actions workflow to auto-publish to npm on merge to main ([abe2c45](https://github.com/dtlab-tech/ai-toolkit/commit/abe2c45336586794267d4ac7faf164cb82758fb6))
|
|
11
|
+
* add option to install Matt Pocock's skills during toolkit installation ([441183d](https://github.com/dtlab-tech/ai-toolkit/commit/441183d30214ed6eb570ae41ddf858229276b6d5))
|
|
12
|
+
* add option to install Matt Pocock's skills during toolkit installation ([f0d4fa3](https://github.com/dtlab-tech/ai-toolkit/commit/f0d4fa3ff783498d77e5b399d22d5828c8b157a6))
|
|
13
|
+
* add pricing documentation for cost estimation and blended cost formula ([91f6392](https://github.com/dtlab-tech/ai-toolkit/commit/91f63926ef2eabd20ad09a186f323d00abba9963))
|
|
14
|
+
* add pricing documentation for cost estimation and blended cost formula ([a9361ed](https://github.com/dtlab-tech/ai-toolkit/commit/a9361eda75b2c36d2515df976782af67bba1c4e4))
|
|
15
|
+
* Add SWF AI Toolkit with agents, skills, commands, and procedures for software feature delivery ([327a282](https://github.com/dtlab-tech/ai-toolkit/commit/327a2826bf4a147bcf2f993bc3ea254eaa12b18b))
|
|
16
|
+
* Add SWF AI Toolkit with agents, skills, commands, and procedures for software feature delivery ([97eb589](https://github.com/dtlab-tech/ai-toolkit/commit/97eb589a2b63a9ea45634c71aaae07d08bc1deaf))
|
|
17
|
+
* add version check during toolkit installation and update installed version file ([0e0eeea](https://github.com/dtlab-tech/ai-toolkit/commit/0e0eeea1bafe78e4d5c4214efc1b7acab9799ac8))
|
|
18
|
+
* add version check during toolkit installation and update installed version file ([4681ed4](https://github.com/dtlab-tech/ai-toolkit/commit/4681ed445a83c7f3bee5677bb773deaa7b0f86e2))
|
|
19
|
+
* assessment pipeline enhancements — token/effort estimation, registry, intervention commands, and Gaia assistant ([0cb512c](https://github.com/dtlab-tech/ai-toolkit/commit/0cb512cfd6d18c38216584ca454ab2077e641762))
|
|
20
|
+
* auto-generate CHANGELOG.md on publish via conventional-changelog ([6fdbd69](https://github.com/dtlab-tech/ai-toolkit/commit/6fdbd69c011ad3d568f3070f4c2dcd87092623e9))
|
|
21
|
+
* auto-generate CHANGELOG.md on publish via conventional-changelog ([49df865](https://github.com/dtlab-tech/ai-toolkit/commit/49df865633ebcede49f6c879921e775f1945271b))
|
|
22
|
+
* Enhance agent descriptions and add completion summaries ([a3aa811](https://github.com/dtlab-tech/ai-toolkit/commit/a3aa81169f102a09c95a46a98aa3b4f82bbb3b31))
|
|
23
|
+
* Enhance agent descriptions and add completion summaries ([1b2fe4a](https://github.com/dtlab-tech/ai-toolkit/commit/1b2fe4a2bf1c52107c8605533f2a0cdd85d1afbf))
|
|
24
|
+
* enhance file installation process with detailed status reporting and user prompts ([c12ca72](https://github.com/dtlab-tech/ai-toolkit/commit/c12ca72e111ead2f3c53b8846507f61fb572125b))
|
|
25
|
+
* enhance file installation process with detailed status reporting and user prompts ([10b56a4](https://github.com/dtlab-tech/ai-toolkit/commit/10b56a4d10455366cfec0690b8e9e428399f845a))
|
|
26
|
+
* enhance installation process with version checks and optional Matt Pocock skills installation ([16411e7](https://github.com/dtlab-tech/ai-toolkit/commit/16411e755c6586e8d33bd13b62402b3648e05b9c))
|
|
27
|
+
* enhance installation process with version checks and optional Matt Pocock skills installation ([8c1f0ae](https://github.com/dtlab-tech/ai-toolkit/commit/8c1f0ae92828e27b8a7ffb110eb35e27094b7006))
|
|
28
|
+
* enhance project manager with feature registry checks for cross-feature analysis ([30eb5e5](https://github.com/dtlab-tech/ai-toolkit/commit/30eb5e50fc16501e9cc38a5b4a8264e3eac96e5d))
|
|
29
|
+
* enhance project manager with feature registry checks for cross-feature analysis ([0d44ec3](https://github.com/dtlab-tech/ai-toolkit/commit/0d44ec35caa0460203c7c55d7eacff9320ef681f))
|
|
30
|
+
* enhance SWF AI Toolkit guide with detailed introduction and context awareness ([60bb2b8](https://github.com/dtlab-tech/ai-toolkit/commit/60bb2b86f3915f9844b58e7eeb44e88ce3877a4c))
|
|
31
|
+
* enhance SWF AI Toolkit guide with detailed introduction and context awareness ([f4ca293](https://github.com/dtlab-tech/ai-toolkit/commit/f4ca2938f6b4103785274018376ac2997e28cfc2))
|
|
32
|
+
* enhance token tracking and reporting in project manager and implement feature workflow ([fa873b8](https://github.com/dtlab-tech/ai-toolkit/commit/fa873b82b84bd3b332b44c0e2dd458820defd502))
|
|
33
|
+
* enhance token tracking and reporting in project manager and implement feature workflow ([92336ed](https://github.com/dtlab-tech/ai-toolkit/commit/92336edb3b523a5f5ed40d21b6fe38f7024ba322))
|
|
34
|
+
* **FTR-001:** add token estimation to assessment pipeline ([2f8a630](https://github.com/dtlab-tech/ai-toolkit/commit/2f8a63077e79c09ac25b2d60c74946fc7d229282))
|
|
35
|
+
* **FTR-001:** add token estimation to assessment pipeline ([93879ad](https://github.com/dtlab-tech/ai-toolkit/commit/93879ad00c60e9985424f07c104fa332883a4921))
|
|
36
|
+
* **FTR-002:** Add assessment pipeline effort estimation documentation and process log ([873c28f](https://github.com/dtlab-tech/ai-toolkit/commit/873c28f925a820292a1dc68600b1ebf991336903))
|
|
37
|
+
* **FTR-002:** Add assessment pipeline effort estimation documentation and process log ([30c891b](https://github.com/dtlab-tech/ai-toolkit/commit/30c891be8e337c63064982413570c1c4ade4d08f))
|
|
38
|
+
* **FTR-003:** reduce assessment pipeline to read-only — findings gate replaces remediation gate ([681f6fc](https://github.com/dtlab-tech/ai-toolkit/commit/681f6fc6500514c21f03ae61ee82e788ff65a6c6))
|
|
39
|
+
* **FTR-003:** reduce assessment pipeline to read-only — findings gate replaces remediation gate ([918ca26](https://github.com/dtlab-tech/ai-toolkit/commit/918ca2608e25d0ee2aa91b9047d921b7eaa5c021))
|
|
40
|
+
* **FTR-004:** generate requirements, tech-spec, validation, and work breakdown docs ([5ba2da7](https://github.com/dtlab-tech/ai-toolkit/commit/5ba2da7bee2e7bde5136874f277f19ad83be8464))
|
|
41
|
+
* **FTR-004:** implement INFRA + US-01 through US-03 — assessment registry write logic ([1989e38](https://github.com/dtlab-tech/ai-toolkit/commit/1989e38fc1b0ef5b40ff2e54cc83a2cd49e5c5d3))
|
|
42
|
+
* **FTR-004:** implement US-04 through US-06 — test specification ([baad095](https://github.com/dtlab-tech/ai-toolkit/commit/baad09524d8c352330a024fc7a80e89c635c0fc8))
|
|
43
|
+
* **FTR-004:** update project-manager token estimates to complete status ([959cc99](https://github.com/dtlab-tech/ai-toolkit/commit/959cc9921d470bfa874c5108f320848718d97c9a))
|
|
44
|
+
* **FTR-005:** add /next-intervention and /check-interventions commands ([f744ad2](https://github.com/dtlab-tech/ai-toolkit/commit/f744ad2032abe936feff9ae67ddd863ba86511a1))
|
|
45
|
+
* **FTR-006:** add assessment-aware PR description command to enhance context for intervention branches ([3023729](https://github.com/dtlab-tech/ai-toolkit/commit/302372919a2c07de313175c61f51000fcb2c99bc))
|
|
46
|
+
* refactor Matt Pocock skills installation checks and simplify version handling ([58d3efd](https://github.com/dtlab-tech/ai-toolkit/commit/58d3efddf35b453cf25de701ed5f4b829d0a1a34))
|
|
47
|
+
* refactor Matt Pocock skills installation checks and simplify version handling ([7de059e](https://github.com/dtlab-tech/ai-toolkit/commit/7de059e01fe5d71b75331732a833e00acfbb2a98))
|
|
48
|
+
* rename help skill to hi-gaia and introduce Gaia as toolkit assistant ([4c7c6f4](https://github.com/dtlab-tech/ai-toolkit/commit/4c7c6f422c8f97b9e79361faed4c95ed5001322c))
|
|
49
|
+
* rename help skill to hi-gaia and introduce Gaia as toolkit assistant ([c45fef0](https://github.com/dtlab-tech/ai-toolkit/commit/c45fef09a475dc795dfbbc12485e1ea01f4776d4))
|
|
50
|
+
* update Azure pipeline to dynamically resolve NPM registry URL ([2c6a817](https://github.com/dtlab-tech/ai-toolkit/commit/2c6a81777475f9ed6ad3f9f4b42fe7e7b2ada67e))
|
|
51
|
+
* update Azure pipeline to dynamically resolve NPM registry URL ([0f4601f](https://github.com/dtlab-tech/ai-toolkit/commit/0f4601fabb4b885dadc28e3f868feacdb97e474b))
|
|
52
|
+
* update Matt Pocock skills check to verify 'grilling' skill presence ([47b0592](https://github.com/dtlab-tech/ai-toolkit/commit/47b0592be0438c2d5152030e95674f0d0c23bf9a))
|
|
53
|
+
* update Matt Pocock skills check to verify 'grilling' skill presence ([d92d729](https://github.com/dtlab-tech/ai-toolkit/commit/d92d72946920c1cd9bf29f470a7a95b7bd84a254))
|
|
54
|
+
* update package name and installation instructions to reflect new organization ([b67193a](https://github.com/dtlab-tech/ai-toolkit/commit/b67193a630e3bb95cc5b58e4ead1b914cc74b9dc))
|
|
55
|
+
* update package name and installation instructions to reflect new organization ([0b09994](https://github.com/dtlab-tech/ai-toolkit/commit/0b09994220a563f1d3d12e5286be4a884af34aab))
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
### Bug Fixes
|
|
59
|
+
|
|
60
|
+
* add git tag on publish so conventional-changelog can read commit range ([6d4e427](https://github.com/dtlab-tech/ai-toolkit/commit/6d4e427d068da80d607db6e356cc79ea6e6ded9d))
|
|
61
|
+
* add git tag on publish so conventional-changelog can read commit range ([114f558](https://github.com/dtlab-tech/ai-toolkit/commit/114f55871c8e5892b36754cad3ba5d88b082706a))
|
|
62
|
+
* correct shell syntax in version bump commit message ([f988609](https://github.com/dtlab-tech/ai-toolkit/commit/f98860994d1cd3c4ef3d9b86aade6155e0ec6408))
|
|
63
|
+
* correct shell syntax in version bump commit message ([8e25e16](https://github.com/dtlab-tech/ai-toolkit/commit/8e25e160496125387e4a69707b04c24739008c5c))
|
|
64
|
+
* enhance NPM registry resolution by adding ADO_FEED_SCOPE variable ([2ff13e4](https://github.com/dtlab-tech/ai-toolkit/commit/2ff13e44510f507453136b5840d9dfc5c2afc3c5))
|
|
65
|
+
* enhance NPM registry resolution by adding ADO_FEED_SCOPE variable ([77b79c6](https://github.com/dtlab-tech/ai-toolkit/commit/77b79c6f1836b71bf96e1b7457d1c1ca28324253))
|
|
66
|
+
* **FTR-005:** address review warnings + add gate protocol to CLAUDE.md ([2e64780](https://github.com/dtlab-tech/ai-toolkit/commit/2e647809ba5279c492060dde52ab8134490fc59d))
|
|
67
|
+
* pull --rebase before pushing version bump to avoid rejection ([cf751d0](https://github.com/dtlab-tech/ai-toolkit/commit/cf751d0984bdddc683dfc67e378b4f563c6cfbe2))
|
|
68
|
+
* pull --rebase before pushing version bump to avoid rejection ([b70c748](https://github.com/dtlab-tech/ai-toolkit/commit/b70c74832f48e9261fbe894542de5977c3bcafa4))
|
|
69
|
+
* remove project-specific references and fix stale artifact filenames ([c272354](https://github.com/dtlab-tech/ai-toolkit/commit/c2723549f1a3de4f099b85b44c87603b9c601e72))
|
|
70
|
+
* remove project-specific references and fix stale artifact filenames ([1861fb9](https://github.com/dtlab-tech/ai-toolkit/commit/1861fb98708ce8ff8fcae7f5947f4e9dc9ba6937))
|
|
71
|
+
* remove run_in_background from PM and assessment-manager — background notifications not delivered to sub-agent contexts ([29a7b97](https://github.com/dtlab-tech/ai-toolkit/commit/29a7b97649ad5798eaf96c5a1acabb214c0c0c96))
|
|
72
|
+
* update installation instructions in README for clarity and completeness ([293a2dd](https://github.com/dtlab-tech/ai-toolkit/commit/293a2ddf0bebd386ba799ee24f6465b317897495))
|
|
73
|
+
* update installation instructions in README for clarity and completeness ([d682026](https://github.com/dtlab-tech/ai-toolkit/commit/d6820268dc1a60d99e80162e262adaba2974f9f7))
|
|
74
|
+
* update package references from [@denistomada](https://github.com/denistomada) to [@fincantieri](https://github.com/fincantieri) in README and installation documentation ([32ad6ae](https://github.com/dtlab-tech/ai-toolkit/commit/32ad6ae24db1719ad3cb1f4eea02bc11494cacd6))
|
|
75
|
+
* update package references from [@denistomada](https://github.com/denistomada) to [@fincantieri](https://github.com/fincantieri) in README and installation documentation ([5854119](https://github.com/dtlab-tech/ai-toolkit/commit/585411991604acc06a85ecf5b8a9beffe1ef82a2))
|
|
76
|
+
* update package.json to correct author and package name ([53dae47](https://github.com/dtlab-tech/ai-toolkit/commit/53dae47132da53e4fce98fdd683eb7acb4678b5a))
|
|
77
|
+
* update package.json to correct author and package name ([81a6b7c](https://github.com/dtlab-tech/ai-toolkit/commit/81a6b7c1ebfe6fab632eb44ddc48c962efc69997))
|
|
78
|
+
* update repository URL in package.json and remove publishConfig ([7f3dc15](https://github.com/dtlab-tech/ai-toolkit/commit/7f3dc15df57653bed00b139123396d5d2ba24d3e))
|
|
79
|
+
* update repository URL in package.json and remove publishConfig ([b912958](https://github.com/dtlab-tech/ai-toolkit/commit/b9129582804758128f3e9dffdd8cd9302d4e529f))
|
|
80
|
+
|
|
3
81
|
## 0.1.3 (2026-07-14)
|
package/CLAUDE.md
CHANGED
|
@@ -51,6 +51,38 @@ An `AGENTS.md` file in the project root with:
|
|
|
51
51
|
|
|
52
52
|
Generic procedures live in `docs/procedures/` in this toolkit. Projects can override any procedure by placing a file with the same name at `docs/procedures/` in their own root. Agents check the project first, then fall back to the toolkit.
|
|
53
53
|
|
|
54
|
+
## Gate Protocol — MANDATORY RULES
|
|
55
|
+
|
|
56
|
+
These rules apply in every session, without exception.
|
|
57
|
+
|
|
58
|
+
### Launching the Project Manager
|
|
59
|
+
|
|
60
|
+
**Always pass `run_in_background: false` when spawning the `project-manager` agent.**
|
|
61
|
+
|
|
62
|
+
Running the PM in the background leaves the main loop free to act independently. This creates two parallel execution paths that will conflict. The PM must block the main loop until it reaches a gate and returns.
|
|
63
|
+
|
|
64
|
+
### While the PM is running
|
|
65
|
+
|
|
66
|
+
**Do nothing.** No file reads "to prepare", no file writes "to accelerate", no implementation "because it seems stuck". The only permitted actions are:
|
|
67
|
+
|
|
68
|
+
- Receiving gate notifications and presenting them to the user
|
|
69
|
+
- Responding to the user's status questions ("still running")
|
|
70
|
+
- Sending messages to the PM via SendMessage if it is genuinely blocked and the user asks to unblock it
|
|
71
|
+
|
|
72
|
+
If the PM produces relay agents that appear to do nothing useful, that is noise — not a signal that the PM is stuck. Wait.
|
|
73
|
+
|
|
74
|
+
### Gate notifications are hard stops
|
|
75
|
+
|
|
76
|
+
When any gate notification arrives (Gate 1, Gate 2, Findings Gate, or any **HARD STOP** in any agent output):
|
|
77
|
+
|
|
78
|
+
1. Stop immediately — even if mid-turn
|
|
79
|
+
2. Present the full gate content to the user
|
|
80
|
+
3. Wait for explicit written approval before touching any file or spawning any agent
|
|
81
|
+
|
|
82
|
+
This applies even if the PM appears stuck, in a relay loop, or the gate arrives while another tool call is in progress.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
54
86
|
## Skills (user-invocable, in `.claude/skills/`)
|
|
55
87
|
|
|
56
88
|
### Feature Delivery
|
|
@@ -90,6 +122,8 @@ Generic procedures live in `docs/procedures/` in this toolkit. Projects can over
|
|
|
90
122
|
| Command | Purpose |
|
|
91
123
|
|---------|---------|
|
|
92
124
|
| `/assessment-status <prefix>` | Reports presence/state of all assessment artifacts (assessments, interventions, approvals, issues register) |
|
|
125
|
+
| `/next-intervention [prefix]` | Finds the next un-actioned flagged intervention and suggests the `/define-feature` invocation to start on it |
|
|
126
|
+
| `/check-interventions [prefix]` | Full reconciliation table: every intervention cross-referenced against the Index, on-disk files, and existing feature folders |
|
|
93
127
|
|
|
94
128
|
## Agents (spawnable subagents, in `.claude/agents/`)
|
|
95
129
|
|
|
@@ -114,7 +148,7 @@ Generic procedures live in `docs/procedures/` in this toolkit. Projects can over
|
|
|
114
148
|
|
|
115
149
|
| Agent | subagent_type | Purpose |
|
|
116
150
|
|-------|---------------|---------|
|
|
117
|
-
| Assessment Manager | `assessment-manager` | Orchestrates the
|
|
151
|
+
| Assessment Manager | `assessment-manager` | Orchestrates the assessment pipeline: parallel assessment → intervention docs → approval gate → effort/token estimates → summary |
|
|
118
152
|
| Generic Software Assessment | `generic-software-assessment` | Broad quality analysis across architecture, security, testability, observability, DevOps |
|
|
119
153
|
| Intervention Documentation Standard | `intervention-documentation-standard` | Generates structured, self-contained intervention documents from assessment findings |
|
|
120
154
|
| God Class Decomposition | `god-class-decomposition` | Safe incremental decomposition of oversized classes and methods |
|
|
@@ -16,15 +16,19 @@ Show the user a summary of the generated documents:
|
|
|
16
16
|
|
|
17
17
|
### Step 2 — Request explicit sign-off
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
Output the following hard-stop message and **wait for a text reply from the user**. Do NOT use `AskUserQuestion` — it cannot be answered through the agent relay chain.
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
```
|
|
22
|
+
⛔ GATE 1 — DOCS APPROVAL — HARD STOP
|
|
23
|
+
|
|
24
|
+
Please review the documents above and reply with one of:
|
|
23
25
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
"Approve — proceed to Work Breakdown"
|
|
27
|
+
"Request changes: <describe what to change>"
|
|
28
|
+
"Approve with notes: <your comments>"
|
|
29
|
+
|
|
30
|
+
The pipeline CANNOT continue until you reply directly.
|
|
31
|
+
```
|
|
28
32
|
|
|
29
33
|
### Step 3 — Write approval record BEFORE continuing
|
|
30
34
|
|
|
@@ -81,15 +85,19 @@ Show key metrics:
|
|
|
81
85
|
|
|
82
86
|
### Step 3 — Request explicit sign-off
|
|
83
87
|
|
|
84
|
-
|
|
88
|
+
Output the following hard-stop message and **wait for a text reply from the user**. Do NOT use `AskUserQuestion` — it cannot be answered through the agent relay chain.
|
|
85
89
|
|
|
86
|
-
|
|
87
|
-
|
|
90
|
+
```
|
|
91
|
+
⛔ GATE 2 — WORK BREAKDOWN APPROVAL — HARD STOP
|
|
92
|
+
|
|
93
|
+
Please review the Work Breakdown above and reply with one of:
|
|
88
94
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
95
|
+
"Approve — start implementation"
|
|
96
|
+
"Request changes: <describe what to change>"
|
|
97
|
+
"Approve with notes: <your comments>"
|
|
98
|
+
|
|
99
|
+
Implementation CANNOT start until you reply directly.
|
|
100
|
+
```
|
|
93
101
|
|
|
94
102
|
### Step 4 — Update approval record BEFORE starting implementation
|
|
95
103
|
|