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,659 @@
|
|
|
1
|
+
# Bootstrap Deep Template
|
|
2
|
+
|
|
3
|
+
> Scaffold instructions for the Deep tier.
|
|
4
|
+
> Called from `skills/bootstrap/SKILL.md` Phase 3 when `CONFIRMED_TIER = deep`.
|
|
5
|
+
|
|
6
|
+
Deep tier is a strict superset of Standard tier. Execute all Standard-tier steps first, then the Deep-specific steps below.
|
|
7
|
+
|
|
8
|
+
## Step 1–8: Execute Standard Tier
|
|
9
|
+
|
|
10
|
+
Read and execute `skills/bootstrap/standard-template.md` Steps 1–8 in full. Do not skip any step.
|
|
11
|
+
|
|
12
|
+
**Exception to standard-template Step 6 (bootstrap.lock):** Do not write `.orchestrator/bootstrap.lock` yet. The lock is written with `tier: deep` at Deep Step 6.
|
|
13
|
+
|
|
14
|
+
**Exception to standard-template Step 7 (git commit):** Do not run the git commit in standard-template Step 7. All files (Fast + Standard + Deep) are committed together at Deep Step 7.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## VCS Detection
|
|
19
|
+
|
|
20
|
+
Before executing the Deep-specific steps, resolve the `VCS` value from Session Config:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
VCS=$(grep -m1 "^vcs:" "$REPO_ROOT/CLAUDE.md" 2>/dev/null | awk '{print $2}')
|
|
24
|
+
# Expected values: gitlab | github | none
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
If `VCS` is empty or `none`, skip CI pipeline, issue templates, MR/PR template, and branch protection. Log: "VCS not configured — CI and templates skipped."
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Step D1: CI Pipeline
|
|
32
|
+
|
|
33
|
+
Create the CI pipeline file. Mutually exclusive — create exactly one based on `VCS`.
|
|
34
|
+
|
|
35
|
+
### If `VCS = gitlab`: `.gitlab-ci.yml`
|
|
36
|
+
|
|
37
|
+
Write `.gitlab-ci.yml`:
|
|
38
|
+
|
|
39
|
+
```yaml
|
|
40
|
+
# .gitlab-ci.yml — generated by session-orchestrator bootstrap (deep)
|
|
41
|
+
|
|
42
|
+
stages:
|
|
43
|
+
- test
|
|
44
|
+
|
|
45
|
+
default:
|
|
46
|
+
image: node:22-alpine # replace with python:3.12-slim for python-uv archetype
|
|
47
|
+
|
|
48
|
+
variables:
|
|
49
|
+
FF_USE_FASTZIP: "true"
|
|
50
|
+
|
|
51
|
+
cache:
|
|
52
|
+
key: "${CI_COMMIT_REF_SLUG}"
|
|
53
|
+
paths:
|
|
54
|
+
- node_modules/ # replace with .venv/ for python-uv
|
|
55
|
+
|
|
56
|
+
test:
|
|
57
|
+
stage: test
|
|
58
|
+
before_script:
|
|
59
|
+
- corepack enable
|
|
60
|
+
- pnpm install --frozen-lockfile
|
|
61
|
+
# python-uv: replace above two lines with: pip install uv && uv sync
|
|
62
|
+
script:
|
|
63
|
+
- pnpm run build
|
|
64
|
+
- pnpm run lint
|
|
65
|
+
- pnpm run test
|
|
66
|
+
# python-uv: replace above with: uv run ruff check . && uv run pytest
|
|
67
|
+
coverage: '/Lines\s*:\s*(\d+\.?\d*)%/'
|
|
68
|
+
artifacts:
|
|
69
|
+
reports:
|
|
70
|
+
coverage_report:
|
|
71
|
+
coverage_format: cobertura
|
|
72
|
+
path: coverage/cobertura-coverage.xml
|
|
73
|
+
expire_in: 1 week
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Archetype adjustment:** If `CONFIRMED_ARCHETYPE = python-uv`, the LLM must substitute the Python variants of the `image`, `cache`, `before_script`, and `script` entries (comments in the template above mark the substitution points). If `CONFIRMED_ARCHETYPE = static-html`, replace `script` with a simple `echo "Static project — no build step."` and remove the `before_script`.
|
|
77
|
+
|
|
78
|
+
### If `VCS = github`: `.github/workflows/ci.yml`
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
mkdir -p "$REPO_ROOT/.github/workflows"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Write `.github/workflows/ci.yml`:
|
|
85
|
+
|
|
86
|
+
```yaml
|
|
87
|
+
# .github/workflows/ci.yml — generated by session-orchestrator bootstrap (deep)
|
|
88
|
+
|
|
89
|
+
name: CI
|
|
90
|
+
|
|
91
|
+
on:
|
|
92
|
+
push:
|
|
93
|
+
branches: [main]
|
|
94
|
+
pull_request:
|
|
95
|
+
branches: [main]
|
|
96
|
+
|
|
97
|
+
jobs:
|
|
98
|
+
test:
|
|
99
|
+
runs-on: ubuntu-latest
|
|
100
|
+
steps:
|
|
101
|
+
- uses: actions/checkout@v4
|
|
102
|
+
|
|
103
|
+
- uses: pnpm/action-setup@v4
|
|
104
|
+
with:
|
|
105
|
+
version: latest
|
|
106
|
+
# python-uv: replace above two steps with: uses: astral-sh/setup-uv@v5
|
|
107
|
+
|
|
108
|
+
- uses: actions/setup-node@v4
|
|
109
|
+
with:
|
|
110
|
+
node-version: "22"
|
|
111
|
+
cache: "pnpm"
|
|
112
|
+
# python-uv: replace above with: uses: actions/setup-python@v5 with python-version: "3.12"
|
|
113
|
+
|
|
114
|
+
- name: Install dependencies
|
|
115
|
+
run: pnpm install --frozen-lockfile
|
|
116
|
+
# python-uv: replace with: uv sync
|
|
117
|
+
|
|
118
|
+
- name: Build
|
|
119
|
+
run: pnpm run build
|
|
120
|
+
# python-uv: remove this step
|
|
121
|
+
|
|
122
|
+
- name: Lint
|
|
123
|
+
run: pnpm run lint
|
|
124
|
+
# python-uv: replace with: uv run ruff check .
|
|
125
|
+
|
|
126
|
+
- name: Test
|
|
127
|
+
run: pnpm run test
|
|
128
|
+
# python-uv: replace with: uv run pytest
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Archetype adjustment:** Same rules as the GitLab template above. Apply the Python/static-html variants where indicated by comments.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Step D2: CODEOWNERS
|
|
136
|
+
|
|
137
|
+
Detect the repo owner from git config or Session Config:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
OWNER=$(git config user.email 2>/dev/null || echo "PLACEHOLDER_OWNER")
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### If `VCS = gitlab`
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
mkdir -p "$REPO_ROOT"
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Write `CODEOWNERS`:
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
# CODEOWNERS — generated by session-orchestrator bootstrap (deep)
|
|
153
|
+
# Format: <pattern> <@user-or-group>
|
|
154
|
+
# GitLab docs: https://docs.gitlab.com/ee/user/project/codeowners/
|
|
155
|
+
|
|
156
|
+
* @<OWNER or PLACEHOLDER_OWNER>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### If `VCS = github`
|
|
160
|
+
|
|
161
|
+
Write `.github/CODEOWNERS`:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
mkdir -p "$REPO_ROOT/.github"
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
# CODEOWNERS — generated by session-orchestrator bootstrap (deep)
|
|
169
|
+
# Format: <pattern> @<github-username>
|
|
170
|
+
# GitHub docs: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
|
|
171
|
+
|
|
172
|
+
* @<OWNER or PLACEHOLDER_OWNER>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Replace `<OWNER or PLACEHOLDER_OWNER>` with the detected `git config user.email` or the literal string `PLACEHOLDER_OWNER` if detection fails. Add an inline comment: `# Replace PLACEHOLDER_OWNER with your GitLab/GitHub username`.
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Step D3: CHANGELOG.md
|
|
180
|
+
|
|
181
|
+
Write `CHANGELOG.md` in the repo root:
|
|
182
|
+
|
|
183
|
+
```markdown
|
|
184
|
+
# Changelog
|
|
185
|
+
|
|
186
|
+
All notable changes to this project will be documented in this file.
|
|
187
|
+
|
|
188
|
+
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
189
|
+
|
|
190
|
+
## [Unreleased]
|
|
191
|
+
|
|
192
|
+
## [0.1.0] — <YYYY-MM-DD>
|
|
193
|
+
|
|
194
|
+
### Added
|
|
195
|
+
|
|
196
|
+
- Initial bootstrap via /plan (deep)
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Replace `<YYYY-MM-DD>` with today's date in ISO 8601 format (e.g., `2026-04-16`).
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Step D4: Issue Templates
|
|
204
|
+
|
|
205
|
+
### If `VCS = gitlab`
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
mkdir -p "$REPO_ROOT/.gitlab/issue_templates"
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Write `.gitlab/issue_templates/Bug.md`:
|
|
212
|
+
|
|
213
|
+
```markdown
|
|
214
|
+
## Summary
|
|
215
|
+
|
|
216
|
+
<!-- One-sentence description of the bug -->
|
|
217
|
+
|
|
218
|
+
## Steps to Reproduce
|
|
219
|
+
|
|
220
|
+
1.
|
|
221
|
+
2.
|
|
222
|
+
3.
|
|
223
|
+
|
|
224
|
+
## Expected Behaviour
|
|
225
|
+
|
|
226
|
+
<!-- What should happen -->
|
|
227
|
+
|
|
228
|
+
## Actual Behaviour
|
|
229
|
+
|
|
230
|
+
<!-- What happens instead -->
|
|
231
|
+
|
|
232
|
+
## Environment
|
|
233
|
+
|
|
234
|
+
- Version / branch:
|
|
235
|
+
- OS / platform:
|
|
236
|
+
|
|
237
|
+
## Additional Context
|
|
238
|
+
|
|
239
|
+
<!-- Screenshots, logs, related issues -->
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Write `.gitlab/issue_templates/Feature.md`:
|
|
243
|
+
|
|
244
|
+
```markdown
|
|
245
|
+
## Summary
|
|
246
|
+
|
|
247
|
+
<!-- One-sentence description of the feature request -->
|
|
248
|
+
|
|
249
|
+
## Motivation
|
|
250
|
+
|
|
251
|
+
<!-- Why is this feature valuable? Who benefits? -->
|
|
252
|
+
|
|
253
|
+
## Proposed Solution
|
|
254
|
+
|
|
255
|
+
<!-- Describe how you envision the implementation -->
|
|
256
|
+
|
|
257
|
+
## Acceptance Criteria
|
|
258
|
+
|
|
259
|
+
- [ ]
|
|
260
|
+
- [ ]
|
|
261
|
+
|
|
262
|
+
## Additional Context
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### If `VCS = github`
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
mkdir -p "$REPO_ROOT/.github/ISSUE_TEMPLATE"
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Write `.github/ISSUE_TEMPLATE/bug_report.md`:
|
|
272
|
+
|
|
273
|
+
```markdown
|
|
274
|
+
---
|
|
275
|
+
name: Bug Report
|
|
276
|
+
about: Report a bug or unexpected behaviour
|
|
277
|
+
labels: bug
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Summary
|
|
281
|
+
|
|
282
|
+
<!-- One-sentence description of the bug -->
|
|
283
|
+
|
|
284
|
+
## Steps to Reproduce
|
|
285
|
+
|
|
286
|
+
1.
|
|
287
|
+
2.
|
|
288
|
+
3.
|
|
289
|
+
|
|
290
|
+
## Expected Behaviour
|
|
291
|
+
|
|
292
|
+
## Actual Behaviour
|
|
293
|
+
|
|
294
|
+
## Environment
|
|
295
|
+
|
|
296
|
+
- Version / branch:
|
|
297
|
+
- OS / platform:
|
|
298
|
+
|
|
299
|
+
## Additional Context
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Write `.github/ISSUE_TEMPLATE/feature_request.md`:
|
|
303
|
+
|
|
304
|
+
```markdown
|
|
305
|
+
---
|
|
306
|
+
name: Feature Request
|
|
307
|
+
about: Propose a new feature or improvement
|
|
308
|
+
labels: enhancement
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## Summary
|
|
312
|
+
|
|
313
|
+
<!-- One-sentence description of the feature request -->
|
|
314
|
+
|
|
315
|
+
## Motivation
|
|
316
|
+
|
|
317
|
+
## Proposed Solution
|
|
318
|
+
|
|
319
|
+
## Acceptance Criteria
|
|
320
|
+
|
|
321
|
+
- [ ]
|
|
322
|
+
- [ ]
|
|
323
|
+
|
|
324
|
+
## Additional Context
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## Step D5: MR / PR Template
|
|
330
|
+
|
|
331
|
+
### If `VCS = gitlab`
|
|
332
|
+
|
|
333
|
+
```bash
|
|
334
|
+
mkdir -p "$REPO_ROOT/.gitlab/merge_request_templates"
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
Write `.gitlab/merge_request_templates/Default.md`:
|
|
338
|
+
|
|
339
|
+
```markdown
|
|
340
|
+
## Summary
|
|
341
|
+
|
|
342
|
+
<!-- What does this MR do and why? -->
|
|
343
|
+
|
|
344
|
+
## Changes
|
|
345
|
+
|
|
346
|
+
-
|
|
347
|
+
-
|
|
348
|
+
|
|
349
|
+
## Test Plan
|
|
350
|
+
|
|
351
|
+
- [ ] Existing tests pass (`pnpm test` / `uv run pytest`)
|
|
352
|
+
- [ ] New tests added where appropriate
|
|
353
|
+
- [ ] Manually tested
|
|
354
|
+
|
|
355
|
+
## Related Issues
|
|
356
|
+
|
|
357
|
+
Closes #
|
|
358
|
+
|
|
359
|
+
## Checklist
|
|
360
|
+
|
|
361
|
+
- [ ] Code follows project conventions
|
|
362
|
+
- [ ] No secrets or credentials committed
|
|
363
|
+
- [ ] CHANGELOG updated if user-facing change
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### If `VCS = github`
|
|
367
|
+
|
|
368
|
+
Write `.github/pull_request_template.md`:
|
|
369
|
+
|
|
370
|
+
```markdown
|
|
371
|
+
## Summary
|
|
372
|
+
|
|
373
|
+
<!-- What does this PR do and why? -->
|
|
374
|
+
|
|
375
|
+
## Changes
|
|
376
|
+
|
|
377
|
+
-
|
|
378
|
+
-
|
|
379
|
+
|
|
380
|
+
## Test Plan
|
|
381
|
+
|
|
382
|
+
- [ ] Existing tests pass (`pnpm test` / `uv run pytest`)
|
|
383
|
+
- [ ] New tests added where appropriate
|
|
384
|
+
- [ ] Manually tested
|
|
385
|
+
|
|
386
|
+
## Related Issues
|
|
387
|
+
|
|
388
|
+
Closes #
|
|
389
|
+
|
|
390
|
+
## Checklist
|
|
391
|
+
|
|
392
|
+
- [ ] Code follows project conventions
|
|
393
|
+
- [ ] No secrets or credentials committed
|
|
394
|
+
- [ ] CHANGELOG updated if user-facing change
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## Step D5.5: GitHub Mirror Remote
|
|
400
|
+
|
|
401
|
+
Establishes the `github` remote convention at repo-creation time, so that later mirror-push (session-end §4.4) and mirror-drift auditing (repo-audit `github-mirror-sync`, see below) have something to work against from day one. Skip this step if `VCS = none`.
|
|
402
|
+
|
|
403
|
+
Run this step when either condition holds:
|
|
404
|
+
- `VCS = gitlab` (GitHub is the natural mirror target for a GitLab-primary repo), OR
|
|
405
|
+
- `mirror: github` is already set in Session Config (an explicit mirror signal, regardless of primary VCS).
|
|
406
|
+
|
|
407
|
+
Otherwise (`VCS = github` with no mirror signal), skip — the repo's primary remote already IS GitHub, so no mirror is needed.
|
|
408
|
+
|
|
409
|
+
```bash
|
|
410
|
+
if ! git remote | grep -q '^github$'; then
|
|
411
|
+
git remote add github https://github.com/<org>/<repo>.git
|
|
412
|
+
echo "GitHub mirror remote added: github -> https://github.com/<org>/<repo>.git"
|
|
413
|
+
else
|
|
414
|
+
echo "GitHub mirror remote already present — skipping."
|
|
415
|
+
fi
|
|
416
|
+
|
|
417
|
+
# Best-effort: establish github/HEAD so repo-audit's github-mirror-sync check can
|
|
418
|
+
# resolve the mirror's default branch. No-op while the mirror is still empty (the
|
|
419
|
+
# GitHub repo may not exist yet); becomes effective once the mirror has content.
|
|
420
|
+
# Never abort bootstrap on failure.
|
|
421
|
+
git fetch github --quiet 2>/dev/null || true
|
|
422
|
+
git remote set-head github --auto 2>/dev/null || true
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
Replace `<org>/<repo>` with the actual mirror's org/repo slug before running — this step only records the remote pointer, it does not create the GitHub repo itself (that is an out-of-band operator action, e.g. `gh repo create`). No push happens here: the first (and every subsequent) `git push github HEAD` happens at session-end Step 4.4 (`skills/session-end/SKILL.md` § "4.4 GitHub Mirror"), gated on the same `mirror: github` Session Config key. If the remote add fails (e.g. `github` already points elsewhere), log and continue — do not abort bootstrap. The `git fetch`/`set-head` lines are best-effort: until the mirror actually has commits, `github/HEAD` will not resolve and the `github-mirror-sync` audit check simply skips-as-pass (it never false-fails). The `github-mirror-sync` check also falls back to the local default branch, so it works after the first push even if `set-head` was skipped.
|
|
426
|
+
|
|
427
|
+
**See also:** repo-audit's `github-mirror-sync` check (`scripts/lib/harness-audit/categories/category6.mjs`, Category 6 / Config Hygiene) WARNS post-hoc when local commits have not reached this `github` remote. This step establishes the convention; the audit check is its enforcement counterpart.
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## Step D6: Branch Protection
|
|
432
|
+
|
|
433
|
+
Invoke exactly ONE API call to set branch protection on `main`. Skip this step if `VCS = none`.
|
|
434
|
+
|
|
435
|
+
### If `VCS = gitlab`
|
|
436
|
+
|
|
437
|
+
Detect the project path from the git remote:
|
|
438
|
+
|
|
439
|
+
```bash
|
|
440
|
+
REMOTE_URL=$(git remote get-url origin 2>/dev/null)
|
|
441
|
+
# Extract namespace/project from URL, e.g. "mygroup/myrepo"
|
|
442
|
+
PROJECT_PATH=$(echo "$REMOTE_URL" | sed 's|.*gitlab[^/]*/||; s|\.git$||')
|
|
443
|
+
ENCODED_PATH=$(python3 -c "import sys,urllib.parse; print(urllib.parse.quote(sys.argv[1],safe=''))" "$PROJECT_PATH" 2>/dev/null || \
|
|
444
|
+
node -e "process.stdout.write(encodeURIComponent(process.argv[1]))" "$PROJECT_PATH" 2>/dev/null || \
|
|
445
|
+
echo "$PROJECT_PATH" | sed 's|/|%2F|g')
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
```bash
|
|
449
|
+
_API_ERR=$(mktemp)
|
|
450
|
+
if glab api "projects/$ENCODED_PATH/protected_branches" \
|
|
451
|
+
--method POST \
|
|
452
|
+
-f name="main" \
|
|
453
|
+
-f push_access_level=40 \
|
|
454
|
+
-f merge_access_level=40 \
|
|
455
|
+
-f allow_force_push=false >/dev/null 2>"$_API_ERR"; then
|
|
456
|
+
echo "Branch protection on main: OK"
|
|
457
|
+
else
|
|
458
|
+
echo "Branch protection on main: failed (branch may already be protected or insufficient permissions)"
|
|
459
|
+
fi
|
|
460
|
+
rm -f "$_API_ERR"
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
Access level 40 = Maintainer. If the call fails (e.g., branch already protected, insufficient permissions), log the structured message above and continue — do not abort bootstrap. Raw API response bodies are never echoed to avoid leaking token or header information.
|
|
464
|
+
|
|
465
|
+
### If `VCS = github`
|
|
466
|
+
|
|
467
|
+
```bash
|
|
468
|
+
REPO_SLUG=$(git remote get-url origin 2>/dev/null | sed 's|.*github\.com[:/]||; s|\.git$||')
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
```bash
|
|
472
|
+
_API_ERR=$(mktemp)
|
|
473
|
+
if gh api "repos/$REPO_SLUG/branches/main/protection" \
|
|
474
|
+
--method PUT \
|
|
475
|
+
--field required_status_checks=null \
|
|
476
|
+
--field enforce_admins=true \
|
|
477
|
+
--field required_pull_request_reviews='{"required_approving_review_count":1}' \
|
|
478
|
+
--field restrictions=null >/dev/null 2>"$_API_ERR"; then
|
|
479
|
+
echo "Branch protection on main: OK"
|
|
480
|
+
else
|
|
481
|
+
echo "Branch protection on main: failed (branch may already be protected or insufficient permissions)"
|
|
482
|
+
fi
|
|
483
|
+
rm -f "$_API_ERR"
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
If the call fails, log the structured message above and continue. Raw API response bodies are never echoed to avoid leaking token or header information.
|
|
487
|
+
|
|
488
|
+
---
|
|
489
|
+
|
|
490
|
+
<!-- @include _shared-template.md#parallel-sessions-rule -->
|
|
491
|
+
## Step 3a: Install Parallel-Sessions Rule
|
|
492
|
+
|
|
493
|
+
Canonical implementation in [`_shared-template.md#parallel-sessions-rule`](_shared-template.md).
|
|
494
|
+
|
|
495
|
+
Write the vendored rule from `$PLUGIN_ROOT/templates/_shared/rules/parallel-sessions.md` to
|
|
496
|
+
`$REPO_ROOT/.claude/rules/parallel-sessions.md` (idempotent: missing→create, identical→skip,
|
|
497
|
+
differs→overwrite). The shared partial also runs
|
|
498
|
+
`cp "$PLUGIN_ROOT/templates/_shared/loop.md" "$REPO_ROOT/.claude/loop.md"` so bare `/loop` gets a
|
|
499
|
+
repo-aware maintenance prompt. See shared partial for full shell command. Issues #155, #633.
|
|
500
|
+
|
|
501
|
+
Note: Runs before D99. If D99 (via inherited S99) fetches a newer `parallel-sessions.md` from
|
|
502
|
+
the baseline, the baseline version wins (acceptable — S99 is canonical).
|
|
503
|
+
|
|
504
|
+
## Step 3b: Initialize .orchestrator/metrics/ (Deep) (#185)
|
|
505
|
+
|
|
506
|
+
Deep tier creates both learnings and sessions metrics plus a schema-linking README:
|
|
507
|
+
|
|
508
|
+
```bash
|
|
509
|
+
mkdir -p "$REPO_ROOT/.orchestrator/metrics"
|
|
510
|
+
[[ -f "$REPO_ROOT/.orchestrator/metrics/learnings.jsonl" ]] || \
|
|
511
|
+
: > "$REPO_ROOT/.orchestrator/metrics/learnings.jsonl"
|
|
512
|
+
[[ -f "$REPO_ROOT/.orchestrator/metrics/sessions.jsonl" ]] || \
|
|
513
|
+
: > "$REPO_ROOT/.orchestrator/metrics/sessions.jsonl"
|
|
514
|
+
|
|
515
|
+
cat > "$REPO_ROOT/.orchestrator/metrics/README.md" <<'README'
|
|
516
|
+
# Metrics
|
|
517
|
+
|
|
518
|
+
- `learnings.jsonl` — session-scoped learnings (confidence-weighted patterns).
|
|
519
|
+
Managed by the `/evolve` skill.
|
|
520
|
+
- `sessions.jsonl` — per-session execution summaries.
|
|
521
|
+
Written by `/close` via session-end.
|
|
522
|
+
|
|
523
|
+
Schema: https://github.com/Kanevry/session-orchestrator
|
|
524
|
+
(see skills/evolve/SKILL.md and skills/session-end/).
|
|
525
|
+
|
|
526
|
+
**Do NOT gitignore** — these files are project artifacts intended to persist
|
|
527
|
+
across sessions and contributors.
|
|
528
|
+
README
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
**Idempotent.** Existing files are preserved.
|
|
532
|
+
|
|
533
|
+
**Gitignore guidance:** same as Standard — `.orchestrator/metrics/*.jsonl` MUST remain tracked.
|
|
534
|
+
|
|
535
|
+
> Note: Standard tier (Step 3b) only creates `learnings.jsonl`. Deep adds `sessions.jsonl` + the `README.md`. This step is NOT a shared partial because the Deep variant is a superset, not identical.
|
|
536
|
+
|
|
537
|
+
<!-- @include _shared-template.md#baseline-fetch -->
|
|
538
|
+
## Step D99: (Optional) Baseline Fetch — Inherited from Standard
|
|
539
|
+
|
|
540
|
+
Canonical implementation in [`_shared-template.md#baseline-fetch`](_shared-template.md).
|
|
541
|
+
|
|
542
|
+
Standard-template Step S99 already executed as part of "Step 1–8: Execute Standard Tier" above.
|
|
543
|
+
No additional fetch action is needed here.
|
|
544
|
+
|
|
545
|
+
If S99 ran successfully, `.claude/rules/*.md` and `.claude/.baseline-fetch.lock` are already written
|
|
546
|
+
to `$REPO_ROOT`. These files are included in the Deep commit at Step D8 via the `.claude/` entry
|
|
547
|
+
in `BOOTSTRAP_FILES`. If S99 was skipped, rules arrive via the legacy Clank weekly sync MR path.
|
|
548
|
+
|
|
549
|
+
---
|
|
550
|
+
|
|
551
|
+
<!-- @include _shared-template.md#agents-scaffold -->
|
|
552
|
+
## Step D6.5: .claude/agents/ Scaffold (#189)
|
|
553
|
+
|
|
554
|
+
Canonical implementation in [`_shared-template.md#agents-scaffold`](_shared-template.md).
|
|
555
|
+
|
|
556
|
+
Copy 3 opinionated agent templates (`project-discovery`, `project-code-review`,
|
|
557
|
+
`project-quality-gate`) into `$REPO_ROOT/.claude/agents/`. Idempotent: skip existing files.
|
|
558
|
+
See shared partial for full shell command. Issue #189.
|
|
559
|
+
|
|
560
|
+
---
|
|
561
|
+
|
|
562
|
+
<!-- @include _shared-template.md#vault-registration -->
|
|
563
|
+
## Step D6.6: Vault-Registration Prompt (Product Repos) (#190)
|
|
564
|
+
|
|
565
|
+
Canonical implementation in [`_shared-template.md#vault-registration`](_shared-template.md).
|
|
566
|
+
|
|
567
|
+
Mirrors standard-template Step 5.5. If standard already ran it and the user accepted,
|
|
568
|
+
`hasVaultConfig` returns true and this step is a no-op. See shared partial for full detection
|
|
569
|
+
script, prompt text, YAML block, and examples. Issue #190.
|
|
570
|
+
|
|
571
|
+
---
|
|
572
|
+
|
|
573
|
+
## Step D7: Write bootstrap.lock (Deep)
|
|
574
|
+
|
|
575
|
+
Write `.orchestrator/bootstrap.lock` **atomically** (mktemp + mv prevents a corrupt lock if the
|
|
576
|
+
process is interrupted mid-write):
|
|
577
|
+
|
|
578
|
+
```bash
|
|
579
|
+
_LOCK_TMP=$(mktemp "$REPO_ROOT/.orchestrator/bootstrap.lock.XXXXXX")
|
|
580
|
+
cat > "$_LOCK_TMP" << LOCK
|
|
581
|
+
# .orchestrator/bootstrap.lock
|
|
582
|
+
version: 1
|
|
583
|
+
tier: deep
|
|
584
|
+
archetype: <CONFIRMED_ARCHETYPE>
|
|
585
|
+
timestamp: <current ISO 8601 UTC — e.g., 2026-04-16T09:30:00Z>
|
|
586
|
+
source: <claude-init | plugin-template | projects-baseline>
|
|
587
|
+
plugin-version: <session-orchestrator plugin version — read from $PLUGIN_ROOT/package.json .version field>
|
|
588
|
+
bootstrapped-at: <current ISO 8601 UTC — same value as timestamp; distinct field for age-validation probe>
|
|
589
|
+
LOCK
|
|
590
|
+
mv "$_LOCK_TMP" "$REPO_ROOT/.orchestrator/bootstrap.lock"
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
Set `source` using the same logic as fast-template Step 5.
|
|
594
|
+
|
|
595
|
+
---
|
|
596
|
+
|
|
597
|
+
## Step D8: Git Commit
|
|
598
|
+
|
|
599
|
+
Stage all created files and commit:
|
|
600
|
+
|
|
601
|
+
```bash
|
|
602
|
+
cd "$REPO_ROOT"
|
|
603
|
+
BOOTSTRAP_FILES=(
|
|
604
|
+
CLAUDE.md AGENTS.md .gitignore README.md .orchestrator/bootstrap.lock
|
|
605
|
+
.orchestrator/policy/quality-gates.json
|
|
606
|
+
package.json pyproject.toml tsconfig.json eslint.config.mjs .prettierrc
|
|
607
|
+
.editorconfig src/ tests/ CHANGELOG.md CODEOWNERS
|
|
608
|
+
.gitlab/ .github/ .claude/
|
|
609
|
+
)
|
|
610
|
+
# Add only the files bootstrap created — no sweeping -u/-A to avoid catching pre-existing files
|
|
611
|
+
for _f in "${BOOTSTRAP_FILES[@]}"; do
|
|
612
|
+
[[ -e "$_f" ]] && git add -- "$_f"
|
|
613
|
+
done
|
|
614
|
+
git commit -m "chore: bootstrap (deep)"
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
The commit message is fixed — do not vary it.
|
|
618
|
+
|
|
619
|
+
---
|
|
620
|
+
|
|
621
|
+
## Step D9: Report Created Files
|
|
622
|
+
|
|
623
|
+
After the commit succeeds, output a concise summary of all files created (Fast + Standard + Deep):
|
|
624
|
+
|
|
625
|
+
```
|
|
626
|
+
Bootstrap (deep, <archetype>) complete. Created:
|
|
627
|
+
CLAUDE.md (or AGENTS.md) — Session Config
|
|
628
|
+
.gitignore — stack-appropriate rules
|
|
629
|
+
README.md — expanded with Installation, Usage, Dev
|
|
630
|
+
.editorconfig — consistent editor settings
|
|
631
|
+
<manifest> — package.json / pyproject.toml
|
|
632
|
+
<tsconfig.json> — if JS/TS archetype
|
|
633
|
+
<eslint.config.mjs + .prettierrc> — if JS/TS archetype
|
|
634
|
+
<tests/sanity.test.ts or equiv> — sanity test
|
|
635
|
+
.claude/rules/parallel-sessions.md — vendored PSA rule (issue #155)
|
|
636
|
+
.claude/STATE.md — idle placeholder (issue #184)
|
|
637
|
+
CHANGELOG.md — initial entry
|
|
638
|
+
CODEOWNERS (or .github/CODEOWNERS) — placeholder owner
|
|
639
|
+
<.gitlab-ci.yml or .github/workflows/ci.yml> — CI pipeline
|
|
640
|
+
<issue templates> — Bug + Feature templates
|
|
641
|
+
<MR/PR template> — Default merge/pull request template
|
|
642
|
+
.orchestrator/bootstrap.lock — version: 1, tier: deep
|
|
643
|
+
.orchestrator/policy/quality-gates.json — test/typecheck/lint commands (issue #183)
|
|
644
|
+
Branch protection on main — via glab/gh api (result logged above)
|
|
645
|
+
Committed: "chore: bootstrap (deep)"
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
Then return control to `SKILL.md` Phase 5.
|
|
649
|
+
|
|
650
|
+
---
|
|
651
|
+
|
|
652
|
+
## Not in Deep
|
|
653
|
+
|
|
654
|
+
The following are intentionally excluded from the Deep tier per the YAGNI-trim in the spec. They add value but are not in the 10-minute-Grundstruktur scope:
|
|
655
|
+
|
|
656
|
+
- **Renovate / Dependabot** — opt-in via `plan-baseline-path` templates or manual add
|
|
657
|
+
- **`docker-compose.yml`** — archetype concern, not tier concern; bring it when the feature needs it
|
|
658
|
+
- **Vault-Sync integration** — Meta-Vault is a separate system, integrated via its own skill
|
|
659
|
+
- **Pre-commit hooks / husky / lefthook** — personal-preference layer; opt-in manually
|