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,297 @@
|
|
|
1
|
+
# Mode: `/plan new` — Project Kickoff
|
|
2
|
+
|
|
3
|
+
> Reference file for the plan skill. Read by SKILL.md when mode is `new`.
|
|
4
|
+
> Covers: requirement gathering (3 waves) → PRD generation → repo setup → issue creation.
|
|
5
|
+
> 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). New repos pick the file appropriate to the platform that will operate them.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Phase 1: Requirement Gathering (3 waves, 16 questions)
|
|
10
|
+
|
|
11
|
+
Wave 1 has 6 questions (incl. the User-Story toggle); Waves 2-3 have 5 each. Before each wave, dispatch 2-3 Explore agents in parallel to pre-research options. Synthesize agent results into AskUserQuestion calls (max 4 questions per call, so split 4+1 or 3+2 per wave). Wave 1 carries the 6th User-Story toggle question, so split it 3+3.
|
|
12
|
+
|
|
13
|
+
### Wave 1 — Core Decisions (6 questions)
|
|
14
|
+
|
|
15
|
+
**Pre-wave agents (dispatch in a single message):**
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Agent({ subagent_type: "Explore", description: "List available project archetypes",
|
|
19
|
+
prompt: "Run: ls $BASELINE_PATH/templates/
|
|
20
|
+
For each directory found, read any README or config file to get a one-line description.
|
|
21
|
+
Report as a numbered list: directory name — description." })
|
|
22
|
+
|
|
23
|
+
Agent({ subagent_type: "Explore", description: "Research market context",
|
|
24
|
+
prompt: "Search online for market context related to the user's project idea.
|
|
25
|
+
Report: target audiences, competitor landscape, positioning opportunities.
|
|
26
|
+
Keep it to 5-10 bullet points with sources." })
|
|
27
|
+
|
|
28
|
+
Agent({ subagent_type: "Explore", description: "Check ecosystem for conflicts",
|
|
29
|
+
prompt: "Run: ls ~/Projects/
|
|
30
|
+
List all repos. Identify any that overlap with or could serve as dependencies
|
|
31
|
+
for the proposed project. Report potential conflicts and reuse opportunities." })
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Questions:**
|
|
35
|
+
|
|
36
|
+
1. **Project archetype** — Options from `$BASELINE_PATH/templates/` directory. Present agent findings. Choices: Dynamically list directories in $BASELINE_PATH/templates/. Present each as an option via AskUserQuestion.
|
|
37
|
+
2. **Visibility** — internal (GitLab private), private (+ optional GitHub mirror), public/OSS (+ GitHub public + license).
|
|
38
|
+
3. **Target audience** — Options informed by market research agent. User selects or provides custom.
|
|
39
|
+
4. **User-Story-Schicht** — "User-Story-Schicht für dieses Feature erzeugen?" Immer fragen (kein Audience-Heuristik-Gate). Drei Antwortoptionen: **Ja (Als/möchte/damit)** — klassische Persona-Story-Form; **Ja (job-story)** — job-story-Form ("When [situation], I want [motivation], so I can [outcome]"); **Nein** — byte-identisches Status-quo-Verhalten. Bei einer der beiden "Ja"-Optionen emittiert die PRD eine optionale ## User Stories Sektion (je Story ein ↳ AC-Pointer) in der gewählten Form; bei "Nein" wird die Sektion vollständig weggelassen.
|
|
40
|
+
5. **Core problem being solved** — Open-ended. Claude suggests structure if answer is vague.
|
|
41
|
+
6. **GitLab group** — Discover available groups dynamically. Run `ls $BASELINE_PATH/templates/` for project types, and check for a groups config in `$BASELINE_PATH/config/` or use `glab group list` to discover GitLab groups. Present findings via AskUserQuestion.
|
|
42
|
+
|
|
43
|
+
### Wave 2 — Technical Details (5 questions, dynamic per archetype)
|
|
44
|
+
|
|
45
|
+
**Pre-wave agents:**
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Agent({ subagent_type: "Explore", description: "Read archetype config",
|
|
49
|
+
prompt: "Read $BASELINE_PATH/templates/{archetype}/ — list all files, read key configs.
|
|
50
|
+
Report: default tech stack, available options, required decisions." })
|
|
51
|
+
|
|
52
|
+
Agent({ subagent_type: "Explore", description: "Research tech stack best practices",
|
|
53
|
+
prompt: "Search online for best practices with the chosen tech stack ({archetype} + {key techs}).
|
|
54
|
+
Report: recommended patterns, common pitfalls, performance tips. 5-10 bullet points." })
|
|
55
|
+
|
|
56
|
+
Agent({ subagent_type: "Explore", description: "Check ecosystem for shared patterns",
|
|
57
|
+
prompt: "Explore repos in ~/Projects/ that use similar tech stacks.
|
|
58
|
+
Report: shared libraries, common patterns, reusable modules." })
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Questions:**
|
|
62
|
+
|
|
63
|
+
1. **Tech stack decisions** — e.g., Supabase vs alternative DB for nextjs-saas. Options informed by archetype config agent.
|
|
64
|
+
2. **Design style** — For frontend archetypes: read `$BASELINE_PATH/templates/{archetype}/styles/` to discover available design variants. Dispatch agent to read baseline style configs. Skip for non-frontend archetypes (those without a `styles/` directory).
|
|
65
|
+
3. **External integrations** — APIs, services, payment providers. Agent research informs common choices.
|
|
66
|
+
4. **Performance requirements** — Latency targets, concurrent users, throughput expectations.
|
|
67
|
+
5. **Security requirements** — Beyond baseline. Auth strategy, encryption, compliance needs (GDPR, SOC2).
|
|
68
|
+
|
|
69
|
+
### Wave 3 — Business & Scope (5 questions)
|
|
70
|
+
|
|
71
|
+
**Pre-wave agents:**
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
Agent({ subagent_type: "Explore", description: "Analyze archetype failure modes",
|
|
75
|
+
prompt: "Search online for common failure modes and risks for {archetype} projects.
|
|
76
|
+
Report: top 5 risks with probability/impact and standard mitigations." })
|
|
77
|
+
|
|
78
|
+
Agent({ subagent_type: "Explore", description: "Check ecosystem dependency compatibility",
|
|
79
|
+
prompt: "For each ecosystem repo mentioned by the user as a dependency,
|
|
80
|
+
read its package.json/go.mod/pyproject.toml and CLAUDE.md (or AGENTS.md on Codex CLI).
|
|
81
|
+
Report: version constraints, API contracts, integration patterns." })
|
|
82
|
+
|
|
83
|
+
Agent({ subagent_type: "Explore", description: "Research success benchmarks",
|
|
84
|
+
prompt: "Search online for comparable products/features to the user's project idea.
|
|
85
|
+
Report: typical KPIs, adoption curves, success metrics used by similar products." })
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Questions:**
|
|
89
|
+
|
|
90
|
+
1. **MVP scope** — Shape Up appetite: 1 week / 2 weeks / 6 weeks. Frame trade-offs for each.
|
|
91
|
+
2. **Success criteria** — SMART format (Specific, Measurable, Achievable, Relevant, Time-bound). Claude proposes draft from research, user refines.
|
|
92
|
+
3. **Known risks and mitigations** — Present common risks from agent research. User confirms, removes, or adds.
|
|
93
|
+
4. **Post-launch plan** — Monitoring strategy, rollback plan, feedback channels.
|
|
94
|
+
5. **Ecosystem dependencies** — Other repos in the 17-repo ecosystem this project depends on or integrates with. Agent verifies compatibility.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Phase 2: PRD Generation
|
|
99
|
+
|
|
100
|
+
1. Read `prd-full-template.md` from this skill directory.
|
|
101
|
+
2. Fill all 8 sections with gathered answers:
|
|
102
|
+
- **Section 1 (Executive Summary):** Synthesize core problem + audience + archetype into a concise project pitch.
|
|
103
|
+
- **Section 2 (Problem & Context):** From Wave 1 Q3 + Q5 (core problem) answers. Include market research findings.
|
|
104
|
+
- **Section 3 (Target Audience):** From Wave 1 Q3 + research agent output. Define 1-3 personas.
|
|
105
|
+
- **Section 4 (Solution & Scope):** From Wave 3 Q1 (appetite) + Wave 2 tech decisions. Explicit **In-Scope MVP** and **Out-of-Scope** lists. This section drives issue creation in Phase 4.
|
|
106
|
+
- **## User Stories (conditional):** Emit only when the User-Story-Schicht toggle ≠ "Nein"; one story per persona-goal (from Section 3 personas), each linking ≥1 acceptance criterion. Toggle = "Ja (Als/möchte/damit)" → classic Als/möchte/damit form. Toggle = "Ja (job-story)" → job-story form ("When [situation], I want [motivation], so I can [outcome]"). Omit the section entirely when toggle = "Nein" (byte-for-byte status quo).
|
|
107
|
+
- **Section 5 (Success Criteria):** From Wave 3 Q2. SMART table format: Metric | Target | Method | Deadline.
|
|
108
|
+
- **Section 6 (Technical Architecture):** From Wave 1 Q1 (archetype) + Wave 2 (tech stack, integrations). Include schema sketch if DB is involved.
|
|
109
|
+
- **Section 7 (Risks & Dependencies):** From Wave 3 Q3 + Q5. Table format: Risk | Probability | Impact | Mitigation.
|
|
110
|
+
- **Section 8 (Post-Launch Plan):** From Wave 3 Q4. Monitoring, rollback, feedback channels.
|
|
111
|
+
3. Save PRD to `{plan-prd-location}/YYYY-MM-DD-{project-name}.md`.
|
|
112
|
+
4. Dispatch reviewer per `prd-reviewer-prompt.md`. Max 3 iterations. Surface unresolved issues to user.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Phase 3: Repo Setup
|
|
117
|
+
|
|
118
|
+
After PRD is approved by user:
|
|
119
|
+
|
|
120
|
+
### Step 1: Invoke setup-project.sh
|
|
121
|
+
|
|
122
|
+
Map gathered answers to script input choices:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# Resolve input choices dynamically from setup-project.sh:
|
|
126
|
+
# 1. Read $BASELINE_PATH/scripts/setup-project.sh
|
|
127
|
+
# 2. Parse menu/select/case statements to find choice→name mappings
|
|
128
|
+
# 3. Map user's selected archetype name → numeric choice for TYPE_CHOICE
|
|
129
|
+
# 4. Map user's selected style name → numeric choice for STYLE_CHOICE (if applicable)
|
|
130
|
+
# 5. Map user's selected group name → numeric choice for GROUP_CHOICE
|
|
131
|
+
# Do NOT hardcode numeric mappings — they must be derived from the script.
|
|
132
|
+
(
|
|
133
|
+
echo "$TYPE_CHOICE" # e.g., "1" for nextjs-saas
|
|
134
|
+
echo "$STYLE_CHOICE" # e.g., "1" for vega (only if nextjs-saas)
|
|
135
|
+
echo "$PROJECT_NAME" # e.g., "my-cool-app"
|
|
136
|
+
echo "$GROUP_CHOICE" # e.g., "1" for products
|
|
137
|
+
echo "y" # confirm
|
|
138
|
+
) | bash "$BASELINE_PATH/scripts/setup-project.sh"
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Step 2: Verify success
|
|
142
|
+
|
|
143
|
+
Check exit code. Confirm repo exists:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
glab repo view $GROUP/$PROJECT_NAME
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Step 3: Adjust visibility
|
|
150
|
+
|
|
151
|
+
If visibility is not `internal` (the default):
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
glab repo edit --visibility private # or --visibility public
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
For public/OSS, also configure GitHub mirror if applicable.
|
|
158
|
+
|
|
159
|
+
### Step 4: Set branch protection
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
glab api -X PUT projects/:id/protected_branches \
|
|
163
|
+
-f name=main \
|
|
164
|
+
-f push_access_level=30 \
|
|
165
|
+
-f merge_access_level=30
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Step 5: Populate CLAUDE.md (or AGENTS.md on Codex CLI)
|
|
169
|
+
|
|
170
|
+
Choose the project-instruction file appropriate to the platform that will operate the repo: `CLAUDE.md` for Claude Code / Cursor IDE, `AGENTS.md` for Codex CLI. Pick exactly one — never both. Add `## Session Config` section with fields derived from the planning session. Include at minimum:
|
|
171
|
+
|
|
172
|
+
- `plan-baseline-path`
|
|
173
|
+
- `plan-default-visibility`
|
|
174
|
+
- `plan-prd-location`
|
|
175
|
+
- Any project-specific config from gathered requirements
|
|
176
|
+
|
|
177
|
+
### Step 6: Commit PRD
|
|
178
|
+
|
|
179
|
+
Commit the PRD document to the new repo. Use a descriptive commit message:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
git add docs/prd/YYYY-MM-DD-{project-name}.md
|
|
183
|
+
git commit -m "docs: add project PRD from /plan new session"
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Step 7: Scaffold Steering Docs
|
|
187
|
+
|
|
188
|
+
Create `.orchestrator/steering/` with three stub documents populated from planning answers.
|
|
189
|
+
Steering docs give every future session stable product/tech/structure context without re-reading
|
|
190
|
+
CLAUDE.md from scratch (consumed by session-start Phase 2.6).
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
mkdir -p .orchestrator/steering
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**`product.md`** — mission + scope derived from Wave 1 (core decisions) and Wave 3 (MVP scope):
|
|
197
|
+
- Mission: one sentence from the project pitch in PRD Section 1
|
|
198
|
+
- Target users: from PRD Section 3 (personas)
|
|
199
|
+
- In-scope features: from PRD Section 4 In-Scope MVP list
|
|
200
|
+
- Out of scope: from PRD Section 4 Out-of-Scope list
|
|
201
|
+
|
|
202
|
+
**`tech.md`** — stack + commands + constraints derived from Wave 2 (tech decisions):
|
|
203
|
+
- Runtime stack: archetype + chosen tech stack + language/framework
|
|
204
|
+
- Key commands: test, lint, typecheck, install (from archetype defaults)
|
|
205
|
+
- Coverage thresholds: from archetype template if present, else leave as placeholder
|
|
206
|
+
- Constraints: archetype-specific pitfalls (fill in or leave `_TODO_` for follow-up)
|
|
207
|
+
|
|
208
|
+
**`structure.md`** — directory map + inventory from the scaffolded repo:
|
|
209
|
+
- Top-level directory map: run `ls -1` and annotate each directory with its purpose
|
|
210
|
+
- Inventory counts: fill in after `setup-project.sh` completes (skills/commands/agents as applicable)
|
|
211
|
+
- Key files: entry points, SSOT files, main config files
|
|
212
|
+
|
|
213
|
+
Write each file with real content from planning answers — never leave all three as pure stubs.
|
|
214
|
+
At minimum, `product.md` must contain the mission sentence and the In-Scope list from the PRD.
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
git add .orchestrator/steering/
|
|
218
|
+
git commit -m "chore: scaffold steering docs from /plan new session"
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Phase 4: Issue Creation
|
|
224
|
+
|
|
225
|
+
### Step 1: Derive Epic + sub-issues
|
|
226
|
+
|
|
227
|
+
Source: PRD Section 4 (Solution & Scope).
|
|
228
|
+
|
|
229
|
+
- **Epic title:** project name + brief description.
|
|
230
|
+
- **Sub-issues:** One per MVP feature/scope item from the In-Scope list. Each issue gets a clear title, description referencing the PRD, and acceptance criteria.
|
|
231
|
+
|
|
232
|
+
### Step 2: Auto-prioritize
|
|
233
|
+
|
|
234
|
+
Score each issue using three factors:
|
|
235
|
+
|
|
236
|
+
1. **Technical dependencies (highest weight):**
|
|
237
|
+
- DB schema before API, API before frontend, shared libs before consumers.
|
|
238
|
+
- Issues that block others → `priority:critical` or `priority:high`.
|
|
239
|
+
2. **Business value (medium weight):**
|
|
240
|
+
- Core MVP features → `priority:high`.
|
|
241
|
+
- Nice-to-haves → `priority:medium` or `priority:low`.
|
|
242
|
+
3. **Risk (tiebreaker):**
|
|
243
|
+
- Issues with identified risks from PRD Section 7 → bump up one level.
|
|
244
|
+
|
|
245
|
+
### Step 3: Apply labels
|
|
246
|
+
|
|
247
|
+
Use taxonomy from `setup-gitlab-groups.sh`:
|
|
248
|
+
|
|
249
|
+
**Priority mapping for VCS labels:**
|
|
250
|
+
| Categorization | VCS Label |
|
|
251
|
+
|---|---|
|
|
252
|
+
| P0 (critical path, blocking) | `priority:critical` |
|
|
253
|
+
| P1 (high impact, needed soon) | `priority:high` |
|
|
254
|
+
| P2 (medium, can wait) | `priority:medium` |
|
|
255
|
+
| P3 (nice-to-have) | `priority:low` |
|
|
256
|
+
|
|
257
|
+
Always use the `priority:<level>` format in VCS CLI commands, not P0/P1/P2/P3.
|
|
258
|
+
|
|
259
|
+
- **type:** feature, enhancement, bug, chore, docs
|
|
260
|
+
- **status:** `status:ready`
|
|
261
|
+
- **area:** relevant domain label
|
|
262
|
+
- **appetite:** 1w, 2w, 6w (matching MVP appetite)
|
|
263
|
+
- **mvp-phase:** phase number if phased delivery
|
|
264
|
+
|
|
265
|
+
### Step 4: Present for user confirmation
|
|
266
|
+
|
|
267
|
+
Use AskUserQuestion to present the full issue structure:
|
|
268
|
+
|
|
269
|
+
- Epic title and description
|
|
270
|
+
- Sub-issues with: title, priority, labels, dependency links
|
|
271
|
+
- User confirms, adjusts priority, removes issues, or adds missing ones
|
|
272
|
+
|
|
273
|
+
### Step 5: Create via glab
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
# Create epic
|
|
277
|
+
glab issue create --title "$EPIC_TITLE" --description "$EPIC_DESC" \
|
|
278
|
+
--label "type:epic,priority:$PRIORITY" --milestone "$MILESTONE"
|
|
279
|
+
|
|
280
|
+
# Create sub-issues
|
|
281
|
+
glab issue create --title "$ISSUE_TITLE" --description "$ISSUE_DESC" \
|
|
282
|
+
--label "type:feature,priority:$PRIORITY,status:ready,area:$AREA,appetite:$APPETITE"
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Step 6: Set dependency links
|
|
286
|
+
|
|
287
|
+
For issues with technical dependencies, set `blocks`/`is-blocked-by` relationships:
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
# Issue #2 is blocked by Issue #1
|
|
291
|
+
glab api -X POST projects/:id/issues/:issue2_iid/links \
|
|
292
|
+
-f target_project_id=:id \
|
|
293
|
+
-f target_issue_iid=:issue1_iid \
|
|
294
|
+
-f link_type=is_blocked_by
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
On HTTP 403 (non-Premium/Ultimate GitLab tier): fall back to `link_type=relates_to` + a body-ordering note — see gitlab-ops SKILL.md § "Issue Linking (`blocks` / `is_blocked_by`)".
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
# Mode: `/plan retro` — Data-Driven Retrospective
|
|
2
|
+
|
|
3
|
+
> Reference file for the plan skill. Read by SKILL.md when mode is `retro`.
|
|
4
|
+
> Covers: automatic data collection, structured reflection (1-2 waves), improvement artifacts.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Sub-Modes
|
|
9
|
+
|
|
10
|
+
| Invocation | Behavior |
|
|
11
|
+
|---|---|
|
|
12
|
+
| `/plan retro` (no arg) | Full retro flow — Phases 1 → 2 → 3 |
|
|
13
|
+
| `/plan retro vault-backfill` | Phases 1 → 1.6 (vault backfill), then exit — Phases 2-3 skipped |
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Phase 1: Data Collection (Automatic)
|
|
18
|
+
|
|
19
|
+
Gather ALL data before asking questions. No user input. Present a dashboard when done.
|
|
20
|
+
|
|
21
|
+
### 1.1 Session Metrics
|
|
22
|
+
|
|
23
|
+
Read `.orchestrator/metrics/sessions.jsonl`. Extract per entry:
|
|
24
|
+
|
|
25
|
+
- `session_type`, `started_at`, `completed_at`, `duration_seconds`
|
|
26
|
+
- `effectiveness.completion_rate`, `effectiveness.planned_issues`, `effectiveness.completed`, `effectiveness.carryover`
|
|
27
|
+
- `agent_summary.complete`, `agent_summary.partial`, `agent_summary.failed`, `agent_summary.spiral`
|
|
28
|
+
- `waves[].role`, `waves[].agent_count`, `waves[].files_changed`, `waves[].quality`
|
|
29
|
+
|
|
30
|
+
Compute aggregates:
|
|
31
|
+
- Total sessions, average duration, session type distribution (deep/feature/housekeeping)
|
|
32
|
+
- Average completion rate, total carryover rate (carryover / planned across all sessions)
|
|
33
|
+
- Agent success rate (complete / total dispatched), spiral rate (spiral / total)
|
|
34
|
+
- Most common wave roles, average files changed per wave
|
|
35
|
+
|
|
36
|
+
If the file does not exist or is empty, note "No session metrics available" and continue.
|
|
37
|
+
|
|
38
|
+
### 1.2 Git Analysis
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
git log --oneline -50
|
|
42
|
+
git log --format="%H %s" --since="2 weeks ago"
|
|
43
|
+
git log --format="%H" --since="2 weeks ago" | xargs -I{} git diff-tree --no-commit-id --name-only -r {} | sort | uniq -c | sort -rn | head -20
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Record: total commits (2 weeks), frequency per day, top 20 change hotspots with counts.
|
|
47
|
+
|
|
48
|
+
### 1.3 Open Issues
|
|
49
|
+
|
|
50
|
+
Query via VCS CLI (per gitlab-ops skill):
|
|
51
|
+
- **Overdue**: older than `stale-issue-days` without progress
|
|
52
|
+
- **Blocked**: `blocked` label or `is-blocked-by` links
|
|
53
|
+
- **Stale**: no activity in `stale-issue-days` days (default: 14)
|
|
54
|
+
|
|
55
|
+
### 1.4 Trend Analysis
|
|
56
|
+
|
|
57
|
+
Compare **last 5 sessions** vs **sessions 6-10**. Identify:
|
|
58
|
+
- Completion rate trend (improving/declining/stable, >/< 5% threshold)
|
|
59
|
+
- Session type mix shift
|
|
60
|
+
- Recurring agent failures (same role failing across sessions)
|
|
61
|
+
- Wave sizing patterns (agent count, wave count changing)
|
|
62
|
+
|
|
63
|
+
If fewer than 10 sessions exist, use all available data and note limited sample.
|
|
64
|
+
|
|
65
|
+
### 1.5 Data Summary Dashboard
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
## Data Summary
|
|
69
|
+
- Sessions: N total (X deep, Y feature, Z housekeeping)
|
|
70
|
+
- Completion: X% average (trend: up/down/stable)
|
|
71
|
+
- Agent health: X% success, Y% spiral rate
|
|
72
|
+
- Change hotspots: file1 (N changes), file2 (M changes)
|
|
73
|
+
- Open issues: N total (X overdue, Y blocked, Z stale)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Omit sections where no data was found. Show trends only with 5+ sessions of comparison data.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Phase 1.6: Vault Backfill (conditional sub-mode)
|
|
81
|
+
|
|
82
|
+
> **Activation**: This phase runs ONLY when the user invokes `/plan retro vault-backfill`.
|
|
83
|
+
> When invoked without the `vault-backfill` argument, skip this phase entirely and proceed to Phase 2.
|
|
84
|
+
|
|
85
|
+
### Workflow
|
|
86
|
+
|
|
87
|
+
**Step 1 — Read config**
|
|
88
|
+
|
|
89
|
+
Read Session Config to obtain the `vault-integration.gitlab-groups` list. If not set, prompt the user to supply `--groups <CSV>` directly, or abort with a message.
|
|
90
|
+
|
|
91
|
+
**Step 2 — Dry-run scan**
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
node scripts/vault-backfill.mjs --groups <CSV>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Captures stdout (per-repo JSON action records) and stderr (progress logging). Present the dry-run table to the user so they can review which repos would receive `.vault.yaml` stubs.
|
|
98
|
+
|
|
99
|
+
**Step 3 — User choice (AskUserQuestion)**
|
|
100
|
+
|
|
101
|
+
After the dry-run, present:
|
|
102
|
+
|
|
103
|
+
1. **Apply all changes** → re-invoke with `--apply` (optionally `--out-dir <path>` to override staging dir)
|
|
104
|
+
2. **Apply via headless manifest** → user provides manifest JSON path → invoke `--yes <path> --apply [--out-dir <path>]`
|
|
105
|
+
3. **Skip backfill — proceed to Phase 2** → no writes, continue retro
|
|
106
|
+
4. **Abort** → exit retro session
|
|
107
|
+
|
|
108
|
+
**Step 4 — Log results to retro narrative**
|
|
109
|
+
|
|
110
|
+
On apply, append per-repo results to Section 4 of the retro document so the artifact captures what was backfilled this session.
|
|
111
|
+
|
|
112
|
+
If `vault-backfill` sub-mode was used, exit after this phase — Phases 2 and 3 are skipped.
|
|
113
|
+
|
|
114
|
+
### CLI Flag Reference
|
|
115
|
+
|
|
116
|
+
| Flag | Default | Description |
|
|
117
|
+
|---|---|---|
|
|
118
|
+
| `--groups <CSV>` | — | Comma-separated GitLab group paths to scan |
|
|
119
|
+
| `--dry-run` | yes | Preview changes without writing (default behavior) |
|
|
120
|
+
| `--apply` | off | Write `.vault.yaml` files to staging directory; review and copy into repos manually |
|
|
121
|
+
| `--out-dir <path>` | `./.vault-backfill-staging` | Staging directory for `--apply` writes; files written to `<out-dir>/<group>/<repo>/.vault.yaml` |
|
|
122
|
+
| `--yes <manifest.json>` | — | Headless mode — skip all interactive prompts; manifest is authoritative scope (no live API check) |
|
|
123
|
+
| `--vault-dir <path>` | — | Override target directory for vault folder stubs |
|
|
124
|
+
| `--verbose` | off | Emit detailed per-repo logging to stderr |
|
|
125
|
+
|
|
126
|
+
> **Real apply writes to a staging directory.** User reviews the generated `.vault.yaml` files under `--out-dir`, then manually copies them into each repo (or scripts a follow-up push).
|
|
127
|
+
|
|
128
|
+
### Headless Manifest Example
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"version": 1,
|
|
133
|
+
"manifest_date": "YYYY-MM-DD",
|
|
134
|
+
"gitlab_groups": ["infrastructure"],
|
|
135
|
+
"repos": [
|
|
136
|
+
{"id": 42, "path": "infrastructure/auth-service", "slug": "auth-service", "tier": "active", "visibility": "internal"},
|
|
137
|
+
{"id": 57, "path": "infrastructure/api-gateway", "slug": "api-gateway", "tier": "top", "visibility": "internal"}
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Exit-Code Interpretation
|
|
143
|
+
|
|
144
|
+
| Code | Meaning | Retro action |
|
|
145
|
+
|---|---|---|
|
|
146
|
+
| 0 | Success — clean run (dry or apply, even if some repos skipped) | Log results, continue |
|
|
147
|
+
| 1 | Validation error — bad CLI flags, missing `--groups` AND no Session Config groups, malformed manifest, missing `glab` CLI | Show error message, offer to abort or reconfigure |
|
|
148
|
+
| 2 | Filesystem error — template not found, cannot write to `--out-dir` (EACCES, ENOSPC) | Show error, check `PROJECTS_BASELINE_DIR` / disk space, then retry |
|
|
149
|
+
| 3 | GitLab API error — auth failure, rate limit, or ALL groups failed to resolve | Prompt user to check `GITLAB_TOKEN` and group paths, then abort |
|
|
150
|
+
| 4 | Nothing to backfill — dry-run found no repos missing `.vault.yaml` (or all manifest entries marked `skip:true`) | Expected for Step 2 when fully synced; present table and proceed to Phase 2 |
|
|
151
|
+
|
|
152
|
+
### Cross-References
|
|
153
|
+
|
|
154
|
+
- Implementation: `scripts/vault-backfill.mjs` (C1)
|
|
155
|
+
- Related drift detector: `skills/discovery/probes/vault-staleness.mjs`
|
|
156
|
+
- Tracking issue: GitLab #241
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Phase 2: Reflection (1-2 Waves)
|
|
161
|
+
|
|
162
|
+
### Pre-Wave Research
|
|
163
|
+
|
|
164
|
+
Dispatch 3 Explore agents in parallel before Wave 1:
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
Agent({ subagent_type: "Explore", description: "Read session memory files",
|
|
168
|
+
prompt: "Read session memory files for retrospective context. On Claude Code: read session-*.md in ~/.claude/projects/<project>/memory/. On Codex CLI and Cursor IDE: skip this research — session memory is not available. Summarize: accomplishments, frustrations, scope changes, patterns." })
|
|
169
|
+
|
|
170
|
+
Agent({ subagent_type: "Explore", description: "Analyze git log patterns",
|
|
171
|
+
prompt: "Analyze git log (2 weeks). Identify: large commits (>20 files), hotfix patterns, reverts, frequency distribution." })
|
|
172
|
+
|
|
173
|
+
Agent({ subagent_type: "Explore", description: "Analyze open issues for themes",
|
|
174
|
+
prompt: "Read open issues from VCS. Categorize by type/area. Identify: recurring themes, repeated bugs, chronic carryover." })
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Synthesize findings into Wave 1 questions.
|
|
178
|
+
|
|
179
|
+
### Wave 1 — What Went Well / What Didn't (5 questions)
|
|
180
|
+
|
|
181
|
+
Present via 2 AskUserQuestion calls (3+2 split).
|
|
182
|
+
|
|
183
|
+
**Call 1:**
|
|
184
|
+
|
|
185
|
+
1. **Highlights** — Top 3 data-backed successes. Options: `Confirm (Recommended)` | `Reorder/adjust` | `Add my own`
|
|
186
|
+
2. **Blockers** — Top 3 data-backed problems with root causes. Options: `Confirm (Recommended)` | `Different root causes` | `Add blockers`
|
|
187
|
+
3. **Carryover** — Unfinished issues from recent sessions (from `effectiveness.carryover` + `[Carryover]` prefixed issues). Options: `All still relevant (Recommended)` | `Cancel some` | `Reprioritize`
|
|
188
|
+
|
|
189
|
+
**Call 2:**
|
|
190
|
+
|
|
191
|
+
4. **Process** — Session structure assessment based on observed wave/agent patterns. Options: `Process is working well (Recommended)` | `Adjust wave/agent sizing` | `Change session type mix` | `Other`
|
|
192
|
+
5. **Surprises** — Open-ended. Present data anomalies as starters. Options: `No surprises (Recommended)` | `Positive surprise` | `Negative surprise` | `Other`
|
|
193
|
+
|
|
194
|
+
### Wave 2 — Improvements (Conditional)
|
|
195
|
+
|
|
196
|
+
> Trigger if Wave 1 reveals: significant blockers (Q2), process issues (Q4 not "working well"), or user explicitly requests actions. Otherwise skip to Phase 3.
|
|
197
|
+
|
|
198
|
+
**Call 1:**
|
|
199
|
+
|
|
200
|
+
1. **Improvement actions** — Propose 3-5 concrete improvements. Each with: action, expected impact, effort. `multiSelect: true`. Example: `Add pre-commit type checks (Recommended)` — "Impact: reduce type errors ~50%. Effort: 1h."
|
|
201
|
+
2. **Priority** — Rank selected improvements. Present in recommended order, user reorders.
|
|
202
|
+
3. **Ownership** — When to tackle each. Options: `All in next session (Recommended)` | `Spread across sessions` | `Assign to specific sessions`
|
|
203
|
+
|
|
204
|
+
**Call 2:**
|
|
205
|
+
|
|
206
|
+
4. **Baseline changes** — Only if recurring issues (3+ sessions, same root cause). Propose specific template/script/rule changes. Options: `No changes needed (Recommended)` | `Apply suggested` | `Custom changes`
|
|
207
|
+
5. **Session Config changes** — Propose config adjustments (e.g., `agents-per-wave`, `discovery-exclude-paths`, `stale-issue-days`). Options: `No changes needed (Recommended)` | `Apply suggested` | `Custom changes`
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Phase 3: Artifacts
|
|
212
|
+
|
|
213
|
+
### 3.1 Retro Document
|
|
214
|
+
|
|
215
|
+
1. Read `retro-template.md` from this skill directory
|
|
216
|
+
2. Fill with Phase 1 data + Phase 2 answers
|
|
217
|
+
3. Metrics section: auto-generated from `sessions.jsonl` — no user input for numbers
|
|
218
|
+
4. Highlights/Improvement sections: reflect user-confirmed answers, not raw data
|
|
219
|
+
5. Save to `{plan-retro-location}/YYYY-MM-DD-retro.md` (`mkdir -p` if needed)
|
|
220
|
+
6. Present path to user for review via AskUserQuestion
|
|
221
|
+
|
|
222
|
+
Before Phase 3.2, satisfy the PRD Commit Gate — see `SKILL.md` § Phase 5.5 (HARD-GATE). The gate applies to the retro document too: do not create improvement issues referencing an uncommitted retro. Skip this gate only if Wave 2 was not triggered (no issues will be created — see below).
|
|
223
|
+
|
|
224
|
+
### 3.2 Improvement Issues
|
|
225
|
+
|
|
226
|
+
Create one VCS issue per agreed improvement from Wave 2:
|
|
227
|
+
- **Title**: `[Retro] <action description>`
|
|
228
|
+
- **Labels**: `type:enhancement`, `priority:<from ranking>`, `area:<inferred>`
|
|
229
|
+
- **Description**: action, impact, effort, link to retro document
|
|
230
|
+
- Create via VCS CLI (per gitlab-ops skill)
|
|
231
|
+
|
|
232
|
+
Skip if Wave 2 was not triggered.
|
|
233
|
+
|
|
234
|
+
If issues were created and a 5+-action Epic wrapper was used (see `SKILL.md` § 6.1), follow `SKILL.md` § 6.6 to backlink the Epic IID into the retro document via a separate follow-up commit.
|
|
235
|
+
|
|
236
|
+
### 3.3 Update Learnings
|
|
237
|
+
|
|
238
|
+
Append new patterns to `.orchestrator/metrics/learnings.jsonl`. Use the same JSONL schema as session-end writes (see session-end/SKILL.md for canonical field reference):
|
|
239
|
+
|
|
240
|
+
```json
|
|
241
|
+
{
|
|
242
|
+
"id": "<uuid-v4>",
|
|
243
|
+
"type": "fragile-file|effective-sizing|recurring-issue|scope-guidance|deviation-pattern",
|
|
244
|
+
"subject": "<what the learning is about>",
|
|
245
|
+
"insight": "<the actual learning>",
|
|
246
|
+
"evidence": "<supporting data>",
|
|
247
|
+
"confidence": 0.5,
|
|
248
|
+
"source_session": "retro-YYYY-MM-DD",
|
|
249
|
+
"created_at": "<ISO 8601>",
|
|
250
|
+
"expires_at": "<ISO 8601 + learning-expiry-days (default: 30)>"
|
|
251
|
+
}
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Typical retro learning types:
|
|
255
|
+
- `fragile-file` — hotspots correlating with failures or carryover
|
|
256
|
+
- `effective-sizing` — wave/agent configs producing best completion rates
|
|
257
|
+
- `recurring-issue` — problem patterns across multiple sessions
|
|
258
|
+
- `scope-guidance` — session scope calibration insights
|
|
259
|
+
- `deviation-pattern` — systematic plan deviations indicating planning gaps
|
|
260
|
+
|
|
261
|
+
Before writing, check existing entries for matching `type` + `subject`. Confirm (+0.15 confidence, cap 1.0) or contradict (-0.2). New learnings start at 0.5.
|
|
262
|
+
|
|
263
|
+
### 3.4 Optional Baseline Update
|
|
264
|
+
|
|
265
|
+
If Wave 2 Q4 identified baseline changes:
|
|
266
|
+
1. Propose specific modifications (file path, before/after content)
|
|
267
|
+
2. Present via AskUserQuestion — user MUST confirm before any baseline modification
|
|
268
|
+
3. Apply to `$BASELINE_PATH` (from Session Config `plan-baseline-path`)
|
|
269
|
+
4. If declined, skip entirely
|
|
270
|
+
|
|
271
|
+
Never modify baseline files without explicit user confirmation.
|