pan-wizard 3.36.0 → 3.37.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.
Files changed (314) hide show
  1. package/CHANGELOG.md +3645 -0
  2. package/README.md +36 -48
  3. package/agents/pan-conductor.md +2 -3
  4. package/agents/pan-counterfactual.md +1 -2
  5. package/agents/pan-debugger.md +14 -3
  6. package/agents/pan-design-checker.md +1 -2
  7. package/agents/pan-designer.md +1 -2
  8. package/agents/pan-document_code.md +1 -2
  9. package/agents/pan-hardener.md +2 -3
  10. package/agents/pan-integration-checker.md +1 -2
  11. package/agents/pan-knowledge.md +1 -2
  12. package/agents/pan-meta-reviewer.md +3 -3
  13. package/agents/pan-optimizer.md +4 -4
  14. package/agents/pan-phase-researcher.md +79 -488
  15. package/agents/pan-plan-checker.md +12 -2
  16. package/agents/pan-planner.md +10 -6
  17. package/agents/pan-previewer.md +1 -2
  18. package/agents/pan-project-researcher.md +70 -499
  19. package/agents/pan-release.md +1 -1
  20. package/agents/pan-reviewer.md +9 -3
  21. package/agents/pan-roadmapper.md +12 -7
  22. package/agents/pan-verifier.md +7 -2
  23. package/bin/install-lib.cjs +134 -14
  24. package/bin/install.js +59 -12
  25. package/commands/pan/army.md +1 -1
  26. package/commands/pan/autodev.md +76 -0
  27. package/commands/pan/exec-phase.md +3 -4
  28. package/commands/pan/focus-auto.md +14 -7
  29. package/commands/pan/focus-design.md +4 -5
  30. package/commands/pan/focus-docs.md +24 -0
  31. package/commands/pan/learn.md +13 -6
  32. package/commands/pan/milestone-audit.md +8 -1
  33. package/commands/pan/milestone-done.md +10 -5
  34. package/commands/pan/milestone-new.md +2 -2
  35. package/commands/pan/new-project.md +15 -12
  36. package/commands/pan/plan-phase.md +15 -9
  37. package/commands/pan/quick.md +1 -1
  38. package/commands/pan/review-deep.md +11 -5
  39. package/commands/pan/settings.md +6 -0
  40. package/commands/pan/verify-phase.md +6 -2
  41. package/docs/AGENTS.md +917 -0
  42. package/docs/ARCHITECTURE.md +1054 -0
  43. package/docs/CLI-REFERENCE.md +4582 -0
  44. package/docs/COMPARISON.md +116 -0
  45. package/docs/DEVELOPMENT.md +490 -0
  46. package/docs/ECOSYSTEM-REVIEW-2026-06.md +107 -0
  47. package/docs/ECOSYSTEM-REVIEW-2026-08.md +349 -0
  48. package/docs/EXAMPLES.md +584 -0
  49. package/docs/FAQ.md +254 -0
  50. package/docs/FIELD-HARVEST-2026-07.md +88 -0
  51. package/docs/FIELD-REPORT-army-2026-06.md +121 -0
  52. package/docs/HOOKS.md +638 -0
  53. package/docs/IMPROVEMENT-TODO.md +246 -0
  54. package/docs/INTERNALS.md +485 -0
  55. package/docs/MIGRATION-v2-to-v3.md +258 -0
  56. package/docs/SECURITY-HARDENING.md +230 -0
  57. package/docs/SKILLS-ENHANCEMENT-PLAN-V2.md +122 -0
  58. package/docs/SKILLS-FULL-TEXT.md +9685 -0
  59. package/docs/SKILLS-REFERENCE.md +1037 -0
  60. package/docs/TROUBLESHOOTING.md +1084 -0
  61. package/docs/USER-GUIDE.md +1437 -0
  62. package/docs/archive/SKILLS-ENHANCEMENT-PLAN.md +230 -0
  63. package/docs/audits/AUDIT-2026-08-e2e-ROADMAP.md +117 -0
  64. package/docs/audits/AUDIT-2026-08-e2e-VERIFICATION.md +693 -0
  65. package/docs/audits/AUDIT-2026-08-e2e.md +1546 -0
  66. package/docs/audits/OUTSTANDING-2026-08.md +275 -0
  67. package/docs/audits/STABILITY-TEST-2026-08.md +640 -0
  68. package/docs/branding/README-brand-draft.md +119 -0
  69. package/docs/branding/handoff/IMPLEMENTATION.md +205 -0
  70. package/docs/branding/handoff/README-brand-draft.md +119 -0
  71. package/docs/branding/handoff/image-prompts.md +46 -0
  72. package/docs/branding/image-prompts.md +46 -0
  73. package/docs/branding/nano-banana-prompts.txt +60 -0
  74. package/docs/context-monitor.md +13 -0
  75. package/docs/decisions/ADR-0001-strategic-feature-prioritization.md +83 -0
  76. package/docs/decisions/ADR-0002-copilot-cli-runtime.md +71 -0
  77. package/docs/decisions/ADR-0003-smart-execution.md +84 -0
  78. package/docs/decisions/ADR-0004-copilot-cli-interaction.md +89 -0
  79. package/docs/decisions/ADR-0005-command-naming.md +80 -0
  80. package/docs/decisions/ADR-0006-focus-commands.md +101 -0
  81. package/docs/decisions/ADR-0007-ship-v1.md +73 -0
  82. package/docs/decisions/ADR-0008-map-codebase-mermaid-togaf.md +80 -0
  83. package/docs/decisions/ADR-0009-production-deployment-checklist.md +68 -0
  84. package/docs/decisions/ADR-0010-standards-integration.md +79 -0
  85. package/docs/decisions/ADR-0011-help-commands-rewrite.md +64 -0
  86. package/docs/decisions/ADR-0012-contributors-attribution-index.md +42 -0
  87. package/docs/decisions/ADR-0013-strategic-feature-additions.md +53 -0
  88. package/docs/decisions/ADR-0014-internal-cleanup-code-quality.md +53 -0
  89. package/docs/decisions/ADR-0015-focus-auto-runner.md +296 -0
  90. package/docs/decisions/ADR-0016-enhanced-doc-sync.md +54 -0
  91. package/docs/decisions/ADR-0017-enhanced-focus-design.md +69 -0
  92. package/docs/decisions/ADR-0018-user-reality-testing.md +84 -0
  93. package/docs/decisions/ADR-0019-end-to-end-user-acceptance-testing.md +113 -0
  94. package/docs/decisions/ADR-0020-ai-drift-prevention.md +55 -0
  95. package/docs/decisions/ADR-0021-codebase-mapper-v2.md +76 -0
  96. package/docs/decisions/ADR-0022-lifecycle-completeness.md +63 -0
  97. package/docs/decisions/ADR-0023-opus-4-7-adoption.md +89 -0
  98. package/docs/decisions/ADR-0024-spec-b-v2-completion.md +137 -0
  99. package/docs/decisions/ADR-0025-behavioral-guardrails-layer.md +129 -0
  100. package/docs/decisions/ADR-0026-self-improvement-loop.md +171 -0
  101. package/docs/decisions/ADR-0027-doc-code-link-graph.md +164 -0
  102. package/docs/decisions/ADR-0028-unified-agents-skills-target.md +46 -0
  103. package/docs/decisions/ADR-0029-experiment-evaluator.md +76 -0
  104. package/docs/decisions/ADR-0030-planning-concurrency.md +37 -0
  105. package/docs/decisions/ADR-0031-focus-auto-backlog-source.md +47 -0
  106. package/docs/decisions/ADR-0032-squad-model.md +64 -0
  107. package/docs/decisions/ADR-0033-army-campaign.md +40 -0
  108. package/docs/decisions/ADR-0034-scheduled-campaigns.md +57 -0
  109. package/docs/decisions/ADR-0035-army-hud-dashboard.md +40 -0
  110. package/docs/decisions/ADR-0036-agentic-memory-architecture.md +106 -0
  111. package/docs/decisions/ADR-0037-pin-security-agents-to-opus.md +51 -0
  112. package/docs/decisions/ADR-0038-skill-aligned-decomposition.md +41 -0
  113. package/docs/decisions/ADR-0039-worktree-as-project-variant.md +37 -0
  114. package/docs/decisions/ADR-0040-memory-injection-defense.md +55 -0
  115. package/docs/decisions/ADR-0041-mcp-dual-era-bridge.md +47 -0
  116. package/docs/decisions/ADR-0042-design-parity-both-flows.md +45 -0
  117. package/docs/decisions/ADR-0043-addressable-planning-roots.md +56 -0
  118. package/docs/decisions/ADR-0044-bound-the-cached-context.md +104 -0
  119. package/docs/decisions/ADR-0045-agent-plugins-bundle.md +76 -0
  120. package/docs/decisions/ADR-0046-subagent-frontmatter-decisions.md +39 -0
  121. package/docs/decisions/ADR-0047-pan-harness.md +76 -0
  122. package/docs/decisions/ADR-0048-one-core-per-project.md +43 -0
  123. package/docs/decisions/ADR-0049-machine-verdicts-and-findings-ledger.md +116 -0
  124. package/docs/specs/ai_drift_prevention_featureai.md +286 -0
  125. package/docs/specs/codebase_mapper_v2_featureai.md +930 -0
  126. package/docs/specs/command_naming_optimization_featureai.md +930 -0
  127. package/docs/specs/comp_analysis_markdown_v1.md +149 -0
  128. package/docs/specs/continuous_autonomous_execution_featureai.md +304 -0
  129. package/docs/specs/contributors_attribution_index_featureai.md +476 -0
  130. package/docs/specs/copilot_cli_interaction_featureai.md +868 -0
  131. package/docs/specs/copilot_cli_runtime_featureai.md +647 -0
  132. package/docs/specs/custom-skills-assessment.md +461 -0
  133. package/docs/specs/deployment_audit_findings_featureai.md +243 -0
  134. package/docs/specs/doc_code_link_graph_featureai.md +253 -0
  135. package/docs/specs/documentation_alignment_cleanup_featureai.md +69 -0
  136. package/docs/specs/e2e_visual_testing_featureai.md +615 -0
  137. package/docs/specs/end_to_end_user_acceptance_testing_featureai.md +810 -0
  138. package/docs/specs/evidence-loop-plan.md +76 -0
  139. package/docs/specs/evidence_loop_featureai.md +497 -0
  140. package/docs/specs/focus-auto-optimize-category.md +449 -0
  141. package/docs/specs/focus-auto-optimize-superplan.md +188 -0
  142. package/docs/specs/focus_auto_runner_featureai.md +1102 -0
  143. package/docs/specs/focus_design_v2_featureai.md +197 -0
  144. package/docs/specs/focus_sync_v2_featureai.md +202 -0
  145. package/docs/specs/git_integration_overhaul_featureai.md +326 -0
  146. package/docs/specs/glm_zai_provider_featureai.md +200 -0
  147. package/docs/specs/googlecli_adoption_featureai.md +661 -0
  148. package/docs/specs/help_commands_rewrite_featureai.md +860 -0
  149. package/docs/specs/industry_analysis_strategic_additions_featureai.md +231 -0
  150. package/docs/specs/industry_comparison_and_feature_gaps_featureai.md +674 -0
  151. package/docs/specs/internal_cleanup_code_quality_featureai.md +486 -0
  152. package/docs/specs/investigations/README.md +31 -0
  153. package/docs/specs/investigations/digests/2026-09-28.md +47 -0
  154. package/docs/specs/investigations/digests/2026-10-08.md +62 -0
  155. package/docs/specs/investigations/digests/2026-10-10.md +61 -0
  156. package/docs/specs/investigations/features/debugger-red-loop-first.md +55 -0
  157. package/docs/specs/investigations/features/harness-cross-host-behaviour.md +93 -0
  158. package/docs/specs/investigations/features/optimize-apply-regression-gate.md +66 -0
  159. package/docs/specs/investigations/features/reviewer-smell-baseline.md +57 -0
  160. package/docs/specs/investigations/features/trace-failure-capture.md +69 -0
  161. package/docs/specs/lifecycle_completeness_featureai.md +754 -0
  162. package/docs/specs/local-first-ci.md +42 -0
  163. package/docs/specs/map_codebase_mermaid_togaf_featureai.md +805 -0
  164. package/docs/specs/market-delta-2026-09-superplan.md +310 -0
  165. package/docs/specs/market-ideas-2026-09.md +131 -0
  166. package/docs/specs/market-ideas-2026-10.md +428 -0
  167. package/docs/specs/market-ideas-ledger.md +177 -0
  168. package/docs/specs/memory-optimization-2026-10.md +285 -0
  169. package/docs/specs/multi-track-planning-roots.md +143 -0
  170. package/docs/specs/multi_model_routing_featureai.md +687 -0
  171. package/docs/specs/multi_model_routing_superplan.md +197 -0
  172. package/docs/specs/opus_47_existing_enhancements_featureai.md +247 -0
  173. package/docs/specs/opus_47_extended_features_featureai.md +363 -0
  174. package/docs/specs/opus_47_extended_features_v2_featureai.md +397 -0
  175. package/docs/specs/pan_focus_commands_featureai.md +2336 -0
  176. package/docs/specs/pan_zcode_mcp_bridge_featureai.md +120 -0
  177. package/docs/specs/product-excellence-superplan.md +315 -0
  178. package/docs/specs/product_excellence_program_2026_q4_featureai.md +365 -0
  179. package/docs/specs/production_deployment_readiness_featureai.md +433 -0
  180. package/docs/specs/production_readiness_ship_v1_featureai.md +698 -0
  181. package/docs/specs/real_test_enforcement_featureai.md +213 -0
  182. package/docs/specs/reality-check-2026-09-superplan.md +362 -0
  183. package/docs/specs/right-sized-ceremony.md +74 -0
  184. package/docs/specs/roadmap_and_competition_2026_q4_featureai.md +390 -0
  185. package/docs/specs/self_improvement_loop_featureai.md +875 -0
  186. package/docs/specs/skill-aligned-decomposition.md +155 -0
  187. package/docs/specs/standards_integration_featureai.md +833 -0
  188. package/docs/specs/testing-system-redesign-2026-09.md +267 -0
  189. package/docs/specs/user_reality_testing_system_featureai.md +788 -0
  190. package/docs/specs/watch-triggers.json +22 -0
  191. package/docs/specs/workflow-integration-redesign.md +742 -0
  192. package/docs/specs/workflow_state_consistency_featureai.md +183 -0
  193. package/hooks/dist/pan-context-monitor.js +9 -2
  194. package/hooks/dist/pan-cost-logger.js +5 -0
  195. package/hooks/dist/pan-guard.js +28 -5
  196. package/hooks/dist/pan-stop-guard.js +9 -9
  197. package/hooks/dist/pan-trace-logger.js +5 -0
  198. package/package.json +10 -2
  199. package/pan-wizard-core/bin/lib/agents-md.cjs +57 -8
  200. package/pan-wizard-core/bin/lib/autodev-report.cjs +180 -0
  201. package/pan-wizard-core/bin/lib/autodev.cjs +642 -0
  202. package/pan-wizard-core/bin/lib/ci.cjs +143 -0
  203. package/pan-wizard-core/bin/lib/commands.cjs +1 -1
  204. package/pan-wizard-core/bin/lib/config.cjs +31 -2
  205. package/pan-wizard-core/bin/lib/constants.cjs +27 -1
  206. package/pan-wizard-core/bin/lib/core.cjs +22 -10
  207. package/pan-wizard-core/bin/lib/cost.cjs +14 -4
  208. package/pan-wizard-core/bin/lib/cross-family.cjs +164 -0
  209. package/pan-wizard-core/bin/lib/debug-cases.cjs +104 -0
  210. package/pan-wizard-core/bin/lib/failure-class.cjs +81 -0
  211. package/pan-wizard-core/bin/lib/findings.cjs +34 -4
  212. package/pan-wizard-core/bin/lib/focus.cjs +1 -1
  213. package/pan-wizard-core/bin/lib/hosts.cjs +88 -0
  214. package/pan-wizard-core/bin/lib/init.cjs +7 -2
  215. package/pan-wizard-core/bin/lib/knowledge.cjs +2 -0
  216. package/pan-wizard-core/bin/lib/merge.cjs +50 -0
  217. package/pan-wizard-core/bin/lib/mutate.cjs +16 -5
  218. package/pan-wizard-core/bin/lib/next-action.cjs +112 -0
  219. package/pan-wizard-core/bin/lib/optimize.cjs +2 -2
  220. package/pan-wizard-core/bin/lib/phase.cjs +48 -4
  221. package/pan-wizard-core/bin/lib/plan-lint.cjs +150 -1
  222. package/pan-wizard-core/bin/lib/preview.cjs +23 -4
  223. package/pan-wizard-core/bin/lib/requirements-lint.cjs +130 -0
  224. package/pan-wizard-core/bin/lib/research-lint.cjs +150 -3
  225. package/pan-wizard-core/bin/lib/review-deep.cjs +14 -22
  226. package/pan-wizard-core/bin/lib/review-vote.cjs +105 -0
  227. package/pan-wizard-core/bin/lib/runner.cjs +2 -16
  228. package/pan-wizard-core/bin/lib/sizing.cjs +356 -0
  229. package/pan-wizard-core/bin/lib/squads.cjs +1 -1
  230. package/pan-wizard-core/bin/lib/state-write.cjs +247 -0
  231. package/pan-wizard-core/bin/lib/uat.cjs +149 -0
  232. package/pan-wizard-core/bin/lib/verdict.cjs +26 -3
  233. package/pan-wizard-core/bin/lib/verify-plan-set.cjs +30 -1
  234. package/pan-wizard-core/bin/lib/verify-preflight.cjs +2 -2
  235. package/pan-wizard-core/bin/lib/verify-red.cjs +37 -1
  236. package/pan-wizard-core/bin/lib/verify-retro.cjs +3 -2
  237. package/pan-wizard-core/bin/lib/verify.cjs +59 -4
  238. package/pan-wizard-core/bin/lib/worktree.cjs +70 -0
  239. package/pan-wizard-core/bin/pan-tools.cjs +168 -27
  240. package/pan-wizard-core/learnings/universal/autonomous-loop.md +2 -2
  241. package/pan-wizard-core/references/continuation-format.md +3 -3
  242. package/pan-wizard-core/references/guardrails.md +1 -1
  243. package/pan-wizard-core/references/model-profiles.md +2 -3
  244. package/pan-wizard-core/references/questioning.md +24 -0
  245. package/pan-wizard-core/references/ui-brand.md +4 -6
  246. package/pan-wizard-core/references/verdict-contract.md +2 -1
  247. package/pan-wizard-core/templates/config.json +5 -1
  248. package/pan-wizard-core/templates/debug.md +1 -0
  249. package/pan-wizard-core/templates/discovery.md +2 -2
  250. package/pan-wizard-core/templates/requirements.md +9 -0
  251. package/pan-wizard-core/workflows/add-phase.md +4 -6
  252. package/pan-wizard-core/workflows/assumptions.md +19 -1
  253. package/pan-wizard-core/workflows/diagnose-issues.md +2 -0
  254. package/pan-wizard-core/workflows/discuss-phase.md +4 -2
  255. package/pan-wizard-core/workflows/exec-lean.md +69 -0
  256. package/pan-wizard-core/workflows/exec-phase.md +36 -8
  257. package/{commands/pan → pan-wizard-core/workflows}/focus-doc-audit.md +13 -29
  258. package/{commands/pan → pan-wizard-core/workflows}/focus-drift-walking.md +3 -18
  259. package/{commands/pan → pan-wizard-core/workflows}/focus-exec.md +8 -23
  260. package/{commands/pan → pan-wizard-core/workflows}/focus-plan.md +6 -20
  261. package/{commands/pan → pan-wizard-core/workflows}/focus-scan.md +3 -16
  262. package/{commands/pan → pan-wizard-core/workflows}/focus-sync.md +7 -21
  263. package/pan-wizard-core/workflows/health.md +6 -0
  264. package/pan-wizard-core/workflows/help.md +31 -53
  265. package/pan-wizard-core/workflows/insert-phase.md +4 -6
  266. package/pan-wizard-core/workflows/learn.md +3 -3
  267. package/pan-wizard-core/workflows/milestone-audit.md +2 -2
  268. package/pan-wizard-core/workflows/milestone-new.md +38 -95
  269. package/pan-wizard-core/workflows/new-project.md +96 -258
  270. package/pan-wizard-core/workflows/optimize.md +107 -5
  271. package/pan-wizard-core/workflows/phase-tests.md +10 -0
  272. package/pan-wizard-core/workflows/plan-phase.md +86 -43
  273. package/pan-wizard-core/workflows/profile.md +50 -0
  274. package/pan-wizard-core/workflows/progress.md +10 -0
  275. package/pan-wizard-core/workflows/quick.md +34 -43
  276. package/pan-wizard-core/workflows/research-phase.md +118 -40
  277. package/pan-wizard-core/workflows/resume-project.md +18 -2
  278. package/pan-wizard-core/workflows/settings.md +21 -24
  279. package/pan-wizard-core/workflows/todo-check.md +6 -2
  280. package/pan-wizard-core/workflows/transition.md +22 -4
  281. package/pan-wizard-core/workflows/uat-walkthrough.md +90 -0
  282. package/pan-wizard-core/workflows/update.md +1 -1
  283. package/pan-wizard-core/workflows/verify-phase.md +2 -2
  284. package/scripts/build-agent-plugin.js +35 -15
  285. package/scripts/build-plugin.js +10 -1
  286. package/scripts/deprecate-old-versions.js +70 -3
  287. package/scripts/generate-skills-docs.py +1 -1
  288. package/scripts/git-hooks/pre-push +27 -0
  289. package/scripts/install-git-hooks.js +7 -5
  290. package/scripts/install-pre-push.cjs +38 -0
  291. package/scripts/land.cjs +151 -0
  292. package/scripts/local-ci.cjs +501 -0
  293. package/scripts/local-schedule.cjs +277 -0
  294. package/scripts/prompt-lint.cjs +32 -0
  295. package/scripts/prompt-rules.cjs +156 -0
  296. package/scripts/run-tests.cjs +7 -1
  297. package/scripts/test-quality-lint.cjs +3 -3
  298. package/scripts/test-surface.cjs +9 -2
  299. package/agents/pan-research-synthesizer.md +0 -246
  300. package/commands/pan/audit-deployment.md +0 -386
  301. package/commands/pan/dashboard.md +0 -22
  302. package/commands/pan/discord.md +0 -19
  303. package/commands/pan/mcp-bridge.md +0 -143
  304. package/commands/pan/milestone-cleanup.md +0 -19
  305. package/commands/pan/milestone-gaps.md +0 -35
  306. package/commands/pan/optimize.md +0 -115
  307. package/commands/pan/profile.md +0 -76
  308. package/commands/pan/research-phase.md +0 -189
  309. package/pan-wizard-core/bin/lib/bridge.cjs +0 -269
  310. package/pan-wizard-core/templates/research-project/architecture.md +0 -210
  311. package/pan-wizard-core/templates/research-project/features.md +0 -153
  312. package/pan-wizard-core/templates/research-project/pitfalls.md +0 -206
  313. package/pan-wizard-core/templates/research-project/stack.md +0 -126
  314. package/pan-wizard-core/templates/research-project/summary.md +0 -170
