all-for-claudecode 2.10.0 → 2.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/MIGRATION.md +2 -2
- package/README.md +12 -4
- package/bin/cli.mjs +1 -0
- package/package.json +1 -1
- package/scripts/afc-consistency-check.sh +8 -6
- package/scripts/afc-doctor.sh +18 -4
- package/scripts/session-start-context.sh +1 -1
- package/skills/analyze/SKILL.md +10 -8
- package/skills/architect/SKILL.md +4 -4
- package/skills/auto/SKILL.md +664 -93
- package/skills/clarify/SKILL.md +4 -3
- package/skills/clean/SKILL.md +17 -16
- package/skills/consult/SKILL.md +19 -18
- package/skills/debug/SKILL.md +1 -1
- package/skills/doctor/SKILL.md +23 -19
- package/skills/implement/SKILL.md +36 -23
- package/skills/init/SKILL.md +24 -177
- package/skills/learner/SKILL.md +4 -4
- package/skills/plan/SKILL.md +1 -1
- package/skills/pr-comment/SKILL.md +4 -4
- package/skills/principles/SKILL.md +1 -1
- package/skills/qa/SKILL.md +2 -2
- package/skills/release-notes/SKILL.md +8 -4
- package/skills/review/SKILL.md +12 -12
- package/skills/security/SKILL.md +19 -4
- package/skills/setup/SKILL.md +217 -0
- package/skills/spec/SKILL.md +2 -2
- package/skills/tasks/SKILL.md +4 -4
- package/skills/test/SKILL.md +1 -1
- package/skills/triage/SKILL.md +7 -8
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Automated pipeline for Claude Code — spec → plan → implement → review → clean",
|
|
9
|
-
"version": "2.
|
|
9
|
+
"version": "2.12.0"
|
|
10
10
|
},
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "afc",
|
|
14
14
|
"source": "./",
|
|
15
15
|
"description": "Automated pipeline for Claude Code. Automates the full development cycle: spec → plan → implement → review → clean.",
|
|
16
|
-
"version": "2.
|
|
16
|
+
"version": "2.12.0",
|
|
17
17
|
"category": "automation",
|
|
18
18
|
"tags": ["pipeline", "automation", "spec", "plan", "implement", "review", "critic-loop"]
|
|
19
19
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "afc",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.12.0",
|
|
4
4
|
"description": "Automated pipeline for Claude Code. Automates the full development cycle: spec → plan → implement → review → clean.",
|
|
5
5
|
"author": { "name": "jhlee0409", "email": "relee6203@gmail.com" },
|
|
6
6
|
"homepage": "https://github.com/jhlee0409/all-for-claudecode",
|
package/MIGRATION.md
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
- If you previously used `/afc:analyze` for artifact consistency checking, use `/afc:validate` instead (or let the pipeline invoke it automatically).
|
|
21
21
|
- Agent memory files (`.claude/agent-memory/afc-architect/MEMORY.md`, `.claude/agent-memory/afc-security/MEMORY.md`) exceeding 100 lines will be auto-pruned on next pipeline run.
|
|
22
22
|
- Memory subdirectories exceeding rotation thresholds will be auto-pruned during the Clean phase.
|
|
23
|
-
- Run `/afc:
|
|
23
|
+
- Run `/afc:setup` to update the `AFC:VERSION` tag in your CLAUDE.md.
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
@@ -77,7 +77,7 @@ Replace the `SELFISH:START` / `SELFISH:END` block in your project's CLAUDE.md:
|
|
|
77
77
|
- Change all `selfish:` command references → `afc:`
|
|
78
78
|
- Change `selfish-architect` / `selfish-security` → `afc-architect` / `afc-security`
|
|
79
79
|
|
|
80
|
-
Or simply run `/afc:
|
|
80
|
+
Or simply run `/afc:setup` to regenerate the block.
|
|
81
81
|
|
|
82
82
|
#### 4. Migrate state files (if pipeline was active)
|
|
83
83
|
|
package/README.md
CHANGED
|
@@ -28,7 +28,8 @@ npx all-for-claudecode
|
|
|
28
28
|
Then:
|
|
29
29
|
|
|
30
30
|
```
|
|
31
|
-
/afc:
|
|
31
|
+
/afc:setup # Set up global routing in ~/.claude/CLAUDE.md
|
|
32
|
+
/afc:init # Detect your stack, generate project config
|
|
32
33
|
/afc:auto "Add user authentication" # Run the full pipeline
|
|
33
34
|
```
|
|
34
35
|
|
|
@@ -52,6 +53,10 @@ Spec (1/5) → Plan (2/5) → Implement (3/5) → Review (4/5) → Clean (5/5)
|
|
|
52
53
|
│ └─ File change map, ADR recording, research persistence
|
|
53
54
|
└─ Acceptance criteria, pre-implementation gates
|
|
54
55
|
|
|
56
|
+
Skill Advisor checkpoints (A–E) between phases dynamically invoke
|
|
57
|
+
auxiliary skills (ideate, consult, architect, security, test, qa, learner)
|
|
58
|
+
when LLM evaluation detects they would add value. Budget: max 5 per run.
|
|
59
|
+
|
|
55
60
|
Hooks run automatically at each step.
|
|
56
61
|
CI failure → debug-based RCA (not blind retry).
|
|
57
62
|
Critic Loops verify quality at each gate until convergence.
|
|
@@ -111,7 +116,8 @@ Performance: ✓ no N+1 queries
|
|
|
111
116
|
| `/afc:clean` | Pipeline artifact cleanup and codebase hygiene |
|
|
112
117
|
| `/afc:research` | Technical research with persistent storage |
|
|
113
118
|
| `/afc:debug` | Bug diagnosis and fix |
|
|
114
|
-
| `/afc:init` | Project setup — detects stack and generates config |
|
|
119
|
+
| `/afc:init` | Project setup — detects stack and generates project config |
|
|
120
|
+
| `/afc:setup` | Global CLAUDE.md configuration — injects/updates AFC routing block |
|
|
115
121
|
| `/afc:doctor` | Diagnose project health and plugin setup |
|
|
116
122
|
| `/afc:architect` | Architecture analysis (persistent memory) |
|
|
117
123
|
| `/afc:security` | Security scan (persistent memory, isolated worktree) |
|
|
@@ -244,10 +250,12 @@ Dependencies are tracked via DAG. CI gate + Mini-Review + Auto-Checkpoint run at
|
|
|
244
250
|
## Configuration
|
|
245
251
|
|
|
246
252
|
```
|
|
247
|
-
/afc:
|
|
253
|
+
/afc:setup # One-time: inject routing block into ~/.claude/CLAUDE.md
|
|
254
|
+
/afc:init # Per-project: detect stack and generate .claude/afc.config.md
|
|
248
255
|
```
|
|
249
256
|
|
|
250
|
-
|
|
257
|
+
- **`/afc:setup`** — Manages the AFC routing block in your global `~/.claude/CLAUDE.md`. Run once after install and again after plugin updates. Idempotent — skips if version matches.
|
|
258
|
+
- **`/afc:init`** — Auto-detects your tech stack (package manager, framework, architecture, testing, linting) and generates project-local config files. No manual preset selection needed.
|
|
251
259
|
|
|
252
260
|
## FAQ
|
|
253
261
|
|
package/bin/cli.mjs
CHANGED
|
@@ -97,6 +97,7 @@ async function main() {
|
|
|
97
97
|
console.log(" ✓ Installation complete!");
|
|
98
98
|
console.log();
|
|
99
99
|
console.log(" Next steps:");
|
|
100
|
+
console.log(" /afc:setup Set up global routing");
|
|
100
101
|
console.log(" /afc:init Create project config");
|
|
101
102
|
console.log(' /afc:auto "feature desc" Run the pipeline');
|
|
102
103
|
console.log();
|
package/package.json
CHANGED
|
@@ -113,6 +113,8 @@ check_agent_names() {
|
|
|
113
113
|
local count=0
|
|
114
114
|
local invalid=0
|
|
115
115
|
for ref in $referenced_agents; do
|
|
116
|
+
# Skip dynamic template patterns (e.g., afc-{domain}-expert)
|
|
117
|
+
case "$ref" in *"{"*) continue ;; esac
|
|
116
118
|
count=$((count + 1))
|
|
117
119
|
if ! printf '%s\n' "$defined_agents" | grep -qxF "$ref"; then
|
|
118
120
|
fail "subagent_type 'afc:$ref' referenced but no agents/$ref.md found"
|
|
@@ -262,7 +264,7 @@ check_command_docs() {
|
|
|
262
264
|
[ -d "$skills_dir" ] || return
|
|
263
265
|
|
|
264
266
|
local readme="$PROJECT_DIR/README.md"
|
|
265
|
-
local
|
|
267
|
+
local setup_skill="$skills_dir/setup/SKILL.md"
|
|
266
268
|
local claude_md="$PROJECT_DIR/CLAUDE.md"
|
|
267
269
|
local issues=0
|
|
268
270
|
|
|
@@ -279,12 +281,12 @@ check_command_docs() {
|
|
|
279
281
|
fi
|
|
280
282
|
fi
|
|
281
283
|
|
|
282
|
-
# Sub-check B:
|
|
284
|
+
# Sub-check B: setup/SKILL.md should mention afc:{name} for user-invocable skills
|
|
283
285
|
local invocable
|
|
284
286
|
invocable=$(get_cmd_field "$skill_file" "user-invocable")
|
|
285
|
-
if [ "$invocable" != "false" ] && [ -f "$
|
|
286
|
-
if ! grep -qE "afc:${cmd_name}([^a-z0-9-]|$)" "$
|
|
287
|
-
warn "Skill '$cmd_name' missing from
|
|
287
|
+
if [ "$invocable" != "false" ] && [ -f "$setup_skill" ]; then
|
|
288
|
+
if ! grep -qE "afc:${cmd_name}([^a-z0-9-]|$)" "$setup_skill" 2>/dev/null; then
|
|
289
|
+
warn "Skill '$cmd_name' missing from setup/SKILL.md skill routing"
|
|
288
290
|
issues=$((issues + 1))
|
|
289
291
|
fi
|
|
290
292
|
fi
|
|
@@ -301,7 +303,7 @@ check_command_docs() {
|
|
|
301
303
|
done
|
|
302
304
|
|
|
303
305
|
if [ "$issues" -eq 0 ]; then
|
|
304
|
-
ok "Skill docs: all skills referenced in README.md,
|
|
306
|
+
ok "Skill docs: all skills referenced in README.md, setup/SKILL.md, CLAUDE.md"
|
|
305
307
|
fi
|
|
306
308
|
}
|
|
307
309
|
|
package/scripts/afc-doctor.sh
CHANGED
|
@@ -55,6 +55,20 @@ section() {
|
|
|
55
55
|
printf '\n%s\n' "$1"
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
# --- Header: show which plugin version is running ---
|
|
59
|
+
if [ -f "$PLUGIN_ROOT/package.json" ]; then
|
|
60
|
+
if command -v jq >/dev/null 2>&1; then
|
|
61
|
+
RUNNING_VERSION=$(jq -r '.version // "unknown"' "$PLUGIN_ROOT/package.json" 2>/dev/null || echo "unknown")
|
|
62
|
+
else
|
|
63
|
+
RUNNING_VERSION=$(grep -o '"version"[[:space:]]*:[[:space:]]*"[^"]*"' "$PLUGIN_ROOT/package.json" 2>/dev/null | head -1 | sed 's/.*: *"//;s/"//' || echo "unknown")
|
|
64
|
+
fi
|
|
65
|
+
printf 'all-for-claudecode Doctor (v%s)\n' "$RUNNING_VERSION"
|
|
66
|
+
printf 'Plugin root: %s\n' "$PLUGIN_ROOT"
|
|
67
|
+
else
|
|
68
|
+
printf 'all-for-claudecode Doctor (version unknown)\n'
|
|
69
|
+
printf 'Plugin root: %s\n' "$PLUGIN_ROOT"
|
|
70
|
+
fi
|
|
71
|
+
|
|
58
72
|
# --- Category 1: Environment ---
|
|
59
73
|
section "Environment"
|
|
60
74
|
|
|
@@ -160,15 +174,15 @@ if [ -f "$GLOBAL_CLAUDE" ]; then
|
|
|
160
174
|
if [ "$BLOCK_VERSION" = "$PLUGIN_VERSION" ]; then
|
|
161
175
|
pass "Block version matches plugin ($PLUGIN_VERSION)"
|
|
162
176
|
else
|
|
163
|
-
warn "all-for-claudecode block outdated (block: $BLOCK_VERSION, plugin: $PLUGIN_VERSION)" "run /afc:
|
|
177
|
+
warn "all-for-claudecode block outdated (block: $BLOCK_VERSION, plugin: $PLUGIN_VERSION)" "run /afc:setup to update"
|
|
164
178
|
fi
|
|
165
179
|
fi
|
|
166
180
|
fi
|
|
167
181
|
else
|
|
168
|
-
fail "all-for-claudecode block not found" "run /afc:
|
|
182
|
+
fail "all-for-claudecode block not found" "run /afc:setup to inject all-for-claudecode block"
|
|
169
183
|
fi
|
|
170
184
|
else
|
|
171
|
-
warn "No global ~/.claude/CLAUDE.md" "run /afc:
|
|
185
|
+
warn "No global ~/.claude/CLAUDE.md" "run /afc:setup"
|
|
172
186
|
fi
|
|
173
187
|
|
|
174
188
|
# --- Category 4: Legacy Migration ---
|
|
@@ -179,7 +193,7 @@ LEGACY_FOUND=false
|
|
|
179
193
|
# Legacy CLAUDE.md block
|
|
180
194
|
if [ -f "$GLOBAL_CLAUDE" ] && grep -q '<!-- SELFISH:START -->' "$GLOBAL_CLAUDE" 2>/dev/null; then
|
|
181
195
|
LEGACY_FOUND=true
|
|
182
|
-
warn "Legacy SELFISH:START block in ~/.claude/CLAUDE.md" "run /afc:
|
|
196
|
+
warn "Legacy SELFISH:START block in ~/.claude/CLAUDE.md" "run /afc:setup (will replace)"
|
|
183
197
|
fi
|
|
184
198
|
|
|
185
199
|
# Legacy config
|
|
@@ -73,7 +73,7 @@ if [ -f "$PLUGIN_ROOT/package.json" ]; then
|
|
|
73
73
|
if [ -f "$GLOBAL_CLAUDE" ]; then
|
|
74
74
|
BLOCK_VERSION=$(grep -o 'AFC:VERSION:[0-9][0-9.]*' "$GLOBAL_CLAUDE" 2>/dev/null | head -1 | sed 's/AFC:VERSION://' || true)
|
|
75
75
|
if [ -n "${BLOCK_VERSION:-}" ] && [ "$BLOCK_VERSION" != "$PLUGIN_VERSION" ]; then
|
|
76
|
-
OUTPUT="${OUTPUT:+$OUTPUT | }[AFC VERSION MISMATCH] v$PLUGIN_VERSION installed but CLAUDE.md block is v$BLOCK_VERSION. Run /afc:
|
|
76
|
+
OUTPUT="${OUTPUT:+$OUTPUT | }[AFC VERSION MISMATCH] v$PLUGIN_VERSION installed but CLAUDE.md block is v$BLOCK_VERSION. Run /afc:setup to update."
|
|
77
77
|
fi
|
|
78
78
|
fi
|
|
79
79
|
fi
|
package/skills/analyze/SKILL.md
CHANGED
|
@@ -32,16 +32,18 @@ If neither rules file nor config exists: read `CLAUDE.md` for architecture info.
|
|
|
32
32
|
|
|
33
33
|
### 1. Parse Analysis Intent
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
Read the user's question semantically. What does the user actually want to understand? Select the mode that best serves their learning goal.
|
|
36
36
|
|
|
37
|
-
| Mode |
|
|
38
|
-
|
|
39
|
-
| **Root Cause** |
|
|
40
|
-
| **Structural** |
|
|
41
|
-
| **Exploratory** |
|
|
42
|
-
| **Comparative** |
|
|
37
|
+
| Mode | When to select | Focus |
|
|
38
|
+
|------|---------------|-------|
|
|
39
|
+
| **Root Cause** | User wants to understand WHY something is broken, failing, or behaving unexpectedly — the goal is diagnosing a problem | Error trace → data flow → hypothesis |
|
|
40
|
+
| **Structural** | User wants to understand HOW a system is built or how components relate — the goal is comprehension of design or flow | Component relationships, call graphs, data flow |
|
|
41
|
+
| **Exploratory** | User wants to discover WHAT exists in the codebase — the goal is finding, listing, or locating things | File/function discovery, pattern matching |
|
|
42
|
+
| **Comparative** | User wants to understand the DIFFERENCE between two or more things — the goal is contrast and tradeoff evaluation | Side-by-side analysis of implementations |
|
|
43
43
|
|
|
44
|
-
If the
|
|
44
|
+
If the question spans multiple modes, select the PRIMARY mode that best matches the user's core learning goal, and note secondary aspects to incorporate during analysis.
|
|
45
|
+
|
|
46
|
+
If the intent doesn't clearly match a single mode, default to **Exploratory**.
|
|
45
47
|
|
|
46
48
|
### 2. Codebase Exploration
|
|
47
49
|
|
|
@@ -53,8 +53,8 @@ Analyze `$ARGUMENTS` to identify the task type:
|
|
|
53
53
|
|
|
54
54
|
Use Agent Teams for wide analysis scope (3+ modules) with parallel exploration:
|
|
55
55
|
```
|
|
56
|
-
Task("analyze features/timeline", subagent_type: Explore)
|
|
57
|
-
Task("analyze widgets/timeline", subagent_type: Explore)
|
|
56
|
+
Task("analyze features/timeline", subagent_type: "Explore")
|
|
57
|
+
Task("analyze widgets/timeline", subagent_type: "Explore")
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
**Cross-Module Import Chain Verification** (after Explore agents return):
|
|
@@ -99,9 +99,9 @@ Structure analysis results and **print to console**:
|
|
|
99
99
|
|
|
100
100
|
### 4. Critic Loop
|
|
101
101
|
|
|
102
|
-
> **Always** read `${
|
|
102
|
+
> **Always** read `${CLAUDE_SKILL_DIR}/../../docs/critic-loop-rules.md` first and follow it.
|
|
103
103
|
|
|
104
|
-
Run the critic loop until convergence. Safety cap:
|
|
104
|
+
Run the critic loop until convergence. Safety cap: 5 passes.
|
|
105
105
|
|
|
106
106
|
| Criterion | Validation |
|
|
107
107
|
|-----------|------------|
|