session-orchestrator 3.16.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 +29 -0
- package/.claude-plugin/plugin.json +18 -0
- package/.codex-plugin/agents/explorer.toml +14 -0
- package/.codex-plugin/agents/session-reviewer.toml +23 -0
- package/.codex-plugin/agents/wave-worker.toml +15 -0
- package/.codex-plugin/config.toml +20 -0
- package/.codex-plugin/plugin.json +37 -0
- package/.cursor/rules/000-session-orchestrator.mdc +73 -0
- package/.cursor/rules/010-session-workflow.mdc +170 -0
- package/.cursor/rules/020-quality-gates.mdc +128 -0
- package/.cursor/rules/030-wave-execution.mdc +216 -0
- package/.cursor/rules/040-discovery.mdc +242 -0
- package/.cursor/rules/050-plan.mdc +235 -0
- package/.cursor/rules/060-evolve.mdc +232 -0
- package/.cursor/rules/070-gitlab-ops.mdc +246 -0
- package/.cursor/rules/080-ecosystem-health.mdc +145 -0
- package/.mcp.json +8 -0
- package/CHANGELOG.md +1544 -0
- package/LICENSE +21 -0
- package/NOTICE +64 -0
- package/README.md +242 -0
- package/SECURITY.md +90 -0
- package/agents/AGENTS.md +136 -0
- package/agents/analyst.md +99 -0
- package/agents/architect-reviewer.md +93 -0
- package/agents/code-implementer.md +106 -0
- package/agents/db-specialist.md +104 -0
- package/agents/dialectic-deriver.md +139 -0
- package/agents/docs-writer.md +113 -0
- package/agents/eval-judge.md +146 -0
- package/agents/memory-proposal-collector.md +297 -0
- package/agents/qa-strategist.md +102 -0
- package/agents/schemas/analyst.schema.json +46 -0
- package/agents/schemas/architect-reviewer.schema.json +50 -0
- package/agents/schemas/code-implementer.schema.json +61 -0
- package/agents/schemas/db-specialist.schema.json +80 -0
- package/agents/schemas/docs-writer.schema.json +56 -0
- package/agents/schemas/persona-panel-sidecar.schema.json +245 -0
- package/agents/schemas/qa-strategist.schema.json +46 -0
- package/agents/schemas/security-reviewer.schema.json +86 -0
- package/agents/schemas/session-reviewer.schema.json +69 -0
- package/agents/schemas/test-writer.schema.json +69 -0
- package/agents/schemas/ui-developer.schema.json +90 -0
- package/agents/schemas/ux-evaluator.schema.json +51 -0
- package/agents/security-reviewer.md +236 -0
- package/agents/session-reviewer.md +201 -0
- package/agents/skill-applied-judge.md +122 -0
- package/agents/test-writer.md +123 -0
- package/agents/ui-developer.md +109 -0
- package/agents/ux-evaluator.md +161 -0
- package/assets/icon.svg +11 -0
- package/assets/og-card.png +0 -0
- package/assets/og-card.svg +47 -0
- package/commands/autopilot-multi.md +74 -0
- package/commands/autopilot.md +80 -0
- package/commands/bootstrap.md +56 -0
- package/commands/brainstorm.md +48 -0
- package/commands/close.md +24 -0
- package/commands/debug.md +36 -0
- package/commands/discovery.md +32 -0
- package/commands/dispatcher.md +59 -0
- package/commands/eval.md +28 -0
- package/commands/evolve.md +10 -0
- package/commands/go.md +41 -0
- package/commands/grill.md +45 -0
- package/commands/harness-audit.md +26 -0
- package/commands/memory-cleanup.md +25 -0
- package/commands/persona-panel.md +121 -0
- package/commands/plan.md +15 -0
- package/commands/portfolio.md +97 -0
- package/commands/reconcile.md +23 -0
- package/commands/repo-audit.md +24 -0
- package/commands/session.md +30 -0
- package/commands/spinout.md +15 -0
- package/commands/sunset-review.md +27 -0
- package/commands/templates-ack.md +96 -0
- package/commands/test.md +97 -0
- package/docs/README.md +105 -0
- package/docs/USER-GUIDE.md +1403 -0
- package/docs/ci-setup.md +81 -0
- package/docs/codex-setup.md +142 -0
- package/docs/components.md +74 -0
- package/docs/cursor-setup.md +104 -0
- package/docs/events-schema.md +81 -0
- package/docs/migration-v3.md +148 -0
- package/docs/owner-config-schema.md +154 -0
- package/docs/persona-panel.md +433 -0
- package/docs/pi-setup.md +115 -0
- package/docs/plugin-architecture-v3.md +296 -0
- package/docs/pm-skills-marketplace.md +114 -0
- package/docs/policy-cache-validation-2026-04-28.md +118 -0
- package/docs/rule-authoring.md +316 -0
- package/docs/session-config-reference.md +1439 -0
- package/docs/session-config-template.md +961 -0
- package/docs/vault-docs-architecture.md +297 -0
- package/hooks/_lib/lock-bootstrap.mjs +272 -0
- package/hooks/_lib/lock-reconcile.mjs +93 -0
- package/hooks/_lib/profile-gate.mjs +95 -0
- package/hooks/_lib/transcript-history.mjs +211 -0
- package/hooks/agent-teams-h3-test.sh +362 -0
- package/hooks/config-protection.mjs +0 -0
- package/hooks/cwd-change-restore.mjs +131 -0
- package/hooks/enforce-commands.mjs +179 -0
- package/hooks/enforce-scope.mjs +273 -0
- package/hooks/hooks-codex.json +60 -0
- package/hooks/hooks-cursor.json +15 -0
- package/hooks/hooks-pi.json +115 -0
- package/hooks/hooks.json +215 -0
- package/hooks/loop-guard.mjs +260 -0
- package/hooks/on-session-end.mjs +217 -0
- package/hooks/on-session-start.mjs +660 -0
- package/hooks/on-stop.mjs +294 -0
- package/hooks/operator-steer.mjs +64 -0
- package/hooks/post-edit-validate.mjs +225 -0
- package/hooks/post-subagent-discovery-validator.mjs +398 -0
- package/hooks/post-tool-batch-wave-signal.mjs +328 -0
- package/hooks/post-tool-failure-corrective-context.mjs +248 -0
- package/hooks/post-tooluse-frontend-slop.mjs +184 -0
- package/hooks/pre-bash-destructive-guard.mjs +515 -0
- package/hooks/pre-bash-memory-propose-audit.mjs +206 -0
- package/hooks/pre-bash-staging-fence.mjs +223 -0
- package/hooks/pre-bash-templates-first.mjs +404 -0
- package/hooks/run-node.sh +72 -0
- package/hooks/skill-invocation-telemetry.mjs +99 -0
- package/hooks/subagent-telemetry.mjs +249 -0
- package/hooks/wave-scope-commit-guard.mjs +191 -0
- package/monitors/monitors.json +14 -0
- package/output-styles/finding-report.md +48 -0
- package/output-styles/session-report.md +53 -0
- package/output-styles/wave-summary.md +38 -0
- package/package.json +94 -0
- package/pi/extensions/session-orchestrator.ts +25 -0
- package/pi/prompts/autopilot-multi.md +12 -0
- package/pi/prompts/autopilot.md +12 -0
- package/pi/prompts/bootstrap.md +12 -0
- package/pi/prompts/brainstorm.md +12 -0
- package/pi/prompts/close.md +11 -0
- package/pi/prompts/debug.md +12 -0
- package/pi/prompts/discovery.md +12 -0
- package/pi/prompts/dispatcher.md +12 -0
- package/pi/prompts/eval.md +12 -0
- package/pi/prompts/evolve.md +12 -0
- package/pi/prompts/go.md +12 -0
- package/pi/prompts/grill.md +12 -0
- package/pi/prompts/harness-audit.md +12 -0
- package/pi/prompts/memory-cleanup.md +12 -0
- package/pi/prompts/persona-panel.md +12 -0
- package/pi/prompts/plan.md +12 -0
- package/pi/prompts/portfolio.md +12 -0
- package/pi/prompts/reconcile.md +12 -0
- package/pi/prompts/repo-audit.md +12 -0
- package/pi/prompts/session.md +12 -0
- package/pi/prompts/spinout.md +12 -0
- package/pi/prompts/sunset-review.md +12 -0
- package/pi/prompts/templates-ack.md +12 -0
- package/pi/prompts/test.md +12 -0
- package/rules/_index.md +51 -0
- package/rules/always-on/commit-discipline.md +26 -0
- package/rules/always-on/npm-quality-gates.md +26 -0
- package/rules/always-on/parallel-sessions.md +43 -0
- package/rules/opt-in-domain/prompt-caching.md +270 -0
- package/rules/opt-in-stack/backend-data.md +188 -0
- package/rules/opt-in-stack/backend.md +390 -0
- package/rules/opt-in-stack/frontend.md +98 -0
- package/rules/opt-in-stack/security-web.md +194 -0
- package/rules/opt-in-stack/swift.md +65 -0
- package/scripts/archive-closed-prds.mjs +416 -0
- package/scripts/autopilot-multi.mjs +802 -0
- package/scripts/autopilot.mjs +383 -0
- package/scripts/backfill-abandoned-sessions.mjs +265 -0
- package/scripts/backfill-learnings-expires.mjs +196 -0
- package/scripts/backfill-learnings.mjs +203 -0
- package/scripts/backfill-sessions.mjs +282 -0
- package/scripts/check-doc-consistency.sh +279 -0
- package/scripts/check-package-manager.mjs +445 -0
- package/scripts/ci/assert-vitest-green.mjs +267 -0
- package/scripts/codex-install.mjs +435 -0
- package/scripts/compute-grounding-injection.sh +186 -0
- package/scripts/cursor-install.mjs +113 -0
- package/scripts/dialectic-deriver.mjs +573 -0
- package/scripts/emit-event.mjs +160 -0
- package/scripts/emit-session.mjs +212 -0
- package/scripts/eval-session.mjs +262 -0
- package/scripts/export-hw-learnings.mjs +437 -0
- package/scripts/gc-stale-worktrees.mjs +666 -0
- package/scripts/generate-pi-prompts.mjs +127 -0
- package/scripts/harness-audit.mjs +287 -0
- package/scripts/lib/agent-frontmatter.mjs +266 -0
- package/scripts/lib/agent-output-schema.mjs +166 -0
- package/scripts/lib/agent-status.mjs +303 -0
- package/scripts/lib/ajv-loader.mjs +34 -0
- package/scripts/lib/auto-dialectic.mjs +382 -0
- package/scripts/lib/auto-dream.mjs +471 -0
- package/scripts/lib/autonomy/suitability.mjs +212 -0
- package/scripts/lib/autopilot/dep-graph.mjs +417 -0
- package/scripts/lib/autopilot/durable-telemetry.mjs +121 -0
- package/scripts/lib/autopilot/flags.mjs +104 -0
- package/scripts/lib/autopilot/kill-switches.mjs +174 -0
- package/scripts/lib/autopilot/loop.mjs +320 -0
- package/scripts/lib/autopilot/mr-draft.mjs +520 -0
- package/scripts/lib/autopilot/multi-killswitch.mjs +184 -0
- package/scripts/lib/autopilot/recent-runs.mjs +106 -0
- package/scripts/lib/autopilot/stall-sampler.mjs +97 -0
- package/scripts/lib/autopilot/telemetry.mjs +224 -0
- package/scripts/lib/autopilot/worktree-pipeline.mjs +605 -0
- package/scripts/lib/autopilot-telemetry.mjs +11 -0
- package/scripts/lib/autopilot.mjs +39 -0
- package/scripts/lib/backlog-scan.mjs +179 -0
- package/scripts/lib/bootstrap-lock-freshness.mjs +260 -0
- package/scripts/lib/bootstrap-lock-refresh.mjs +186 -0
- package/scripts/lib/build-live-signals.mjs +150 -0
- package/scripts/lib/ci-status-banner.mjs +425 -0
- package/scripts/lib/claude-md-budget-lint.mjs +246 -0
- package/scripts/lib/cli-flags.mjs +158 -0
- package/scripts/lib/codex/plugin-contract.mjs +610 -0
- package/scripts/lib/cold-start-detector.mjs +240 -0
- package/scripts/lib/command-blocker.mjs +458 -0
- package/scripts/lib/common.mjs +333 -0
- package/scripts/lib/config/auto-dream.mjs +77 -0
- package/scripts/lib/config/block-header.mjs +94 -0
- package/scripts/lib/config/broken-window.mjs +114 -0
- package/scripts/lib/config/coercers.mjs +248 -0
- package/scripts/lib/config/cold-start.mjs +92 -0
- package/scripts/lib/config/config-protection.mjs +120 -0
- package/scripts/lib/config/cross-repo.mjs +104 -0
- package/scripts/lib/config/custom-phases.mjs +213 -0
- package/scripts/lib/config/dialectic.mjs +92 -0
- package/scripts/lib/config/discovery-validator.mjs +75 -0
- package/scripts/lib/config/dispatcher-autonomy-capture.mjs +240 -0
- package/scripts/lib/config/dispatcher-autonomy.mjs +152 -0
- package/scripts/lib/config/docs-orchestrator.mjs +90 -0
- package/scripts/lib/config/docs-staleness.mjs +96 -0
- package/scripts/lib/config/drift-check.mjs +155 -0
- package/scripts/lib/config/eval.mjs +130 -0
- package/scripts/lib/config/events-rotation.mjs +74 -0
- package/scripts/lib/config/evolve.mjs +308 -0
- package/scripts/lib/config/frontend-slop-hook.mjs +104 -0
- package/scripts/lib/config/gitlab-portfolio.mjs +150 -0
- package/scripts/lib/config/handover-gate.mjs +106 -0
- package/scripts/lib/config/host-paths.mjs +76 -0
- package/scripts/lib/config/io.mjs +54 -0
- package/scripts/lib/config/loop-guard.mjs +117 -0
- package/scripts/lib/config/memory.mjs +150 -0
- package/scripts/lib/config/persona-gate-wave.mjs +258 -0
- package/scripts/lib/config/reconcile.mjs +205 -0
- package/scripts/lib/config/section-extractor.mjs +100 -0
- package/scripts/lib/config/skill-evolution.mjs +112 -0
- package/scripts/lib/config/slopcheck.mjs +99 -0
- package/scripts/lib/config/state-md-lock.mjs +83 -0
- package/scripts/lib/config/templates-first.mjs +94 -0
- package/scripts/lib/config/test.mjs +113 -0
- package/scripts/lib/config/vault-integration.mjs +201 -0
- package/scripts/lib/config/vault-mirror-quality.mjs +99 -0
- package/scripts/lib/config/vault-staleness.mjs +84 -0
- package/scripts/lib/config/vault-sync.mjs +96 -0
- package/scripts/lib/config/verification-auto-fix.mjs +84 -0
- package/scripts/lib/config/wave-reviewers.mjs +133 -0
- package/scripts/lib/config-schema.mjs +345 -0
- package/scripts/lib/config.mjs +474 -0
- package/scripts/lib/convergence-monitor.mjs +389 -0
- package/scripts/lib/coordinator-snapshot.mjs +371 -0
- package/scripts/lib/crypto-digest-utils.mjs +91 -0
- package/scripts/lib/discovery/helpers.mjs +127 -0
- package/scripts/lib/discovery/triage-state.mjs +279 -0
- package/scripts/lib/dispatcher/cli.mjs +257 -0
- package/scripts/lib/dispatcher/enumerate.mjs +243 -0
- package/scripts/lib/dispatcher/rank.mjs +363 -0
- package/scripts/lib/ecosystem-health.mjs +224 -0
- package/scripts/lib/ecosystem-wizard/ci-detector.mjs +18 -0
- package/scripts/lib/ecosystem-wizard/config-parser.mjs +54 -0
- package/scripts/lib/ecosystem-wizard/config-writer.mjs +287 -0
- package/scripts/lib/ecosystem-wizard/package-manager-detector.mjs +42 -0
- package/scripts/lib/ecosystem-wizard/wizard-prompt.mjs +246 -0
- package/scripts/lib/ecosystem-wizard.mjs +48 -0
- package/scripts/lib/env-check.mjs +89 -0
- package/scripts/lib/eval/engine.mjs +605 -0
- package/scripts/lib/eval/judge.mjs +433 -0
- package/scripts/lib/eval/report.mjs +367 -0
- package/scripts/lib/eval/schema.mjs +618 -0
- package/scripts/lib/eval/session-resolve.mjs +137 -0
- package/scripts/lib/eval/sink.mjs +77 -0
- package/scripts/lib/events-rotation.mjs +86 -0
- package/scripts/lib/events-schema.mjs +81 -0
- package/scripts/lib/events.mjs +80 -0
- package/scripts/lib/evolve/autonomy-verdict.mjs +461 -0
- package/scripts/lib/evolve/autopilot-effectiveness.mjs +293 -0
- package/scripts/lib/exclusivity-matrix.mjs +68 -0
- package/scripts/lib/fetch-baseline.mjs +311 -0
- package/scripts/lib/file-lock.mjs +512 -0
- package/scripts/lib/frontend-detect/detect.mjs +138 -0
- package/scripts/lib/frontend-detect/rules.mjs +295 -0
- package/scripts/lib/frontmatter-guard.mjs +241 -0
- package/scripts/lib/gates/echo-stub-detect.mjs +39 -0
- package/scripts/lib/gates/gate-baseline.mjs +42 -0
- package/scripts/lib/gates/gate-full.mjs +85 -0
- package/scripts/lib/gates/gate-helpers.mjs +231 -0
- package/scripts/lib/gates/gate-incremental.mjs +76 -0
- package/scripts/lib/gates/gate-per-file.mjs +55 -0
- package/scripts/lib/gitlab-ops/stale-mr-sweep.mjs +447 -0
- package/scripts/lib/gitlab-portfolio/aggregator.mjs +383 -0
- package/scripts/lib/gitlab-portfolio/cli.mjs +428 -0
- package/scripts/lib/gitlab-portfolio/markdown-writer.mjs +289 -0
- package/scripts/lib/gitlab-portfolio/vcs-detect.mjs +182 -0
- package/scripts/lib/handover-gate.mjs +222 -0
- package/scripts/lib/hardening.mjs +43 -0
- package/scripts/lib/hardware-pattern-detector.mjs +238 -0
- package/scripts/lib/harness-audit/categories/category1.mjs +123 -0
- package/scripts/lib/harness-audit/categories/category2.mjs +145 -0
- package/scripts/lib/harness-audit/categories/category3.mjs +143 -0
- package/scripts/lib/harness-audit/categories/category4.mjs +202 -0
- package/scripts/lib/harness-audit/categories/category5.mjs +152 -0
- package/scripts/lib/harness-audit/categories/category6.mjs +211 -0
- package/scripts/lib/harness-audit/categories/category7.mjs +125 -0
- package/scripts/lib/harness-audit/categories/category8.mjs +328 -0
- package/scripts/lib/harness-audit/categories/category9.mjs +294 -0
- package/scripts/lib/harness-audit/categories/helpers.mjs +165 -0
- package/scripts/lib/harness-audit/categories.mjs +19 -0
- package/scripts/lib/historical-guard.mjs +15 -0
- package/scripts/lib/host-identity.mjs +262 -0
- package/scripts/lib/instruction-budget-guard.mjs +332 -0
- package/scripts/lib/io.mjs +304 -0
- package/scripts/lib/issue-close-strip-labels.mjs +161 -0
- package/scripts/lib/language-mappers/README.md +57 -0
- package/scripts/lib/language-mappers/index.mjs +165 -0
- package/scripts/lib/language-mappers/markdown.mjs +149 -0
- package/scripts/lib/language-mappers/python.mjs +249 -0
- package/scripts/lib/language-mappers/swift.mjs +201 -0
- package/scripts/lib/language-mappers/typescript.mjs +433 -0
- package/scripts/lib/learnings/expiry-sweep.mjs +164 -0
- package/scripts/lib/learnings/filters.mjs +43 -0
- package/scripts/lib/learnings/io.mjs +255 -0
- package/scripts/lib/learnings/schema.mjs +518 -0
- package/scripts/lib/learnings/surface.mjs +207 -0
- package/scripts/lib/learnings.mjs +42 -0
- package/scripts/lib/lock-reaper.mjs +648 -0
- package/scripts/lib/locks/index.mjs +31 -0
- package/scripts/lib/locks/lock-body.mjs +62 -0
- package/scripts/lib/locks/staging-fence-lock.mjs +267 -0
- package/scripts/lib/locks/state-md-lock.mjs +351 -0
- package/scripts/lib/loop-readiness-banner.mjs +144 -0
- package/scripts/lib/memory-banner.mjs +478 -0
- package/scripts/lib/memory-cleanup/worktree-sweep.mjs +108 -0
- package/scripts/lib/memory-cleanup-stamp.mjs +56 -0
- package/scripts/lib/memory-paths.mjs +31 -0
- package/scripts/lib/memory-proposals/collector.mjs +334 -0
- package/scripts/lib/memory-proposals/schema.mjs +289 -0
- package/scripts/lib/memory-proposals/sink.mjs +507 -0
- package/scripts/lib/memory-proposals/store.mjs +441 -0
- package/scripts/lib/mission-status-schema.mjs +114 -0
- package/scripts/lib/mode-selector/alternatives.mjs +64 -0
- package/scripts/lib/mode-selector/constants.mjs +29 -0
- package/scripts/lib/mode-selector/context-pressure.mjs +157 -0
- package/scripts/lib/mode-selector/rationale.mjs +55 -0
- package/scripts/lib/mode-selector/scoring.mjs +221 -0
- package/scripts/lib/mode-selector-accuracy.mjs +121 -0
- package/scripts/lib/mode-selector.mjs +160 -0
- package/scripts/lib/multi-provider-build/providers.mjs +64 -0
- package/scripts/lib/multi-provider-build/templating.mjs +130 -0
- package/scripts/lib/named-baseline-resolver.mjs +233 -0
- package/scripts/lib/named-vault-resolver.mjs +433 -0
- package/scripts/lib/owner-config/coerce.mjs +29 -0
- package/scripts/lib/owner-config/constants.mjs +21 -0
- package/scripts/lib/owner-config/defaults.mjs +50 -0
- package/scripts/lib/owner-config/error.mjs +19 -0
- package/scripts/lib/owner-config/index.mjs +13 -0
- package/scripts/lib/owner-config/merge.mjs +52 -0
- package/scripts/lib/owner-config/validate.mjs +259 -0
- package/scripts/lib/owner-config-banner.mjs +126 -0
- package/scripts/lib/owner-config-loader.mjs +159 -0
- package/scripts/lib/owner-config.example.yaml +72 -0
- package/scripts/lib/owner-config.mjs +28 -0
- package/scripts/lib/owner-interview.mjs +243 -0
- package/scripts/lib/owner-yaml.mjs +571 -0
- package/scripts/lib/package-manager.mjs +160 -0
- package/scripts/lib/path-utils.mjs +217 -0
- package/scripts/lib/peer-cards/merger.mjs +310 -0
- package/scripts/lib/peer-cards/reader.mjs +125 -0
- package/scripts/lib/peer-cards/schema.mjs +230 -0
- package/scripts/lib/peer-cards/staleness-banner.mjs +86 -0
- package/scripts/lib/peer-cards/writer.mjs +138 -0
- package/scripts/lib/peer-discovery.mjs +200 -0
- package/scripts/lib/persona-panel/catalog-loader.mjs +577 -0
- package/scripts/lib/persona-panel/consolidator.mjs +370 -0
- package/scripts/lib/persona-panel/persona-runner.mjs +375 -0
- package/scripts/lib/persona-panel/threshold.mjs +130 -0
- package/scripts/lib/pi-hook-bridge.mjs +328 -0
- package/scripts/lib/platform.mjs +266 -0
- package/scripts/lib/playwright-driver/runner.mjs +297 -0
- package/scripts/lib/plugin-root.mjs +210 -0
- package/scripts/lib/pre-dispatch-check.mjs +126 -0
- package/scripts/lib/product-repo-detect.mjs +121 -0
- package/scripts/lib/profiles/registry.mjs +176 -0
- package/scripts/lib/profiles/schema.mjs +209 -0
- package/scripts/lib/qg-command-drift-banner.mjs +88 -0
- package/scripts/lib/quality-gate/diagnostics.mjs +92 -0
- package/scripts/lib/quality-gate.mjs +536 -0
- package/scripts/lib/quality-gates-cache.mjs +228 -0
- package/scripts/lib/quality-gates-policy.mjs +95 -0
- package/scripts/lib/recommendations-v0.mjs +156 -0
- package/scripts/lib/reconcile/eligibility.mjs +203 -0
- package/scripts/lib/reconcile/emitter.mjs +244 -0
- package/scripts/lib/reconcile/engine.mjs +412 -0
- package/scripts/lib/reconcile/idempotency.mjs +239 -0
- package/scripts/lib/reconcile/renderer.mjs +211 -0
- package/scripts/lib/reconcile/writer.mjs +293 -0
- package/scripts/lib/reconcile-nudge-banner.mjs +284 -0
- package/scripts/lib/resource-probe/evaluate.mjs +190 -0
- package/scripts/lib/resource-probe/parsers.mjs +181 -0
- package/scripts/lib/resource-probe/probe-platform.mjs +300 -0
- package/scripts/lib/resource-probe.mjs +95 -0
- package/scripts/lib/rule-loader.mjs +552 -0
- package/scripts/lib/rules-sync.mjs +439 -0
- package/scripts/lib/scope-gate.mjs +496 -0
- package/scripts/lib/session-close-backfill.mjs +539 -0
- package/scripts/lib/session-discovery.mjs +256 -0
- package/scripts/lib/session-end/phase-skip.mjs +357 -0
- package/scripts/lib/session-end/worktree-cleanup.mjs +112 -0
- package/scripts/lib/session-id.mjs +362 -0
- package/scripts/lib/session-lock.mjs +703 -0
- package/scripts/lib/session-registry.mjs +355 -0
- package/scripts/lib/session-schema/aliases.mjs +71 -0
- package/scripts/lib/session-schema/constants.mjs +115 -0
- package/scripts/lib/session-schema/normalizer.mjs +66 -0
- package/scripts/lib/session-schema/timestamps.mjs +64 -0
- package/scripts/lib/session-schema/validator.mjs +453 -0
- package/scripts/lib/session-schema.mjs +71 -0
- package/scripts/lib/session-token-rollup.mjs +137 -0
- package/scripts/lib/sessions-staleness-banner.mjs +247 -0
- package/scripts/lib/skill-evolution/blast-radius-classifier.mjs +114 -0
- package/scripts/lib/skill-evolution/candidate-intake.mjs +270 -0
- package/scripts/lib/skill-evolution/config-validation-gate.mjs +279 -0
- package/scripts/lib/skill-evolution/engine.mjs +719 -0
- package/scripts/lib/skill-evolution/idempotency.mjs +279 -0
- package/scripts/lib/skill-evolution/mr-opener.mjs +507 -0
- package/scripts/lib/skill-health/join.mjs +181 -0
- package/scripts/lib/skill-health/score.mjs +123 -0
- package/scripts/lib/skill-invocations-schema.mjs +214 -0
- package/scripts/lib/skill-judge.mjs +348 -0
- package/scripts/lib/skill-judgments-schema.mjs +264 -0
- package/scripts/lib/slopcheck.mjs +501 -0
- package/scripts/lib/soul-resolve.mjs +118 -0
- package/scripts/lib/spiral-carryover.mjs +495 -0
- package/scripts/lib/state-md/body-sections.mjs +851 -0
- package/scripts/lib/state-md/frontmatter-mutators.mjs +453 -0
- package/scripts/lib/state-md/mission-status.mjs +247 -0
- package/scripts/lib/state-md/recommendations.mjs +57 -0
- package/scripts/lib/state-md/yaml-parser.mjs +234 -0
- package/scripts/lib/state-md-peer-guard.mjs +232 -0
- package/scripts/lib/state-md.mjs +53 -0
- package/scripts/lib/subagents-schema.mjs +309 -0
- package/scripts/lib/sunset/walker.mjs +1192 -0
- package/scripts/lib/test-runner/artifact-paths.mjs +94 -0
- package/scripts/lib/test-runner/fingerprint.mjs +33 -0
- package/scripts/lib/test-runner/issue-reconcile.mjs +770 -0
- package/scripts/lib/tmux-layout/layouts.mjs +224 -0
- package/scripts/lib/tmux-layout/telemetry-stats.mjs +100 -0
- package/scripts/lib/tmux-layout/telemetry.mjs +88 -0
- package/scripts/lib/tmux-layout/tmux-shell.mjs +82 -0
- package/scripts/lib/tmux-layout/vcs-detector.mjs +88 -0
- package/scripts/lib/validate/check-agents.mjs +457 -0
- package/scripts/lib/validate/check-codex-plugin.mjs +37 -0
- package/scripts/lib/validate/check-commands.mjs +148 -0
- package/scripts/lib/validate/check-component-paths.mjs +112 -0
- package/scripts/lib/validate/check-dead-bridge.mjs +180 -0
- package/scripts/lib/validate/check-hooks-symmetry.mjs +258 -0
- package/scripts/lib/validate/check-json-files.mjs +116 -0
- package/scripts/lib/validate/check-owner-leakage.mjs +1011 -0
- package/scripts/lib/validate/check-path-utils-canary.mjs +175 -0
- package/scripts/lib/validate/check-peekaboo-driver-canary.mjs +201 -0
- package/scripts/lib/validate/check-pi-package.mjs +110 -0
- package/scripts/lib/validate/check-pi-prompts.mjs +43 -0
- package/scripts/lib/validate/check-playwright-mcp-canary.mjs +154 -0
- package/scripts/lib/validate/check-plugin-json.mjs +96 -0
- package/scripts/lib/validate/check-plugin-monitors.mjs +206 -0
- package/scripts/lib/validate/check-plugin-schema.mjs +137 -0
- package/scripts/lib/validate/check-rules.mjs +143 -0
- package/scripts/lib/validate/check-session-plan-routing.mjs +154 -0
- package/scripts/lib/validate/check-test-fixture-shapes.mjs +280 -0
- package/scripts/lib/validate/check-unicode-safety.mjs +533 -0
- package/scripts/lib/validate/confidential-names.mjs +169 -0
- package/scripts/lib/validate/dead-bridge-corpus.mjs +141 -0
- package/scripts/lib/validate/dead-bridge-detectors.mjs +568 -0
- package/scripts/lib/validate/tier-inference.mjs +100 -0
- package/scripts/lib/validate-vendored-rules.mjs +519 -0
- package/scripts/lib/vault-archive.mjs +404 -0
- package/scripts/lib/vault-backfill/glab.mjs +164 -0
- package/scripts/lib/vault-backfill/manifest.mjs +75 -0
- package/scripts/lib/vault-backfill/template.mjs +130 -0
- package/scripts/lib/vault-consolidate-fs.mjs +331 -0
- package/scripts/lib/vault-migration-rules.mjs +155 -0
- package/scripts/lib/vault-mirror/auto-commit.mjs +203 -0
- package/scripts/lib/vault-mirror/namespace.mjs +152 -0
- package/scripts/lib/vault-mirror/process.mjs +567 -0
- package/scripts/lib/vault-mirror/pseudonym-map.mjs +164 -0
- package/scripts/lib/vault-mirror/render-learnings.mjs +201 -0
- package/scripts/lib/vault-mirror/render-sessions.mjs +367 -0
- package/scripts/lib/vault-mirror/render.mjs +8 -0
- package/scripts/lib/vault-mirror/utils.mjs +217 -0
- package/scripts/lib/vault-relocation-rules.mjs +555 -0
- package/scripts/lib/vault-repo-backfill.mjs +235 -0
- package/scripts/lib/vault-staleness-banner.mjs +142 -0
- package/scripts/lib/vault-status/board-writer.mjs +769 -0
- package/scripts/lib/vault-status/narrative-mirror.mjs +544 -0
- package/scripts/lib/vault-sync-baseline.mjs +152 -0
- package/scripts/lib/wave-context.mjs +29 -0
- package/scripts/lib/wave-executor/pool.mjs +248 -0
- package/scripts/lib/wave-resource-gate.mjs +204 -0
- package/scripts/lib/wave-sizing.mjs +75 -0
- package/scripts/lib/webhook-url.mjs +105 -0
- package/scripts/lib/workspace.mjs +198 -0
- package/scripts/lib/worktree/constants.mjs +35 -0
- package/scripts/lib/worktree/index.mjs +17 -0
- package/scripts/lib/worktree/lifecycle.mjs +287 -0
- package/scripts/lib/worktree/listing.mjs +118 -0
- package/scripts/lib/worktree/meta.mjs +64 -0
- package/scripts/lib/worktree-freshness.mjs +313 -0
- package/scripts/lib/worktree.mjs +15 -0
- package/scripts/lifecycle-sim-v6.mjs +347 -0
- package/scripts/lock-reaper.mjs +185 -0
- package/scripts/mcp-server.sh +241 -0
- package/scripts/measure-policy-cache-effectiveness.mjs +427 -0
- package/scripts/memory-propose.mjs +464 -0
- package/scripts/migrate-cold-start-seed.mjs +404 -0
- package/scripts/migrate-learnings-jsonl.mjs +189 -0
- package/scripts/migrate-legacy-learnings.sh +61 -0
- package/scripts/migrate-sessions-jsonl.mjs +448 -0
- package/scripts/migrate-subagents-jsonl.mjs +196 -0
- package/scripts/migrate-vault-paths.mjs +796 -0
- package/scripts/parse-config.mjs +149 -0
- package/scripts/pi-install.mjs +117 -0
- package/scripts/print-applicable-rules.mjs +247 -0
- package/scripts/promote-vault-strict.mjs +496 -0
- package/scripts/relocate-vault-corpus.mjs +1178 -0
- package/scripts/run-migrate-v2-cross-repo.mjs +385 -0
- package/scripts/run-quality-gate.mjs +216 -0
- package/scripts/spikes/h3-agent-teams/preflight.sh +53 -0
- package/scripts/spikes/h3-agent-teams/run-h3.sh +112 -0
- package/scripts/spikes/h3-agent-teams/setup.sh +137 -0
- package/scripts/spikes/h3-agent-teams/toggle.sh +38 -0
- package/scripts/sweep-expired-learnings.mjs +135 -0
- package/scripts/sync-vault-schema.mjs +376 -0
- package/scripts/tests/fixtures/fetch-baseline/sample-rule.md +8 -0
- package/scripts/tmux-layout.mjs +245 -0
- package/scripts/token-audit.sh +191 -0
- package/scripts/typecheck.mjs +42 -0
- package/scripts/upload-social-preview.mjs +316 -0
- package/scripts/validate-config.mjs +46 -0
- package/scripts/validate-plugin-manifests.mjs +163 -0
- package/scripts/validate-plugin.mjs +264 -0
- package/scripts/validate-wave-scope.mjs +289 -0
- package/scripts/vault-backfill.mjs +404 -0
- package/scripts/vault-consolidate.mjs +596 -0
- package/scripts/vault-integration-watcher.mjs +394 -0
- package/scripts/vault-mirror.mjs +430 -0
- package/skills/_shared/bootstrap-gate.md +111 -0
- package/skills/_shared/config-reading.md +226 -0
- package/skills/_shared/instruction-file-resolution.md +79 -0
- package/skills/_shared/model-selection.md +64 -0
- package/skills/_shared/monitor-patterns.md +300 -0
- package/skills/_shared/parallel-aware-auq.md +121 -0
- package/skills/_shared/parallel-aware-preamble.md +185 -0
- package/skills/_shared/platform-tools.md +96 -0
- package/skills/_shared/state-ownership.md +221 -0
- package/skills/architecture/DEEPENING.md +37 -0
- package/skills/architecture/INTERFACE-DESIGN.md +44 -0
- package/skills/architecture/LANGUAGE.md +53 -0
- package/skills/architecture/SKILL.md +92 -0
- package/skills/autopilot/SKILL.md +419 -0
- package/skills/bootstrap/SKILL.md +592 -0
- package/skills/bootstrap/STATE.md.template +24 -0
- package/skills/bootstrap/_shared-template.md +243 -0
- package/skills/bootstrap/deep-template.md +659 -0
- package/skills/bootstrap/fast-template.md +251 -0
- package/skills/bootstrap/intensity-heuristic.md +80 -0
- package/skills/bootstrap/public-fallback.md +342 -0
- package/skills/bootstrap/standard-template.md +736 -0
- package/skills/bootstrap/templates/agents/project-code-review.md +18 -0
- package/skills/bootstrap/templates/agents/project-discovery.md +18 -0
- package/skills/bootstrap/templates/agents/project-quality-gate.md +18 -0
- package/skills/brainstorm/SKILL.md +268 -0
- package/skills/brainstorm/soul.md +49 -0
- package/skills/claude-md-drift-check/SKILL.md +186 -0
- package/skills/claude-md-drift-check/checker.mjs +1380 -0
- package/skills/claude-md-drift-check/checker.sh +37 -0
- package/skills/claude-md-drift-check/package.json +16 -0
- package/skills/convergence-monitoring/README.md +39 -0
- package/skills/convergence-monitoring/SIGNALS.md +246 -0
- package/skills/convergence-monitoring/SKILL.md +285 -0
- package/skills/daily/SKILL.md +222 -0
- package/skills/daily/generate.sh +92 -0
- package/skills/daily/templates/daily.md.tpl +36 -0
- package/skills/debug/SKILL.md +188 -0
- package/skills/debug/soul.md +35 -0
- package/skills/discovery/SKILL.md +567 -0
- package/skills/discovery/issue-templates.md +237 -0
- package/skills/discovery/probes/docs-staleness.mjs +195 -0
- package/skills/discovery/probes/frontend-slop.mjs +186 -0
- package/skills/discovery/probes/ssot-code-diff.mjs +310 -0
- package/skills/discovery/probes/supply-chain-slopcheck.mjs +440 -0
- package/skills/discovery/probes/vault-narrative-staleness.mjs +355 -0
- package/skills/discovery/probes/vault-staleness.mjs +272 -0
- package/skills/discovery/probes-arch.md +252 -0
- package/skills/discovery/probes-audit.md +95 -0
- package/skills/discovery/probes-code.md +329 -0
- package/skills/discovery/probes-docs.md +76 -0
- package/skills/discovery/probes-feature.md +150 -0
- package/skills/discovery/probes-infra.md +138 -0
- package/skills/discovery/probes-intro.md +25 -0
- package/skills/discovery/probes-session.md +495 -0
- package/skills/discovery/probes-supply-chain.md +94 -0
- package/skills/discovery/probes-ui.md +147 -0
- package/skills/discovery/probes-vault.md +64 -0
- package/skills/discovery/slop-patterns.md +115 -0
- package/skills/dispatcher/SKILL.md +173 -0
- package/skills/docs-orchestrator/SKILL.md +362 -0
- package/skills/docs-orchestrator/audience-mapping.md +140 -0
- package/skills/domain-model/ADR-FORMAT.md +47 -0
- package/skills/domain-model/CONTEXT-FORMAT.md +77 -0
- package/skills/domain-model/SKILL.md +85 -0
- package/skills/ecosystem-health/SKILL.md +119 -0
- package/skills/ecosystem-health/wizard.md +193 -0
- package/skills/eval/SKILL.md +293 -0
- package/skills/eval/rubric-v1.md +218 -0
- package/skills/evolve/SKILL.md +546 -0
- package/skills/frontmatter-guard/SKILL.md +126 -0
- package/skills/gitlab-ops/SKILL.md +368 -0
- package/skills/gitlab-portfolio/SKILL.md +196 -0
- package/skills/grill/SKILL.md +185 -0
- package/skills/grill/soul.md +55 -0
- package/skills/hook-development/SKILL.md +413 -0
- package/skills/mcp-builder/SKILL.md +260 -0
- package/skills/memory-cleanup/SKILL.md +310 -0
- package/skills/mode-selector/SKILL.md +226 -0
- package/skills/peekaboo-driver/SKILL.md +237 -0
- package/skills/peekaboo-driver/soul.md +32 -0
- package/skills/persona-panel/SKILL.md +365 -0
- package/skills/persona-panel/persona-format.md +205 -0
- package/skills/persona-panel/presets/designer-lens.md +87 -0
- package/skills/persona-panel/presets/engineer-lens.md +88 -0
- package/skills/persona-panel/presets/pm-lens.md +86 -0
- package/skills/plan/SKILL.md +496 -0
- package/skills/plan/mode-feature.md +141 -0
- package/skills/plan/mode-new.md +297 -0
- package/skills/plan/mode-retro.md +271 -0
- package/skills/plan/prd-feature-template.md +132 -0
- package/skills/plan/prd-full-template.md +151 -0
- package/skills/plan/prd-reviewer-prompt.md +103 -0
- package/skills/plan/retro-template.md +75 -0
- package/skills/plan/soul.md +62 -0
- package/skills/playwright-driver/SKILL.md +226 -0
- package/skills/playwright-driver/soul.md +30 -0
- package/skills/quality-gates/SKILL.md +212 -0
- package/skills/reconcile/SKILL.md +324 -0
- package/skills/repo-audit/SKILL.md +272 -0
- package/skills/session-end/SKILL.md +1044 -0
- package/skills/session-end/discovery-scan.md +37 -0
- package/skills/session-end/drift-operations.md +97 -0
- package/skills/session-end/learning-patterns.md +78 -0
- package/skills/session-end/metrics-collection.md +175 -0
- package/skills/session-end/phase-3-2-docs-verification.md +148 -0
- package/skills/session-end/phase-3-6-tail.md +344 -0
- package/skills/session-end/phase-3-7a-recommendations.md +86 -0
- package/skills/session-end/plan-verification.md +288 -0
- package/skills/session-end/session-metrics-write.md +223 -0
- package/skills/session-end/vault-operations.md +50 -0
- package/skills/session-end/verification-checklist.md +20 -0
- package/skills/session-plan/SKILL.md +554 -0
- package/skills/session-plan/wave-template.md +37 -0
- package/skills/session-start/SKILL.md +1043 -0
- package/skills/session-start/phase-2-5-docs-planning.md +119 -0
- package/skills/session-start/phase-4-5-resource-health.md +49 -0
- package/skills/session-start/phase-7-1-premise-check.md +47 -0
- package/skills/session-start/phase-7-5-mode-selector.md +237 -0
- package/skills/session-start/phase-8-5-express-path.md +61 -0
- package/skills/session-start/presentation-format.md +81 -0
- package/skills/session-start/soul.md +57 -0
- package/skills/skill-creator/SKILL.md +168 -0
- package/skills/spinout/SKILL.md +76 -0
- package/skills/sunset-review/SKILL.md +96 -0
- package/skills/test-runner/SKILL.md +362 -0
- package/skills/test-runner/rubric-v1.md +388 -0
- package/skills/test-runner/soul.md +46 -0
- package/skills/tmux-layout/SKILL.md +104 -0
- package/skills/ubiquitous-language/SKILL.md +97 -0
- package/skills/using-orchestrator/SKILL.md +144 -0
- package/skills/vault-mirror/SKILL.md +234 -0
- package/skills/vault-sync/SKILL.md +319 -0
- package/skills/vault-sync/package-lock.json +40 -0
- package/skills/vault-sync/package.json +11 -0
- package/skills/vault-sync/tests/fixtures/archive-test-vault/90-archive/bad-archived.md +8 -0
- package/skills/vault-sync/tests/fixtures/archive-test-vault/_meta/.gitkeep +0 -0
- package/skills/vault-sync/tests/fixtures/archive-test-vault/live-note.md +8 -0
- package/skills/vault-sync/tests/fixtures/broken-frontmatter-vault/_meta/.gitkeep +0 -0
- package/skills/vault-sync/tests/fixtures/broken-frontmatter-vault/bad-type.md +8 -0
- package/skills/vault-sync/tests/fixtures/broken-frontmatter-vault/good-note.md +8 -0
- package/skills/vault-sync/tests/fixtures/clean-vault/.obsidian/config.md +8 -0
- package/skills/vault-sync/tests/fixtures/clean-vault/01-projects/foo/projects-baseline.md +10 -0
- package/skills/vault-sync/tests/fixtures/clean-vault/03-daily/daily-2026-04-13.md +8 -0
- package/skills/vault-sync/tests/fixtures/clean-vault/README.md +3 -0
- package/skills/vault-sync/tests/fixtures/clean-vault/hello-world.md +11 -0
- package/skills/vault-sync/tests/fixtures/dangling-link-vault/_meta/.gitkeep +0 -0
- package/skills/vault-sync/tests/fixtures/dangling-link-vault/has-dangling.md +9 -0
- package/skills/vault-sync/tests/fixtures/dangling-link-vault/real-target.md +8 -0
- package/skills/vault-sync/tests/fixtures/empty-vault/_meta/.gitkeep +0 -0
- package/skills/vault-sync/tests/fixtures/missing-field-vault/_meta/.gitkeep +0 -0
- package/skills/vault-sync/tests/fixtures/missing-field-vault/missing-id.md +7 -0
- package/skills/vault-sync/tests/fixtures/nested-tag-vault/03-daily/daily-2026-04-13.md +9 -0
- package/skills/vault-sync/tests/fixtures/nested-tag-vault/_meta/.gitkeep +0 -0
- package/skills/vault-sync/tests/fixtures/nested-tag-vault/nested-tags-note.md +11 -0
- package/skills/vault-sync/tests/fixtures/no-frontmatter-vault/README.md +3 -0
- package/skills/vault-sync/tests/fixtures/no-frontmatter-vault/_MOC.md +3 -0
- package/skills/vault-sync/tests/fixtures/no-frontmatter-vault/_meta/.gitkeep +0 -0
- package/skills/vault-sync/tests/fixtures/with-moc-vault/_MOC.md +11 -0
- package/skills/vault-sync/tests/fixtures/with-moc-vault/_meta/.gitkeep +0 -0
- package/skills/vault-sync/tests/fixtures/with-moc-vault/hello-world.md +11 -0
- package/skills/vault-sync/tests/schema-drift.test.mjs +133 -0
- package/skills/vault-sync/validator.mjs +658 -0
- package/skills/vault-sync/validator.sh +55 -0
- package/skills/wave-executor/SKILL.md +496 -0
- package/skills/wave-executor/circuit-breaker.md +169 -0
- package/skills/wave-executor/wave-loop.md +1043 -0
- package/skills/write-executable-plan/SKILL.md +237 -0
- package/skills/write-executable-plan/plan-template.md +154 -0
- package/templates/_minimal/CLAUDE.md.tmpl +41 -0
- package/templates/_minimal/README.md.tmpl +15 -0
- package/templates/_minimal/gitignore.tmpl +47 -0
- package/templates/_shared/harte-regeln.md +16 -0
- package/templates/_shared/loop.md +90 -0
- package/templates/_shared/rules/parallel-sessions.md +77 -0
- package/templates/nextjs-minimal/README.md +30 -0
- package/templates/nextjs-minimal/app/layout.tsx +18 -0
- package/templates/nextjs-minimal/app/page.tsx +7 -0
- package/templates/nextjs-minimal/eslint.config.mjs +16 -0
- package/templates/nextjs-minimal/next.config.mjs +4 -0
- package/templates/nextjs-minimal/package.json +27 -0
- package/templates/nextjs-minimal/tsconfig.json +23 -0
- package/templates/node-minimal/README.md +33 -0
- package/templates/node-minimal/eslint.config.mjs +10 -0
- package/templates/node-minimal/package.json +21 -0
- package/templates/node-minimal/src/index.ts +1 -0
- package/templates/node-minimal/tests/sanity.test.ts +5 -0
- package/templates/node-minimal/tsconfig.json +17 -0
- package/templates/personas/README.md +150 -0
- package/templates/personas/accounting-compliance.v1.md +120 -0
- package/templates/personas/accounting-tax-advisor.v1.md +116 -0
- package/templates/personas/buyer-p1-cto.v1.md +125 -0
- package/templates/personas/buyer-p2-kanzlei.v1.md +134 -0
- package/templates/personas/buyer-p3-build.v1.md +130 -0
- package/templates/personas/buyer-p4-tech-veto.v1.md +130 -0
- package/templates/personas/buyer-p5-solo.v1.md +132 -0
- package/templates/personas/buyer-p6-ld.v1.md +130 -0
- package/templates/personas/klima-ai-expert.v1.md +114 -0
- package/templates/personas/klima-physicist.v1.md +117 -0
- package/templates/python-uv/README.md +28 -0
- package/templates/python-uv/pyproject.toml +32 -0
- package/templates/python-uv/src/__PROJECT_NAME__/__init__.py +0 -0
- package/templates/python-uv/src/__PROJECT_NAME__/main.py +6 -0
- package/templates/python-uv/tests/test_sanity.py +2 -0
- package/templates/static-html/README.md +19 -0
- package/templates/static-html/index.html +15 -0
- package/templates/static-html/script.js +1 -0
- package/templates/static-html/styles.css +26 -0
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs-orchestrator
|
|
3
|
+
user-invocable: false
|
|
4
|
+
tags: [docs, orchestration, audiences]
|
|
5
|
+
model: sonnet
|
|
6
|
+
model-preference: sonnet
|
|
7
|
+
description: >
|
|
8
|
+
Use this skill when orchestrating documentation generation and updates within a
|
|
9
|
+
session. Maps session scope to audience-specific docs tasks (User / Dev /
|
|
10
|
+
Vault), dispatches the docs-writer agent with source-grounded prompts, and
|
|
11
|
+
reports coverage gaps to session-end. Gated on
|
|
12
|
+
`docs-orchestrator.enabled: true` in Session Config. Zero overhead when
|
|
13
|
+
disabled.
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Docs Orchestrator Skill
|
|
17
|
+
|
|
18
|
+
> Project-instruction file resolution: CLAUDE.md and AGENTS.md (Codex CLI) are transparent aliases — see [skills/_shared/instruction-file-resolution.md](../_shared/instruction-file-resolution.md).
|
|
19
|
+
|
|
20
|
+
docs-orchestrator coordinates the full documentation lifecycle inside a session: it
|
|
21
|
+
detects which audiences (User, Dev, Vault) are touched by the agreed scope, generates
|
|
22
|
+
audience-specific task definitions, threads them into the session-plan pipeline, and
|
|
23
|
+
verifies that docs tasks produced diffs once waves complete. The skill is opt-in and
|
|
24
|
+
default-off — when `docs-orchestrator.enabled: false`, all three hook points
|
|
25
|
+
short-circuit with no output and no cost. docs-orchestrator fills the generative-content
|
|
26
|
+
gap that sibling skills leave open: `vault-sync` validates but does not write, `vault-mirror`
|
|
27
|
+
writes metrics-derived `_overview.md` entries but not narratives, `claude-md-drift-check`
|
|
28
|
+
diagnoses CLAUDE.md (or AGENTS.md on Codex CLI) drift but does not remediate it, and `daily` exclusively owns
|
|
29
|
+
`03-daily/*`. docs-orchestrator is the only skill that produces new prose grounded in
|
|
30
|
+
session output.
|
|
31
|
+
|
|
32
|
+
## Invocation
|
|
33
|
+
|
|
34
|
+
Not user-invocable. Triggered at three hook points within the session lifecycle:
|
|
35
|
+
|
|
36
|
+
1. **session-start Phase 2.5 "Docs Planning"** — after user alignment, before handing
|
|
37
|
+
off to session-plan. Reads the agreed scope, runs audience detection (Phase 2 below),
|
|
38
|
+
and threads the detected audience list into the plan context so session-plan can
|
|
39
|
+
classify tasks correctly.
|
|
40
|
+
2. **session-plan Step 1.5 Agent Registry** — `docs-writer` is added to the agent
|
|
41
|
+
registry when docs tasks are present; tasks carrying role `Docs` are assigned to it
|
|
42
|
+
(see session-plan Step 1.8).
|
|
43
|
+
3. **session-end Phase 3.2 "Docs Verify"** — after waves complete, verifies that each
|
|
44
|
+
`Docs`-classified task produced a diff in the expected file-pattern target and reports
|
|
45
|
+
gaps per `docs-orchestrator.mode`.
|
|
46
|
+
|
|
47
|
+
All three hook points are gated on `docs-orchestrator.enabled: true`. When disabled,
|
|
48
|
+
every hook exits immediately after the config read.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Phase 0: Input Validation
|
|
53
|
+
|
|
54
|
+
**When:** At the start of every docs-orchestrator execution (all three hook points).
|
|
55
|
+
|
|
56
|
+
**Action:** Confirm the invocation context is valid before doing any work.
|
|
57
|
+
|
|
58
|
+
1. **Caller check** — Verify that this skill was invoked from one of the three
|
|
59
|
+
recognised hook points: `session-start Phase 2.5`, `session-plan Step 1.5`, or
|
|
60
|
+
`session-end Phase 3.2`. If the call context is missing or unrecognised, abort
|
|
61
|
+
with:
|
|
62
|
+
```
|
|
63
|
+
[docs-orchestrator] ERROR: Unexpected invocation context '<context>'. Expected one of:
|
|
64
|
+
session-start Phase 2.5 | session-plan Step 1.5 | session-end Phase 3.2. Aborting.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
2. **Config gate** — Read `docs-orchestrator.enabled`. If `false`, exit immediately
|
|
68
|
+
with no output, no logging, no side effects.
|
|
69
|
+
|
|
70
|
+
3. **Task spec validation (hook point 3 only — docs-writer dispatch tasks)** — When
|
|
71
|
+
wave-executor dispatches a Docs task to docs-writer, the task spec MUST contain:
|
|
72
|
+
- `audience` ∈ `{user, dev, vault}` — reject any other value.
|
|
73
|
+
- `file-pattern` — a non-empty glob matching a pattern from `audience-mapping.md`.
|
|
74
|
+
- `rationale` — a non-empty string describing why this audience was triggered.
|
|
75
|
+
|
|
76
|
+
If any field is missing or `audience` is not one of the three valid values, abort
|
|
77
|
+
the task dispatch with:
|
|
78
|
+
```
|
|
79
|
+
[docs-orchestrator] ERROR: Malformed task spec — missing or invalid field '<field>'.
|
|
80
|
+
Required: audience ∈ {user,dev,vault}, file-pattern (non-empty glob), rationale
|
|
81
|
+
(non-empty string). Aborting task dispatch.
|
|
82
|
+
```
|
|
83
|
+
Do not fall through to Phase 1 with a malformed spec.
|
|
84
|
+
|
|
85
|
+
4. **Mode validation** — Confirm `docs-orchestrator.mode` ∈ `{warn, strict, off}`.
|
|
86
|
+
Any other value is a config error; abort with:
|
|
87
|
+
```
|
|
88
|
+
[docs-orchestrator] ERROR: Invalid mode '<value>'. Expected: warn | strict | off.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Phase 1: Read Session Config
|
|
94
|
+
|
|
95
|
+
Read Session Config per `skills/_shared/config-reading.md`. Extract:
|
|
96
|
+
|
|
97
|
+
- `docs-orchestrator.enabled` (boolean, default `false`)
|
|
98
|
+
- `docs-orchestrator.audiences` (list, default `[user, dev, vault]`)
|
|
99
|
+
- `docs-orchestrator.mode` (`warn` | `strict` | `off`, default `warn`)
|
|
100
|
+
|
|
101
|
+
If `enabled: false`, exit immediately with no output. Do not log, do not query scope.
|
|
102
|
+
|
|
103
|
+
Config is read once at invocation; subsequent phases use the cached values. If the
|
|
104
|
+
config block is absent entirely, all defaults apply and the skill proceeds as if
|
|
105
|
+
`enabled: false`.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Phase 2: Audience Scope Detection
|
|
110
|
+
|
|
111
|
+
Given the agreed session scope (from the session-start Q&A), determine which audiences
|
|
112
|
+
are touched by the planned work:
|
|
113
|
+
|
|
114
|
+
- **User** — new CLI flags or commands, breaking API changes, install-flow changes,
|
|
115
|
+
new user-facing features, changed examples.
|
|
116
|
+
- **Dev** — architecture decisions, major refactors, new modules or subsystems, test
|
|
117
|
+
coverage changes, dependency upgrades, ADR-level choices.
|
|
118
|
+
- **Vault** — project status changes, ownership transitions, stack or infra decisions,
|
|
119
|
+
cross-project dependencies, migrations, archival events.
|
|
120
|
+
|
|
121
|
+
See `audience-mapping.md` (in this directory) for the authoritative file-pattern table,
|
|
122
|
+
source rules per audience, and the non-overlap contracts with sibling skills.
|
|
123
|
+
|
|
124
|
+
Intersect the detected audiences with the `docs-orchestrator.audiences` config value.
|
|
125
|
+
Subset selection is supported — e.g., `audiences: [user, dev]` omits Vault writing even
|
|
126
|
+
when Vault signals are present in scope.
|
|
127
|
+
|
|
128
|
+
**When mode is `off`:** skip audience detection and return an empty list — no Docs tasks
|
|
129
|
+
are generated.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Phase 3: Task Generation
|
|
134
|
+
|
|
135
|
+
For each selected audience, generate one or more docs tasks and thread them into the
|
|
136
|
+
wave plan.
|
|
137
|
+
|
|
138
|
+
Each task MUST specify:
|
|
139
|
+
|
|
140
|
+
| Field | Requirement |
|
|
141
|
+
|-------|-------------|
|
|
142
|
+
| `audience` | `user`, `dev`, or `vault` — exactly one value |
|
|
143
|
+
| `file-pattern` | Non-empty glob from `audience-mapping.md` Audiences & File Patterns table |
|
|
144
|
+
| `trigger` | Which scope element motivates this task (e.g., "new `--dry-run` flag added to CLI") |
|
|
145
|
+
| `allowed-sources` | Explicit list: `diff`, `git-log`, `session-memory`, `affected-files` |
|
|
146
|
+
| `rationale` | Why this audience was selected for this task |
|
|
147
|
+
|
|
148
|
+
Tasks flow through the standard session-plan pipeline. They are role-classified as
|
|
149
|
+
`Docs` and assigned to the `docs-writer` agent at Step 1.8. No custom dispatch path
|
|
150
|
+
is required.
|
|
151
|
+
|
|
152
|
+
**Audience routing — hard non-overlap rules:**
|
|
153
|
+
|
|
154
|
+
Before finalising a task's `file-pattern`, check it against the forbidden targets:
|
|
155
|
+
|
|
156
|
+
- `<vault>/01-projects/*/_overview.md` — owned by vault-mirror. If the requested
|
|
157
|
+
target matches this pattern, abort the task with:
|
|
158
|
+
```
|
|
159
|
+
[docs-orchestrator] ERROR: Target '<path>' matches vault-mirror's owned pattern
|
|
160
|
+
(<vault>/01-projects/*/_overview.md). Docs-writer must not write here. Aborting task.
|
|
161
|
+
```
|
|
162
|
+
- `<vault>/03-daily/*` — owned by daily. Same abort with the relevant pattern
|
|
163
|
+
message.
|
|
164
|
+
|
|
165
|
+
If no valid non-forbidden target exists for a triggered audience, log an advisory
|
|
166
|
+
(mode `warn`) or abort the session plan (mode `strict`):
|
|
167
|
+
```
|
|
168
|
+
[docs-orchestrator] WARN: Audience 'vault' triggered but all targets are forbidden.
|
|
169
|
+
No Docs task generated for this audience.
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Phase 4: Source Grounding (docs-writer execution protocol)
|
|
175
|
+
|
|
176
|
+
**This phase applies inside the docs-writer agent**, not in the coordinator. It
|
|
177
|
+
documents what the docs-writer MUST do when executing a dispatched Docs task.
|
|
178
|
+
|
|
179
|
+
Before writing any documentation, the docs-writer MUST read and ingest the actual
|
|
180
|
+
source material provided in the task prompt. The canonical four source types are:
|
|
181
|
+
|
|
182
|
+
1. **diff** — `git diff $SESSION_START_REF..HEAD` — the verbatim diff of all changes
|
|
183
|
+
made during this session. This is the primary authoritative source for what changed.
|
|
184
|
+
2. **git-log** — `git log $SESSION_START_REF..HEAD --format="%H %s%n%b"` — commit
|
|
185
|
+
messages and associated bodies. Secondary context for all audiences; use to
|
|
186
|
+
reconstruct the "why" when diffs alone are ambiguous.
|
|
187
|
+
3. **session-memory** — Session transcript, wave outputs, and agent summaries stored
|
|
188
|
+
at `~/.claude/projects/<project>/memory/session-*.md` and under `.orchestrator/`
|
|
189
|
+
for the current session. Primary source for Vault narratives (status updates,
|
|
190
|
+
decisions made in conversation).
|
|
191
|
+
4. **affected-files** — Full content of the files listed in the wave-scope's
|
|
192
|
+
`allowedPaths` (or the coordinator's `affected-files` context block). Primary for
|
|
193
|
+
User and Dev content where understanding the updated interface, schema, or module
|
|
194
|
+
structure is required.
|
|
195
|
+
|
|
196
|
+
**No other sources are permitted.** General knowledge about architectural patterns,
|
|
197
|
+
Node.js APIs, or project history that is not present in the four sources above must
|
|
198
|
+
not be used.
|
|
199
|
+
|
|
200
|
+
**Source grounding steps:**
|
|
201
|
+
|
|
202
|
+
1. Confirm all four source blocks are present in the task prompt. If a source block is
|
|
203
|
+
empty or absent, note it before proceeding. **Hard guard:** if ALL four source blocks
|
|
204
|
+
are empty or absent, ABORT this phase with error `docs-writer: no grounding sources
|
|
205
|
+
available — refusing to produce source-less documentation`. Do not fall through to
|
|
206
|
+
silent REVIEW-marker-only output — the coordinator must see the failure.
|
|
207
|
+
2. Read each source block in full before drafting any section.
|
|
208
|
+
3. For every paragraph drafted, identify which source (or sources) support it.
|
|
209
|
+
4. If a claim or narrative cannot be traced to at least one of the four sources, mark
|
|
210
|
+
the paragraph with `<!-- REVIEW: source needed -->` inline — do NOT omit the marker
|
|
211
|
+
to make output look cleaner.
|
|
212
|
+
|
|
213
|
+
**Write or Update semantics:**
|
|
214
|
+
|
|
215
|
+
- Prefer `Edit` on an existing file over `Write` (full replace).
|
|
216
|
+
- For multi-section updates, prefer surgical section-anchored Edits over full-file Writes.
|
|
217
|
+
- When the target file does not exist, use `Write` to create it.
|
|
218
|
+
- Respect existing document conventions: preserve heading levels, frontmatter
|
|
219
|
+
structure, and table formats already present in the file.
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Phase 5: Source Citations
|
|
224
|
+
|
|
225
|
+
**This phase applies inside the docs-writer agent**, concurrent with writing.
|
|
226
|
+
|
|
227
|
+
Every substantive new paragraph MUST include a source attribution in one of two forms:
|
|
228
|
+
|
|
229
|
+
**Inline HTML comment** (preferred for single-source paragraphs):
|
|
230
|
+
```markdown
|
|
231
|
+
The coordinator now creates a git stash ref before dispatching each wave, enabling
|
|
232
|
+
crash recovery without data loss.
|
|
233
|
+
<!-- source: diff -->
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**Multi-source inline comment:**
|
|
237
|
+
```markdown
|
|
238
|
+
The new `--dry-run` flag skips file writes and prints a diff to stdout instead.
|
|
239
|
+
<!-- source: diff, affected-file:src/cli/index.ts -->
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
**Collected `## Sources` section** (use when most paragraphs share the same sources):
|
|
243
|
+
```markdown
|
|
244
|
+
## Sources
|
|
245
|
+
|
|
246
|
+
- diff: `git diff abc123..HEAD`
|
|
247
|
+
- git-log: commits `abc123`–`def456`
|
|
248
|
+
- session-memory: wave-2 coordinator summary
|
|
249
|
+
- affected-files: `src/cli/index.ts`, `SKILL.md`
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
**Sourceless content:**
|
|
253
|
+
|
|
254
|
+
If a section cannot be sourced from diff, git-log, session-memory, or affected-files,
|
|
255
|
+
it MUST be marked:
|
|
256
|
+
```markdown
|
|
257
|
+
<!-- REVIEW: source needed -->
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
This marker signals to the human reviewer that the content requires verification before
|
|
261
|
+
the next release. The docs-writer MUST NOT remove this marker to make output appear
|
|
262
|
+
complete.
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Phase 6: Output Report
|
|
267
|
+
|
|
268
|
+
**When:** At the end of every docs-writer agent run, and aggregated by docs-orchestrator
|
|
269
|
+
at session-end Phase 3.2 "Docs Verify".
|
|
270
|
+
|
|
271
|
+
The docs-writer MUST emit a brief structured output summary:
|
|
272
|
+
|
|
273
|
+
```
|
|
274
|
+
[docs-orchestrator] Docs task complete.
|
|
275
|
+
Files touched: <comma-separated list of relative paths>
|
|
276
|
+
Audiences served: <comma-separated list: user | dev | vault>
|
|
277
|
+
REVIEW markers: <count> (files: <comma-separated paths or "none">)
|
|
278
|
+
Source coverage: diff=<used|not used>, git-log=<used|not used>,
|
|
279
|
+
session-memory=<used|not used>, affected-files=<used|not used>
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
**Verification at session-end Phase 3.2:**
|
|
283
|
+
|
|
284
|
+
1. Collect every task classified as `Docs` in the plan.
|
|
285
|
+
2. For each task, resolve the expected `file-pattern` target and check for a diff:
|
|
286
|
+
```bash
|
|
287
|
+
git diff --name-only $SESSION_START_REF..HEAD
|
|
288
|
+
```
|
|
289
|
+
Match the output against the task's file-pattern using glob matching.
|
|
290
|
+
3. Classify gaps by severity:
|
|
291
|
+
- **missing diff** — no matching file was changed; the task did not run or produced
|
|
292
|
+
no output.
|
|
293
|
+
- **partial** — a matching diff exists but one or more sections contain
|
|
294
|
+
`<!-- REVIEW: source needed -->` markers; needs human review before next release.
|
|
295
|
+
4. Report per `docs-orchestrator.mode`:
|
|
296
|
+
- `warn` — log all gaps as advisories in the session final report. Non-blocking;
|
|
297
|
+
`/close` proceeds normally.
|
|
298
|
+
- `strict` — block `/close` until every gap is either resolved (diff exists, no
|
|
299
|
+
REVIEW markers) or explicitly overridden by the user via AskUserQuestion.
|
|
300
|
+
- `off` — skip verification entirely; emit no output.
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## Non-Overlap with Sibling Skills
|
|
305
|
+
|
|
306
|
+
- **vault-sync** — validates frontmatter schema; docs-orchestrator generates content.
|
|
307
|
+
Complementary: vault-sync runs after docs-writer writes, catching any schema drift
|
|
308
|
+
introduced by new docs.
|
|
309
|
+
- **vault-mirror** — writes `_overview.md` from JSONL metrics records; docs-orchestrator
|
|
310
|
+
writes human-readable narratives in `context.md`, `decisions.md`, and `people.md`.
|
|
311
|
+
Non-overlapping targets by design.
|
|
312
|
+
- **claude-md-drift-check** — detects drift in the project-instruction file (CLAUDE.md or AGENTS.md on Codex CLI; diagnostic only);
|
|
313
|
+
docs-orchestrator remediates via the Dev audience path (generative). Complementary:
|
|
314
|
+
drift-check can flag what docs-writer fixes. They must not run on the instruction file in parallel
|
|
315
|
+
within the same session.
|
|
316
|
+
- **daily** — exclusively owns `<vault>/03-daily/YYYY-MM-DD.md`. This is a forbidden
|
|
317
|
+
target for docs-orchestrator; the docs-writer prompt must carry this constraint
|
|
318
|
+
explicitly (see Phase 3).
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
## Session Config Reference
|
|
323
|
+
|
|
324
|
+
The three fields below are parsed in `scripts/lib/config.mjs` (`_parseDocsOrchestrator`)
|
|
325
|
+
and validated in `scripts/lib/config-schema.mjs` (`validateDocsOrchestrator`). Defaults
|
|
326
|
+
apply when the block is absent.
|
|
327
|
+
|
|
328
|
+
```yaml
|
|
329
|
+
docs-orchestrator:
|
|
330
|
+
enabled: false # opt-in, default off
|
|
331
|
+
audiences: [user, dev, vault] # subset selection supported
|
|
332
|
+
mode: warn # warn | strict | off
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
- `enabled` — master switch. When `false`, all three hook points short-circuit.
|
|
336
|
+
- `audiences` — which audiences to generate tasks for. Any subset of
|
|
337
|
+
`[user, dev, vault]` is valid.
|
|
338
|
+
- `mode` — verification strictness.
|
|
339
|
+
- `warn` — surfaces gaps as advisories; `/close` is never blocked.
|
|
340
|
+
- `strict` — blocks `/close` until all gaps are resolved or user-overridden.
|
|
341
|
+
- `off` — disables audience detection, task generation, and verification entirely
|
|
342
|
+
(lighter than `enabled: false`; config is still read but all execution paths
|
|
343
|
+
exit early).
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
## Anti-Patterns
|
|
348
|
+
|
|
349
|
+
- **DO NOT write docs without a traceable source.** Every section must trace to diff,
|
|
350
|
+
git-log, session-memory, or affected-files, or carry `<!-- REVIEW: source needed -->`.
|
|
351
|
+
- **DO NOT edit `_overview.md` or `03-daily/*`.** These are owned by vault-mirror and
|
|
352
|
+
daily respectively. Attempting to write these targets aborts the task (Phase 3 hard
|
|
353
|
+
non-overlap check).
|
|
354
|
+
- **DO NOT duplicate the audience-mapping table.** Always reference `audience-mapping.md`
|
|
355
|
+
in this directory — never inline the table into a task prompt or another skill.
|
|
356
|
+
- **DO NOT dispatch docs-writer outside the wave-executor flow.** Docs tasks must go
|
|
357
|
+
through the standard task → wave-executor → Agent() path so they appear in STATE.md,
|
|
358
|
+
metrics, and the session final report.
|
|
359
|
+
- **DO NOT use `hard` as a mode value.** The canonical enum is `warn | strict | off`.
|
|
360
|
+
Any other value fails config validation in Phase 0.
|
|
361
|
+
- **DO NOT generate Docs tasks when mode is `off`.** When mode is `off`, skip all
|
|
362
|
+
execution after Phase 0 config read.
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Audience Mapping
|
|
2
|
+
|
|
3
|
+
> Project-instruction file resolution: `CLAUDE.md` and `AGENTS.md` (Codex CLI) are transparent aliases — see [skills/_shared/instruction-file-resolution.md](../_shared/instruction-file-resolution.md). When the Dev audience target is listed as `CLAUDE.md`, docs-writer resolves the actual file via the SSOT precedence rule.
|
|
4
|
+
|
|
5
|
+
Rules for mapping session scope to target audiences, content sources, and documentation ownership.
|
|
6
|
+
|
|
7
|
+
## Audiences & File Patterns
|
|
8
|
+
|
|
9
|
+
| Audience | Target files (globs) | Typical update triggers |
|
|
10
|
+
|----------|----------------------|-------------------------|
|
|
11
|
+
| User | `README.md`, `docs/user/**/*.md`, `docs/getting-started.md`, `examples/**/*.md` | new CLI command, breaking API change, install flow change, new user-facing feature, changed example output |
|
|
12
|
+
| Dev | `CLAUDE.md` (or `AGENTS.md` on Codex CLI), `docs/dev/**/*.md`, `docs/adr/**/*.md` | architecture decision, major refactor, new module/subsystem, test coverage change, dependency upgrade, ADR-worthy choice |
|
|
13
|
+
| Vault/Ops | `<vault>/01-projects/<slug>/context.md`, `<vault>/01-projects/<slug>/decisions.md`, `<vault>/01-projects/<slug>/people.md` | project status change, ownership transition, stack/infra decision, cross-project dependency, migration, archival event |
|
|
14
|
+
|
|
15
|
+
## Source Rules
|
|
16
|
+
|
|
17
|
+
**The canonical four source types.** Only these four are permitted for docs-writer tasks.
|
|
18
|
+
Any content not traceable to one of these four sources MUST be marked
|
|
19
|
+
`<!-- REVIEW: source needed -->`. The docs-writer NEVER invents content.
|
|
20
|
+
|
|
21
|
+
Every docs-writer task prompt MUST enumerate which sources apply. Content without a
|
|
22
|
+
traceable source gets `<!-- REVIEW: source needed -->` — the agent NEVER invents content.
|
|
23
|
+
|
|
24
|
+
| Source | Command / Path | Primary audience(s) | Notes |
|
|
25
|
+
|--------|---------------|---------------------|-------|
|
|
26
|
+
| **diff** | `git diff $SESSION_START_REF..HEAD` | Dev, Vault | Authoritative for what changed and when. Preferred primary source for Dev. |
|
|
27
|
+
| **git-log** | `git log $SESSION_START_REF..HEAD --format="%H %s%n%b"` | All | Secondary context; use to reconstruct the "why" when diffs alone are ambiguous. |
|
|
28
|
+
| **session-memory** | `~/.claude/projects/<project>/memory/session-*.md`, `.orchestrator/` outputs | Vault, User | Primary for Vault narratives (status updates, decisions made in conversation). Also primary for User tasks designed interactively. |
|
|
29
|
+
| **affected-files** | Files in wave-scope `allowedPaths` / coordinator `affected-files` context block | User, Dev | Primary for understanding updated interfaces, config schemas, or module structures. |
|
|
30
|
+
|
|
31
|
+
**Detailed source descriptions:**
|
|
32
|
+
|
|
33
|
+
1. **diff** — Direct code changes from `git diff $SESSION_START_REF..HEAD`. Authoritative
|
|
34
|
+
for Dev narratives (what changed and why) and Vault decisions (what was decided, when).
|
|
35
|
+
Preferred primary source for Dev audience tasks.
|
|
36
|
+
2. **git-log** — Commit messages and associated PR/MR bodies from
|
|
37
|
+
`git log $SESSION_START_REF..HEAD --format="%H %s%n%b"`. Secondary context for all
|
|
38
|
+
audiences. Use to reconstruct the "why" when code diffs alone are ambiguous.
|
|
39
|
+
3. **session-memory** — Session transcript, wave outputs, agent summaries, and test
|
|
40
|
+
results stored in `~/.claude/projects/<project>/memory/session-*.md` and under
|
|
41
|
+
`.orchestrator/` during the current session. Primary source for Vault narratives
|
|
42
|
+
(status updates, decisions made in conversation). Also the source for User audience
|
|
43
|
+
tasks where the feature was designed interactively.
|
|
44
|
+
4. **affected-files** — Full content of files listed in the wave-scope's `allowedPaths`
|
|
45
|
+
(or the coordinator's `affected-files` context block). Primary for User and Dev content
|
|
46
|
+
where understanding the updated interface, configuration schema, or module structure is
|
|
47
|
+
required.
|
|
48
|
+
|
|
49
|
+
**Ban on hallucination:** any section without a traceable source gets
|
|
50
|
+
`<!-- REVIEW: source needed -->`. This marker signals to the human reviewer that the
|
|
51
|
+
content needs verification before the next release. The docs-writer MUST NOT invent
|
|
52
|
+
architecture decisions, CLI flags, or status narratives from general knowledge.
|
|
53
|
+
|
|
54
|
+
## Non-Overlap with Sibling Skills
|
|
55
|
+
|
|
56
|
+
docs-orchestrator must never write to paths owned by the following sibling skills. Attempting
|
|
57
|
+
to target a forbidden path aborts the task at SKILL.md Phase 3.
|
|
58
|
+
|
|
59
|
+
| Sibling skill | Owned path pattern | Why docs-orchestrator must not touch |
|
|
60
|
+
|---------------|--------------------|---------------------------------------|
|
|
61
|
+
| vault-mirror | `<vault>/01-projects/*/_overview.md` | vault-mirror regenerates this file from JSONL metrics on every session-end. A second writer would corrupt the metrics-derived content or introduce human prose that vault-mirror's next run overwrites silently. |
|
|
62
|
+
| daily | `<vault>/03-daily/YYYY-MM-DD.md` | daily owns this path exclusively and is idempotent-by-design; a second writer (docs-writer) would corrupt the day's scratch notes and create conflicts on the next daily run. |
|
|
63
|
+
| claude-md-drift-check | CLAUDE.md / AGENTS.md (diagnostic path — read-only quality gate) | drift-check diagnoses divergence in the project-instruction file but does not edit it. docs-orchestrator may remediate CLAUDE.md (or AGENTS.md on Codex CLI) via the Dev audience path, but they MUST NOT run on the instruction file in parallel within the same session wave to avoid concurrent edit conflicts. |
|
|
64
|
+
| vault-sync | Frontmatter validation + wiki-link integrity on all `<vault>/**/*.md` (read-only quality gate) | vault-sync never edits files; it is a validation pass. docs-writer writes first; vault-sync validates after. No path conflict, but vault-sync runs must complete after docs-writer to detect drift introduced by new content. |
|
|
65
|
+
|
|
66
|
+
**Forbidden targets (hard rules — abort on match):**
|
|
67
|
+
|
|
68
|
+
- `<vault>/01-projects/*/_overview.md` — owned by vault-mirror.
|
|
69
|
+
- `<vault>/03-daily/*` — owned by daily.
|
|
70
|
+
|
|
71
|
+
These two patterns are enforced in Phase 3 of `SKILL.md` with an abort-on-match
|
|
72
|
+
check. If the requested file-pattern target matches either forbidden glob, the Docs task
|
|
73
|
+
is cancelled and an error is logged before any write occurs.
|
|
74
|
+
|
|
75
|
+
## Example Prompt Skeleton for docs-writer
|
|
76
|
+
|
|
77
|
+
The following is a representative prompt that docs-orchestrator generates for a Dev
|
|
78
|
+
audience task. Adjust file-pattern target, trigger, and sources per task.
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
You are docs-writer. Your task is to update developer documentation based on
|
|
82
|
+
session output.
|
|
83
|
+
|
|
84
|
+
## Task
|
|
85
|
+
Audience: Dev
|
|
86
|
+
File-pattern target: docs/dev/**/*.md, CLAUDE.md (or AGENTS.md on Codex CLI)
|
|
87
|
+
Trigger: New `coordinator-snapshot.mjs` module added; CWD-drift guard introduced
|
|
88
|
+
in wave-executor (issues #196, #219).
|
|
89
|
+
|
|
90
|
+
## Allowed Sources
|
|
91
|
+
Only these four sources are permitted. Do not use general knowledge.
|
|
92
|
+
|
|
93
|
+
- diff: `git diff $SESSION_START_REF..HEAD` (provided below)
|
|
94
|
+
- git-log: `git log $SESSION_START_REF..HEAD --format="%H %s%n%b"` (provided below)
|
|
95
|
+
- session-memory: wave summaries and agent outputs from
|
|
96
|
+
~/.claude/projects/<project>/memory/session-*.md and .orchestrator/ (provided below)
|
|
97
|
+
- affected-files: content of modified .mjs and SKILL.md files listed in allowedPaths
|
|
98
|
+
(provided below)
|
|
99
|
+
|
|
100
|
+
No other sources are permitted. Do not use general knowledge about Node.js APIs,
|
|
101
|
+
architectural patterns, or project history that is not present in the sources above.
|
|
102
|
+
|
|
103
|
+
## Source Citations
|
|
104
|
+
For every paragraph you write, add a source attribution inline:
|
|
105
|
+
<!-- source: diff -->
|
|
106
|
+
<!-- source: git-log -->
|
|
107
|
+
<!-- source: session-memory -->
|
|
108
|
+
<!-- source: affected-file:path/to/file -->
|
|
109
|
+
<!-- source: diff, affected-file:src/foo.ts --> (multi-source)
|
|
110
|
+
|
|
111
|
+
If a paragraph cannot be traced to any of the four sources:
|
|
112
|
+
<!-- REVIEW: source needed -->
|
|
113
|
+
|
|
114
|
+
Do not omit markers to make output look cleaner. Human reviewers depend on them.
|
|
115
|
+
|
|
116
|
+
## Hallucination Ban
|
|
117
|
+
Any section you write that cannot be traced to one of the four sources above MUST
|
|
118
|
+
include the marker:
|
|
119
|
+
<!-- REVIEW: source needed -->
|
|
120
|
+
Do not omit this marker to make the output look cleaner. Human reviewers depend on
|
|
121
|
+
it to catch invented content before it ships.
|
|
122
|
+
|
|
123
|
+
## Forbidden Targets
|
|
124
|
+
- <vault>/01-projects/*/_overview.md — owned by vault-mirror. Do not edit.
|
|
125
|
+
- <vault>/03-daily/* — owned by daily. Do not edit.
|
|
126
|
+
|
|
127
|
+
## Output Report
|
|
128
|
+
At the end of your run, emit:
|
|
129
|
+
[docs-orchestrator] Docs task complete.
|
|
130
|
+
Files touched: <comma-separated relative paths>
|
|
131
|
+
Audiences served: dev
|
|
132
|
+
REVIEW markers: <count> (files: <paths or "none">)
|
|
133
|
+
Source coverage: diff=used, git-log=used, session-memory=used, affected-files=used
|
|
134
|
+
|
|
135
|
+
## Sources
|
|
136
|
+
[diff output inserted here]
|
|
137
|
+
[git-log output inserted here]
|
|
138
|
+
[session-memory summary inserted here]
|
|
139
|
+
[affected-files content inserted here]
|
|
140
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# ADR Format
|
|
2
|
+
|
|
3
|
+
ADRs live in `docs/adr/` and use sequential numbering: `0001-slug.md`, `0002-slug.md`, etc.
|
|
4
|
+
|
|
5
|
+
Create the `docs/adr/` directory lazily — only when the first ADR is needed.
|
|
6
|
+
|
|
7
|
+
## Template
|
|
8
|
+
|
|
9
|
+
```md
|
|
10
|
+
# {Short title of the decision}
|
|
11
|
+
|
|
12
|
+
{1-3 sentences: what's the context, what did we decide, and why.}
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
That's it. An ADR can be a single paragraph. The value is in recording *that* a decision was made and *why* — not in filling out sections.
|
|
16
|
+
|
|
17
|
+
## Optional sections
|
|
18
|
+
|
|
19
|
+
Only include these when they add genuine value. Most ADRs won't need them.
|
|
20
|
+
|
|
21
|
+
- **Status** frontmatter (`proposed | accepted | deprecated | superseded by ADR-NNNN`) — useful when decisions are revisited
|
|
22
|
+
- **Considered Options** — only when the rejected alternatives are worth remembering
|
|
23
|
+
- **Consequences** — only when non-obvious downstream effects need to be called out
|
|
24
|
+
|
|
25
|
+
## Numbering
|
|
26
|
+
|
|
27
|
+
Scan `docs/adr/` for the highest existing number and increment by one.
|
|
28
|
+
|
|
29
|
+
## When to offer an ADR
|
|
30
|
+
|
|
31
|
+
All three of these must be true:
|
|
32
|
+
|
|
33
|
+
1. **Hard to reverse** — the cost of changing your mind later is meaningful
|
|
34
|
+
2. **Surprising without context** — a future reader will look at the code and wonder "why on earth did they do it this way?"
|
|
35
|
+
3. **The result of a real trade-off** — there were genuine alternatives and you picked one for specific reasons
|
|
36
|
+
|
|
37
|
+
If a decision is easy to reverse, skip it — you'll just reverse it. If it's not surprising, nobody will wonder why. If there was no real alternative, there's nothing to record beyond "we did the obvious thing."
|
|
38
|
+
|
|
39
|
+
### What qualifies
|
|
40
|
+
|
|
41
|
+
- **Architectural shape.** "We're using a monorepo." "The write model is event-sourced, the read model is projected into Postgres."
|
|
42
|
+
- **Integration patterns between contexts.** "Ordering and Billing communicate via domain events, not synchronous HTTP."
|
|
43
|
+
- **Technology choices that carry lock-in.** Database, message bus, auth provider, deployment target. Not every library — just the ones that would take a quarter to swap out.
|
|
44
|
+
- **Boundary and scope decisions.** "Customer data is owned by the Customer context; other contexts reference it by ID only." The explicit no-s are as valuable as the yes-s.
|
|
45
|
+
- **Deliberate deviations from the obvious path.** "We're using manual SQL instead of an ORM because X." Anything where a reasonable reader would assume the opposite. These stop the next engineer from "fixing" something that was deliberate.
|
|
46
|
+
- **Constraints not visible in the code.** "We can't use AWS because of compliance requirements." "Response times must be under 200ms because of the partner API contract."
|
|
47
|
+
- **Rejected alternatives when the rejection is non-obvious.** If you considered GraphQL and picked REST for subtle reasons, record it — otherwise someone will suggest GraphQL again in six months.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# CONTEXT.md Format
|
|
2
|
+
|
|
3
|
+
## Structure
|
|
4
|
+
|
|
5
|
+
```md
|
|
6
|
+
# {Context Name}
|
|
7
|
+
|
|
8
|
+
{One or two sentence description of what this context is and why it exists.}
|
|
9
|
+
|
|
10
|
+
## Language
|
|
11
|
+
|
|
12
|
+
**Order**:
|
|
13
|
+
{A concise description of the term}
|
|
14
|
+
_Avoid_: Purchase, transaction
|
|
15
|
+
|
|
16
|
+
**Invoice**:
|
|
17
|
+
A request for payment sent to a customer after delivery.
|
|
18
|
+
_Avoid_: Bill, payment request
|
|
19
|
+
|
|
20
|
+
**Customer**:
|
|
21
|
+
A person or organization that places orders.
|
|
22
|
+
_Avoid_: Client, buyer, account
|
|
23
|
+
|
|
24
|
+
## Relationships
|
|
25
|
+
|
|
26
|
+
- An **Order** produces one or more **Invoices**
|
|
27
|
+
- An **Invoice** belongs to exactly one **Customer**
|
|
28
|
+
|
|
29
|
+
## Example dialogue
|
|
30
|
+
|
|
31
|
+
> **Dev:** "When a **Customer** places an **Order**, do we create the **Invoice** immediately?"
|
|
32
|
+
> **Domain expert:** "No — an **Invoice** is only generated once a **Fulfillment** is confirmed."
|
|
33
|
+
|
|
34
|
+
## Flagged ambiguities
|
|
35
|
+
|
|
36
|
+
- "account" was used to mean both **Customer** and **User** — resolved: these are distinct concepts.
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Rules
|
|
40
|
+
|
|
41
|
+
- **Be opinionated.** When multiple words exist for the same concept, pick the best one and list the others as aliases to avoid.
|
|
42
|
+
- **Flag conflicts explicitly.** If a term is used ambiguously, call it out in "Flagged ambiguities" with a clear resolution.
|
|
43
|
+
- **Keep definitions tight.** One sentence max. Define what it IS, not what it does.
|
|
44
|
+
- **Show relationships.** Use bold term names and express cardinality where obvious.
|
|
45
|
+
- **Only include terms specific to this project's context.** General programming concepts (timeouts, error types, utility patterns) don't belong even if the project uses them extensively. Before adding a term, ask: is this a concept unique to this context, or a general programming concept? Only the former belongs.
|
|
46
|
+
- **Group terms under subheadings** when natural clusters emerge. If all terms belong to a single cohesive area, a flat list is fine.
|
|
47
|
+
- **Write an example dialogue.** A conversation between a dev and a domain expert that demonstrates how the terms interact naturally and clarifies boundaries between related concepts.
|
|
48
|
+
|
|
49
|
+
## Single vs multi-context repos
|
|
50
|
+
|
|
51
|
+
**Single context (most repos):** One `CONTEXT.md` at the repo root.
|
|
52
|
+
|
|
53
|
+
**Multiple contexts:** A `CONTEXT-MAP.md` at the repo root lists the contexts, where they live, and how they relate to each other:
|
|
54
|
+
|
|
55
|
+
```md
|
|
56
|
+
# Context Map
|
|
57
|
+
|
|
58
|
+
## Contexts
|
|
59
|
+
|
|
60
|
+
- [Ordering](./src/ordering/CONTEXT.md) — receives and tracks customer orders
|
|
61
|
+
- [Billing](./src/billing/CONTEXT.md) — generates invoices and processes payments
|
|
62
|
+
- [Fulfillment](./src/fulfillment/CONTEXT.md) — manages warehouse picking and shipping
|
|
63
|
+
|
|
64
|
+
## Relationships
|
|
65
|
+
|
|
66
|
+
- **Ordering → Fulfillment**: Ordering emits `OrderPlaced` events; Fulfillment consumes them to start picking
|
|
67
|
+
- **Fulfillment → Billing**: Fulfillment emits `ShipmentDispatched` events; Billing consumes them to generate invoices
|
|
68
|
+
- **Ordering ↔ Billing**: Shared types for `CustomerId` and `Money`
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The skill infers which structure applies:
|
|
72
|
+
|
|
73
|
+
- If `CONTEXT-MAP.md` exists, read it to find contexts
|
|
74
|
+
- If only a root `CONTEXT.md` exists, single context
|
|
75
|
+
- If neither exists, create a root `CONTEXT.md` lazily when the first term is resolved
|
|
76
|
+
|
|
77
|
+
When multiple contexts exist, infer which one the current topic relates to. If unclear, ask.
|