@@ -0,0 +1,155 @@
1
+ # Skill-Aligned Decomposition (SAD pass)
2
+
3
+ **Status:** Shipped (v3.13.0)
4
+ **Decision record:** ADR-0038 (builds on ADR-0036's distill-and-select principle)
5
+ **External trigger:** Alibaba **SkillWeaver** (arXiv 2606.18051) — "Compositional Skill Routing for LLM Agents: Decompose, Retrieve, and Compose"
6
+
7
+ ---
8
+
9
+ ## 1. Problem
10
+
11
+ PAN's planning workflow decomposes a phase in **one shot**: `pan-planner` reads context/research/requirements, drafts a task list, and immediately groups tasks into plans. Nothing checks that the decomposition's *vocabulary and granularity* line up with the machinery that actually exists in the install:
12
+
13
+ - **Learnings topics** (`pan-wizard-core/learnings/`) — distilled patterns executors should follow. A task worded "handle file writes robustly" never surfaces `universal/atomic-state.md`; a task worded "atomic state writes" does.
14
+ - **Templates** (`pan-wizard-core/templates/`) — scaffolding that already exists. Plans occasionally re-describe artifacts a template already defines.
15
+ - **References** (`pan-wizard-core/references/`) — conventions (tdd.md, checkpoints.md, guardrails.md) that specific task wordings would anchor to.
16
+ - **Commands** (`commands/pan/*.md`) — capabilities (e.g. `/pan:phase-tests`) plans can lean on instead of re-inventing.
17
+
18
+ SkillWeaver measured exactly this failure mode at scale: one-shot decomposition against a 2,209-tool MCP library hit **51%** decomposition accuracy; adding a *Skill-Aware Decomposition* feedback loop — draft → retrieve loosely-matching skills → feed matches back → rewrite the decomposition to match the granularity/vocabulary of skills that exist — reached **92%** (with a larger model). PAN's skill surface is ~140 files, not 2,209, so the *token* savings headline does not apply — but the *alignment accuracy* mechanism does.
19
+
20
+ ## 2. What we are building (and not building)
21
+
22
+ **Build:** a dependency-free, advisory alignment pass:
23
+
24
+ 1. Planner drafts its task list (existing `break_into_tasks` step — unchanged).
25
+ 2. Planner runs `pan-tools skills align --draft-file <draft>`; the tool scores each draft task against an on-the-fly index of commands, templates, references, and learnings topics using the shipped keyword scorer (`scoreRelevance` from `knowledge.cjs`).
26
+ 3. The tool returns per-task matches plus a deduplicated, **token-budgeted** vocabulary hint list.
27
+ 4. Planner realigns task wording/granularity to the matched skill names and cites matched learnings topics in task `<action>` blocks. Unmatched tasks are a signal to reconsider wording or splitting — **never** to add scope.
28
+
29
+ **Do not build** (ADR-0036 guardrails hold):
30
+
31
+ - No embeddings, no FAISS, no vector store — SkillWeaver's retrieval layer is the index-everything shape ADR-0036 forbids, and at ~140 skills a keyword scorer is sufficient.
32
+ - No persisted index file — the walk is ~140 small files (<50 ms); building on the fly avoids staleness, installer/manifest changes, and a rebuild step. (Deviation from both SkillWeaver's FAISS index and `learn-index.cjs`'s `index.json`, justified by scale.)
33
+ - No blocking gate — the pass is advisory and fail-open. If `skills align` errors (partial install, non-Claude runtime layout), the planner proceeds exactly as today.
34
+ - No LLM calls inside the tool — the "rewrite" half of the feedback loop stays where it belongs: in the planner agent, which is already an LLM.
35
+
36
+ ## 3. Architecture
37
+
38
+ ```text
39
+ pan-planner (LLM) pan-tools (deterministic)
40
+ ───────────────── ─────────────────────────
41
+ break_into_tasks skills align
42
+ │ draft task list (one per line) │
43
+ ├────────────── --draft-file ──────────────▶│ buildSkillIndex(root)
44
+ │ │ commands/pan/*.md → kind: command
45
+ │ │ pan-wizard-core/templates/** → kind: template
46
+ │ │ pan-wizard-core/references/* → kind: reference
47
+ │ │ learnings index topics → kind: learning
48
+ │ │ alignTasks(tasks, index)
49
+ │ │ scoreRelevance(task, skill head)
50
+ │ │ top-k per task, min-score filter
51
+ │ │ dedupe → budget-packed vocabulary
52
+ │◀───────────── JSON hints ─────────────────┘
53
+ skill_alignment (NEW step)
54
+ realign wording/granularity; cite matched
55
+ topics in <action>; unmatched → reconsider
56
+ │
57
+ build_dependency_graph … (unchanged)
58
+ ```
59
+
60
+ ### 3.1 Module: `pan-wizard-core/bin/lib/skill-align.cjs`
61
+
62
+ New core module (the learn-index analog for the whole skill surface). Exports:
63
+
64
+ | Export | Purpose |
65
+ |---|---|
66
+ | `resolveSkillRoot()` | Default root = `path.resolve(__dirname, '..', '..', '..')` — the install root (`~/.claude/`) or the source repo root; same relative layout in both (mirrors `experiment.cjs` `PAN_SOURCE_ROOT`). |
67
+ | `buildSkillIndex(root)` | Walk the four skill roots; return `{entries, stats}`. Missing roots are skipped and reported in `stats.skipped_roots`, never thrown. |
68
+ | `parseDraftTasks(text)` | Split a draft blob into task strings: strips bullets (`-`, `*`, `+`), numbering (`1.`/`1)`), checkboxes (`[ ]`/`[x]`), drops headings/blank/short lines. |
69
+ | `alignTasks(root, tasks, opts)` | The SAD pass. Returns the result object in §3.3. |
70
+ | `cmdSkillsIndex(root, raw)` / `cmdSkillsAlign(root, opts, raw)` | CLI wrappers. |
71
+
72
+ **Index entry shape:** `{kind, name, description, file, tokens_est}` plus an internal scoring head (not serialized): frontmatter `name` + `description` + the first `SKILL_ALIGN_CONTENT_CAP` (700) chars of body. Scoring against a capped head instead of full bodies keeps precision up — every command body mentions "plan"/"phase"/"file", and full-body scoring would match everything.
73
+
74
+ **Learnings integration:** topics come from `learn-index.cjs` `readIndex(root)` (name = `scope/topic`); content for scoring is the topic file body (same cap). No duplication of the relevance table — SAD is cue-based, not role-based, and complements `learn topics-for`.
75
+
76
+ **Cue hygiene:** before scoring, the task cue drops a small curated stop-list of planning glue words (`create`, `add`, `implement`, `update`, `write`, `make`, `setup`, `ensure`, …) so "Create the API" doesn't match everything containing "create". `scoreRelevance` already drops words < 3 chars.
77
+
78
+ ### 3.2 CLI
79
+
80
+ ```text
81
+ pan-tools skills index [--source-root <path>] [--raw]
82
+ pan-tools skills align (--draft "<text>" | --draft-file <path>)
83
+ [--top <k=3>] [--min-score <n=1>]
84
+ [--token-budget <n=1500>] [--source-root <path>] [--raw]
85
+ ```
86
+
87
+ `--source-root` exists for tests and unusual layouts; the default resolution needs no flag in any shipped runtime. On runtimes whose command files are converted formats (Codex/Gemini TOML etc.), the `command` kind simply indexes zero entries and the other three kinds still work — `pan-wizard-core/` ships to every runtime.
88
+
89
+ ### 3.3 Output contract (`skills align`)
90
+
91
+ ```json
92
+ {
93
+ "tasks": [
94
+ { "task": "Add atomic write for state.md",
95
+ "matches": [ {"kind": "learning", "name": "universal/atomic-state", "file": "pan-wizard-core/learnings/universal/atomic-state.md", "score": 9} ],
96
+ "matched": true }
97
+ ],
98
+ "coverage": { "matched": 4, "total": 5, "ratio": 0.8 },
99
+ "vocabulary": [ {"kind": "learning", "name": "universal/atomic-state", "description": "…one line…", "file": "…", "tokens": 14} ],
100
+ "vocabulary_tokens": 220,
101
+ "dropped": [ {"kind": "reference", "name": "checkpoints", "tokens": 30} ],
102
+ "index_stats": { "entries": 137, "by_kind": {"command": 56, "template": 41, "reference": 15, "learning": 25}, "skipped_roots": [] },
103
+ "top_k": 3, "min_score": 1, "token_budget": 1500
104
+ }
105
+ ```
106
+
107
+ - Per-task `matches` carry **no descriptions** (names only) — they stay tiny regardless of task count.
108
+ - `vocabulary` is the payload the planner actually re-reads: matches deduped across tasks (by kind+name), ranked by aggregate score, greedy-packed into `--token-budget` (name + description at `CHARS_PER_TOKEN`); overflow goes to `dropped` so truncation is never silent (ADR-0036 "no silent caps").
109
+ - Errors return `{error}` JSON: empty/blank draft, no parseable tasks, more than `SKILL_ALIGN_MAX_TASKS` (50) tasks, unreadable `--draft-file`.
110
+
111
+ ### 3.4 Constants (`constants.cjs`)
112
+
113
+ | Constant | Value | Why |
114
+ |---|---|---|
115
+ | `SKILL_ALIGN_TOP_K` | 3 | SkillWeaver retrieves small top-k candidate sets per sub-task; 3 keeps per-task hints readable. |
116
+ | `SKILL_ALIGN_MIN_SCORE` | 1 | Any real keyword overlap qualifies; the stop-list handles glue-word noise. |
117
+ | `SKILL_ALIGN_VOCAB_BUDGET_TOKENS` | 1500 | Same order as `MEMORY_SELECT_BUDGET_TOKENS` (2000); hints must stay a fraction of the planner's learnings budget (5000). |
118
+ | `SKILL_ALIGN_MAX_TASKS` | 50 | A phase draft beyond 50 tasks is itself a planning smell; also bounds worst-case scoring work. |
119
+ | `SKILL_ALIGN_CONTENT_CAP` | 700 chars | ≈ first paragraph/objective — the high-signal head of every skill file. |
120
+
121
+ ### 3.5 Workflow wiring
122
+
123
+ **`agents/pan-planner.md`** — new `<step name="skill_alignment">` between `break_into_tasks` and `build_dependency_graph`:
124
+
125
+ - Write draft task names (one per line) to a temp file, run `skills align --draft-file … --raw`, read hints.
126
+ - Realign: rename/re-split tasks so `<action>` blocks reference real template/command/pattern names; cite matched learnings topics where they apply.
127
+ - Unmatched task ⇒ reconsider wording or granularity — explicitly **not** a license to add tasks/scope.
128
+ - Fail-open: on any error, skip the step and continue (`2>/dev/null || true` semantics).
129
+
130
+ **`pan-wizard-core/workflows/plan-phase.md`** — one added planner-prompt quality-gate line: task vocabulary aligned via `skills align` (or the pass consciously skipped). The orchestrator flow is otherwise untouched.
131
+
132
+ ## 4. Why this fits ADR-0036's yardstick
133
+
134
+ | Yardstick | SAD pass |
135
+ |---|---|
136
+ | Distilled, not raw | Hints are names + one-line descriptions, never file bodies. |
137
+ | Cue-selected, not top-k-over-everything | Cue = the draft task text; selection is per-task top-k over a ~140-entry surface, then deduped. |
138
+ | Budget-bounded at load time | `SKILL_ALIGN_VOCAB_BUDGET_TOKENS` with explicit `dropped` reporting. |
139
+ | No index-everything store | No persisted index at all; rebuilt per call from the filesystem. |
140
+ | Zero runtime dependencies | Reuses `scoreRelevance`, `fs`, `path`. |
141
+
142
+ ## 5. Acceptance & rollback
143
+
144
+ - **Advisory-only invariant:** no orchestrator step, checker dimension, or exit code depends on the pass having run. Removing the planner step reverts behavior fully; the CLI command remains harmless.
145
+ - **Field signal to watch** (same telemetry channel as ADR-0036's acceptance signal): plan-checker `requirement_coverage` / `task_completeness` iteration counts and `optimize trace` `plan_checker_issues` events. If revision-loop iterations drop on projects with learnings installed, the pass is earning its keep; if hints are consistently empty/ignored, delete the planner step (one-line revert).
146
+ - **Non-goals stay non-goals:** no auto-rewriting of tasks by the tool, no execution-graph (DAG) composition — PAN's wave assignment already does that downstream.
147
+
148
+ ## 6. Test plan
149
+
150
+ Unit (`tests/skill-align.test.cjs`):
151
+ - `parseDraftTasks` — bullets, numbering, checkboxes, headings dropped, blank/short lines dropped.
152
+ - `buildSkillIndex` — counts per kind on a temp fixture root; missing roots → `skipped_roots`, no throw; frontmatter name/description extraction.
153
+ - `alignTasks` — match ranking, top-k cap, min-score filter, unmatched task shape, coverage math, vocabulary dedupe + budget packing + `dropped`, stop-list (glue-word-only task matches nothing), error cases (empty, >50 tasks).
154
+ - CLI dispatch via `runPanTools('skills align --draft … --source-root <tmp>')` — JSON shape, `--raw` human output, unknown-subcommand error, `--draft-file` missing file error.
155
+ - Module surface pinned in `tests/fixtures/module-surface.json` (regenerated).