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.
@@ -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.10.0"
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.10.0",
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.10.0",
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:init` to update the `AFC:VERSION` tag in your CLAUDE.md.
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:init` to regenerate the block.
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:init # Detect your stack, generate config
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:init
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
- Auto-detects your tech stack (package manager, framework, architecture, testing, linting) and generates `.claude/afc.config.md` with CI commands, architecture rules, and code style conventions. No manual preset selection needed the init command analyzes your project structure directly.
257
+ - **`/afc:setup`** Manages the AFC routing block in your global `~/.claude/CLAUDE.md`. Run once after install and again after plugin updates. Idempotentskips 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "all-for-claudecode",
3
- "version": "2.10.0",
3
+ "version": "2.12.0",
4
4
  "description": "Claude Code plugin that automates the full dev cycle — spec, plan, implement, review, clean.",
5
5
  "bin": {
6
6
  "all-for-claudecode": "bin/cli.mjs"
@@ -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 init_skill="$skills_dir/init/SKILL.md"
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: init/SKILL.md should mention afc:{name} for user-invocable skills
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 "$init_skill" ]; then
286
- if ! grep -qE "afc:${cmd_name}([^a-z0-9-]|$)" "$init_skill" 2>/dev/null; then
287
- warn "Skill '$cmd_name' missing from init/SKILL.md skill routing"
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, init/SKILL.md, CLAUDE.md"
306
+ ok "Skill docs: all skills referenced in README.md, setup/SKILL.md, CLAUDE.md"
305
307
  fi
306
308
  }
307
309
 
@@ -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:init to update"
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:init to inject all-for-claudecode block"
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:init"
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:init (will replace)"
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:init to update."
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
@@ -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
- Classify `$ARGUMENTS` into one of these analysis modes:
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 | Trigger Keywords | Focus |
38
- |------|-----------------|-------|
39
- | **Root Cause** | "why", "cause", "bug", "error", "broken" | Error trace → data flow → hypothesis |
40
- | **Structural** | "how", "architecture", "flow", "trace", "structure" | Component relationships, call graphs, data flow |
41
- | **Exploratory** | "what", "find", "where", "which", "list" | File/function discovery, pattern matching |
42
- | **Comparative** | "difference", "compare", "vs", "between" | Side-by-side analysis of implementations |
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 intent doesn't clearly match a mode, default to **Exploratory**.
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 `${CLAUDE_PLUGIN_ROOT}/docs/critic-loop-rules.md` first and follow it.
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: 7 passes (higher than the standard 5 because architecture analysis involves broader exploration across modules and layers).
104
+ Run the critic loop until convergence. Safety cap: 5 passes.
105
105
 
106
106
  | Criterion | Validation |
107
107
  |-----------|------------|