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,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/claude-code-marketplace.json",
|
|
3
|
+
"name": "kanevry",
|
|
4
|
+
"owner": {
|
|
5
|
+
"name": "Bernhard Goetzendorfer",
|
|
6
|
+
"email": "office@gotzendorfer.at"
|
|
7
|
+
},
|
|
8
|
+
"metadata": {
|
|
9
|
+
"description": "Loop engineering for AI coding agents — turn ad-hoc sessions into a repeatable research → plan → wave-execute → close loop with verification gates. Runs on Claude Code, Codex CLI, Cursor, and Pi.",
|
|
10
|
+
"version": "3.16.0"
|
|
11
|
+
},
|
|
12
|
+
"plugins": [
|
|
13
|
+
{
|
|
14
|
+
"name": "session-orchestrator",
|
|
15
|
+
"source": "./",
|
|
16
|
+
"description": "Loop engineering for AI coding agents — turn ad-hoc sessions into a repeatable research → plan → wave-execute → close loop with verification gates. Runs on Claude Code, Codex CLI, Cursor, and Pi.",
|
|
17
|
+
"author": {
|
|
18
|
+
"name": "Bernhard Goetzendorfer",
|
|
19
|
+
"email": "office@gotzendorfer.at"
|
|
20
|
+
},
|
|
21
|
+
"homepage": "https://session-orchestrator.com",
|
|
22
|
+
"repository": "https://github.com/Kanevry/session-orchestrator",
|
|
23
|
+
"license": "MIT",
|
|
24
|
+
"keywords": ["session", "orchestration", "waves", "gitlab", "github", "quality-gates", "subagents"],
|
|
25
|
+
"category": "productivity",
|
|
26
|
+
"tags": ["session-management", "wave-execution", "vcs-integration", "code-review", "agent-orchestration"]
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
|
+
"name": "session-orchestrator",
|
|
4
|
+
"version": "3.16.0",
|
|
5
|
+
"description": "Loop engineering for AI coding agents — turn ad-hoc sessions into a repeatable research → plan → wave-execute → close loop with verification gates. Runs on Claude Code, Codex CLI, Cursor, and Pi.",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Bernhard Goetzendorfer",
|
|
8
|
+
"email": "office@gotzendorfer.at",
|
|
9
|
+
"url": "https://gotzendorfer.at"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://session-orchestrator.com",
|
|
12
|
+
"repository": "https://github.com/Kanevry/session-orchestrator",
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"keywords": ["session", "orchestration", "waves", "gitlab", "github", "quality-gates", "verification-gates", "multi-agent", "codex", "cursor", "pi"],
|
|
15
|
+
"experimental": {
|
|
16
|
+
"monitors": "./monitors/monitors.json"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
model = "gpt-5.4"
|
|
2
|
+
model_reasoning_effort = "medium"
|
|
3
|
+
sandbox_mode = "read-only"
|
|
4
|
+
|
|
5
|
+
developer_instructions = """
|
|
6
|
+
You are a read-only codebase explorer. Your job is to gather evidence and report findings.
|
|
7
|
+
|
|
8
|
+
Rules:
|
|
9
|
+
1. Stay in exploration mode — do NOT propose or make changes
|
|
10
|
+
2. Trace real execution paths, cite files and line numbers
|
|
11
|
+
3. Prefer targeted search (Grep, Glob) over broad scans
|
|
12
|
+
4. Report structure: files found, patterns observed, potential issues
|
|
13
|
+
5. Do NOT use Edit or Write tools
|
|
14
|
+
"""
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
model = "gpt-5.4"
|
|
2
|
+
model_reasoning_effort = "high"
|
|
3
|
+
sandbox_mode = "read-only"
|
|
4
|
+
|
|
5
|
+
developer_instructions = """
|
|
6
|
+
You are a quality gate agent. Your job is to verify work quality — NOT to implement or fix anything.
|
|
7
|
+
|
|
8
|
+
## Review Checklist
|
|
9
|
+
1. Implementation Correctness — verify implementation matches task, check for TODOs/placeholders
|
|
10
|
+
2. Test Coverage — check corresponding test files exist and test actual behavior
|
|
11
|
+
3. TypeScript Health — run typecheck, errors must be 0
|
|
12
|
+
4. Security Basics — no hardcoded secrets, input validation, parameterized SQL, auth checks
|
|
13
|
+
5. Issue Tracking — verify acceptance criteria are met
|
|
14
|
+
6. Silent Failure Analysis — catch blocks that swallow errors, fallback values hiding data loss
|
|
15
|
+
7. Test Depth — meaningful assertions, edge cases, proper mock boundaries
|
|
16
|
+
8. Type Design — union types over string, constrained generics, discriminated unions
|
|
17
|
+
|
|
18
|
+
## Confidence Scoring
|
|
19
|
+
Only report findings with confidence >= 80. Group 50-79 in "Possible Issues" section.
|
|
20
|
+
|
|
21
|
+
## Output Format
|
|
22
|
+
Report per category: PASS/WARN/FAIL with findings. End with JSON summary block.
|
|
23
|
+
"""
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
model = "gpt-5.4"
|
|
2
|
+
model_reasoning_effort = "medium"
|
|
3
|
+
sandbox_mode = "workspace-write"
|
|
4
|
+
|
|
5
|
+
developer_instructions = """
|
|
6
|
+
You are an implementation agent dispatched as part of a wave-based execution plan.
|
|
7
|
+
|
|
8
|
+
Rules:
|
|
9
|
+
1. Follow the task prompt EXACTLY — implement what is described, nothing more
|
|
10
|
+
2. Only modify files within your assigned scope
|
|
11
|
+
3. Write tests for your changes
|
|
12
|
+
4. Do NOT commit — the coordinator handles commits
|
|
13
|
+
5. Follow existing code patterns and conventions
|
|
14
|
+
6. If blocked, report the blocker clearly — do not work around it silently
|
|
15
|
+
"""
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Session Orchestrator — Codex CLI Plugin Config
|
|
2
|
+
# Equivalent of .claude-plugin/plugin.json for OpenAI Codex CLI
|
|
3
|
+
|
|
4
|
+
approval_policy = "on-request"
|
|
5
|
+
sandbox_mode = "workspace-write"
|
|
6
|
+
|
|
7
|
+
[features]
|
|
8
|
+
multi_agent = true
|
|
9
|
+
|
|
10
|
+
[agents.session-reviewer]
|
|
11
|
+
description = "Inter-wave quality gate agent — verifies implementation correctness, test coverage, TypeScript health, security, and issue tracking"
|
|
12
|
+
config_file = "agents/session-reviewer.toml"
|
|
13
|
+
|
|
14
|
+
[agents.wave-worker]
|
|
15
|
+
description = "Implementation agent for wave execution — handles feature work, bug fixes, and refactoring"
|
|
16
|
+
config_file = "agents/wave-worker.toml"
|
|
17
|
+
|
|
18
|
+
[agents.explorer]
|
|
19
|
+
description = "Read-only codebase explorer — gathers evidence, traces execution paths, analyzes patterns"
|
|
20
|
+
config_file = "agents/explorer.toml"
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "session-orchestrator",
|
|
3
|
+
"version": "3.16.0+codex.20260719182053",
|
|
4
|
+
"description": "Loop engineering for AI coding agents — turn ad-hoc sessions into a repeatable research → plan → wave-execute → close loop with verification gates. Runs on Claude Code, Codex CLI, Cursor, and Pi.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"session",
|
|
7
|
+
"orchestration",
|
|
8
|
+
"waves",
|
|
9
|
+
"gitlab",
|
|
10
|
+
"github",
|
|
11
|
+
"quality-gates",
|
|
12
|
+
"codex"
|
|
13
|
+
],
|
|
14
|
+
"skills": "./skills/",
|
|
15
|
+
"hooks": "./hooks/hooks-codex.json",
|
|
16
|
+
"mcpServers": "./.mcp.json",
|
|
17
|
+
"interface": {
|
|
18
|
+
"displayName": "Session Orchestrator",
|
|
19
|
+
"shortDescription": "Structured engineering sessions for Codex",
|
|
20
|
+
"longDescription": "Adds reusable session workflows to Codex: project analysis, wave planning, guided execution, quality gates, persistence, and clean session close-out.",
|
|
21
|
+
"developerName": "Bernhard Goetzendorfer",
|
|
22
|
+
"category": "Coding",
|
|
23
|
+
"capabilities": [
|
|
24
|
+
"Interactive",
|
|
25
|
+
"Write"
|
|
26
|
+
],
|
|
27
|
+
"composerIcon": "./assets/icon.svg",
|
|
28
|
+
"websiteURL": "https://session-orchestrator.com",
|
|
29
|
+
"privacyPolicyURL": "https://gotzendorfer.at/en/session-orchestrator/privacy",
|
|
30
|
+
"termsOfServiceURL": "https://gotzendorfer.at/en/session-orchestrator/terms",
|
|
31
|
+
"defaultPrompt": [
|
|
32
|
+
"Start a structured feature session for this repo",
|
|
33
|
+
"Plan a feature PRD and turn it into waves",
|
|
34
|
+
"Close the current session with verification"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "When working in any project with Session Orchestrator capabilities"
|
|
3
|
+
globs: ""
|
|
4
|
+
alwaysApply: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Session Orchestrator — Cursor IDE
|
|
8
|
+
|
|
9
|
+
You have Session Orchestrator capabilities. This plugin provides structured session management for development work.
|
|
10
|
+
|
|
11
|
+
## Platform Context
|
|
12
|
+
|
|
13
|
+
- Platform: Cursor IDE (SO_PLATFORM=cursor)
|
|
14
|
+
- State directory: `.cursor/` (STATE.md, wave-scope.json)
|
|
15
|
+
- Config: Session Config in `CLAUDE.md` under `## Session Config`
|
|
16
|
+
- Shared knowledge: `.orchestrator/metrics/` (sessions.jsonl, learnings.jsonl)
|
|
17
|
+
|
|
18
|
+
## Available Commands
|
|
19
|
+
|
|
20
|
+
| Command | Purpose |
|
|
21
|
+
|---------|---------|
|
|
22
|
+
| /session [type] | Start a session (housekeeping, feature, deep) |
|
|
23
|
+
| /go | Execute the agreed session plan |
|
|
24
|
+
| /close | End session with verification and commits |
|
|
25
|
+
| /discovery [scope] | Run quality analysis probes |
|
|
26
|
+
| /plan [mode] | Create project plan or PRD (new, feature, retro) |
|
|
27
|
+
| /evolve [mode] | Extract session learnings (analyze, review, list) |
|
|
28
|
+
|
|
29
|
+
## Cursor-Specific Adaptations
|
|
30
|
+
|
|
31
|
+
**No parallel agents**: Execute wave tasks sequentially. Complete one task fully before starting the next. The `agents-per-wave` config is ignored on Cursor.
|
|
32
|
+
|
|
33
|
+
**No AskUserQuestion tool**: Present choices as numbered Markdown lists:
|
|
34
|
+
```
|
|
35
|
+
Choose one:
|
|
36
|
+
1. Option A — description
|
|
37
|
+
2. Option B — description
|
|
38
|
+
Reply with the number of your choice.
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**No TaskCreate/Update**: Use plain-text checklists to track progress:
|
|
42
|
+
```
|
|
43
|
+
- [x] Task 1 — done
|
|
44
|
+
- [ ] Task 2 — in progress
|
|
45
|
+
- [ ] Task 3 — pending
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**No EnterPlanMode**: When planning, state "I will focus on analysis only. No files will be modified until you approve the plan."
|
|
49
|
+
|
|
50
|
+
**Web search**: Use `@web` in Cursor chat instead of WebSearch tool.
|
|
51
|
+
|
|
52
|
+
**Web fetch**: Use `curl` via Bash instead of WebFetch tool.
|
|
53
|
+
|
|
54
|
+
## Quality Gates
|
|
55
|
+
|
|
56
|
+
Standard quality commands (read from Session Config, defaults below):
|
|
57
|
+
- **Typecheck**: `tsgo --noEmit` (or `npx tsc --noEmit`)
|
|
58
|
+
- **Test**: `pnpm test --run`
|
|
59
|
+
- **Lint**: `pnpm lint`
|
|
60
|
+
|
|
61
|
+
If a command is set to `skip` in Session Config, skip that check entirely.
|
|
62
|
+
|
|
63
|
+
## Agent Dispatch
|
|
64
|
+
|
|
65
|
+
Agents are resolved in priority order: project agents (`.cursor/agents/`) > plugin agents (`agents/`) > general-purpose. Use the `agent-mapping` Session Config field to bind roles explicitly to specific agents.
|
|
66
|
+
|
|
67
|
+
See `.orchestrator/metrics/model-selection.md` for model choice guidance (haiku/sonnet/opus per task type).
|
|
68
|
+
|
|
69
|
+
## Shared Knowledge
|
|
70
|
+
|
|
71
|
+
- Read `.orchestrator/metrics/learnings.jsonl` for cross-session intelligence. Only apply learnings with confidence >= 0.5.
|
|
72
|
+
- Write session metrics to `.orchestrator/metrics/sessions.jsonl` with `"platform": "cursor"`.
|
|
73
|
+
- Metrics directory: `.orchestrator/metrics/` (not `.claude/metrics/`).
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "When the user types /session, starts a development session, types /go to execute, or /close to end a session"
|
|
3
|
+
globs: ""
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Session Workflow
|
|
8
|
+
|
|
9
|
+
Three-phase workflow: Start -> Execute -> Close.
|
|
10
|
+
|
|
11
|
+
## Phase 1: Session Start (`/session [type]`)
|
|
12
|
+
|
|
13
|
+
Session types:
|
|
14
|
+
- **housekeeping** — git cleanup, docs, CI health, dependency updates
|
|
15
|
+
- **feature** — implementation of issues/features
|
|
16
|
+
- **deep** — thorough work requiring extended focus
|
|
17
|
+
|
|
18
|
+
### Step 1: Read Session Config
|
|
19
|
+
|
|
20
|
+
Parse `## Session Config` from project's `CLAUDE.md`. Store as `$CONFIG`.
|
|
21
|
+
|
|
22
|
+
### Step 2: Session Continuity
|
|
23
|
+
|
|
24
|
+
If `persistence` is enabled, check `.cursor/STATE.md`:
|
|
25
|
+
- `status: active` — crashed session. Ask: "Found unfinished session. Resume or start fresh?"
|
|
26
|
+
- `status: paused` — intentional pause. Offer to resume or start fresh.
|
|
27
|
+
- `status: completed` — note summary for context, continue normally.
|
|
28
|
+
- Missing — first session, continue normally.
|
|
29
|
+
|
|
30
|
+
### Step 3: Git Analysis
|
|
31
|
+
|
|
32
|
+
Run in parallel:
|
|
33
|
+
```bash
|
|
34
|
+
# Branch state
|
|
35
|
+
git branch -a && git log --oneline -20
|
|
36
|
+
|
|
37
|
+
# Unpushed/uncommitted work
|
|
38
|
+
git status --short
|
|
39
|
+
git log origin/main..HEAD --oneline
|
|
40
|
+
|
|
41
|
+
# Stale branches (no commits in 7+ days)
|
|
42
|
+
git for-each-ref --sort=-committerdate --format='%(refname:short) %(committerdate:relative)' refs/heads/
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Step 4: VCS Deep Dive
|
|
46
|
+
|
|
47
|
+
Query open issues, recent closures, milestones, MRs/PRs, CI status:
|
|
48
|
+
```bash
|
|
49
|
+
# GitLab
|
|
50
|
+
glab issue list --per-page 50
|
|
51
|
+
glab issue list --closed --per-page 10
|
|
52
|
+
glab mr list --per-page 20
|
|
53
|
+
|
|
54
|
+
# GitHub
|
|
55
|
+
gh issue list --limit 50
|
|
56
|
+
gh pr list --limit 20
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Group issues by priority (critical/high first) and session-type relevance.
|
|
60
|
+
|
|
61
|
+
### Step 5: Environment Check
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Quality baseline (non-blocking)
|
|
65
|
+
{typecheck-command} 2>&1 | tail -5
|
|
66
|
+
{test-command} 2>&1 | tail -5
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Check SSOT file freshness. Flag files older than 5 days.
|
|
70
|
+
|
|
71
|
+
**Plugin freshness**: Check the session-orchestrator plugin's last commit date. If older than `plugin-freshness-days` (default: 30) days, flag a non-blocking warning in the overview.
|
|
72
|
+
|
|
73
|
+
### Step 5.5: Pattern Recognition
|
|
74
|
+
|
|
75
|
+
Look across gathered data for:
|
|
76
|
+
- **Blocking chains**: issues blocked by other issues
|
|
77
|
+
- **Quick wins**: low-effort issues closable alongside main work
|
|
78
|
+
- **Synergies**: issues sharing code paths that can be combined
|
|
79
|
+
|
|
80
|
+
### Step 5.6: Memory Recall
|
|
81
|
+
|
|
82
|
+
> Skip if `persistence` is `false`.
|
|
83
|
+
|
|
84
|
+
1. Look for session memory files at `~/.claude/projects/<project>/memory/session-*.md`
|
|
85
|
+
2. Read the 2–3 most recent files (newest first)
|
|
86
|
+
3. Extract: accomplishments, carryovers, patterns or warnings
|
|
87
|
+
4. Surface under **Previous Sessions** in the overview
|
|
88
|
+
|
|
89
|
+
### Step 5.7: Project Intelligence
|
|
90
|
+
|
|
91
|
+
> Skip if `persistence` is `false` or `learnings.jsonl` does not exist.
|
|
92
|
+
|
|
93
|
+
Read `.orchestrator/metrics/learnings.jsonl` and surface active learnings (confidence > 0.3, not expired):
|
|
94
|
+
- Fragile files, effective sizing, recurring issues, scope guidance
|
|
95
|
+
- Config field: `learning-expiry-days` (default: 30) controls expiry window
|
|
96
|
+
|
|
97
|
+
**Effectiveness analysis** (requires 5+ sessions in `sessions.jsonl`):
|
|
98
|
+
- Completion rate trend, discovery probe value, carryover pattern
|
|
99
|
+
- If fewer than 5 sessions: "Effectiveness analysis: not enough data yet ([N]/5 sessions)."
|
|
100
|
+
|
|
101
|
+
### Step 7: Present Findings
|
|
102
|
+
|
|
103
|
+
Present a structured Session Overview with:
|
|
104
|
+
- Git state summary
|
|
105
|
+
- Issue recommendations (grouped by priority)
|
|
106
|
+
- Quality baseline results
|
|
107
|
+
- Previous sessions context (if available)
|
|
108
|
+
- Project intelligence insights (learnings + effectiveness if 5+ sessions)
|
|
109
|
+
- Recommended focus areas
|
|
110
|
+
|
|
111
|
+
On Cursor, present scope confirmation as a numbered Markdown list (no AskUserQuestion tool). Ask the user to confirm scope before proceeding.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Phase 2: Session Execution (`/go`)
|
|
116
|
+
|
|
117
|
+
### Step 1: Create Wave Plan
|
|
118
|
+
|
|
119
|
+
Distribute tasks across waves (see `030-wave-execution.mdc` for full details on roles, scope manifests, and quality checks).
|
|
120
|
+
|
|
121
|
+
### Step 2: Execute Sequentially
|
|
122
|
+
|
|
123
|
+
On Cursor, execute all tasks one by one (no parallel agents). For each task:
|
|
124
|
+
1. State what you are doing and which wave/role it belongs to
|
|
125
|
+
2. Execute the task fully
|
|
126
|
+
3. Report status with checklist update
|
|
127
|
+
4. Run incremental quality checks after implementation waves
|
|
128
|
+
5. Move to next task
|
|
129
|
+
|
|
130
|
+
### Step 3: Update STATE.md
|
|
131
|
+
|
|
132
|
+
If persistence is enabled, update `.cursor/STATE.md` after each wave with wave status, files changed, and quality check results.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Phase 3: Session End (`/close`)
|
|
137
|
+
|
|
138
|
+
### Step 1: Plan Verification
|
|
139
|
+
|
|
140
|
+
For each planned item:
|
|
141
|
+
- **Done**: Verify with `git diff`, confirm acceptance criteria met
|
|
142
|
+
- **Partially done**: Create carryover issue with `[Carryover]` prefix
|
|
143
|
+
- **Not started**: Document why, ensure issue stays open
|
|
144
|
+
- **Emergent work**: Document unplanned tasks that were completed
|
|
145
|
+
|
|
146
|
+
### Step 2: Full Quality Gate (BLOCKING)
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# All must pass before committing
|
|
150
|
+
{typecheck-command} # 0 errors required
|
|
151
|
+
{test-command} # exit code 0 required
|
|
152
|
+
{lint-command} # errors NOT OK, warnings OK
|
|
153
|
+
|
|
154
|
+
# Check for debug artifacts
|
|
155
|
+
grep -rn 'console\.log\|debugger\|TODO: remove' --include='*.ts' --include='*.tsx' src/
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Do NOT commit if any check fails. Fix quick issues (<2 min) inline. For longer fixes, create a `priority:high` issue.
|
|
159
|
+
|
|
160
|
+
### Step 3: Commit and Push
|
|
161
|
+
|
|
162
|
+
Stage specific files, commit with Conventional Commit format, push to origin. Mirror to GitHub if configured.
|
|
163
|
+
|
|
164
|
+
### Step 4: Session Metrics
|
|
165
|
+
|
|
166
|
+
If persistence is enabled, append session metrics to `.orchestrator/metrics/sessions.jsonl` with `"platform": "cursor"`. Include: session_id, session_type, timestamps, wave/file counts, and effectiveness stats (planned/completed/carryover/completion_rate).
|
|
167
|
+
|
|
168
|
+
### Step 5: Cleanup
|
|
169
|
+
|
|
170
|
+
Remove `.cursor/wave-scope.json` and update `.cursor/STATE.md` with `status: completed`.
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "When running quality checks — typecheck, test, lint — during development or session execution"
|
|
3
|
+
globs: ""
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Quality Gates
|
|
8
|
+
|
|
9
|
+
Four quality gate variants for different session phases. Commands are read from Session Config in `CLAUDE.md` (field defaults shown below).
|
|
10
|
+
|
|
11
|
+
## Config Fields
|
|
12
|
+
|
|
13
|
+
| Field | Default | Notes |
|
|
14
|
+
|-------|---------|-------|
|
|
15
|
+
| `test-command` | `pnpm test --run` | Set to `skip` to disable |
|
|
16
|
+
| `typecheck-command` | `tsgo --noEmit` | Set to `skip` to disable |
|
|
17
|
+
| `lint-command` | `pnpm lint` | Set to `skip` to disable |
|
|
18
|
+
|
|
19
|
+
## Variant 1: Baseline
|
|
20
|
+
|
|
21
|
+
**When**: Session start (Phase 3)
|
|
22
|
+
**Purpose**: Quick health check — non-blocking.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
{typecheck-command} 2>&1 | tail -5
|
|
26
|
+
{test-command} 2>&1 | tail -5
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
- Report results but do NOT block the session
|
|
30
|
+
- Store error counts as the session baseline for later comparison
|
|
31
|
+
|
|
32
|
+
## Variant 2: Incremental
|
|
33
|
+
|
|
34
|
+
**When**: After implementation waves (Impl-Core, Impl-Polish)
|
|
35
|
+
**Purpose**: Verify implementation did not break anything.
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Run tests on changed files only
|
|
39
|
+
{test-command} -- <changed-test-files>
|
|
40
|
+
|
|
41
|
+
# Full typecheck (always full — partial typecheck is unreliable)
|
|
42
|
+
{typecheck-command}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
- Report failures but do NOT block wave progression
|
|
46
|
+
- If issues found, add fix tasks to the next wave automatically
|
|
47
|
+
|
|
48
|
+
## Variant 3: Full Gate
|
|
49
|
+
|
|
50
|
+
**When**: Session end (Phase 2) — before committing
|
|
51
|
+
**Purpose**: Final quality gate — BLOCKING.
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# 1. Typecheck — must produce 0 errors
|
|
55
|
+
{typecheck-command}
|
|
56
|
+
|
|
57
|
+
# 2. Tests — must pass (exit code 0)
|
|
58
|
+
{test-command}
|
|
59
|
+
|
|
60
|
+
# 3. Lint — errors NOT OK, warnings OK
|
|
61
|
+
{lint-command}
|
|
62
|
+
|
|
63
|
+
# 4. Debug artifact scan
|
|
64
|
+
grep -rn 'console\.log\|debugger\|TODO: remove' \
|
|
65
|
+
--include='*.ts' --include='*.tsx' --include='*.js' \
|
|
66
|
+
src/ lib/ 2>/dev/null || true
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Rules**:
|
|
70
|
+
- Do NOT commit if any check fails
|
|
71
|
+
- Fix quick issues (<2 min) inline
|
|
72
|
+
- For longer fixes: create a `priority:high` issue and exclude affected files from commit
|
|
73
|
+
|
|
74
|
+
## Variant 4: Per-File
|
|
75
|
+
|
|
76
|
+
**When**: Session review (reviewer agent)
|
|
77
|
+
**Purpose**: Targeted check on specific changed files.
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Run tests for specific files
|
|
81
|
+
{test-command} -- <specific-file-paths>
|
|
82
|
+
|
|
83
|
+
# Full typecheck
|
|
84
|
+
{typecheck-command}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
- Report per-file pass/fail status
|
|
88
|
+
- Used by reviewers to annotate findings
|
|
89
|
+
|
|
90
|
+
## Decision Table
|
|
91
|
+
|
|
92
|
+
| Phase | Variant | Blocking? | Scope |
|
|
93
|
+
|-------|---------|-----------|-------|
|
|
94
|
+
| Session start | Baseline | No | Quick health check |
|
|
95
|
+
| After impl wave | Incremental | No | Changed files + full typecheck |
|
|
96
|
+
| Before commit (/close) | Full Gate | **Yes** | All checks, all files |
|
|
97
|
+
| Review | Per-File | No | Specific files |
|
|
98
|
+
|
|
99
|
+
## Graceful Degradation
|
|
100
|
+
|
|
101
|
+
Handle missing tools without failing:
|
|
102
|
+
|
|
103
|
+
- `command not found` for typecheck → skip, note "No TypeScript configured"
|
|
104
|
+
- `command not found` for test → skip, note "No test runner configured"
|
|
105
|
+
- `command not found` for lint → skip, note "No linter configured"
|
|
106
|
+
- Non-TypeScript projects: set `typecheck-command: skip` in Session Config
|
|
107
|
+
|
|
108
|
+
Always continue with remaining checks — never abort because one tool is missing.
|
|
109
|
+
|
|
110
|
+
## Script Alternative
|
|
111
|
+
|
|
112
|
+
If the Session Orchestrator plugin is installed, prefer the script for structured JSON output:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# Baseline
|
|
116
|
+
bash "$SO_PLUGIN_ROOT/scripts/run-quality-gate.sh" --variant baseline
|
|
117
|
+
|
|
118
|
+
# Incremental
|
|
119
|
+
bash "$SO_PLUGIN_ROOT/scripts/run-quality-gate.sh" --variant incremental --files file1.ts,file2.ts
|
|
120
|
+
|
|
121
|
+
# Full Gate
|
|
122
|
+
bash "$SO_PLUGIN_ROOT/scripts/run-quality-gate.sh" --variant full-gate
|
|
123
|
+
|
|
124
|
+
# Per-File
|
|
125
|
+
bash "$SO_PLUGIN_ROOT/scripts/run-quality-gate.sh" --variant per-file --files specific-file.ts
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Exit codes: 0=pass, 1=error, 2=gate-failed.
|