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.
- package/CHANGELOG.md +3645 -0
- package/README.md +36 -48
- package/agents/pan-conductor.md +2 -3
- package/agents/pan-counterfactual.md +1 -2
- package/agents/pan-debugger.md +14 -3
- package/agents/pan-design-checker.md +1 -2
- package/agents/pan-designer.md +1 -2
- package/agents/pan-document_code.md +1 -2
- package/agents/pan-hardener.md +2 -3
- package/agents/pan-integration-checker.md +1 -2
- package/agents/pan-knowledge.md +1 -2
- package/agents/pan-meta-reviewer.md +3 -3
- package/agents/pan-optimizer.md +4 -4
- package/agents/pan-phase-researcher.md +79 -488
- package/agents/pan-plan-checker.md +12 -2
- package/agents/pan-planner.md +10 -6
- package/agents/pan-previewer.md +1 -2
- package/agents/pan-project-researcher.md +70 -499
- package/agents/pan-release.md +1 -1
- package/agents/pan-reviewer.md +9 -3
- package/agents/pan-roadmapper.md +12 -7
- package/agents/pan-verifier.md +7 -2
- package/bin/install-lib.cjs +134 -14
- package/bin/install.js +59 -12
- package/commands/pan/army.md +1 -1
- package/commands/pan/autodev.md +76 -0
- package/commands/pan/exec-phase.md +3 -4
- package/commands/pan/focus-auto.md +14 -7
- package/commands/pan/focus-design.md +4 -5
- package/commands/pan/focus-docs.md +24 -0
- package/commands/pan/learn.md +13 -6
- package/commands/pan/milestone-audit.md +8 -1
- package/commands/pan/milestone-done.md +10 -5
- package/commands/pan/milestone-new.md +2 -2
- package/commands/pan/new-project.md +15 -12
- package/commands/pan/plan-phase.md +15 -9
- package/commands/pan/quick.md +1 -1
- package/commands/pan/review-deep.md +11 -5
- package/commands/pan/settings.md +6 -0
- package/commands/pan/verify-phase.md +6 -2
- package/docs/AGENTS.md +917 -0
- package/docs/ARCHITECTURE.md +1054 -0
- package/docs/CLI-REFERENCE.md +4582 -0
- package/docs/COMPARISON.md +116 -0
- package/docs/DEVELOPMENT.md +490 -0
- package/docs/ECOSYSTEM-REVIEW-2026-06.md +107 -0
- package/docs/ECOSYSTEM-REVIEW-2026-08.md +349 -0
- package/docs/EXAMPLES.md +584 -0
- package/docs/FAQ.md +254 -0
- package/docs/FIELD-HARVEST-2026-07.md +88 -0
- package/docs/FIELD-REPORT-army-2026-06.md +121 -0
- package/docs/HOOKS.md +638 -0
- package/docs/IMPROVEMENT-TODO.md +246 -0
- package/docs/INTERNALS.md +485 -0
- package/docs/MIGRATION-v2-to-v3.md +258 -0
- package/docs/SECURITY-HARDENING.md +230 -0
- package/docs/SKILLS-ENHANCEMENT-PLAN-V2.md +122 -0
- package/docs/SKILLS-FULL-TEXT.md +9685 -0
- package/docs/SKILLS-REFERENCE.md +1037 -0
- package/docs/TROUBLESHOOTING.md +1084 -0
- package/docs/USER-GUIDE.md +1437 -0
- package/docs/archive/SKILLS-ENHANCEMENT-PLAN.md +230 -0
- package/docs/audits/AUDIT-2026-08-e2e-ROADMAP.md +117 -0
- package/docs/audits/AUDIT-2026-08-e2e-VERIFICATION.md +693 -0
- package/docs/audits/AUDIT-2026-08-e2e.md +1546 -0
- package/docs/audits/OUTSTANDING-2026-08.md +275 -0
- package/docs/audits/STABILITY-TEST-2026-08.md +640 -0
- package/docs/branding/README-brand-draft.md +119 -0
- package/docs/branding/handoff/IMPLEMENTATION.md +205 -0
- package/docs/branding/handoff/README-brand-draft.md +119 -0
- package/docs/branding/handoff/image-prompts.md +46 -0
- package/docs/branding/image-prompts.md +46 -0
- package/docs/branding/nano-banana-prompts.txt +60 -0
- package/docs/context-monitor.md +13 -0
- package/docs/decisions/ADR-0001-strategic-feature-prioritization.md +83 -0
- package/docs/decisions/ADR-0002-copilot-cli-runtime.md +71 -0
- package/docs/decisions/ADR-0003-smart-execution.md +84 -0
- package/docs/decisions/ADR-0004-copilot-cli-interaction.md +89 -0
- package/docs/decisions/ADR-0005-command-naming.md +80 -0
- package/docs/decisions/ADR-0006-focus-commands.md +101 -0
- package/docs/decisions/ADR-0007-ship-v1.md +73 -0
- package/docs/decisions/ADR-0008-map-codebase-mermaid-togaf.md +80 -0
- package/docs/decisions/ADR-0009-production-deployment-checklist.md +68 -0
- package/docs/decisions/ADR-0010-standards-integration.md +79 -0
- package/docs/decisions/ADR-0011-help-commands-rewrite.md +64 -0
- package/docs/decisions/ADR-0012-contributors-attribution-index.md +42 -0
- package/docs/decisions/ADR-0013-strategic-feature-additions.md +53 -0
- package/docs/decisions/ADR-0014-internal-cleanup-code-quality.md +53 -0
- package/docs/decisions/ADR-0015-focus-auto-runner.md +296 -0
- package/docs/decisions/ADR-0016-enhanced-doc-sync.md +54 -0
- package/docs/decisions/ADR-0017-enhanced-focus-design.md +69 -0
- package/docs/decisions/ADR-0018-user-reality-testing.md +84 -0
- package/docs/decisions/ADR-0019-end-to-end-user-acceptance-testing.md +113 -0
- package/docs/decisions/ADR-0020-ai-drift-prevention.md +55 -0
- package/docs/decisions/ADR-0021-codebase-mapper-v2.md +76 -0
- package/docs/decisions/ADR-0022-lifecycle-completeness.md +63 -0
- package/docs/decisions/ADR-0023-opus-4-7-adoption.md +89 -0
- package/docs/decisions/ADR-0024-spec-b-v2-completion.md +137 -0
- package/docs/decisions/ADR-0025-behavioral-guardrails-layer.md +129 -0
- package/docs/decisions/ADR-0026-self-improvement-loop.md +171 -0
- package/docs/decisions/ADR-0027-doc-code-link-graph.md +164 -0
- package/docs/decisions/ADR-0028-unified-agents-skills-target.md +46 -0
- package/docs/decisions/ADR-0029-experiment-evaluator.md +76 -0
- package/docs/decisions/ADR-0030-planning-concurrency.md +37 -0
- package/docs/decisions/ADR-0031-focus-auto-backlog-source.md +47 -0
- package/docs/decisions/ADR-0032-squad-model.md +64 -0
- package/docs/decisions/ADR-0033-army-campaign.md +40 -0
- package/docs/decisions/ADR-0034-scheduled-campaigns.md +57 -0
- package/docs/decisions/ADR-0035-army-hud-dashboard.md +40 -0
- package/docs/decisions/ADR-0036-agentic-memory-architecture.md +106 -0
- package/docs/decisions/ADR-0037-pin-security-agents-to-opus.md +51 -0
- package/docs/decisions/ADR-0038-skill-aligned-decomposition.md +41 -0
- package/docs/decisions/ADR-0039-worktree-as-project-variant.md +37 -0
- package/docs/decisions/ADR-0040-memory-injection-defense.md +55 -0
- package/docs/decisions/ADR-0041-mcp-dual-era-bridge.md +47 -0
- package/docs/decisions/ADR-0042-design-parity-both-flows.md +45 -0
- package/docs/decisions/ADR-0043-addressable-planning-roots.md +56 -0
- package/docs/decisions/ADR-0044-bound-the-cached-context.md +104 -0
- package/docs/decisions/ADR-0045-agent-plugins-bundle.md +76 -0
- package/docs/decisions/ADR-0046-subagent-frontmatter-decisions.md +39 -0
- package/docs/decisions/ADR-0047-pan-harness.md +76 -0
- package/docs/decisions/ADR-0048-one-core-per-project.md +43 -0
- package/docs/decisions/ADR-0049-machine-verdicts-and-findings-ledger.md +116 -0
- package/docs/specs/ai_drift_prevention_featureai.md +286 -0
- package/docs/specs/codebase_mapper_v2_featureai.md +930 -0
- package/docs/specs/command_naming_optimization_featureai.md +930 -0
- package/docs/specs/comp_analysis_markdown_v1.md +149 -0
- package/docs/specs/continuous_autonomous_execution_featureai.md +304 -0
- package/docs/specs/contributors_attribution_index_featureai.md +476 -0
- package/docs/specs/copilot_cli_interaction_featureai.md +868 -0
- package/docs/specs/copilot_cli_runtime_featureai.md +647 -0
- package/docs/specs/custom-skills-assessment.md +461 -0
- package/docs/specs/deployment_audit_findings_featureai.md +243 -0
- package/docs/specs/doc_code_link_graph_featureai.md +253 -0
- package/docs/specs/documentation_alignment_cleanup_featureai.md +69 -0
- package/docs/specs/e2e_visual_testing_featureai.md +615 -0
- package/docs/specs/end_to_end_user_acceptance_testing_featureai.md +810 -0
- package/docs/specs/evidence-loop-plan.md +76 -0
- package/docs/specs/evidence_loop_featureai.md +497 -0
- package/docs/specs/focus-auto-optimize-category.md +449 -0
- package/docs/specs/focus-auto-optimize-superplan.md +188 -0
- package/docs/specs/focus_auto_runner_featureai.md +1102 -0
- package/docs/specs/focus_design_v2_featureai.md +197 -0
- package/docs/specs/focus_sync_v2_featureai.md +202 -0
- package/docs/specs/git_integration_overhaul_featureai.md +326 -0
- package/docs/specs/glm_zai_provider_featureai.md +200 -0
- package/docs/specs/googlecli_adoption_featureai.md +661 -0
- package/docs/specs/help_commands_rewrite_featureai.md +860 -0
- package/docs/specs/industry_analysis_strategic_additions_featureai.md +231 -0
- package/docs/specs/industry_comparison_and_feature_gaps_featureai.md +674 -0
- package/docs/specs/internal_cleanup_code_quality_featureai.md +486 -0
- package/docs/specs/investigations/README.md +31 -0
- package/docs/specs/investigations/digests/2026-09-28.md +47 -0
- package/docs/specs/investigations/digests/2026-10-08.md +62 -0
- package/docs/specs/investigations/digests/2026-10-10.md +61 -0
- package/docs/specs/investigations/features/debugger-red-loop-first.md +55 -0
- package/docs/specs/investigations/features/harness-cross-host-behaviour.md +93 -0
- package/docs/specs/investigations/features/optimize-apply-regression-gate.md +66 -0
- package/docs/specs/investigations/features/reviewer-smell-baseline.md +57 -0
- package/docs/specs/investigations/features/trace-failure-capture.md +69 -0
- package/docs/specs/lifecycle_completeness_featureai.md +754 -0
- package/docs/specs/local-first-ci.md +42 -0
- package/docs/specs/map_codebase_mermaid_togaf_featureai.md +805 -0
- package/docs/specs/market-delta-2026-09-superplan.md +310 -0
- package/docs/specs/market-ideas-2026-09.md +131 -0
- package/docs/specs/market-ideas-2026-10.md +428 -0
- package/docs/specs/market-ideas-ledger.md +177 -0
- package/docs/specs/memory-optimization-2026-10.md +285 -0
- package/docs/specs/multi-track-planning-roots.md +143 -0
- package/docs/specs/multi_model_routing_featureai.md +687 -0
- package/docs/specs/multi_model_routing_superplan.md +197 -0
- package/docs/specs/opus_47_existing_enhancements_featureai.md +247 -0
- package/docs/specs/opus_47_extended_features_featureai.md +363 -0
- package/docs/specs/opus_47_extended_features_v2_featureai.md +397 -0
- package/docs/specs/pan_focus_commands_featureai.md +2336 -0
- package/docs/specs/pan_zcode_mcp_bridge_featureai.md +120 -0
- package/docs/specs/product-excellence-superplan.md +315 -0
- package/docs/specs/product_excellence_program_2026_q4_featureai.md +365 -0
- package/docs/specs/production_deployment_readiness_featureai.md +433 -0
- package/docs/specs/production_readiness_ship_v1_featureai.md +698 -0
- package/docs/specs/real_test_enforcement_featureai.md +213 -0
- package/docs/specs/reality-check-2026-09-superplan.md +362 -0
- package/docs/specs/right-sized-ceremony.md +74 -0
- package/docs/specs/roadmap_and_competition_2026_q4_featureai.md +390 -0
- package/docs/specs/self_improvement_loop_featureai.md +875 -0
- package/docs/specs/skill-aligned-decomposition.md +155 -0
- package/docs/specs/standards_integration_featureai.md +833 -0
- package/docs/specs/testing-system-redesign-2026-09.md +267 -0
- package/docs/specs/user_reality_testing_system_featureai.md +788 -0
- package/docs/specs/watch-triggers.json +22 -0
- package/docs/specs/workflow-integration-redesign.md +742 -0
- package/docs/specs/workflow_state_consistency_featureai.md +183 -0
- package/hooks/dist/pan-context-monitor.js +9 -2
- package/hooks/dist/pan-cost-logger.js +5 -0
- package/hooks/dist/pan-guard.js +28 -5
- package/hooks/dist/pan-stop-guard.js +9 -9
- package/hooks/dist/pan-trace-logger.js +5 -0
- package/package.json +10 -2
- package/pan-wizard-core/bin/lib/agents-md.cjs +57 -8
- package/pan-wizard-core/bin/lib/autodev-report.cjs +180 -0
- package/pan-wizard-core/bin/lib/autodev.cjs +642 -0
- package/pan-wizard-core/bin/lib/ci.cjs +143 -0
- package/pan-wizard-core/bin/lib/commands.cjs +1 -1
- package/pan-wizard-core/bin/lib/config.cjs +31 -2
- package/pan-wizard-core/bin/lib/constants.cjs +27 -1
- package/pan-wizard-core/bin/lib/core.cjs +22 -10
- package/pan-wizard-core/bin/lib/cost.cjs +14 -4
- package/pan-wizard-core/bin/lib/cross-family.cjs +164 -0
- package/pan-wizard-core/bin/lib/debug-cases.cjs +104 -0
- package/pan-wizard-core/bin/lib/failure-class.cjs +81 -0
- package/pan-wizard-core/bin/lib/findings.cjs +34 -4
- package/pan-wizard-core/bin/lib/focus.cjs +1 -1
- package/pan-wizard-core/bin/lib/hosts.cjs +88 -0
- package/pan-wizard-core/bin/lib/init.cjs +7 -2
- package/pan-wizard-core/bin/lib/knowledge.cjs +2 -0
- package/pan-wizard-core/bin/lib/merge.cjs +50 -0
- package/pan-wizard-core/bin/lib/mutate.cjs +16 -5
- package/pan-wizard-core/bin/lib/next-action.cjs +112 -0
- package/pan-wizard-core/bin/lib/optimize.cjs +2 -2
- package/pan-wizard-core/bin/lib/phase.cjs +48 -4
- package/pan-wizard-core/bin/lib/plan-lint.cjs +150 -1
- package/pan-wizard-core/bin/lib/preview.cjs +23 -4
- package/pan-wizard-core/bin/lib/requirements-lint.cjs +130 -0
- package/pan-wizard-core/bin/lib/research-lint.cjs +150 -3
- package/pan-wizard-core/bin/lib/review-deep.cjs +14 -22
- package/pan-wizard-core/bin/lib/review-vote.cjs +105 -0
- package/pan-wizard-core/bin/lib/runner.cjs +2 -16
- package/pan-wizard-core/bin/lib/sizing.cjs +356 -0
- package/pan-wizard-core/bin/lib/squads.cjs +1 -1
- package/pan-wizard-core/bin/lib/state-write.cjs +247 -0
- package/pan-wizard-core/bin/lib/uat.cjs +149 -0
- package/pan-wizard-core/bin/lib/verdict.cjs +26 -3
- package/pan-wizard-core/bin/lib/verify-plan-set.cjs +30 -1
- package/pan-wizard-core/bin/lib/verify-preflight.cjs +2 -2
- package/pan-wizard-core/bin/lib/verify-red.cjs +37 -1
- package/pan-wizard-core/bin/lib/verify-retro.cjs +3 -2
- package/pan-wizard-core/bin/lib/verify.cjs +59 -4
- package/pan-wizard-core/bin/lib/worktree.cjs +70 -0
- package/pan-wizard-core/bin/pan-tools.cjs +168 -27
- package/pan-wizard-core/learnings/universal/autonomous-loop.md +2 -2
- package/pan-wizard-core/references/continuation-format.md +3 -3
- package/pan-wizard-core/references/guardrails.md +1 -1
- package/pan-wizard-core/references/model-profiles.md +2 -3
- package/pan-wizard-core/references/questioning.md +24 -0
- package/pan-wizard-core/references/ui-brand.md +4 -6
- package/pan-wizard-core/references/verdict-contract.md +2 -1
- package/pan-wizard-core/templates/config.json +5 -1
- package/pan-wizard-core/templates/debug.md +1 -0
- package/pan-wizard-core/templates/discovery.md +2 -2
- package/pan-wizard-core/templates/requirements.md +9 -0
- package/pan-wizard-core/workflows/add-phase.md +4 -6
- package/pan-wizard-core/workflows/assumptions.md +19 -1
- package/pan-wizard-core/workflows/diagnose-issues.md +2 -0
- package/pan-wizard-core/workflows/discuss-phase.md +4 -2
- package/pan-wizard-core/workflows/exec-lean.md +69 -0
- package/pan-wizard-core/workflows/exec-phase.md +36 -8
- package/{commands/pan → pan-wizard-core/workflows}/focus-doc-audit.md +13 -29
- package/{commands/pan → pan-wizard-core/workflows}/focus-drift-walking.md +3 -18
- package/{commands/pan → pan-wizard-core/workflows}/focus-exec.md +8 -23
- package/{commands/pan → pan-wizard-core/workflows}/focus-plan.md +6 -20
- package/{commands/pan → pan-wizard-core/workflows}/focus-scan.md +3 -16
- package/{commands/pan → pan-wizard-core/workflows}/focus-sync.md +7 -21
- package/pan-wizard-core/workflows/health.md +6 -0
- package/pan-wizard-core/workflows/help.md +31 -53
- package/pan-wizard-core/workflows/insert-phase.md +4 -6
- package/pan-wizard-core/workflows/learn.md +3 -3
- package/pan-wizard-core/workflows/milestone-audit.md +2 -2
- package/pan-wizard-core/workflows/milestone-new.md +38 -95
- package/pan-wizard-core/workflows/new-project.md +96 -258
- package/pan-wizard-core/workflows/optimize.md +107 -5
- package/pan-wizard-core/workflows/phase-tests.md +10 -0
- package/pan-wizard-core/workflows/plan-phase.md +86 -43
- package/pan-wizard-core/workflows/profile.md +50 -0
- package/pan-wizard-core/workflows/progress.md +10 -0
- package/pan-wizard-core/workflows/quick.md +34 -43
- package/pan-wizard-core/workflows/research-phase.md +118 -40
- package/pan-wizard-core/workflows/resume-project.md +18 -2
- package/pan-wizard-core/workflows/settings.md +21 -24
- package/pan-wizard-core/workflows/todo-check.md +6 -2
- package/pan-wizard-core/workflows/transition.md +22 -4
- package/pan-wizard-core/workflows/uat-walkthrough.md +90 -0
- package/pan-wizard-core/workflows/update.md +1 -1
- package/pan-wizard-core/workflows/verify-phase.md +2 -2
- package/scripts/build-agent-plugin.js +35 -15
- package/scripts/build-plugin.js +10 -1
- package/scripts/deprecate-old-versions.js +70 -3
- package/scripts/generate-skills-docs.py +1 -1
- package/scripts/git-hooks/pre-push +27 -0
- package/scripts/install-git-hooks.js +7 -5
- package/scripts/install-pre-push.cjs +38 -0
- package/scripts/land.cjs +151 -0
- package/scripts/local-ci.cjs +501 -0
- package/scripts/local-schedule.cjs +277 -0
- package/scripts/prompt-lint.cjs +32 -0
- package/scripts/prompt-rules.cjs +156 -0
- package/scripts/run-tests.cjs +7 -1
- package/scripts/test-quality-lint.cjs +3 -3
- package/scripts/test-surface.cjs +9 -2
- package/agents/pan-research-synthesizer.md +0 -246
- package/commands/pan/audit-deployment.md +0 -386
- package/commands/pan/dashboard.md +0 -22
- package/commands/pan/discord.md +0 -19
- package/commands/pan/mcp-bridge.md +0 -143
- package/commands/pan/milestone-cleanup.md +0 -19
- package/commands/pan/milestone-gaps.md +0 -35
- package/commands/pan/optimize.md +0 -115
- package/commands/pan/profile.md +0 -76
- package/commands/pan/research-phase.md +0 -189
- package/pan-wizard-core/bin/lib/bridge.cjs +0 -269
- package/pan-wizard-core/templates/research-project/architecture.md +0 -210
- package/pan-wizard-core/templates/research-project/features.md +0 -153
- package/pan-wizard-core/templates/research-project/pitfalls.md +0 -206
- package/pan-wizard-core/templates/research-project/stack.md +0 -126
- 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).
|