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,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "When the user types /evolve or asks about session learnings, pattern extraction, or learning management"
|
|
3
|
+
globs: ""
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Evolve — Session Learning Extraction
|
|
8
|
+
|
|
9
|
+
Extract patterns from session history into reusable learnings. Three modes of operation.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
- **Persistence gate**: `persistence: true` must be set in Session Config. If not, abort: "Learnings require persistence to be enabled in Session Config."
|
|
14
|
+
- Session history must exist at `.orchestrator/metrics/sessions.jsonl`
|
|
15
|
+
- Learnings are stored at `.orchestrator/metrics/learnings.jsonl`
|
|
16
|
+
- Config field: `learning-expiry-days` (default: 30) — controls `expires_at` for new and updated learnings
|
|
17
|
+
|
|
18
|
+
## Cursor Adaptation
|
|
19
|
+
|
|
20
|
+
**No AskUserQuestion tool on Cursor.** Present all choices as numbered Markdown lists:
|
|
21
|
+
```
|
|
22
|
+
Which learnings should be saved?
|
|
23
|
+
|
|
24
|
+
1. [fragile-file] src/lib/auth.ts — Changed in 4 of last 5 sessions (confidence: 0.5 new)
|
|
25
|
+
2. [scope-guidance] optimal-scope-per-session-type — 3 issues/session works well (+0.15 update)
|
|
26
|
+
3. Skip all — do not save any learnings
|
|
27
|
+
|
|
28
|
+
Reply with the number(s) of your choice.
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Mode Selection
|
|
32
|
+
|
|
33
|
+
Determine mode from user input (default: `analyze`):
|
|
34
|
+
|
|
35
|
+
| Mode | Purpose |
|
|
36
|
+
|------|---------|
|
|
37
|
+
| `analyze` | Extract new learnings from session history |
|
|
38
|
+
| `review` | Edit/manage existing learnings interactively |
|
|
39
|
+
| `list` | Display active learnings (read-only) |
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Mode 1: Analyze
|
|
44
|
+
|
|
45
|
+
Extract learnings from `.orchestrator/metrics/sessions.jsonl`.
|
|
46
|
+
|
|
47
|
+
### Step 1: Load Session Data
|
|
48
|
+
|
|
49
|
+
1. Read all entries from `sessions.jsonl`, parse each line as JSON
|
|
50
|
+
2. Sort by `completed_at` descending (most recent first)
|
|
51
|
+
3. If no sessions found, abort: "No session data available."
|
|
52
|
+
|
|
53
|
+
### Step 2: Pattern Extraction
|
|
54
|
+
|
|
55
|
+
Apply these heuristics for each learning type:
|
|
56
|
+
|
|
57
|
+
#### fragile-file
|
|
58
|
+
- Same file appears in 3+ waves' `files_changed` within a session, or in 3+ different sessions
|
|
59
|
+
- Subject = relative file path
|
|
60
|
+
|
|
61
|
+
#### effective-sizing
|
|
62
|
+
- Compare `total_agents` and `total_waves` across session types
|
|
63
|
+
- Calculate average agents per wave per session type
|
|
64
|
+
- Subject = e.g. `deep-session-sizing` or `feature-session-sizing`
|
|
65
|
+
|
|
66
|
+
#### recurring-issue
|
|
67
|
+
- `agent_summary` shows `failed` or `partial` > 0 across multiple sessions
|
|
68
|
+
- Repeated failures in wave `quality` fields
|
|
69
|
+
- Subject = issue pattern identifier (e.g. `test-failures-in-wave-execution`)
|
|
70
|
+
|
|
71
|
+
#### scope-guidance
|
|
72
|
+
- Cross-reference `effectiveness.planned_issues` vs `effectiveness.completion_rate`
|
|
73
|
+
- Skip sessions lacking the `effectiveness` field
|
|
74
|
+
- If completion_rate consistently 1.0 with N issues: "N issues per session works well"
|
|
75
|
+
- If completion_rate < 0.7: "scope was too large"
|
|
76
|
+
- Subject = `optimal-scope-per-session-type`
|
|
77
|
+
|
|
78
|
+
#### deviation-pattern
|
|
79
|
+
- Read `.cursor/STATE.md` if it exists, check `## Deviations` section
|
|
80
|
+
- Cross-reference session duration vs planned waves
|
|
81
|
+
- Subject = pattern name (e.g. `scope-creep-in-feature-sessions`)
|
|
82
|
+
|
|
83
|
+
### Step 3: Deduplicate
|
|
84
|
+
|
|
85
|
+
For each extracted pattern, check if a learning with same `type` + `subject` exists in `learnings.jsonl`:
|
|
86
|
+
- **Exists:** propose confidence update (+0.15 if confirmed, -0.2 if contradicted)
|
|
87
|
+
- **New:** propose as new learning with confidence 0.5
|
|
88
|
+
|
|
89
|
+
### Step 4: Present to User
|
|
90
|
+
|
|
91
|
+
Present extracted patterns as a numbered Markdown list (see Cursor Adaptation above). Let the user select which to save. Include a "Skip all" option.
|
|
92
|
+
|
|
93
|
+
If user skips or selects nothing: "No learnings saved."
|
|
94
|
+
|
|
95
|
+
If zero patterns were extracted, report: "No patterns found in session history." and stop.
|
|
96
|
+
|
|
97
|
+
### Step 5: Write Confirmed Learnings
|
|
98
|
+
|
|
99
|
+
Use atomic rewrite strategy:
|
|
100
|
+
1. Read ALL existing lines from `learnings.jsonl` into memory
|
|
101
|
+
2. Apply confidence updates for confirmed existing learnings (+0.15, cap at 1.0)
|
|
102
|
+
3. Apply confidence decrements for contradicted learnings (-0.2)
|
|
103
|
+
4. Append new learnings with confidence 0.5
|
|
104
|
+
5. Prune entries where `expires_at` < current date OR `confidence` <= 0.0
|
|
105
|
+
6. Consolidate duplicates (same `type` + `subject`): keep highest confidence
|
|
106
|
+
7. Write entire result back with `>` (atomic rewrite, NOT append `>>`)
|
|
107
|
+
|
|
108
|
+
Report: "Saved N new learnings, updated M existing. Total active: K."
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Mode 2: Review
|
|
113
|
+
|
|
114
|
+
Interactive management of existing learnings.
|
|
115
|
+
|
|
116
|
+
### Step 1: Load and Display
|
|
117
|
+
|
|
118
|
+
Read `learnings.jsonl`. If empty or missing: "No learnings found. Run `/evolve analyze` first."
|
|
119
|
+
|
|
120
|
+
Display as a formatted table grouped by type:
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
## Active Learnings
|
|
124
|
+
|
|
125
|
+
| # | Type | Subject | Confidence | Expires | Insight |
|
|
126
|
+
|---|------|---------|------------|---------|---------|
|
|
127
|
+
| 1 | fragile-file | src/lib/auth.ts | 0.80 | 2026-07-05 | Changed in 4 of last 5 sessions |
|
|
128
|
+
|
|
129
|
+
Summary: N active learnings (M high confidence, K expiring soon)
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Step 2: Interactive Management
|
|
133
|
+
|
|
134
|
+
Present as a numbered Markdown list (see Cursor Adaptation above):
|
|
135
|
+
- **Boost confidence** — select learnings to boost (+0.15, cap 1.0)
|
|
136
|
+
- **Reduce confidence** — select learnings to reduce (-0.2)
|
|
137
|
+
- **Delete specific learnings** — remove selected entries
|
|
138
|
+
- **Extend expiry** — reset `expires_at` to current date + `learning-expiry-days`
|
|
139
|
+
- **Done** — exit without changes
|
|
140
|
+
|
|
141
|
+
### Step 3: Apply Changes
|
|
142
|
+
|
|
143
|
+
Same atomic rewrite strategy as analyze mode. Read all, modify selected, prune, consolidate, write all with `>`.
|
|
144
|
+
|
|
145
|
+
Report: "Updated N learnings. Total active: K."
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Mode 3: List
|
|
150
|
+
|
|
151
|
+
Read-only display of active learnings.
|
|
152
|
+
|
|
153
|
+
### Output Format
|
|
154
|
+
|
|
155
|
+
Display grouped by type:
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
## Active Learnings
|
|
159
|
+
|
|
160
|
+
### fragile-file
|
|
161
|
+
| Subject | Confidence | Expires | Insight |
|
|
162
|
+
|---------|------------|---------|---------|
|
|
163
|
+
|
|
164
|
+
### effective-sizing
|
|
165
|
+
| Subject | Confidence | Expires | Insight |
|
|
166
|
+
|---------|------------|---------|---------|
|
|
167
|
+
|
|
168
|
+
(repeat for each type with entries)
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Summary Line
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
N active learnings (M high confidence, K expiring soon)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
- **High confidence** = confidence > 0.7
|
|
178
|
+
- **Expiring soon** = `expires_at` within 14 days of current date
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Learning JSONL Format
|
|
183
|
+
|
|
184
|
+
Each line in `.orchestrator/metrics/learnings.jsonl` is a JSON object:
|
|
185
|
+
|
|
186
|
+
```json
|
|
187
|
+
{
|
|
188
|
+
"id": "uuid-v4",
|
|
189
|
+
"type": "fragile-file|effective-sizing|recurring-issue|scope-guidance|deviation-pattern",
|
|
190
|
+
"subject": "identifier for the pattern",
|
|
191
|
+
"insight": "human-readable description",
|
|
192
|
+
"evidence": "specific data points supporting the pattern",
|
|
193
|
+
"confidence": 0.5,
|
|
194
|
+
"source_session": "session-id",
|
|
195
|
+
"created_at": "2026-04-07T00:00:00Z",
|
|
196
|
+
"expires_at": "2026-05-07T00:00:00Z"
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Confidence Lifecycle
|
|
201
|
+
|
|
202
|
+
| Event | Change |
|
|
203
|
+
|-------|--------|
|
|
204
|
+
| Created | 0.5 |
|
|
205
|
+
| Confirmed (new evidence or user boost) | +0.15 (cap 1.0) |
|
|
206
|
+
| Contradicted or user reduce | -0.2 |
|
|
207
|
+
| Past `expires_at` date | Pruned on next write |
|
|
208
|
+
| Confidence <= 0.0 | Pruned on next write |
|
|
209
|
+
|
|
210
|
+
### Valid Learning Types
|
|
211
|
+
|
|
212
|
+
| Type | What it captures |
|
|
213
|
+
|------|-----------------|
|
|
214
|
+
| `fragile-file` | Files changed too frequently across sessions/waves |
|
|
215
|
+
| `effective-sizing` | Optimal agent/wave sizing per session type |
|
|
216
|
+
| `recurring-issue` | Repeated failures or partial completions |
|
|
217
|
+
| `scope-guidance` | How many issues fit well in a session |
|
|
218
|
+
| `deviation-pattern` | Scope creep, underestimation, plan deviations |
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Critical Rules
|
|
223
|
+
|
|
224
|
+
- NEVER modify `learnings.jsonl` without reading it first
|
|
225
|
+
- NEVER skip deduplication (check `type` + `subject` match)
|
|
226
|
+
- NEVER write learnings without user confirmation
|
|
227
|
+
- ALWAYS use uuid-v4 for new learning IDs (generate via `uuidgen`)
|
|
228
|
+
- ALWAYS set `expires_at` to current date + `learning-expiry-days` from config (default: 30)
|
|
229
|
+
- ALWAYS use atomic rewrite (read all, modify, write all with `>`)
|
|
230
|
+
- ALWAYS cap confidence at 1.0
|
|
231
|
+
- NEVER fabricate patterns -- only extract from actual session data with verifiable evidence
|
|
232
|
+
- NEVER append to `learnings.jsonl` with `>>` -- always atomic rewrite
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "When working with GitLab or GitHub — issues, merge requests, pull requests, CI pipelines, labels"
|
|
3
|
+
globs: ""
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# VCS Operations Reference (GitLab & GitHub)
|
|
8
|
+
|
|
9
|
+
Single source of truth for all VCS CLI commands, label taxonomy, issue templates, and project resolution.
|
|
10
|
+
|
|
11
|
+
## VCS Auto-Detection
|
|
12
|
+
|
|
13
|
+
Detect which platform the current repo uses:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
REMOTE_URL=$(git remote get-url origin 2>/dev/null)
|
|
17
|
+
if echo "$REMOTE_URL" | grep -q "github.com"; then
|
|
18
|
+
VCS=github # use `gh`
|
|
19
|
+
else
|
|
20
|
+
VCS=gitlab # use `glab`
|
|
21
|
+
fi
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Session Config overrides:
|
|
25
|
+
- `vcs: github|gitlab` -- force a specific platform
|
|
26
|
+
- `gitlab-host: <host>` -- override auto-detected GitLab host
|
|
27
|
+
|
|
28
|
+
## Dynamic Project Resolution
|
|
29
|
+
|
|
30
|
+
Never hardcode project IDs. Resolve at runtime.
|
|
31
|
+
|
|
32
|
+
### Current Project
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# GitLab — numeric project ID
|
|
36
|
+
glab repo view --output json | python3 -c "import json,sys; print(json.load(sys.stdin)['id'])"
|
|
37
|
+
|
|
38
|
+
# GitHub — owner/name
|
|
39
|
+
gh repo view --json nameWithOwner -q '.nameWithOwner'
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Cross-Project Queries
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# GitLab — resolve by name
|
|
46
|
+
glab api "projects?search=<project-name>" | python3 -c "import json,sys; [print(p['id'], p['path_with_namespace']) for p in json.load(sys.stdin)]"
|
|
47
|
+
|
|
48
|
+
# GitHub — resolve repo details
|
|
49
|
+
gh api "repos/<owner>/<name>" --jq '.full_name'
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Common CLI Commands
|
|
55
|
+
|
|
56
|
+
### GitLab (glab)
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Issues
|
|
60
|
+
glab issue list --per-page 50 # All open issues
|
|
61
|
+
glab issue list --label "status:ready" --per-page 10 # Filtered by label
|
|
62
|
+
glab issue list --label "priority:high" --per-page 10 # High priority
|
|
63
|
+
glab issue list --closed --per-page 10 # Recently closed
|
|
64
|
+
glab issue view <IID> # View issue details
|
|
65
|
+
glab issue view <IID> --comments # With comments
|
|
66
|
+
glab issue create --title "title" --label "priority:high,status:ready"
|
|
67
|
+
glab issue update <IID> --label "status:in-progress"
|
|
68
|
+
glab issue close <IID>
|
|
69
|
+
glab issue note <IID> -m "Comment text" # Add comment
|
|
70
|
+
|
|
71
|
+
# MRs
|
|
72
|
+
glab mr list # Open MRs
|
|
73
|
+
glab mr create --fill --draft # Create draft MR
|
|
74
|
+
glab mr merge <MR_IID> # Merge MR
|
|
75
|
+
|
|
76
|
+
# Pipelines
|
|
77
|
+
glab pipeline list --per-page 5 # Recent pipelines
|
|
78
|
+
glab pipeline status <ID> # Pipeline details
|
|
79
|
+
|
|
80
|
+
# API (reads host from git remote automatically)
|
|
81
|
+
PROJECT_ID=$(glab repo view --output json | python3 -c "import json,sys; print(json.load(sys.stdin)['id'])")
|
|
82
|
+
glab api "projects/$PROJECT_ID/issues?state=opened&per_page=50"
|
|
83
|
+
glab api "projects/$PROJECT_ID/milestones?state=active"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### GitHub (gh)
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# Issues
|
|
90
|
+
gh issue list --limit 50 # All open issues
|
|
91
|
+
gh issue list --label "status:ready" --limit 10 # Filtered by label
|
|
92
|
+
gh issue list --label "priority:high" --limit 10 # High priority
|
|
93
|
+
gh issue list --state closed --limit 10 # Recently closed
|
|
94
|
+
gh issue view <NUMBER> # View issue details
|
|
95
|
+
gh issue view <NUMBER> --comments # With comments
|
|
96
|
+
gh issue create --title "title" --label "priority:high,status:ready"
|
|
97
|
+
gh issue edit <NUMBER> --add-label "status:in-progress"
|
|
98
|
+
gh issue close <NUMBER>
|
|
99
|
+
gh issue comment <NUMBER> --body "Comment text" # Add comment
|
|
100
|
+
|
|
101
|
+
# PRs
|
|
102
|
+
gh pr list --state open # Open PRs
|
|
103
|
+
gh pr create --fill --draft # Create draft PR
|
|
104
|
+
gh pr merge <NUMBER> # Merge PR
|
|
105
|
+
|
|
106
|
+
# Workflows (CI)
|
|
107
|
+
gh run list --limit 5 # Recent workflow runs
|
|
108
|
+
gh run view <RUN_ID> # Run details
|
|
109
|
+
|
|
110
|
+
# API
|
|
111
|
+
gh api "repos/{owner}/{repo}/issues?state=open&per_page=50"
|
|
112
|
+
gh api "repos/{owner}/{repo}/milestones?state=open"
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## glab CLI Quirks
|
|
118
|
+
|
|
119
|
+
These are known differences from `gh` that cause frequent mistakes:
|
|
120
|
+
|
|
121
|
+
| Quirk | Correct | Wrong |
|
|
122
|
+
|-------|---------|-------|
|
|
123
|
+
| Listing closed issues | `glab issue list --closed` | `glab issue list --state closed` |
|
|
124
|
+
| Confirmations | glab has NO `--yes` flag | Do not pass `--yes` |
|
|
125
|
+
| Comprehensive listing | `glab issue list --per-page 100` | Default per-page is small |
|
|
126
|
+
| Pagination flag | `--per-page N` (glab) | `--limit N` (that is gh syntax) |
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Label Taxonomy
|
|
131
|
+
|
|
132
|
+
### Priority Labels
|
|
133
|
+
- `priority:critical` -- blocking production or users
|
|
134
|
+
- `priority:high` -- important, schedule this sprint
|
|
135
|
+
- `priority:medium` -- plan for next sprint
|
|
136
|
+
- `priority:low` -- backlog, nice-to-have
|
|
137
|
+
|
|
138
|
+
### Status Labels
|
|
139
|
+
- `status:ready` -- defined, ready to pick up
|
|
140
|
+
- `status:in-progress` -- actively being worked on
|
|
141
|
+
- `status:review` -- MR/PR created, awaiting review
|
|
142
|
+
- `status:blocked` -- waiting on external dependency
|
|
143
|
+
|
|
144
|
+
### Area Labels
|
|
145
|
+
- `area:frontend` | `area:backend` | `area:database`
|
|
146
|
+
- `area:ai` | `area:security` | `area:testing`
|
|
147
|
+
- `area:ci` | `area:infrastructure` | `area:compliance`
|
|
148
|
+
- `area:skills` | `area:vcs` | `area:harness`
|
|
149
|
+
|
|
150
|
+
### Type Labels
|
|
151
|
+
- `bug` | `feature` | `enhancement` | `refactor`
|
|
152
|
+
- `chore` | `documentation` | `epic` | `discovery`
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Issue Templates
|
|
157
|
+
|
|
158
|
+
### Bug
|
|
159
|
+
|
|
160
|
+
```markdown
|
|
161
|
+
## Description
|
|
162
|
+
What happens vs. what should happen.
|
|
163
|
+
|
|
164
|
+
## Steps to Reproduce
|
|
165
|
+
1.
|
|
166
|
+
2.
|
|
167
|
+
|
|
168
|
+
## Root Cause (if known)
|
|
169
|
+
|
|
170
|
+
## Acceptance Criteria
|
|
171
|
+
- [ ]
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Feature
|
|
175
|
+
|
|
176
|
+
```markdown
|
|
177
|
+
## Goal
|
|
178
|
+
What should be achieved and why.
|
|
179
|
+
|
|
180
|
+
## Tasks
|
|
181
|
+
- [ ]
|
|
182
|
+
|
|
183
|
+
## Acceptance Criteria
|
|
184
|
+
- [ ]
|
|
185
|
+
|
|
186
|
+
## Session Type
|
|
187
|
+
[housekeeping|feature|deep]
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Carryover (from /close)
|
|
191
|
+
|
|
192
|
+
```markdown
|
|
193
|
+
## [Carryover] Original Task Description
|
|
194
|
+
|
|
195
|
+
### What was completed
|
|
196
|
+
- [completed items]
|
|
197
|
+
|
|
198
|
+
### What remains
|
|
199
|
+
- [ ] [remaining task 1]
|
|
200
|
+
- [ ] [remaining task 2]
|
|
201
|
+
|
|
202
|
+
### Context for next session
|
|
203
|
+
[relevant context, file paths, decisions made]
|
|
204
|
+
|
|
205
|
+
### Original Issue
|
|
206
|
+
Relates to #ORIGINAL_IID
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Discovery Finding
|
|
210
|
+
|
|
211
|
+
```markdown
|
|
212
|
+
## [Discovery] <finding title>
|
|
213
|
+
|
|
214
|
+
**Probe:** <probe_name>
|
|
215
|
+
**Severity:** <priority:critical|high|medium|low>
|
|
216
|
+
**Category:** <code|infra|ui|arch|session|audit|vault|feature>
|
|
217
|
+
|
|
218
|
+
### Finding
|
|
219
|
+
<description of the problem>
|
|
220
|
+
|
|
221
|
+
### Evidence
|
|
222
|
+
- **File:** `<file_path>`
|
|
223
|
+
- **Line:** <line_number>
|
|
224
|
+
- **Code:**
|
|
225
|
+
```
|
|
226
|
+
<matched_text with surrounding context>
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Impact
|
|
230
|
+
<why this matters>
|
|
231
|
+
|
|
232
|
+
### Recommended Fix
|
|
233
|
+
<concrete fix suggestion>
|
|
234
|
+
|
|
235
|
+
### Acceptance Criteria
|
|
236
|
+
- [ ] <specific, verifiable condition>
|
|
237
|
+
- [ ] Quality gates pass after fix
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Labels for discovery findings: `type:discovery`, `priority:<level>`, `area:<inferred>`, `status:ready`
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
CI pipeline commands are listed in the Common CLI Commands section above (Pipelines/Workflows). Interpret: green=passed, red=failed (investigate before proceeding), pending=in progress.
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "When checking service health, CI pipeline status, endpoint availability, or cross-repo status"
|
|
3
|
+
globs: ""
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Ecosystem Health Check
|
|
8
|
+
|
|
9
|
+
Monitor health across configured service endpoints, CI pipelines, and critical issues. Automatically invoked during session-start when ecosystem-health is enabled in Session Config.
|
|
10
|
+
|
|
11
|
+
## Session Config Fields
|
|
12
|
+
|
|
13
|
+
This skill reads from the project's `## Session Config` section:
|
|
14
|
+
|
|
15
|
+
- **`health-endpoints`** -- list of `{name, url}` objects for service health checks
|
|
16
|
+
- **`cross-repos`** -- list of related repositories for critical issue scanning
|
|
17
|
+
|
|
18
|
+
Both fields are optional. The skill degrades gracefully when either is missing.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 1. Service Health
|
|
23
|
+
|
|
24
|
+
Read `health-endpoints` from Session Config. If not configured or empty:
|
|
25
|
+
|
|
26
|
+
> "No health endpoints configured in Session Config. Add `health-endpoints` to enable service monitoring."
|
|
27
|
+
|
|
28
|
+
Skip this section and proceed to CI Pipeline Status.
|
|
29
|
+
|
|
30
|
+
### Health Check Procedure
|
|
31
|
+
|
|
32
|
+
For each configured endpoint:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Example config:
|
|
36
|
+
# health-endpoints:
|
|
37
|
+
# - name: API
|
|
38
|
+
# url: https://api.example.com/health
|
|
39
|
+
# - name: Worker
|
|
40
|
+
# url: http://worker:8080/healthz
|
|
41
|
+
|
|
42
|
+
# Basic check
|
|
43
|
+
curl -sf <url> 2>/dev/null && echo "<name>: UP" || echo "<name>: DOWN"
|
|
44
|
+
|
|
45
|
+
# If endpoint returns JSON with a "status" field, extract it:
|
|
46
|
+
curl -sf <url> 2>/dev/null | python3 -c "
|
|
47
|
+
import json,sys
|
|
48
|
+
d=json.load(sys.stdin)
|
|
49
|
+
print(f'<name>: {d.get(\"status\",\"OK\")}')
|
|
50
|
+
" 2>/dev/null || echo "<name>: DOWN"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Generate check commands dynamically from config. Never hardcode service names or URLs.
|
|
54
|
+
|
|
55
|
+
### Status Classification
|
|
56
|
+
|
|
57
|
+
| Status | Meaning |
|
|
58
|
+
|--------|---------|
|
|
59
|
+
| **UP** | Endpoint responded successfully |
|
|
60
|
+
| **DOWN** | Endpoint unreachable or returned error |
|
|
61
|
+
| **DEGRADED** | Endpoint responded but reported unhealthy status in JSON body |
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 2. CI Pipeline Status
|
|
66
|
+
|
|
67
|
+
Query the latest pipeline/workflow runs for the current repo. Report the 3 most recent runs.
|
|
68
|
+
|
|
69
|
+
### VCS Detection
|
|
70
|
+
|
|
71
|
+
Detect the VCS platform per the VCS Auto-Detection section of the gitlab-ops rule. Then use the appropriate CLI:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# GitLab
|
|
75
|
+
glab pipeline list --per-page 3
|
|
76
|
+
|
|
77
|
+
# GitHub
|
|
78
|
+
gh run list --limit 3
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Report each run with: status (success/failed/pending), branch, and timestamp.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 3. Critical Issues
|
|
86
|
+
|
|
87
|
+
Read `cross-repos` from Session Config. If not configured or empty:
|
|
88
|
+
|
|
89
|
+
> "No cross-repos configured in Session Config. Add `cross-repos` to enable cross-project issue scanning."
|
|
90
|
+
|
|
91
|
+
Skip this section.
|
|
92
|
+
|
|
93
|
+
### Cross-Repo Issue Scan
|
|
94
|
+
|
|
95
|
+
For each repo in `cross-repos`:
|
|
96
|
+
|
|
97
|
+
1. Resolve project ID or owner/repo slug (see gitlab-ops Dynamic Project Resolution)
|
|
98
|
+
2. Query open issues with `priority:critical` or `priority:high` labels (limit 5 per repo)
|
|
99
|
+
3. Collect and report results across all configured repos
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# GitLab
|
|
103
|
+
glab api "projects/<PROJECT_ID>/issues?labels=priority:critical,priority:high&state=opened&per_page=5"
|
|
104
|
+
|
|
105
|
+
# GitHub
|
|
106
|
+
gh issue list --repo <owner/repo> --label "priority:critical" --limit 5
|
|
107
|
+
gh issue list --repo <owner/repo> --label "priority:high" --limit 5
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 4. Health Report Format
|
|
113
|
+
|
|
114
|
+
Present as a compact dashboard:
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
## Ecosystem Health
|
|
118
|
+
|
|
119
|
+
| Service | Status |
|
|
120
|
+
|---------|--------|
|
|
121
|
+
| API | UP |
|
|
122
|
+
| Worker | DOWN |
|
|
123
|
+
| DB | UP |
|
|
124
|
+
|
|
125
|
+
CI Pipeline: green (last 3 runs passed)
|
|
126
|
+
Critical Issues: 2 across 3 repos
|
|
127
|
+
|
|
128
|
+
### Attention Required
|
|
129
|
+
- Worker service is DOWN
|
|
130
|
+
- 2 critical issues in cross-repos (see details below)
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Conditional Sections
|
|
134
|
+
|
|
135
|
+
- If no `health-endpoints` configured: omit the service table entirely
|
|
136
|
+
- If no `cross-repos` configured: omit the critical issues section
|
|
137
|
+
- Only show "Attention Required" if any service is DOWN/DEGRADED or critical issue count > 0
|
|
138
|
+
|
|
139
|
+
### Status Indicators
|
|
140
|
+
|
|
141
|
+
| Indicator | Condition |
|
|
142
|
+
|-----------|-----------|
|
|
143
|
+
| All clear | All services UP, CI green, no critical issues |
|
|
144
|
+
| Warning | Any service DEGRADED or CI pending |
|
|
145
|
+
| Alert | Any service DOWN, CI failed, or critical issues exist |
|