mustard-claude 3.0.18 → 3.1.1
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/bin/mustard.js +0 -0
- package/dist/commands/init.js +4 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/update.js +4 -1
- package/dist/commands/update.js.map +1 -1
- package/package.json +59 -59
- package/templates/CLAUDE.md +3 -0
- package/templates/commands/mustard/bugfix/SKILL.md +23 -2
- package/templates/commands/mustard/complete/SKILL.md +4 -1
- package/templates/commands/mustard/feature/SKILL.md +22 -2
- package/templates/commands/mustard/stats/SKILL.md +3 -1
- package/templates/hooks/_lib/knowledge-extract.js +54 -0
- package/templates/hooks/context-budget.js +68 -0
- package/templates/hooks/metrics-tracker.js +78 -5
- package/templates/hooks/session-knowledge-inc.js +135 -0
- package/templates/hooks/session-knowledge.js +7 -24
- package/templates/hooks/subagent-tracker.js +91 -0
- package/templates/pipeline-config.md +39 -0
- package/templates/scripts/metrics-collect.js +54 -0
- package/templates/scripts/sync-detect.js +65 -1
- package/templates/settings.json +16 -1
package/bin/mustard.js
CHANGED
|
File without changes
|
package/dist/commands/init.js
CHANGED
|
@@ -301,6 +301,7 @@ async function ensureRtk() {
|
|
|
301
301
|
catch {
|
|
302
302
|
// Not installed — proceed to install
|
|
303
303
|
}
|
|
304
|
+
console.log(chalk.yellow(' ! RTK not found — attempting auto-install for token economy (saves 60-90%)...'));
|
|
304
305
|
const spinner = ora('Installing RTK (token economy)...').start();
|
|
305
306
|
try {
|
|
306
307
|
if (isWin) {
|
|
@@ -327,7 +328,9 @@ async function ensureRtk() {
|
|
|
327
328
|
catch { /* fail-open */ }
|
|
328
329
|
}
|
|
329
330
|
catch {
|
|
330
|
-
spinner.warn('RTK not installed
|
|
331
|
+
spinner.warn('RTK not installed. Install manually for 60-90% token savings:');
|
|
332
|
+
console.log(chalk.dim(' macOS/Linux: curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/master/install.sh | sh'));
|
|
333
|
+
console.log(chalk.dim(' Windows: scoop install rtk (or cargo install --git https://github.com/rtk-ai/rtk)'));
|
|
331
334
|
}
|
|
332
335
|
}
|
|
333
336
|
async function installRtkWindows() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/update.js
CHANGED
|
@@ -116,6 +116,7 @@ async function ensureRtk() {
|
|
|
116
116
|
catch {
|
|
117
117
|
// Not installed — proceed to install
|
|
118
118
|
}
|
|
119
|
+
console.log(chalk.yellow(' ! RTK not found — attempting auto-install for token economy (saves 60-90%)...'));
|
|
119
120
|
const spinner = ora('Installing RTK (token economy)...').start();
|
|
120
121
|
try {
|
|
121
122
|
if (isWin) {
|
|
@@ -142,7 +143,9 @@ async function ensureRtk() {
|
|
|
142
143
|
catch { /* fail-open */ }
|
|
143
144
|
}
|
|
144
145
|
catch {
|
|
145
|
-
spinner.warn('RTK not installed
|
|
146
|
+
spinner.warn('RTK not installed. Install manually for 60-90% token savings:');
|
|
147
|
+
console.log(chalk.dim(' macOS/Linux: curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/master/install.sh | sh'));
|
|
148
|
+
console.log(chalk.dim(' Windows: scoop install rtk (or cargo install --git https://github.com/rtk-ai/rtk)'));
|
|
146
149
|
}
|
|
147
150
|
}
|
|
148
151
|
async function installRtkWindows() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "mustard-claude",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"description": "Framework-agnostic CLI for Claude Code project setup",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"mustard": "./bin/mustard.js"
|
|
8
|
-
},
|
|
9
|
-
"main": "dist/cli.js",
|
|
10
|
-
"types": "dist/cli.d.ts",
|
|
11
|
-
"files": [
|
|
12
|
-
"bin/",
|
|
13
|
-
"dist/",
|
|
14
|
-
"templates/"
|
|
15
|
-
],
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
}
|
|
59
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "mustard-claude",
|
|
3
|
+
"version": "3.1.1",
|
|
4
|
+
"description": "Framework-agnostic CLI for Claude Code project setup",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"mustard": "./bin/mustard.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "dist/cli.js",
|
|
10
|
+
"types": "dist/cli.d.ts",
|
|
11
|
+
"files": [
|
|
12
|
+
"bin/",
|
|
13
|
+
"dist/",
|
|
14
|
+
"templates/"
|
|
15
|
+
],
|
|
16
|
+
"keywords": [
|
|
17
|
+
"claude",
|
|
18
|
+
"claude-code",
|
|
19
|
+
"ai",
|
|
20
|
+
"cli",
|
|
21
|
+
"scaffold"
|
|
22
|
+
],
|
|
23
|
+
"author": "rubensrpj",
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "git+https://github.com/rubensrpj/mustard.git"
|
|
28
|
+
},
|
|
29
|
+
"homepage": "https://github.com/rubensrpj/mustard#readme",
|
|
30
|
+
"bugs": {
|
|
31
|
+
"url": "https://github.com/rubensrpj/mustard/issues"
|
|
32
|
+
},
|
|
33
|
+
"publishConfig": {
|
|
34
|
+
"access": "public"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"chalk": "^5.3.0",
|
|
38
|
+
"commander": "^12.1.0",
|
|
39
|
+
"inquirer": "^9.2.15",
|
|
40
|
+
"ora": "^8.0.1"
|
|
41
|
+
},
|
|
42
|
+
"engines": {
|
|
43
|
+
"node": ">=18.0.0"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@types/inquirer": "^9.0.9",
|
|
47
|
+
"@types/node": "^25.2.1",
|
|
48
|
+
"rimraf": "^6.1.2",
|
|
49
|
+
"typescript": "^5.9.3"
|
|
50
|
+
},
|
|
51
|
+
"scripts": {
|
|
52
|
+
"start": "node bin/mustard.js",
|
|
53
|
+
"build": "tsc",
|
|
54
|
+
"clean": "rimraf dist",
|
|
55
|
+
"typecheck": "tsc --noEmit",
|
|
56
|
+
"test": "node --test",
|
|
57
|
+
"release": "npm version patch && npm run build && npm publish"
|
|
58
|
+
}
|
|
59
|
+
}
|
package/templates/CLAUDE.md
CHANGED
|
@@ -20,6 +20,9 @@ Scope is auto-detected: Light (1-2 layers, ≤5 files, known pattern) vs Full (3
|
|
|
20
20
|
## Pipeline Phases
|
|
21
21
|
ANALYZE → PLAN → EXECUTE → CLOSE
|
|
22
22
|
- Light scope: skip PLAN (ANALYZE → EXECUTE → CLOSE)
|
|
23
|
+
- ANALYZE: Grep/Glob direct preferred; ≤1 Task(Explore) with ≤10 tool uses allowed
|
|
24
|
+
- Reclassify to Full if >5 files surface
|
|
25
|
+
- All dispatched agents cap returns at ≤50 lines
|
|
23
26
|
- Full scope: ANALYZE → PLAN → /approve → EXECUTE → CLOSE
|
|
24
27
|
|
|
25
28
|
## Context Loading
|
|
@@ -14,10 +14,25 @@ Autonomous pipeline to diagnose and fix bugs. Zero context-switch — never ask
|
|
|
14
14
|
|
|
15
15
|
### ANALYZE (diagnose + assess)
|
|
16
16
|
|
|
17
|
-
1. **AUTO-SYNC:** `node .claude/scripts/sync-registry.js
|
|
17
|
+
1. **AUTO-SYNC:** Run `node .claude/scripts/sync-detect.js`. If output shows any subproject with `hashChanged: true`, then run `node .claude/scripts/sync-registry.js`. Otherwise skip sync-registry entirely.
|
|
18
18
|
|
|
19
19
|
### Diff Context (automatic)
|
|
20
|
-
|
|
20
|
+
|
|
21
|
+
**Diff snapshot (run once per phase):**
|
|
22
|
+
Run `node .claude/scripts/diff-context.js` at the start of ANALYZE and EXECUTE. Save the output to `.claude/.pipeline-states/{specName}.diff.md` (overwrite each phase).
|
|
23
|
+
|
|
24
|
+
**Inject into every Task dispatch in this pipeline:**
|
|
25
|
+
Prepend the following to EVERY subagent prompt dispatched during the pipeline:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
## Current Git State
|
|
29
|
+
{contents of .claude/.pipeline-states/{specName}.diff.md}
|
|
30
|
+
|
|
31
|
+
## Your Task
|
|
32
|
+
...original prompt...
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
If the diff file is empty or missing, skip the Git State header entirely. Never dispatch an agent without attempting interpolation.
|
|
21
36
|
|
|
22
37
|
2. **DIAGNOSE:** Dispatch Explore agent (**≤20 tool uses, ≤3 full file reads**):
|
|
23
38
|
- Scoped Grep searches with specific path + pattern for the error/symptom
|
|
@@ -31,6 +46,9 @@ Run `node .claude/scripts/diff-context.js` to capture the current git state. Inc
|
|
|
31
46
|
**Fast Path:** Go directly to EXECUTE.
|
|
32
47
|
**Full Path:** Write brief spec in `.claude/spec/active/{date}-{name}/spec.md` → present to user → `/approve` → EXECUTE.
|
|
33
48
|
|
|
49
|
+
- Fast Path CAN use Task(Explore) ONCE with ≤10 tool uses. Prefer Grep/Glob direct when the root cause location is known.
|
|
50
|
+
- If >5 files surface during DIAGNOSE, RECLASSIFY to Full Path and write a spec before proceeding.
|
|
51
|
+
|
|
34
52
|
#### Spec Boundaries
|
|
35
53
|
|
|
36
54
|
When writing a Full Path spec (or noting files for Fast Path), record which files are in scope under a `## Boundaries` section:
|
|
@@ -49,6 +67,9 @@ Rules:
|
|
|
49
67
|
|
|
50
68
|
### EXECUTE (fix + validate)
|
|
51
69
|
|
|
70
|
+
Every agent prompt dispatched in Fast Path MUST include:
|
|
71
|
+
`Return format cap: ≤50 lines. Apply compact Return Format from pipeline-config.md strictly.`
|
|
72
|
+
|
|
52
73
|
Dispatch bugfix agent with:
|
|
53
74
|
- Root cause from ANALYZE
|
|
54
75
|
- `{subproject}/CLAUDE.md` + `{subproject}/.claude/commands/guards.md` for context
|
|
@@ -85,11 +85,14 @@ See `pipeline-config.md` Escalation Statuses for concern classification rules.
|
|
|
85
85
|
"pass1": "{true if metrics.retries === 0, otherwise false}",
|
|
86
86
|
"toolBreakdown": "{from metrics}",
|
|
87
87
|
"agentAttempts": "{from metrics, if present}",
|
|
88
|
+
"gate_saves": "{from metrics, if present}",
|
|
89
|
+
"wave_reentry": "{from metrics, if present}",
|
|
90
|
+
"skillHits": "{from metrics, if present}",
|
|
88
91
|
"rtkSavings": { "saved": N, "pct": N }
|
|
89
92
|
}
|
|
90
93
|
```
|
|
91
94
|
- Set `"pass1": true` if `metrics.retries === 0`, otherwise `"pass1": false`
|
|
92
|
-
- Omit `agentAttempts` if not present in state metrics
|
|
95
|
+
- Omit `agentAttempts`, `gate_saves`, `wave_reentry`, `skillHits` if not present in state metrics
|
|
93
96
|
- If no metrics in state file, skip silently
|
|
94
97
|
7. **Output — visual feedback:**
|
|
95
98
|
|
|
@@ -14,10 +14,25 @@ Starts the pipeline to implement a feature or enhancement. Self-contained: ANALY
|
|
|
14
14
|
|
|
15
15
|
### ANALYZE Phase
|
|
16
16
|
|
|
17
|
-
**Auto-sync (silent):** `node .claude/scripts/sync-registry.js
|
|
17
|
+
**Auto-sync (silent):** Run `node .claude/scripts/sync-detect.js`. If output shows any subproject with `hashChanged: true`, then run `node .claude/scripts/sync-registry.js`. Otherwise skip sync-registry entirely.
|
|
18
18
|
|
|
19
19
|
### Diff Context (automatic)
|
|
20
|
-
|
|
20
|
+
|
|
21
|
+
**Diff snapshot (run once per phase):**
|
|
22
|
+
Run `node .claude/scripts/diff-context.js` at the start of ANALYZE, PLAN, and EXECUTE. Save the output to `.claude/.pipeline-states/{specName}.diff.md` (overwrite each phase).
|
|
23
|
+
|
|
24
|
+
**Inject into every Task dispatch in this pipeline:**
|
|
25
|
+
Prepend the following to EVERY subagent prompt dispatched during the pipeline:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
## Current Git State
|
|
29
|
+
{contents of .claude/.pipeline-states/{specName}.diff.md}
|
|
30
|
+
|
|
31
|
+
## Your Task
|
|
32
|
+
...original prompt...
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
If the diff file is empty or missing, skip the Git State header entirely. Never dispatch an agent without attempting interpolation.
|
|
21
36
|
|
|
22
37
|
1. Read `pipeline-config.md` — agents, wave transitions, model selection
|
|
23
38
|
2. Read `entity-registry.json` via Grep for the specific entity name (e.g. `"Contract":`) — NEVER read the full JSON. Entity found? infer layers. Not found? all layers.
|
|
@@ -45,6 +60,9 @@ Classify based on ANALYZE output:
|
|
|
45
60
|
Any **Full** signal → Full. All **Light** → Light.
|
|
46
61
|
Record scope for PLAN phase branching.
|
|
47
62
|
|
|
63
|
+
- Light scope CAN use Task(Explore) ONCE with ≤10 tool uses. Prefer Grep/Glob direct when targets are known.
|
|
64
|
+
- If >5 files surface during ANALYZE, RECLASSIFY to Full and restart ANALYZE with PLAN gate.
|
|
65
|
+
|
|
48
66
|
#### Explore (conditional, budget-capped)
|
|
49
67
|
|
|
50
68
|
**File budget: MAX 5 reads total in ANALYZE phase (excludes registry/pipeline-config)**
|
|
@@ -128,6 +146,8 @@ Rules:
|
|
|
128
146
|
|
|
129
147
|
When user chooses "Approve and implement now":
|
|
130
148
|
1. Update spec: `Status: implementing`, `Phase: EXECUTE`
|
|
149
|
+
Every agent prompt dispatched in Light scope MUST include:
|
|
150
|
+
`Return format cap: ≤50 lines. Apply compact Return Format from pipeline-config.md strictly.`
|
|
131
151
|
2. Update pipeline state: `status: "implementing"`, `phase: 3`
|
|
132
152
|
3. Read `pipeline-config.md` for agent config. For `entity-registry.json`: Grep for specific entity block only
|
|
133
153
|
4. Match recipes by title via Grep on `{subproject}/.claude/commands/recipes.md` — do NOT read full file. Extract recipe number + pattern refs
|
|
@@ -10,7 +10,7 @@ description: "Show pipeline metrics, token savings, and performance stats — us
|
|
|
10
10
|
|
|
11
11
|
## Description
|
|
12
12
|
|
|
13
|
-
Displays pipeline metrics including duration, API calls, retries, Pass@1 success rate, tool breakdown,
|
|
13
|
+
Displays pipeline metrics including duration, API calls, retries, Pass@1 success rate, tool breakdown, RTK token savings, gate saves, wave reentries, and skill hit rate per agent.
|
|
14
14
|
|
|
15
15
|
## Action
|
|
16
16
|
|
|
@@ -39,6 +39,8 @@ This section is omitted automatically when no completed pipelines exist yet.
|
|
|
39
39
|
- To check pipeline performance
|
|
40
40
|
- To compare token usage across pipelines
|
|
41
41
|
- To see RTK savings and Pass@1 success rate
|
|
42
|
+
- To inspect gate saves (spec churn after /approve) and wave reentries (EXECUTE → PLAN)
|
|
43
|
+
- To see skill hit rate (how often recommended skills were actually read by agents)
|
|
42
44
|
- After completing a pipeline
|
|
43
45
|
|
|
44
46
|
## Rules
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
/**
|
|
3
|
+
* KNOWLEDGE-EXTRACT: Shared pattern-detection logic for session-knowledge hooks.
|
|
4
|
+
* Accepts pre-parsed state objects; caller is responsible for reading files.
|
|
5
|
+
* @version 1.0.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Extract candidate knowledge patterns from an array of pipeline state objects.
|
|
10
|
+
*
|
|
11
|
+
* @param {object[]} stateObjects Parsed .pipeline-states/*.json objects.
|
|
12
|
+
* Each may have: specName, metrics.retries,
|
|
13
|
+
* metrics.apiCalls, metrics.toolBreakdown
|
|
14
|
+
* @returns {{ type: string, name: string, description: string, source: string, tags: string[] }[]}
|
|
15
|
+
*/
|
|
16
|
+
function extractPatternsFromStates(stateObjects) {
|
|
17
|
+
var patterns = [];
|
|
18
|
+
|
|
19
|
+
for (var i = 0; i < stateObjects.length; i++) {
|
|
20
|
+
var state = stateObjects[i];
|
|
21
|
+
if (!state || typeof state !== 'object') continue;
|
|
22
|
+
|
|
23
|
+
var metrics = state.metrics || {};
|
|
24
|
+
var label = state.specName || state._file || 'unknown';
|
|
25
|
+
|
|
26
|
+
// High retry count → lesson
|
|
27
|
+
if (metrics.retries && metrics.retries > 2) {
|
|
28
|
+
patterns.push({
|
|
29
|
+
type: 'convention',
|
|
30
|
+
name: 'high-retry-' + label,
|
|
31
|
+
description: 'Pipeline required ' + metrics.retries + ' retries. Tool breakdown: ' +
|
|
32
|
+
JSON.stringify(metrics.toolBreakdown || {}),
|
|
33
|
+
source: 'session-knowledge',
|
|
34
|
+
tags: ['retry', 'pipeline', 'lesson'],
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Heavy tool usage → optimization pattern
|
|
39
|
+
var totalCalls = metrics.apiCalls || 0;
|
|
40
|
+
if (totalCalls > 50) {
|
|
41
|
+
patterns.push({
|
|
42
|
+
type: 'pattern',
|
|
43
|
+
name: 'heavy-pipeline-' + label,
|
|
44
|
+
description: 'Pipeline used ' + totalCalls + ' API calls. Consider splitting into smaller scope.',
|
|
45
|
+
source: 'session-knowledge',
|
|
46
|
+
tags: ['optimization', 'pipeline'],
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return patterns;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
module.exports = { extractPatternsFromStates };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
/**
|
|
4
|
+
* CONTEXT-BUDGET: PreToolUse hook that warns about excessive context loaded into subagents.
|
|
5
|
+
* Advisory only — never blocks.
|
|
6
|
+
* @version 1.0.0
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const fs = require('fs');
|
|
10
|
+
const path = require('path');
|
|
11
|
+
const { shouldRun } = require('./_lib/hook-env.js');
|
|
12
|
+
|
|
13
|
+
// Conservative regex: only match .claude/skills/**/*.md, .claude/context/**/*.md, SKILL.md references
|
|
14
|
+
const MD_REF_PATTERN = /\.claude\/(?:skills|context)\/[^\s"'`]+\.md|SKILL\.md/g;
|
|
15
|
+
|
|
16
|
+
const TOKEN_THRESHOLD = 50000;
|
|
17
|
+
|
|
18
|
+
let input = '';
|
|
19
|
+
process.stdin.setEncoding('utf8');
|
|
20
|
+
process.stdin.on('data', chunk => input += chunk);
|
|
21
|
+
process.stdin.on('end', () => {
|
|
22
|
+
try {
|
|
23
|
+
if (!shouldRun('context-budget')) { process.exit(0); }
|
|
24
|
+
|
|
25
|
+
const data = JSON.parse(input);
|
|
26
|
+
const projectDir = process.env.CLAUDE_PROJECT_DIR || data.cwd || process.cwd();
|
|
27
|
+
const toolInput = (data.tool_input) || {};
|
|
28
|
+
const prompt = toolInput.prompt || '';
|
|
29
|
+
|
|
30
|
+
if (!prompt) { process.exit(0); }
|
|
31
|
+
|
|
32
|
+
// Extract markdown file references from the prompt
|
|
33
|
+
const matches = prompt.match(MD_REF_PATTERN) || [];
|
|
34
|
+
|
|
35
|
+
// Deduplicate
|
|
36
|
+
const uniquePaths = [...new Set(matches)];
|
|
37
|
+
|
|
38
|
+
let totalBytes = 0;
|
|
39
|
+
for (const relPath of uniquePaths) {
|
|
40
|
+
try {
|
|
41
|
+
const absPath = path.join(projectDir, relPath);
|
|
42
|
+
if (fs.existsSync(absPath)) {
|
|
43
|
+
totalBytes += fs.statSync(absPath).size;
|
|
44
|
+
}
|
|
45
|
+
} catch (e) { /* skip unreadable paths */ }
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (totalBytes === 0) { process.exit(0); }
|
|
49
|
+
|
|
50
|
+
const estimatedTokens = Math.round(totalBytes / 4);
|
|
51
|
+
|
|
52
|
+
if (estimatedTokens > TOKEN_THRESHOLD) {
|
|
53
|
+
const kTokens = Math.round(estimatedTokens / 1000);
|
|
54
|
+
console.log(JSON.stringify({
|
|
55
|
+
hookSpecificOutput: {
|
|
56
|
+
hookEventName: 'PreToolUse',
|
|
57
|
+
additionalContext:
|
|
58
|
+
'[Context Budget Advisory] Context budget warning: ~' + kTokens + 'K tokens will be loaded into this subagent (>50K threshold). Consider trimming recommended_skills or splitting the task.'
|
|
59
|
+
}
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
process.exit(0);
|
|
64
|
+
} catch (err) {
|
|
65
|
+
process.stderr.write('[context-budget] ' + err.message + '\n');
|
|
66
|
+
process.exit(0); // fail-open
|
|
67
|
+
}
|
|
68
|
+
});
|
|
@@ -6,8 +6,11 @@
|
|
|
6
6
|
* - apiCalls: total tool invocations
|
|
7
7
|
* - toolBreakdown: { Bash: N, Write: N, Edit: N, Task: N }
|
|
8
8
|
* - retries: incremented when tool_input contains retry/fix patterns
|
|
9
|
+
* - gate_saves: spec edits made while phase=PLAN after first /approve
|
|
10
|
+
* - wave_reentry: transitions from EXECUTE back to PLAN
|
|
11
|
+
* - skillHits: per-agent { loaded: N, read: M } skill hit tracking
|
|
9
12
|
*
|
|
10
|
-
* @version
|
|
13
|
+
* @version 2.0.0
|
|
11
14
|
*/
|
|
12
15
|
|
|
13
16
|
const fs = require('fs');
|
|
@@ -59,9 +62,79 @@ process.stdin.on('end', () => {
|
|
|
59
62
|
};
|
|
60
63
|
}
|
|
61
64
|
|
|
62
|
-
//
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
// ── wave_reentry: track EXECUTE → PLAN transitions ──────────────────────
|
|
66
|
+
// previousPhase is updated on every write so we can detect phase changes.
|
|
67
|
+
const currentPhase = state.phaseName || state.phase || '';
|
|
68
|
+
const previousPhase = state.previousPhase || '';
|
|
69
|
+
if (currentPhase === 'PLAN' && previousPhase === 'EXECUTE') {
|
|
70
|
+
state.metrics.wave_reentry = (state.metrics.wave_reentry || 0) + 1;
|
|
71
|
+
}
|
|
72
|
+
// Always update previousPhase to the current phase so the NEXT write can
|
|
73
|
+
// detect a transition.
|
|
74
|
+
state.previousPhase = currentPhase;
|
|
75
|
+
|
|
76
|
+
// ── gate_saves: spec edits in PLAN phase after first /approve ────────────
|
|
77
|
+
// Proxy for "first approve recorded": state.status === 'approved' (set by
|
|
78
|
+
// /approve command). A spec file is any .md in .claude/spec/ or matching
|
|
79
|
+
// *spec*.md anywhere in the pipeline-states dir.
|
|
80
|
+
if ((toolName === 'Edit' || toolName === 'Write') && currentPhase === 'PLAN' && state.status === 'approved') {
|
|
81
|
+
const toolFilePath = (data.tool_input || {}).file_path || (data.tool_input || {}).path || '';
|
|
82
|
+
const isSpecFile =
|
|
83
|
+
/[/\\]\.claude[/\\]spec[/\\]/.test(toolFilePath) ||
|
|
84
|
+
/spec.*\.md$/i.test(toolFilePath) ||
|
|
85
|
+
(/\.pipeline-states[/\\]/.test(toolFilePath) && toolFilePath.endsWith('.md'));
|
|
86
|
+
if (isSpecFile) {
|
|
87
|
+
state.metrics.gate_saves = (state.metrics.gate_saves || 0) + 1;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// ── skill_hit_rate: Read on a skill file → attribute to active subagent ──
|
|
92
|
+
// This is heuristic: we look up the most recent subagent entry in the
|
|
93
|
+
// registry that has no endedAt (i.e. currently active). We cannot
|
|
94
|
+
// perfectly attribute reads to a specific subagent context when multiple
|
|
95
|
+
// agents run in parallel — we accept this imprecision.
|
|
96
|
+
if (toolName === 'Read') {
|
|
97
|
+
const readPath = (data.tool_input || {}).file_path || (data.tool_input || {}).path || '';
|
|
98
|
+
const isSkillFile =
|
|
99
|
+
/[/\\]skills[/\\][^/\\]+[/\\]SKILL\.md$/i.test(readPath) ||
|
|
100
|
+
/[/\\]\.claude[/\\]skills[/\\][^/\\]+\.md$/i.test(readPath);
|
|
101
|
+
if (isSkillFile) {
|
|
102
|
+
const registryPath = path.join(cwd, '.claude', '.subagent-registry.json');
|
|
103
|
+
try {
|
|
104
|
+
if (fs.existsSync(registryPath)) {
|
|
105
|
+
const registry = JSON.parse(fs.readFileSync(registryPath, 'utf8'));
|
|
106
|
+
// Find the most recently started entry without an endedAt
|
|
107
|
+
let activeEntry = null;
|
|
108
|
+
let latestStart = 0;
|
|
109
|
+
for (const [, entry] of Object.entries(registry)) {
|
|
110
|
+
if (entry.endedAt) continue;
|
|
111
|
+
const t = new Date(entry.startedAt || 0).getTime();
|
|
112
|
+
if (t > latestStart) {
|
|
113
|
+
latestStart = t;
|
|
114
|
+
activeEntry = entry;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (activeEntry && activeEntry.agentType && Array.isArray(activeEntry.recommendedSkills)) {
|
|
118
|
+
// Extract skill name from the file path (last directory component before SKILL.md)
|
|
119
|
+
const skillName = path.basename(path.dirname(readPath));
|
|
120
|
+
if (activeEntry.recommendedSkills.includes(skillName)) {
|
|
121
|
+
if (!state.metrics.skillHits) state.metrics.skillHits = {};
|
|
122
|
+
if (!state.metrics.skillHits[activeEntry.agentType]) {
|
|
123
|
+
state.metrics.skillHits[activeEntry.agentType] = { loaded: 0, read: 0 };
|
|
124
|
+
}
|
|
125
|
+
state.metrics.skillHits[activeEntry.agentType].read++;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
} catch {} // fail-open: skill attribution is advisory
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Increment counters (skip Read — it's too noisy for general tracking)
|
|
134
|
+
if (toolName !== 'Read') {
|
|
135
|
+
state.metrics.apiCalls++;
|
|
136
|
+
state.metrics.toolBreakdown[toolName] = (state.metrics.toolBreakdown[toolName] || 0) + 1;
|
|
137
|
+
}
|
|
65
138
|
|
|
66
139
|
// Detect retry patterns
|
|
67
140
|
const toolInput = data.tool_input || {};
|
|
@@ -72,7 +145,7 @@ process.stdin.on('end', () => {
|
|
|
72
145
|
if (!state.metrics.agentAttempts) {
|
|
73
146
|
state.metrics.agentAttempts = {};
|
|
74
147
|
}
|
|
75
|
-
var phase =
|
|
148
|
+
var phase = currentPhase || 'unknown';
|
|
76
149
|
state.metrics.agentAttempts[phase] = (state.metrics.agentAttempts[phase] || 0) + 1;
|
|
77
150
|
}
|
|
78
151
|
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
/**
|
|
4
|
+
* SESSION-KNOWLEDGE-INC: Incremental knowledge extraction after each Task completion.
|
|
5
|
+
* Event: PostToolUse (matcher: Task)
|
|
6
|
+
* Fail-open: exit 0 on any error.
|
|
7
|
+
*
|
|
8
|
+
* .knowledge-seen.json schema:
|
|
9
|
+
* {
|
|
10
|
+
* "_meta": {
|
|
11
|
+
* "recentExtractions": ["ISO timestamp", ...] // rolling window for throttle
|
|
12
|
+
* },
|
|
13
|
+
* "<patternName>": <ISO timestamp> // idempotency: skip if < 24 h old
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* @version 1.0.0
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
const fs = require('fs');
|
|
20
|
+
const path = require('path');
|
|
21
|
+
const { execFileSync } = require('child_process');
|
|
22
|
+
const { guardedRun } = require('./_lib/hook-env.js');
|
|
23
|
+
const { extractPatternsFromStates } = require('./_lib/knowledge-extract.js');
|
|
24
|
+
|
|
25
|
+
var THROTTLE_MAX = 3; // max extractions per rolling hour
|
|
26
|
+
var THROTTLE_WINDOW_MS = 3600000; // 1 hour in ms
|
|
27
|
+
var IDEMPOTENCY_WINDOW_MS = 86400000; // 24 hours in ms
|
|
28
|
+
|
|
29
|
+
var input = '';
|
|
30
|
+
process.stdin.setEncoding('utf8');
|
|
31
|
+
process.stdin.on('data', function (chunk) { input += chunk; });
|
|
32
|
+
process.stdin.on('end', function () {
|
|
33
|
+
try {
|
|
34
|
+
if (!guardedRun('session-knowledge-inc', null, 2)) { process.exit(0); }
|
|
35
|
+
|
|
36
|
+
var data = JSON.parse(input);
|
|
37
|
+
var cwd = data.cwd || process.cwd();
|
|
38
|
+
var claudeDir = path.join(cwd, '.claude');
|
|
39
|
+
var knowledgeScript = path.join(claudeDir, 'scripts', 'knowledge-update.js');
|
|
40
|
+
|
|
41
|
+
// Bail if knowledge-update.js doesn't exist
|
|
42
|
+
if (!fs.existsSync(knowledgeScript)) { process.exit(0); }
|
|
43
|
+
|
|
44
|
+
var seenPath = path.join(claudeDir, '.knowledge-seen.json');
|
|
45
|
+
var seen = readSeenFile(seenPath);
|
|
46
|
+
|
|
47
|
+
// ── Throttle check ──────────────────────────────────────────────
|
|
48
|
+
var now = Date.now();
|
|
49
|
+
var recentExtractions = (seen._meta && seen._meta.recentExtractions) || [];
|
|
50
|
+
// Prune entries outside the rolling window
|
|
51
|
+
recentExtractions = recentExtractions.filter(function (ts) {
|
|
52
|
+
return now - new Date(ts).getTime() < THROTTLE_WINDOW_MS;
|
|
53
|
+
});
|
|
54
|
+
if (recentExtractions.length >= THROTTLE_MAX) {
|
|
55
|
+
process.exit(0); // throttled — silently skip
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// ── Find most recently modified pipeline state ──────────────────
|
|
59
|
+
var statesDir = path.join(claudeDir, '.pipeline-states');
|
|
60
|
+
if (!fs.existsSync(statesDir)) { process.exit(0); }
|
|
61
|
+
|
|
62
|
+
var stateFiles = fs.readdirSync(statesDir).filter(function (f) { return f.endsWith('.json'); });
|
|
63
|
+
if (stateFiles.length === 0) { process.exit(0); }
|
|
64
|
+
|
|
65
|
+
// Sort by mtime descending — pick the most recent
|
|
66
|
+
var sorted = stateFiles.map(function (f) {
|
|
67
|
+
var fp = path.join(statesDir, f);
|
|
68
|
+
var mtime = 0;
|
|
69
|
+
try { mtime = fs.statSync(fp).mtimeMs; } catch (e) {}
|
|
70
|
+
return { file: f, mtime: mtime };
|
|
71
|
+
}).sort(function (a, b) { return b.mtime - a.mtime; });
|
|
72
|
+
|
|
73
|
+
var latestFile = sorted[0].file;
|
|
74
|
+
var latestState;
|
|
75
|
+
try {
|
|
76
|
+
latestState = JSON.parse(fs.readFileSync(path.join(statesDir, latestFile), 'utf8'));
|
|
77
|
+
latestState._file = latestFile.replace('.json', '');
|
|
78
|
+
} catch (e) {
|
|
79
|
+
process.exit(0);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// ── Extract patterns from the latest state ──────────────────────
|
|
83
|
+
var candidates = extractPatternsFromStates([latestState]);
|
|
84
|
+
if (candidates.length === 0) { process.exit(0); }
|
|
85
|
+
|
|
86
|
+
// ── Idempotency filter ──────────────────────────────────────────
|
|
87
|
+
var eligible = candidates.filter(function (p) {
|
|
88
|
+
var lastSeen = seen[p.name];
|
|
89
|
+
if (!lastSeen) return true;
|
|
90
|
+
return now - new Date(lastSeen).getTime() >= IDEMPOTENCY_WINDOW_MS;
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
if (eligible.length === 0) { process.exit(0); }
|
|
94
|
+
|
|
95
|
+
// ── Persist exactly one pattern ────────────────────────────────
|
|
96
|
+
var toSave = eligible[0];
|
|
97
|
+
try {
|
|
98
|
+
execFileSync(process.execPath, [knowledgeScript], {
|
|
99
|
+
input: JSON.stringify(Object.assign({ cwd: cwd }, toSave)),
|
|
100
|
+
timeout: 3000,
|
|
101
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
102
|
+
});
|
|
103
|
+
} catch (e) { /* fail-open */ }
|
|
104
|
+
|
|
105
|
+
// ── Update .knowledge-seen.json ────────────────────────────────
|
|
106
|
+
var nowIso = new Date(now).toISOString();
|
|
107
|
+
seen[toSave.name] = nowIso;
|
|
108
|
+
recentExtractions.push(nowIso);
|
|
109
|
+
seen._meta = { recentExtractions: recentExtractions };
|
|
110
|
+
writeSeenFile(seenPath, seen);
|
|
111
|
+
|
|
112
|
+
process.exit(0);
|
|
113
|
+
} catch (err) {
|
|
114
|
+
process.stderr.write('[session-knowledge-inc] ' + err.message + '\n');
|
|
115
|
+
process.exit(0); // fail-open
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
process.stdin.resume();
|
|
119
|
+
|
|
120
|
+
// ── Helpers ─────────────────────────────────────────────────────────
|
|
121
|
+
|
|
122
|
+
function readSeenFile(seenPath) {
|
|
123
|
+
try {
|
|
124
|
+
if (fs.existsSync(seenPath)) {
|
|
125
|
+
return JSON.parse(fs.readFileSync(seenPath, 'utf8'));
|
|
126
|
+
}
|
|
127
|
+
} catch (e) {}
|
|
128
|
+
return { _meta: { recentExtractions: [] } };
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function writeSeenFile(seenPath, seen) {
|
|
132
|
+
try {
|
|
133
|
+
fs.writeFileSync(seenPath, JSON.stringify(seen, null, 2), 'utf8');
|
|
134
|
+
} catch (e) { /* fail-open */ }
|
|
135
|
+
}
|
|
@@ -11,6 +11,7 @@ const fs = require('fs');
|
|
|
11
11
|
const path = require('path');
|
|
12
12
|
const { execFileSync } = require('child_process');
|
|
13
13
|
const { shouldRun } = require('./_lib/hook-env.js');
|
|
14
|
+
const { extractPatternsFromStates } = require('./_lib/knowledge-extract.js');
|
|
14
15
|
|
|
15
16
|
var input = '';
|
|
16
17
|
process.stdin.setEncoding('utf8');
|
|
@@ -33,35 +34,17 @@ process.stdin.on('end', function () {
|
|
|
33
34
|
var statesDir = path.join(claudeDir, '.pipeline-states');
|
|
34
35
|
if (fs.existsSync(statesDir)) {
|
|
35
36
|
var stateFiles = fs.readdirSync(statesDir).filter(function (f) { return f.endsWith('.json'); });
|
|
37
|
+
var stateObjects = [];
|
|
36
38
|
for (var i = 0; i < stateFiles.length; i++) {
|
|
37
39
|
try {
|
|
38
40
|
var state = JSON.parse(fs.readFileSync(path.join(statesDir, stateFiles[i]), 'utf8'));
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (metrics.retries && metrics.retries > 2) {
|
|
43
|
-
patterns.push({
|
|
44
|
-
type: 'convention',
|
|
45
|
-
name: 'high-retry-' + (state.specName || stateFiles[i].replace('.json', '')),
|
|
46
|
-
description: 'Pipeline required ' + metrics.retries + ' retries. Tool breakdown: ' + JSON.stringify(metrics.toolBreakdown || {}),
|
|
47
|
-
source: 'session-knowledge',
|
|
48
|
-
tags: ['retry', 'pipeline', 'lesson'],
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// Heavy tool usage → pattern
|
|
53
|
-
var totalCalls = metrics.apiCalls || 0;
|
|
54
|
-
if (totalCalls > 50) {
|
|
55
|
-
patterns.push({
|
|
56
|
-
type: 'pattern',
|
|
57
|
-
name: 'heavy-pipeline-' + (state.specName || stateFiles[i].replace('.json', '')),
|
|
58
|
-
description: 'Pipeline used ' + totalCalls + ' API calls. Consider splitting into smaller scope.',
|
|
59
|
-
source: 'session-knowledge',
|
|
60
|
-
tags: ['optimization', 'pipeline'],
|
|
61
|
-
});
|
|
62
|
-
}
|
|
41
|
+
// Attach filename as fallback label for the extractor
|
|
42
|
+
state._file = stateFiles[i].replace('.json', '');
|
|
43
|
+
stateObjects.push(state);
|
|
63
44
|
} catch (e) { /* skip malformed state */ }
|
|
64
45
|
}
|
|
46
|
+
var statePatterns = extractPatternsFromStates(stateObjects);
|
|
47
|
+
for (var si = 0; si < statePatterns.length; si++) { patterns.push(statePatterns[si]); }
|
|
65
48
|
}
|
|
66
49
|
|
|
67
50
|
// ── Source 2: Agent memories (findings) ───────────────────────
|
|
@@ -61,6 +61,10 @@ process.stdin.on('end', () => {
|
|
|
61
61
|
* PreToolUse(Task): Queue description + type before agent spawns.
|
|
62
62
|
* The SubagentStart event doesn't carry description, so we capture it here
|
|
63
63
|
* and match it later via FIFO queue with type-matching preference.
|
|
64
|
+
*
|
|
65
|
+
* Also parses recommended_skills from the Task prompt, persists them in
|
|
66
|
+
* .subagent-registry.json, and increments skillHits.loaded in the active
|
|
67
|
+
* pipeline state.
|
|
64
68
|
*/
|
|
65
69
|
function handlePreToolUse(data, stateDir) {
|
|
66
70
|
if (isSelfDelegation(data)) { return; }
|
|
@@ -84,6 +88,93 @@ function handlePreToolUse(data, stateDir) {
|
|
|
84
88
|
queue.splice(0, queue.length - MAX_QUEUE_SIZE);
|
|
85
89
|
}
|
|
86
90
|
writeQueue(stateDir, queue);
|
|
91
|
+
|
|
92
|
+
// ── skill_hit_rate: parse recommended_skills from Task prompt ─────────────
|
|
93
|
+
// We look for a "Recommended Skills" section header followed by list items,
|
|
94
|
+
// or a `recommended_skills:` YAML-style block. Conservative regex — false
|
|
95
|
+
// negatives are acceptable; false positives would corrupt the metric.
|
|
96
|
+
try {
|
|
97
|
+
const prompt = toolInput.prompt || '';
|
|
98
|
+
const recommendedSkills = parseRecommendedSkills(prompt);
|
|
99
|
+
if (recommendedSkills.length === 0) return;
|
|
100
|
+
|
|
101
|
+
const projectDir = path.resolve(stateDir, '..', '..');
|
|
102
|
+
|
|
103
|
+
// Persist entry to .subagent-registry.json for later Read attribution
|
|
104
|
+
const registryPath = path.join(projectDir, '.claude', '.subagent-registry.json');
|
|
105
|
+
let registry = {};
|
|
106
|
+
try {
|
|
107
|
+
if (fs.existsSync(registryPath)) {
|
|
108
|
+
registry = JSON.parse(fs.readFileSync(registryPath, 'utf8'));
|
|
109
|
+
}
|
|
110
|
+
} catch {}
|
|
111
|
+
// Use timestamp + agentType as pseudo-taskId (best effort — no real taskId available at PreToolUse)
|
|
112
|
+
const taskId = `${Date.now()}-${subagentType}`;
|
|
113
|
+
registry[taskId] = {
|
|
114
|
+
agentType: subagentType,
|
|
115
|
+
recommendedSkills,
|
|
116
|
+
startedAt: new Date().toISOString(),
|
|
117
|
+
// endedAt is written when SubagentStop fires (not implemented here — left undefined)
|
|
118
|
+
};
|
|
119
|
+
// Prune entries older than 2 hours to prevent unbounded growth
|
|
120
|
+
const cutoff = Date.now() - 2 * 60 * 60 * 1000;
|
|
121
|
+
for (const [key, entry] of Object.entries(registry)) {
|
|
122
|
+
if (new Date(entry.startedAt || 0).getTime() < cutoff) {
|
|
123
|
+
delete registry[key];
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
fs.writeFileSync(registryPath, JSON.stringify(registry, null, 2), 'utf8');
|
|
127
|
+
|
|
128
|
+
// Increment skillHits.loaded in the active pipeline state
|
|
129
|
+
const statesDir = path.join(projectDir, '.claude', '.pipeline-states');
|
|
130
|
+
if (!fs.existsSync(statesDir)) return;
|
|
131
|
+
const stateFiles = fs.readdirSync(statesDir).filter(f => f.endsWith('.json'));
|
|
132
|
+
if (stateFiles.length === 0) return;
|
|
133
|
+
|
|
134
|
+
let newestState = null;
|
|
135
|
+
let newestMtime = 0;
|
|
136
|
+
for (const f of stateFiles) {
|
|
137
|
+
try {
|
|
138
|
+
const fp = path.join(statesDir, f);
|
|
139
|
+
const stat = fs.statSync(fp);
|
|
140
|
+
if (stat.mtimeMs > newestMtime) {
|
|
141
|
+
newestMtime = stat.mtimeMs;
|
|
142
|
+
newestState = fp;
|
|
143
|
+
}
|
|
144
|
+
} catch {}
|
|
145
|
+
}
|
|
146
|
+
if (!newestState) return;
|
|
147
|
+
|
|
148
|
+
const state = JSON.parse(fs.readFileSync(newestState, 'utf8'));
|
|
149
|
+
if (!state.metrics) state.metrics = { apiCalls: 0, toolBreakdown: {}, retries: 0 };
|
|
150
|
+
if (!state.metrics.skillHits) state.metrics.skillHits = {};
|
|
151
|
+
if (!state.metrics.skillHits[subagentType]) {
|
|
152
|
+
state.metrics.skillHits[subagentType] = { loaded: 0, read: 0 };
|
|
153
|
+
}
|
|
154
|
+
state.metrics.skillHits[subagentType].loaded += recommendedSkills.length;
|
|
155
|
+
fs.writeFileSync(newestState, JSON.stringify(state, null, 2), 'utf8');
|
|
156
|
+
} catch {} // fail-open: skill tracking is advisory
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Parse recommended skills from a Task prompt string.
|
|
161
|
+
* Matches list items under a "Recommended Skills" or "recommended_skills:" header.
|
|
162
|
+
* Returns an array of skill name strings (e.g. ["templates-hook-protocol"]).
|
|
163
|
+
*/
|
|
164
|
+
function parseRecommendedSkills(prompt) {
|
|
165
|
+
const skills = [];
|
|
166
|
+
// Match a section header then collect "- skill-name" lines until blank or next header
|
|
167
|
+
const sectionMatch = prompt.match(
|
|
168
|
+
/(?:recommended.skills|recommended_skills)\s*[:\-]?\s*\n((?:\s*-\s*[\w\-]+.*\n?)+)/i
|
|
169
|
+
);
|
|
170
|
+
if (sectionMatch) {
|
|
171
|
+
const lines = sectionMatch[1].split('\n');
|
|
172
|
+
for (const line of lines) {
|
|
173
|
+
const m = line.match(/^\s*-\s*([\w][\w\-]*[\w])/);
|
|
174
|
+
if (m) skills.push(m[1]);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return skills;
|
|
87
178
|
}
|
|
88
179
|
|
|
89
180
|
function handleStart(data, stateDir) {
|
|
@@ -55,6 +55,27 @@ When a pipeline pauses or a session ends mid-pipeline:
|
|
|
55
55
|
On `/resume`: compile handoff from state + spec + memory + git diff.
|
|
56
56
|
Goal: user resumes in <30 seconds without re-reading the spec.
|
|
57
57
|
|
|
58
|
+
## Diff Context Interpolation
|
|
59
|
+
|
|
60
|
+
All Task dispatches inside an active pipeline MUST be prefixed with current git state.
|
|
61
|
+
|
|
62
|
+
**Source:** `node .claude/scripts/diff-context.js` — cached to `.claude/.pipeline-states/{specName}.diff.md` once per phase.
|
|
63
|
+
|
|
64
|
+
**Prompt format:**
|
|
65
|
+
```
|
|
66
|
+
## Current Git State
|
|
67
|
+
{diff_context}
|
|
68
|
+
|
|
69
|
+
## Your Task
|
|
70
|
+
{actual_task_prompt}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Rules:**
|
|
74
|
+
- Run the script once per phase (ANALYZE, PLAN, EXECUTE) — reuse the cached file for all dispatches in that phase.
|
|
75
|
+
- If the file is empty or missing, omit the Git State header (do not inject a blank one).
|
|
76
|
+
- The script already caps output at 3000 chars; no further trimming needed.
|
|
77
|
+
- Agents receiving a diff context should treat it as authoritative current-branch state.
|
|
78
|
+
|
|
58
79
|
## Diagnostic Failure Routing
|
|
59
80
|
|
|
60
81
|
When an agent fails during EXECUTE, classify the failure before deciding how to respond.
|
|
@@ -173,6 +194,24 @@ Complex/architecture tasks (any role): add `senior-architect`.
|
|
|
173
194
|
|
|
174
195
|
Agents auto-load relevant skills based on task description. Orchestrator may hint specific skills in `{recommended_skills}`.
|
|
175
196
|
|
|
197
|
+
## Agent Return Format (Compact)
|
|
198
|
+
|
|
199
|
+
All Task-dispatched agents MUST return in this compact form:
|
|
200
|
+
|
|
201
|
+
- **Arquivos alterados:** `path:line` (one per line). Omit section if no files touched.
|
|
202
|
+
- **Decisões não-óbvias:** 1-3 bullets, or the single word `nenhuma`.
|
|
203
|
+
- **Bloqueios:** only include if there are any; otherwise omit.
|
|
204
|
+
|
|
205
|
+
DO NOT include in the return:
|
|
206
|
+
- Identity restatement ("I am the X agent...")
|
|
207
|
+
- Full checklist re-listing
|
|
208
|
+
- List of files read
|
|
209
|
+
- Narrative of steps taken
|
|
210
|
+
- Confirmation of task understanding
|
|
211
|
+
- Summary of what was delegated
|
|
212
|
+
|
|
213
|
+
The parent orchestrator already has context — return only what is actionable.
|
|
214
|
+
|
|
176
215
|
## Escalation Statuses
|
|
177
216
|
|
|
178
217
|
Agent return values may carry an escalation status when the outcome is ambiguous or risky. The pipeline runner MUST check for these before advancing.
|
|
@@ -45,6 +45,15 @@ function main() {
|
|
|
45
45
|
parts.push(` - ${tool}: ${count}`);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
+
if (m.gate_saves !== undefined) parts.push(`- Gate saves: ${m.gate_saves}`);
|
|
49
|
+
if (m.wave_reentry !== undefined) parts.push(`- Wave reentries: ${m.wave_reentry}`);
|
|
50
|
+
if (m.skillHits && Object.keys(m.skillHits).length > 0) {
|
|
51
|
+
parts.push('- Skill hits:');
|
|
52
|
+
for (const [agent, hits] of Object.entries(m.skillHits).sort()) {
|
|
53
|
+
const pct = hits.loaded > 0 ? Math.round((hits.read / hits.loaded) * 100) + '%' : '\u2014';
|
|
54
|
+
parts.push(` - ${agent}: ${hits.read}/${hits.loaded} (${pct})`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
48
57
|
parts.push('');
|
|
49
58
|
}
|
|
50
59
|
} catch {}
|
|
@@ -95,6 +104,51 @@ function main() {
|
|
|
95
104
|
parts.push('');
|
|
96
105
|
}
|
|
97
106
|
|
|
107
|
+
// Gate & Quality metrics — aggregated across all completed pipelines
|
|
108
|
+
{
|
|
109
|
+
let totalGateSaves = 0;
|
|
110
|
+
let totalWaveReentry = 0;
|
|
111
|
+
const skillHitAgg = {}; // { agentType: { loaded: N, read: M } }
|
|
112
|
+
let hasGateData = false;
|
|
113
|
+
|
|
114
|
+
for (const f of files) {
|
|
115
|
+
try {
|
|
116
|
+
const m = JSON.parse(fs.readFileSync(path.join(metricsDir, f), 'utf8'));
|
|
117
|
+
if (m.gate_saves !== undefined || m.wave_reentry !== undefined || m.skillHits) {
|
|
118
|
+
hasGateData = true;
|
|
119
|
+
}
|
|
120
|
+
totalGateSaves += m.gate_saves || 0;
|
|
121
|
+
totalWaveReentry += m.wave_reentry || 0;
|
|
122
|
+
if (m.skillHits && typeof m.skillHits === 'object') {
|
|
123
|
+
for (const [agent, hits] of Object.entries(m.skillHits)) {
|
|
124
|
+
if (!skillHitAgg[agent]) skillHitAgg[agent] = { loaded: 0, read: 0 };
|
|
125
|
+
skillHitAgg[agent].loaded += hits.loaded || 0;
|
|
126
|
+
skillHitAgg[agent].read += hits.read || 0;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
} catch {}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
parts.push('## Gate & Quality Metrics');
|
|
133
|
+
parts.push('- Gate saves: ' + (hasGateData ? totalGateSaves : '\u2014') + (hasGateData ? ' (spec revisions after /approve)' : ''));
|
|
134
|
+
parts.push('- Wave reentries: ' + (hasGateData ? totalWaveReentry : '\u2014') + (hasGateData ? ' (EXECUTE \u2192 PLAN)' : ''));
|
|
135
|
+
parts.push('- Skill hit rate:');
|
|
136
|
+
const agentKeys = Object.keys(skillHitAgg);
|
|
137
|
+
if (agentKeys.length > 0) {
|
|
138
|
+
parts.push('');
|
|
139
|
+
parts.push('| Agent | Loaded | Read | Hit rate |');
|
|
140
|
+
parts.push('|-------|--------|------|----------|');
|
|
141
|
+
for (const agent of agentKeys.sort()) {
|
|
142
|
+
const { loaded, read } = skillHitAgg[agent];
|
|
143
|
+
const hitPct = loaded > 0 ? Math.round((read / loaded) * 100) + '%' : '\u2014';
|
|
144
|
+
parts.push(`| ${agent} | ${loaded} | ${read} | ${hitPct} |`);
|
|
145
|
+
}
|
|
146
|
+
} else {
|
|
147
|
+
parts.push(' (no skill tracking data yet)');
|
|
148
|
+
}
|
|
149
|
+
parts.push('');
|
|
150
|
+
}
|
|
151
|
+
|
|
98
152
|
// Pass@1 metrics — computed across ALL completed pipeline files (not just last 10)
|
|
99
153
|
var pass1Count = 0;
|
|
100
154
|
var totalPipelines = 0;
|
|
@@ -24,6 +24,22 @@ const { execSync } = require("child_process");
|
|
|
24
24
|
// Root of the monorepo (parent of .claude/scripts/)
|
|
25
25
|
const ROOT = path.resolve(__dirname, "..", "..");
|
|
26
26
|
|
|
27
|
+
// Cache TTL for early-exit gate (5 minutes)
|
|
28
|
+
const CACHE_TTL_MS = 5 * 60 * 1000;
|
|
29
|
+
|
|
30
|
+
// Manifest file globs passed to `git status --porcelain` for dirty check.
|
|
31
|
+
// If none of these changed since the last cache write, the cache is safe to reuse.
|
|
32
|
+
const MANIFEST_GLOBS = [
|
|
33
|
+
"package.json",
|
|
34
|
+
"**/*.csproj",
|
|
35
|
+
"**/pubspec.yaml",
|
|
36
|
+
"**/schema.prisma",
|
|
37
|
+
"**/drizzle.config.*",
|
|
38
|
+
"**/go.mod",
|
|
39
|
+
"**/Cargo.toml",
|
|
40
|
+
"**/pyproject.toml",
|
|
41
|
+
];
|
|
42
|
+
|
|
27
43
|
// ---------------------------------------------------------------------------
|
|
28
44
|
// Stream-based file hashing
|
|
29
45
|
// ---------------------------------------------------------------------------
|
|
@@ -913,7 +929,55 @@ function findDashboardDir(absPath) {
|
|
|
913
929
|
// ---------------------------------------------------------------------------
|
|
914
930
|
|
|
915
931
|
function main() {
|
|
916
|
-
const skipCache = process.argv.includes("--no-cache");
|
|
932
|
+
const skipCache = process.argv.includes("--no-cache") || process.argv.includes("--force");
|
|
933
|
+
|
|
934
|
+
// ---------------------------------------------------------------------------
|
|
935
|
+
// Early-exit cache gate
|
|
936
|
+
//
|
|
937
|
+
// Skip the full discovery/hash loop when all three conditions hold:
|
|
938
|
+
// 1. --no-cache / --force was NOT passed
|
|
939
|
+
// 2. .detect-cache.json exists and its mtime is within CACHE_TTL_MS (5 min)
|
|
940
|
+
// 3. No manifest files (package.json, *.csproj, go.mod, …) are dirty
|
|
941
|
+
// according to `git status --porcelain`
|
|
942
|
+
//
|
|
943
|
+
// On ANY error the gate falls through silently — fail-open, never crashes.
|
|
944
|
+
// ---------------------------------------------------------------------------
|
|
945
|
+
if (!skipCache) {
|
|
946
|
+
try {
|
|
947
|
+
const cachePath = path.join(ROOT, ".claude", ".detect-cache.json");
|
|
948
|
+
if (fs.existsSync(cachePath)) {
|
|
949
|
+
const cacheAge = Date.now() - fs.statSync(cachePath).mtimeMs;
|
|
950
|
+
if (cacheAge < CACHE_TTL_MS) {
|
|
951
|
+
// Check whether any manifest file changed since the cache was written
|
|
952
|
+
const gitOut = execSync(
|
|
953
|
+
`git status --porcelain -- ${MANIFEST_GLOBS.join(" ")}`,
|
|
954
|
+
{ cwd: ROOT, encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] }
|
|
955
|
+
);
|
|
956
|
+
const manifestDirty = gitOut.trim().length > 0;
|
|
957
|
+
if (!manifestDirty) {
|
|
958
|
+
// Cache is fresh and manifests are clean — reuse previous output
|
|
959
|
+
const cached = JSON.parse(fs.readFileSync(cachePath, "utf-8"));
|
|
960
|
+
// Reconstruct the same shape that main() emits on stdout
|
|
961
|
+
const result = {
|
|
962
|
+
subprojects: cached.subprojects || [],
|
|
963
|
+
agents: getAgents(),
|
|
964
|
+
detectedAgents: Array.from(
|
|
965
|
+
new Set((cached.subprojects || []).map((s) => s.agent).filter((a) => a && a !== "general"))
|
|
966
|
+
).sort(),
|
|
967
|
+
promptsDir: ".claude/prompts",
|
|
968
|
+
promptsCompiledDir: ".claude/prompts_compiled",
|
|
969
|
+
sourceHashes: cached.sourceHashes || {},
|
|
970
|
+
moduleHashes: cached.moduleHashes || {},
|
|
971
|
+
};
|
|
972
|
+
process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
973
|
+
return;
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
} catch {
|
|
978
|
+
// Fall through to full discovery on any error
|
|
979
|
+
}
|
|
980
|
+
}
|
|
917
981
|
|
|
918
982
|
// 1. Discover subproject paths (merge submodules + CLAUDE.md scan)
|
|
919
983
|
const submodulePaths = getSubmodulePaths() || [];
|
package/templates/settings.json
CHANGED
|
@@ -103,6 +103,11 @@
|
|
|
103
103
|
"type": "command",
|
|
104
104
|
"command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/subagent-tracker.js",
|
|
105
105
|
"timeout": 3
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"type": "command",
|
|
109
|
+
"command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/context-budget.js",
|
|
110
|
+
"timeout": 3
|
|
106
111
|
}
|
|
107
112
|
]
|
|
108
113
|
}
|
|
@@ -125,7 +130,7 @@
|
|
|
125
130
|
]
|
|
126
131
|
},
|
|
127
132
|
{
|
|
128
|
-
"matcher": "Bash|Write|Edit|Task",
|
|
133
|
+
"matcher": "Bash|Write|Edit|Task|Read",
|
|
129
134
|
"hooks": [
|
|
130
135
|
{
|
|
131
136
|
"type": "command",
|
|
@@ -133,6 +138,16 @@
|
|
|
133
138
|
"timeout": 3
|
|
134
139
|
}
|
|
135
140
|
]
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"matcher": "Task",
|
|
144
|
+
"hooks": [
|
|
145
|
+
{
|
|
146
|
+
"type": "command",
|
|
147
|
+
"command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/session-knowledge-inc.js",
|
|
148
|
+
"timeout": 5
|
|
149
|
+
}
|
|
150
|
+
]
|
|
136
151
|
}
|
|
137
152
|
],
|
|
138
153
|
|