session-orchestrator 5.1.0 → 5.3.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/.agents/skills/architecture/SKILL.md +3 -1
- package/.agents/skills/autopilot/SKILL.md +6 -1
- package/.agents/skills/autopilot/agents/openai.yaml +5 -0
- package/.agents/skills/bootstrap/SKILL.md +7 -1
- package/.agents/skills/bootstrap/agents/openai.yaml +5 -0
- package/.agents/skills/brainstorm/SKILL.md +8 -1
- package/.agents/skills/brainstorm/agents/openai.yaml +5 -0
- package/.agents/skills/claude-md-drift-check/SKILL.md +3 -1
- package/.agents/skills/close/SKILL.md +21 -0
- package/.agents/skills/close/agents/openai.yaml +5 -0
- package/.agents/skills/convergence-monitoring/SKILL.md +4 -2
- package/.agents/skills/debug/SKILL.md +7 -1
- package/.agents/skills/debug/agents/openai.yaml +5 -0
- package/.agents/skills/discovery/SKILL.md +7 -2
- package/.agents/skills/discovery/agents/openai.yaml +5 -0
- package/.agents/skills/dispatcher/SKILL.md +7 -1
- package/.agents/skills/dispatcher/agents/openai.yaml +5 -0
- package/.agents/skills/docs-orchestrator/SKILL.md +3 -1
- package/.agents/skills/ecosystem-health/SKILL.md +3 -1
- package/.agents/skills/eli5/SKILL.md +7 -1
- package/.agents/skills/eli5/agents/openai.yaml +5 -0
- package/.agents/skills/eval/SKILL.md +7 -2
- package/.agents/skills/eval/agents/openai.yaml +5 -0
- package/.agents/skills/evolve/SKILL.md +8 -3
- package/.agents/skills/evolve/agents/openai.yaml +5 -0
- package/.agents/skills/frontmatter-guard/SKILL.md +3 -1
- package/.agents/skills/gitlab-ops/SKILL.md +3 -1
- package/.agents/skills/gitlab-portfolio/SKILL.md +3 -1
- package/.agents/skills/go/SKILL.md +22 -0
- package/.agents/skills/go/agents/openai.yaml +5 -0
- package/.agents/skills/grill/SKILL.md +7 -1
- package/.agents/skills/grill/agents/openai.yaml +5 -0
- package/.agents/skills/harness-audit/SKILL.md +20 -0
- package/.agents/skills/harness-audit/agents/openai.yaml +5 -0
- package/.agents/skills/hook-development/SKILL.md +3 -1
- package/.agents/skills/mcp-builder/SKILL.md +3 -1
- package/.agents/skills/memory-cleanup/SKILL.md +6 -1
- package/.agents/skills/memory-cleanup/agents/openai.yaml +5 -0
- package/.agents/skills/mode-selector/SKILL.md +3 -1
- package/.agents/skills/npm-publish/SKILL.md +4 -2
- package/.agents/skills/peekaboo-driver/SKILL.md +3 -1
- package/.agents/skills/persona-panel/SKILL.md +6 -1
- package/.agents/skills/persona-panel/agents/openai.yaml +5 -0
- package/.agents/skills/plan/SKILL.md +8 -2
- package/.agents/skills/plan/agents/openai.yaml +5 -0
- package/.agents/skills/playwright-driver/SKILL.md +3 -1
- package/.agents/skills/portfolio/SKILL.md +21 -0
- package/.agents/skills/portfolio/agents/openai.yaml +5 -0
- package/.agents/skills/quality-gates/SKILL.md +3 -1
- package/.agents/skills/reconcile/SKILL.md +6 -1
- package/.agents/skills/reconcile/agents/openai.yaml +5 -0
- package/.agents/skills/release/SKILL.md +22 -0
- package/.agents/skills/release/agents/openai.yaml +5 -0
- package/.agents/skills/remote-offload/SKILL.md +3 -1
- package/.agents/skills/repo-audit/SKILL.md +6 -1
- package/.agents/skills/repo-audit/agents/openai.yaml +5 -0
- package/.agents/skills/session/SKILL.md +21 -0
- package/.agents/skills/session/agents/openai.yaml +5 -0
- package/.agents/skills/session-end/SKILL.md +3 -1
- package/.agents/skills/session-plan/SKILL.md +3 -1
- package/.agents/skills/session-start/SKILL.md +3 -1
- package/.agents/skills/spinout/SKILL.md +6 -1
- package/.agents/skills/spinout/agents/openai.yaml +5 -0
- package/.agents/skills/sunset-review/SKILL.md +7 -1
- package/.agents/skills/sunset-review/agents/openai.yaml +5 -0
- package/.agents/skills/templates-ack/SKILL.md +21 -0
- package/.agents/skills/templates-ack/agents/openai.yaml +5 -0
- package/.agents/skills/test/SKILL.md +21 -0
- package/.agents/skills/test/agents/openai.yaml +5 -0
- package/.agents/skills/test-runner/SKILL.md +3 -1
- package/.agents/skills/tmux-layout/SKILL.md +3 -1
- package/.agents/skills/using-orchestrator/SKILL.md +3 -1
- package/.agents/skills/ux-grill/SKILL.md +7 -1
- package/.agents/skills/ux-grill/agents/openai.yaml +5 -0
- package/.agents/skills/vault-mirror/SKILL.md +3 -1
- package/.agents/skills/vault-sync/SKILL.md +3 -1
- package/.agents/skills/wave-executor/SKILL.md +3 -1
- package/.agents/skills/write-executable-plan/SKILL.md +3 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +4 -4
- package/.codex-plugin/skills/autopilot/SKILL.md +5 -4
- package/.codex-plugin/skills/bootstrap/SKILL.md +8 -4
- package/.codex-plugin/skills/brainstorm/SKILL.md +11 -4
- package/.codex-plugin/skills/close/SKILL.md +3 -3
- package/.codex-plugin/skills/convergence-monitoring/SKILL.md +1 -1
- package/.codex-plugin/skills/debug/SKILL.md +11 -4
- package/.codex-plugin/skills/discovery/SKILL.md +8 -4
- package/.codex-plugin/skills/dispatcher/SKILL.md +4 -4
- package/.codex-plugin/skills/eli5/SKILL.md +9 -4
- package/.codex-plugin/skills/eval/SKILL.md +9 -4
- package/.codex-plugin/skills/evolve/SKILL.md +9 -4
- package/.codex-plugin/skills/go/SKILL.md +3 -3
- package/.codex-plugin/skills/grill/SKILL.md +11 -4
- package/.codex-plugin/skills/harness-audit/SKILL.md +4 -3
- package/.codex-plugin/skills/memory-cleanup/SKILL.md +9 -4
- package/.codex-plugin/skills/npm-publish/SKILL.md +1 -1
- package/.codex-plugin/skills/persona-panel/SKILL.md +5 -5
- package/.codex-plugin/skills/plan/SKILL.md +8 -4
- package/.codex-plugin/skills/portfolio/SKILL.md +3 -3
- package/.codex-plugin/skills/reconcile/SKILL.md +9 -4
- package/.codex-plugin/skills/release/SKILL.md +3 -3
- package/.codex-plugin/skills/repo-audit/SKILL.md +6 -4
- package/.codex-plugin/skills/session/SKILL.md +1 -1
- package/.codex-plugin/skills/spinout/SKILL.md +4 -4
- package/.codex-plugin/skills/sunset-review/SKILL.md +5 -4
- package/.codex-plugin/skills/test/SKILL.md +3 -3
- package/.codex-plugin/skills/ux-grill/SKILL.md +11 -4
- package/.cursor/commands/autopilot.md +4 -4
- package/.cursor/commands/bootstrap.md +5 -4
- package/.cursor/commands/brainstorm.md +5 -4
- package/.cursor/commands/close.md +4 -3
- package/.cursor/commands/debug.md +4 -4
- package/.cursor/commands/discovery.md +4 -4
- package/.cursor/commands/dispatcher.md +4 -4
- package/.cursor/commands/eli5.md +4 -4
- package/.cursor/commands/eval.md +4 -4
- package/.cursor/commands/evolve.md +4 -4
- package/.cursor/commands/go.md +4 -3
- package/.cursor/commands/grill.md +4 -4
- package/.cursor/commands/harness-audit.md +3 -3
- package/.cursor/commands/memory-cleanup.md +4 -4
- package/.cursor/commands/persona-panel.md +4 -4
- package/.cursor/commands/plan.md +5 -4
- package/.cursor/commands/portfolio.md +3 -3
- package/.cursor/commands/reconcile.md +4 -4
- package/.cursor/commands/release.md +4 -3
- package/.cursor/commands/repo-audit.md +4 -4
- package/.cursor/commands/session.md +1 -1
- package/.cursor/commands/spinout.md +4 -4
- package/.cursor/commands/sunset-review.md +4 -4
- package/.cursor/commands/test.md +3 -3
- package/.cursor/commands/ux-grill.md +4 -4
- package/.cursor/rules/000-session-orchestrator.mdc +0 -2
- package/.cursor/rules/010-session-workflow.mdc +2 -2
- package/.cursor/rules/050-plan.mdc +1 -1
- package/.cursor/skills/bootstrap/SKILL.md +1 -0
- package/.cursor/skills/close/SKILL.md +13 -0
- package/.cursor/skills/convergence-monitoring/SKILL.md +1 -0
- package/.cursor/skills/debug/SKILL.md +0 -1
- package/.cursor/skills/discovery/SKILL.md +0 -1
- package/.cursor/skills/dispatcher/SKILL.md +0 -1
- package/.cursor/skills/eli5/SKILL.md +0 -1
- package/.cursor/skills/eval/SKILL.md +1 -1
- package/.cursor/skills/evolve/SKILL.md +0 -1
- package/.cursor/skills/go/SKILL.md +13 -0
- package/.cursor/skills/grill/SKILL.md +0 -1
- package/.cursor/skills/harness-audit/SKILL.md +12 -0
- package/.cursor/skills/npm-publish/SKILL.md +1 -0
- package/.cursor/skills/portfolio/SKILL.md +12 -0
- package/.cursor/skills/release/SKILL.md +13 -0
- package/.cursor/skills/repo-audit/SKILL.md +0 -1
- package/.cursor/skills/sunset-review/SKILL.md +0 -1
- package/.cursor/skills/test/SKILL.md +12 -0
- package/.cursor/skills/ux-grill/SKILL.md +0 -1
- package/.cursor-plugin/plugin.json +1 -1
- package/.orchestrator/policy/blocked-commands.json +13 -4
- package/AGENTS.md +3 -2
- package/CHANGELOG.md +197 -0
- package/README.md +11 -9
- package/SECURITY.md +12 -0
- package/agents/dialectic-deriver.md +13 -10
- package/agents/eval-judge.md +67 -45
- package/agents/skill-applied-judge.md +34 -19
- package/commands/session.md +17 -3
- package/docs/baseline.md +12 -6
- package/docs/ci-setup.md +53 -0
- package/docs/codex-setup.md +15 -3
- package/docs/components.md +13 -6
- package/docs/events-schema.md +59 -9
- package/docs/install.md +16 -0
- package/docs/persona-panel.md +1 -1
- package/docs/pi-setup.md +1 -1
- package/docs/rule-authoring.md +135 -14
- package/docs/scope-collision-guard.md +2 -0
- package/docs/session-config-reference.md +106 -11
- package/docs/session-config-template.md +31 -2
- package/docs/telemetry.md +2 -0
- package/hooks/_lib/hook-import-set.json +125 -8
- package/hooks/_lib/subagent-paths.mjs +15 -0
- package/hooks/_lib/subagent-transcript.mjs +582 -31
- package/hooks/_lib/vcs-create-matcher.mjs +217 -62
- package/hooks/config-protection.mjs +11 -3
- package/hooks/cwd-change-restore.mjs +11 -3
- package/hooks/enforce-commands.mjs +70 -23
- package/hooks/enforce-scope.mjs +143 -33
- package/hooks/hooks-codex.json +1 -1
- package/hooks/hooks.json +1 -1
- package/hooks/loop-guard.mjs +11 -3
- package/hooks/on-session-end.mjs +72 -25
- package/hooks/on-session-start.mjs +48 -11
- package/hooks/on-stop.mjs +211 -23
- package/hooks/operator-steer.mjs +11 -3
- package/hooks/post-bash-issue-budget-refund.mjs +18 -8
- package/hooks/post-bash-write-verify.mjs +6 -2
- package/hooks/post-edit-import-probe.mjs +17 -9
- package/hooks/post-edit-validate.mjs +13 -5
- package/hooks/post-subagent-discovery-validator.mjs +98 -13
- package/hooks/post-tool-batch-wave-signal.mjs +200 -38
- package/hooks/post-tool-failure-corrective-context.mjs +11 -5
- package/hooks/post-tooluse-frontend-slop.mjs +10 -4
- package/hooks/pre-auq-clarity.mjs +18 -2
- package/hooks/pre-bash-destructive-guard.mjs +80 -9
- package/hooks/pre-bash-issue-budget.mjs +119 -28
- package/hooks/pre-bash-memory-propose-audit.mjs +86 -54
- package/hooks/pre-bash-sessions-ledger-guard.mjs +391 -20
- package/hooks/pre-bash-staging-fence.mjs +335 -31
- package/hooks/pre-bash-templates-first.mjs +19 -14
- package/hooks/pre-task-scope-disjoint.mjs +385 -5
- package/hooks/skill-invocation-telemetry.mjs +2 -1
- package/hooks/subagent-telemetry.mjs +15 -19
- package/hooks/wave-scope-commit-guard.mjs +197 -100
- package/monitors/monitors.json +1 -1
- package/output-styles/wave-summary.md +1 -1
- package/package.json +2 -1
- package/pi/prompts/autopilot.md +3 -3
- package/pi/prompts/bootstrap.md +3 -3
- package/pi/prompts/brainstorm.md +3 -3
- package/pi/prompts/close.md +2 -2
- package/pi/prompts/debug.md +3 -3
- package/pi/prompts/discovery.md +3 -3
- package/pi/prompts/dispatcher.md +3 -3
- package/pi/prompts/eli5.md +3 -3
- package/pi/prompts/eval.md +3 -3
- package/pi/prompts/evolve.md +3 -3
- package/pi/prompts/go.md +2 -2
- package/pi/prompts/grill.md +3 -3
- package/pi/prompts/harness-audit.md +2 -3
- package/pi/prompts/memory-cleanup.md +3 -3
- package/pi/prompts/persona-panel.md +3 -3
- package/pi/prompts/plan.md +3 -3
- package/pi/prompts/portfolio.md +2 -2
- package/pi/prompts/reconcile.md +3 -3
- package/pi/prompts/release.md +3 -3
- package/pi/prompts/repo-audit.md +3 -4
- package/pi/prompts/session.md +2 -2
- package/pi/prompts/spinout.md +3 -3
- package/pi/prompts/sunset-review.md +3 -3
- package/pi/prompts/templates-ack.md +1 -1
- package/pi/prompts/test.md +3 -3
- package/pi/prompts/ux-grill.md +3 -3
- package/rules/README.md +1 -1
- package/rules/opt-in-domain/prompt-caching.md +1 -1
- package/rules/opt-in-stack/backend-data.md +1 -1
- package/rules/opt-in-stack/backend.md +3 -3
- package/rules/opt-in-stack/frontend.md +1 -1
- package/rules/opt-in-stack/security-web.md +3 -3
- package/rules/opt-in-stack/swift.md +1 -1
- package/scripts/archive-closed-prds.mjs +2 -2
- package/scripts/auq-audit.mjs +2 -3
- package/scripts/autopilot.mjs +23 -2
- package/scripts/backfill-abandoned-sessions.mjs +171 -15
- package/scripts/backfill-evidence-digest.mjs +2 -1
- package/scripts/backfill-learnings-from-vault.mjs +2 -2
- package/scripts/check-package-manager.mjs +2 -2
- package/scripts/check-sessions-integrity.mjs +300 -0
- package/scripts/ci/assert-vitest-green.mjs +2 -1
- package/scripts/dialectic-deriver.mjs +50 -13
- package/scripts/emit-session.mjs +77 -32
- package/scripts/eval-session.mjs +65 -3
- package/scripts/export-hw-learnings.mjs +2 -1
- package/scripts/express-path.mjs +1 -1
- package/scripts/gc-stale-worktrees.mjs +2 -1
- package/scripts/generate-agents-skills.mjs +102 -29
- package/scripts/generate-codex-skills.mjs +48 -4
- package/scripts/generate-cursor-adapter.mjs +220 -11
- package/scripts/generate-hook-import-set.mjs +12 -27
- package/scripts/generate-pi-prompts.mjs +183 -13
- package/scripts/github-protection-audit.mjs +2 -3
- package/scripts/lib/agent-frontmatter.mjs +23 -1
- package/scripts/lib/agent-status.mjs +2 -31
- package/scripts/lib/auq/clarity.mjs +10 -2
- package/scripts/lib/auq/parse.mjs +12 -31
- package/scripts/lib/auq/schema.mjs +56 -41
- package/scripts/lib/auto-dialectic.mjs +304 -15
- package/scripts/lib/autopilot/flags.mjs +12 -1
- package/scripts/lib/autopilot/kill-switches.mjs +6 -3
- package/scripts/lib/autopilot/loop.mjs +14 -1
- package/scripts/lib/autopilot/stall-sampler.mjs +80 -23
- package/scripts/lib/ci-status-banner.mjs +376 -16
- package/scripts/lib/claude-md-budget-lint.mjs +2 -5
- package/scripts/lib/command-blocker.mjs +408 -33
- package/scripts/lib/config/dialectic.mjs +12 -3
- package/scripts/lib/config/drift-check.mjs +19 -0
- package/scripts/lib/config/gate.mjs +74 -0
- package/scripts/lib/config/reaper.mjs +162 -0
- package/scripts/lib/config.mjs +14 -0
- package/scripts/lib/convergence-monitor.mjs +76 -13
- package/scripts/lib/cursor-hook-bridge.mjs +2 -2
- package/scripts/lib/description-surface.mjs +2 -5
- package/scripts/lib/dispatcher/cli.mjs +2 -1
- package/scripts/lib/ecosystem-health.mjs +11 -0
- package/scripts/lib/ecosystem-wizard.mjs +2 -1
- package/scripts/lib/eval/engine.mjs +421 -53
- package/scripts/lib/eval/judge.mjs +463 -40
- package/scripts/lib/eval/schema.mjs +10 -1
- package/scripts/lib/events-rotation.mjs +221 -25
- package/scripts/lib/events-schema.mjs +114 -0
- package/scripts/lib/events.mjs +524 -5
- package/scripts/lib/fetch-baseline.mjs +3 -8
- package/scripts/lib/frontmatter-guard.mjs +21 -10
- package/scripts/lib/gates/gate-baseline.mjs +27 -2
- package/scripts/lib/gates/gate-full.mjs +28 -3
- package/scripts/lib/gates/gate-helpers.mjs +243 -21
- package/scripts/lib/gates/gate-incremental.mjs +28 -3
- package/scripts/lib/gates/gate-per-file.mjs +27 -2
- package/scripts/lib/gitlab-ops/stale-mr-sweep.mjs +2 -1
- package/scripts/lib/gitlab-portfolio/cli.mjs +2 -1
- package/scripts/lib/gitlab-portfolio/markdown-writer.mjs +6 -1
- package/scripts/lib/instruction-budget-guard.mjs +332 -50
- package/scripts/lib/io.mjs +42 -8
- package/scripts/lib/is-main-module.mjs +82 -0
- package/scripts/lib/issue-close-strip-labels.mjs +207 -49
- package/scripts/lib/js-mask.mjs +197 -0
- package/scripts/lib/learnings/evolve-telemetry.mjs +11 -7
- package/scripts/lib/locks/index.mjs +32 -25
- package/scripts/lib/maintenance-due-banner.mjs +122 -91
- package/scripts/lib/orphan-reaper.mjs +1588 -0
- package/scripts/lib/peer-cards/merger.mjs +48 -10
- package/scripts/lib/peer-cards/reader.mjs +78 -2
- package/scripts/lib/peer-discovery.mjs +2 -5
- package/scripts/lib/playwright-driver/runner.mjs +2 -1
- package/scripts/lib/process-group.mjs +899 -0
- package/scripts/lib/quality-gate.mjs +107 -28
- package/scripts/lib/reconcile/backlog.mjs +368 -0
- package/scripts/lib/reconcile/engine.mjs +55 -188
- package/scripts/lib/reconcile/rule-expiry-sweep.mjs +884 -0
- package/scripts/lib/reconcile/sanitize.mjs +69 -3
- package/scripts/lib/reconcile-nudge-banner.mjs +138 -45
- package/scripts/lib/resource-probe/parsers.mjs +31 -0
- package/scripts/lib/rule-loader.mjs +41 -12
- package/scripts/lib/rules-sync.mjs +2 -5
- package/scripts/lib/scope-echo.mjs +429 -7
- package/scripts/lib/scope-gate.mjs +605 -1
- package/scripts/lib/session-close-backfill.mjs +91 -12
- package/scripts/lib/session-id.mjs +9 -20
- package/scripts/lib/session-invocation.mjs +20 -0
- package/scripts/lib/session-schema/constants.mjs +30 -2
- package/scripts/lib/session-schema/normalizer.mjs +56 -4
- package/scripts/lib/session-schema.mjs +8 -3
- package/scripts/lib/session-start-probes.mjs +95 -10
- package/scripts/lib/sessions-canonical.mjs +23 -0
- package/scripts/lib/sessions-integrity-banner.mjs +7 -1
- package/scripts/lib/sessions-staleness-banner.mjs +193 -51
- package/scripts/lib/skill-evidence-window.mjs +891 -0
- package/scripts/lib/skill-evolution/candidate-intake.mjs +133 -12
- package/scripts/lib/skill-evolution/engine.mjs +18 -9
- package/scripts/lib/skill-judge.mjs +45 -3
- package/scripts/lib/state-md.mjs +84 -3
- package/scripts/lib/sunset/walker.mjs +31 -4
- package/scripts/lib/tail-window.mjs +56 -0
- package/scripts/lib/telemetry/schema.mjs +30 -0
- package/scripts/lib/telemetry/sync.mjs +61 -6
- package/scripts/lib/telemetry-flush-health-banner.mjs +4 -22
- package/scripts/lib/test-runner/issue-reconcile.mjs +48 -16
- package/scripts/lib/tests-src-ratio.mjs +2 -6
- package/scripts/lib/tmux-layout/telemetry-stats.mjs +74 -14
- package/scripts/lib/user-invocable-skills.mjs +205 -0
- package/scripts/lib/ux-grill/reconcile.mjs +48 -22
- package/scripts/lib/validate/check-agents-skills.mjs +26 -15
- package/scripts/lib/validate/check-banner-parity.mjs +2 -2
- package/scripts/lib/validate/check-cursor-adapter.mjs +3 -2
- package/scripts/lib/validate/check-dead-bridge.mjs +2 -2
- package/scripts/lib/validate/check-doc-cli-commands.mjs +2 -2
- package/scripts/lib/validate/check-entry-guard.mjs +329 -0
- package/scripts/lib/validate/check-guard-requires-parity.mjs +2 -2
- package/scripts/lib/validate/check-hook-entry-guards.mjs +636 -0
- package/scripts/lib/validate/check-hooks-emit-event-guard.mjs +2 -2
- package/scripts/lib/validate/check-learning-provenance.mjs +2 -2
- package/scripts/lib/validate/check-pi-prompts.mjs +1 -0
- package/scripts/lib/validate/check-rules.mjs +7 -5
- package/scripts/lib/validate/check-skill-links.mjs +35 -6
- package/scripts/lib/validate/check-skill-script-paths.mjs +241 -29
- package/scripts/lib/validate/check-test-git-config-target.mjs +26 -36
- package/scripts/lib/validate/check-unicode-safety.mjs +2 -2
- package/scripts/lib/validate/check-untracked-test-deps.mjs +9 -104
- package/scripts/lib/validate/check-unwired-features.mjs +220 -33
- package/scripts/lib/validate/check-validator-registration.mjs +36 -12
- package/scripts/lib/validate/check-vcs-repo-flag.mjs +2 -2
- package/scripts/lib/validate/confidential-names.mjs +10 -0
- package/scripts/lib/validate-vendored-rules.mjs +39 -12
- package/scripts/lib/vault-mirror/namespace.mjs +46 -8
- package/scripts/lib/vault-mirror/process.mjs +10 -3
- package/scripts/lib/vault-mirror/render-sessions.mjs +12 -2
- package/scripts/lib/vault-status/narrative-mirror.mjs +31 -7
- package/scripts/lib/vault-yaml.mjs +118 -0
- package/scripts/lib/wave-transcript-tail.mjs +2 -2
- package/scripts/lib/worktree/lifecycle.mjs +153 -1
- package/scripts/lock-reaper.mjs +2 -1
- package/scripts/materialize-wave-scope.mjs +87 -4
- package/scripts/migrate-sessions-jsonl.mjs +2 -1
- package/scripts/migrate-vault-paths.mjs +2 -3
- package/scripts/release-session-lock.mjs +305 -0
- package/scripts/release.mjs +109 -39
- package/scripts/relocate-vault-corpus.mjs +2 -3
- package/scripts/repair-invalid-sessions.mjs +2 -2
- package/scripts/resolve-session-invocation.mjs +59 -0
- package/scripts/run-quality-gate.mjs +156 -17
- package/scripts/session-shape.mjs +2 -2
- package/scripts/site-numbers.mjs +35 -11
- package/scripts/sweep-expired-rules.mjs +227 -0
- package/scripts/validate-plugin.mjs +21 -0
- package/scripts/validate-wave-scope.mjs +32 -105
- package/scripts/vault-consolidate.mjs +2 -2
- package/scripts/vault-mirror.mjs +11 -4
- package/scripts/wave-scope-binding.mjs +2 -3
- package/skills/_shared/bootstrap-gate.md +1 -1
- package/skills/_shared/monitor-patterns.md +1 -1
- package/skills/_shared/platform-tools.md +23 -11
- package/skills/_shared/research-evidence.md +53 -0
- package/skills/_shared/state-ownership.md +3 -0
- package/skills/autopilot/SKILL.md +80 -11
- package/skills/bootstrap/SKILL.md +51 -1
- package/skills/brainstorm/SKILL.md +16 -0
- package/skills/claude-md-drift-check/SKILL.md +1 -1
- package/skills/claude-md-drift-check/checker.mjs +49 -11
- package/{commands/close.md → skills/close/SKILL.md} +9 -3
- package/skills/convergence-monitoring/README.md +8 -1
- package/skills/convergence-monitoring/SIGNALS.md +50 -6
- package/skills/convergence-monitoring/SKILL.md +15 -6
- package/skills/debug/SKILL.md +10 -0
- package/skills/discovery/SKILL.md +24 -1
- package/skills/discovery/probes-session.md +2 -2
- package/skills/dispatcher/SKILL.md +38 -7
- package/skills/eli5/SKILL.md +11 -0
- package/skills/eval/SKILL.md +52 -23
- package/skills/eval/rubric-v1.md +1 -0
- package/skills/eval/rubric-v2.md +457 -0
- package/skills/evolve/SKILL.md +9 -2
- package/skills/evolve/references/evolve-dialectic-mode.md +46 -25
- package/skills/gitlab-ops/SKILL.md +3 -2
- package/{commands/go.md → skills/go/SKILL.md} +9 -1
- package/skills/grill/SKILL.md +19 -0
- package/{commands/harness-audit.md → skills/harness-audit/SKILL.md} +7 -2
- package/skills/hook-development/SKILL.md +46 -41
- package/skills/memory-cleanup/SKILL.md +7 -0
- package/skills/npm-publish/SKILL.md +2 -2
- package/skills/persona-panel/SKILL.md +56 -1
- package/skills/persona-panel/persona-format.md +1 -1
- package/skills/plan/SKILL.md +28 -1
- package/{commands/portfolio.md → skills/portfolio/SKILL.md} +8 -2
- package/skills/reconcile/SKILL.md +21 -0
- package/{commands/release.md → skills/release/SKILL.md} +16 -2
- package/skills/repo-audit/SKILL.md +7 -0
- package/skills/session-end/SKILL.md +13 -16
- package/skills/session-end/discovery-scan.md +1 -1
- package/skills/session-end/phase-3-6-tail.md +55 -9
- package/skills/session-end/plan-verification.md +2 -2
- package/skills/session-end/references/phase-5-issue-cleanup.md +9 -14
- package/skills/session-end/session-metrics-write.md +10 -0
- package/skills/session-plan/SKILL.md +18 -6
- package/skills/session-plan/references/session-plan-task-classification.md +2 -2
- package/skills/session-start/SKILL.md +5 -4
- package/skills/session-start/phase-8-5-express-path.md +6 -6
- package/skills/session-start/references/phase-1-5-session-continuity.md +1 -1
- package/skills/session-start/references/phase-2-7-portfolio-snapshot.md +1 -1
- package/skills/session-start/references/phase-4-ssot-environment-check.md +6 -4
- package/skills/spinout/SKILL.md +12 -1
- package/skills/sunset-review/SKILL.md +13 -0
- package/{commands/test.md → skills/test/SKILL.md} +10 -4
- package/skills/ux-grill/SKILL.md +20 -2
- package/skills/wave-executor/SKILL.md +14 -7
- package/skills/wave-executor/circuit-breaker.md +2 -0
- package/skills/wave-executor/references/wave-executor-state-init.md +18 -4
- package/skills/wave-executor/references/wave-loop-dispatch.md +5 -2
- package/skills/wave-executor/references/wave-loop-review.md +17 -1
- package/commands/autopilot.md +0 -80
- package/commands/bootstrap.md +0 -56
- package/commands/brainstorm.md +0 -48
- package/commands/debug.md +0 -36
- package/commands/discovery.md +0 -32
- package/commands/dispatcher.md +0 -59
- package/commands/eli5.md +0 -33
- package/commands/eval.md +0 -28
- package/commands/evolve.md +0 -10
- package/commands/grill.md +0 -45
- package/commands/memory-cleanup.md +0 -26
- package/commands/persona-panel.md +0 -121
- package/commands/plan.md +0 -15
- package/commands/reconcile.md +0 -23
- package/commands/repo-audit.md +0 -24
- package/commands/spinout.md +0 -15
- package/commands/sunset-review.md +0 -27
- package/commands/ux-grill.md +0 -51
|
@@ -178,7 +178,8 @@ glab issue list -R <OWNER>/<REPO> --closed --per-page 10 # Rec
|
|
|
178
178
|
glab issue view -R <OWNER>/<REPO> <IID> # View issue details
|
|
179
179
|
glab issue view -R <OWNER>/<REPO> <IID> --comments # With comments
|
|
180
180
|
glab issue create -R <OWNER>/<REPO> --title "title" --label "priority::high,status:ready"
|
|
181
|
-
glab issue update -R <OWNER>/<REPO> <IID> --label "status:in-progress" #
|
|
181
|
+
glab issue update -R <OWNER>/<REPO> <IID> --label "status:in-progress" # ADDS; existing labels stay — see caveat below
|
|
182
|
+
glab issue update -R <OWNER>/<REPO> <IID> --unlabel "status:in-progress" # removes only the named label(s)
|
|
182
183
|
glab issue close -R <OWNER>/<REPO> <IID> # then VERIFY: re-read the issue; it must show state=closed
|
|
183
184
|
glab issue note -R <OWNER>/<REPO> <IID> -m "Comment text" # Add comment
|
|
184
185
|
|
|
@@ -196,7 +197,7 @@ glab api --hostname "$GITLAB_HOST" "projects/${ENCODED_PROJECT_PATH}/issues?stat
|
|
|
196
197
|
glab api --hostname "$GITLAB_HOST" "projects/${ENCODED_PROJECT_PATH}/milestones?state=active"
|
|
197
198
|
```
|
|
198
199
|
|
|
199
|
-
**Label update caveat
|
|
200
|
+
**Label update caveat: the `glab` flags add or remove, the raw API `labels=` sets the whole list.** Measured 2026-09-19 with `glab 1.117.0 (44790937b)`: `glab issue update <IID> --label "status:in-progress"` on 7 issues (#1390 #1389 #1339 #1298 #1273 #1221 #1202) ADDED the label and left every existing label in place. Read-only re-check (canonical identity form above): `glab api --hostname "$GITLAB_HOST" "projects/${ENCODED_PROJECT_PATH}/issues/${ISSUE_IID}" | jq .labels` → for #1390 `["area:meta","follow-up","priority::low","status:in-progress","type:chore"]`. `glab issue update --help` agrees (`-l --label Add labels.`, `-u --unlabel Remove labels.`). To remove a label, use `--unlabel` (comma-separated for several); `stripStatusLabels` in `scripts/lib/issue-close-strip-labels.mjs` does exactly that. The raw REST API is different, and this part comes from the docs, not a measurement: the GitLab Issues API documents `labels` on `PUT /projects/:id/issues/:issue_iid` as "Comma-separated label names for an issue. Set to an empty string to unassign all labels.", with `add_labels` / `remove_labels` as the incremental parameters. So a `glab api --silent --hostname "$GITLAB_HOST" -X PUT "projects/${ENCODED_PROJECT_PATH}/issues/${ISSUE_IID}" -f labels=…` call must carry the FULL desired set; prefer `add_labels=` / `remove_labels=`. Other `glab` versions were not measured, so re-run the read-only check after an upgrade. `glab mr update` lists the same `--label` "Add labels." / `--unlabel` "Remove labels." help text in 1.117.0; its behaviour was not measured.
|
|
200
201
|
|
|
201
202
|
**Close verification:** after `glab issue close <IID>`, always verify the close actually landed — re-read the issue (`glab issue view <IID>`) and confirm `state: closed` in the output. A stale or wrong project path, or a silent 404, can report local success while closing nothing; use the canonical project identity above for API operations rather than resolving a numeric ID.
|
|
202
203
|
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: go
|
|
2
3
|
description: Approve session plan and begin wave execution
|
|
4
|
+
user-invocable: true
|
|
3
5
|
disable-model-invocation: true
|
|
4
6
|
argument-hint: "[optional instructions]"
|
|
7
|
+
model: inherit
|
|
5
8
|
---
|
|
6
|
-
|
|
7
9
|
# Execute Session Plan
|
|
8
10
|
|
|
9
11
|
The user has approved the session plan. Begin execution immediately.
|
|
10
12
|
|
|
13
|
+
## Invocation
|
|
14
|
+
|
|
15
|
+
Invoked as `/go [optional instructions]` with arguments: **$ARGUMENTS**. The user has approved the session plan; begin execution immediately.
|
|
16
|
+
|
|
17
|
+
`$ARGUMENTS` is optional priority guidance, forwarded verbatim to `skills/wave-executor/SKILL.md` for agent prompts (see "Standard Execution" below). It never re-opens the plan: do NOT re-plan, do NOT re-analyze — execute the agreed plan NOW with maximum efficiency.
|
|
18
|
+
|
|
11
19
|
## Express Path Detection
|
|
12
20
|
|
|
13
21
|
Before invoking the wave-executor, check the conversation context for the Express Path activation banner — printed by `node scripts/express-path.mjs` in session-start Phase 8.5, and carried through session-plan's Short-Circuit (#1146):
|
package/skills/grill/SKILL.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: grill
|
|
3
3
|
description: Use when the user wants a plan, design, or PRD stress-tested before any build — relentlessly interrogates one decision at a time, grounds every question in the codebase, hunts contradictions against the domain language and the code, and challenges the load-bearing assumptions. Triggered by "grill me", "stress-test this plan", "poke holes in my design". Composable — run standalone or as an adversarial pass before /plan feature.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
argument-hint: "[file-path-or-topic]"
|
|
4
6
|
model: inherit
|
|
5
7
|
color: red
|
|
6
8
|
tools: Read, Grep, Glob, Bash, Write
|
|
@@ -10,6 +12,23 @@ tools: Read, Grep, Glob, Bash, Write
|
|
|
10
12
|
|
|
11
13
|
> Adversarial pressure-test for a plan, design, or PRD the user already believes in. The complement to `/brainstorm`: brainstorm *narrows* an ambiguous design space cooperatively; grill *attacks* a settled-feeling plan to find what's wrong before it's built. Optionally writes `docs/specs/YYYY-MM-DD-<slug>-grill.md`. No HARD-GATE — composable by design.
|
|
12
14
|
|
|
15
|
+
## Invocation
|
|
16
|
+
|
|
17
|
+
Invoked as `/grill [file-path-or-topic]` with arguments: **$ARGUMENTS** (resolved in Phase 0).
|
|
18
|
+
|
|
19
|
+
The argument is optional and is either a file path to grill (a PRD, spec, `STATE.md`) or a topic/slug. If absent, grill the plan already present in the current conversation; if there is none, ask the user — via AUQ — to state it first.
|
|
20
|
+
|
|
21
|
+
- `/grill` — grills the plan in the current conversation context.
|
|
22
|
+
- `/grill docs/prd/2026-06-09-export.md` — grills a specific PRD file. <!-- path-check: example -->
|
|
23
|
+
- `/grill "partial order cancellation"` — grills the named idea, slug pre-set.
|
|
24
|
+
|
|
25
|
+
| Situation | Use |
|
|
26
|
+
|-----------|-----|
|
|
27
|
+
| A settled-feeling plan needs stress-testing before build | `/grill` |
|
|
28
|
+
| The design is still ambiguous and needs narrowing | `/brainstorm` |
|
|
29
|
+
| Scope is clear, need a formal PRD + issues | `/plan feature` |
|
|
30
|
+
| Adversarial pass before formalizing | `/grill` → `/plan feature` |
|
|
31
|
+
|
|
13
32
|
## Soul Reference
|
|
14
33
|
|
|
15
34
|
Read `soul.md` in this skill directory before anything else. It defines WHO you are — the Interrogator, a staff engineer playing devil's advocate. The Six Tactics in soul.md (glossary conflict, sharpen fuzzy language, code contradiction, edge-case scenario, assumption audit, pre-mortem) are the substance of every grill; internalize them before Phase 0.
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: harness-audit
|
|
2
3
|
description: Run the harness audit and report the rubric score for this repository
|
|
3
|
-
|
|
4
|
+
user-invocable: true
|
|
5
|
+
model: inherit
|
|
4
6
|
---
|
|
5
|
-
|
|
6
7
|
# Harness Audit
|
|
7
8
|
|
|
9
|
+
## Invocation
|
|
10
|
+
|
|
11
|
+
`/harness-audit` takes no arguments — `$ARGUMENTS` is always ignored; anything passed is discarded without a warning. Run the audit exactly as described below and report the rubric score.
|
|
12
|
+
|
|
8
13
|
The user wants to audit this repository against the session-orchestrator harness rubric. There are no arguments.
|
|
9
14
|
|
|
10
15
|
Run the audit script and surface the results:
|
|
@@ -6,21 +6,23 @@ model: sonnet
|
|
|
6
6
|
|
|
7
7
|
# Hook Development for Claude Code Plugins
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Use the [official Claude Code hooks reference](https://code.claude.com/docs/en/hooks) as the source of truth for current events and schemas. This skill keeps only the conventions needed to author this plugin's hooks.
|
|
10
10
|
|
|
11
|
-
## Hook types
|
|
11
|
+
## Hook types used in this plugin
|
|
12
|
+
|
|
13
|
+
Claude Code also documents `http`, `mcp_tool`, and experimental `agent` handlers. Use those only after checking their current fields and event support in the official reference.
|
|
12
14
|
|
|
13
15
|
### Prompt-based (LLM-driven, for complex reasoning)
|
|
14
16
|
|
|
15
17
|
```json
|
|
16
18
|
{
|
|
17
19
|
"type": "prompt",
|
|
18
|
-
"prompt": "Evaluate
|
|
20
|
+
"prompt": "Evaluate whether this event should proceed: $ARGUMENTS",
|
|
19
21
|
"timeout": 30
|
|
20
22
|
}
|
|
21
23
|
```
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
Prompt hooks are supported only on events documented for that handler type. `$ARGUMENTS` contains the hook input JSON.
|
|
24
26
|
|
|
25
27
|
Use for: context-aware decisions, flexible evaluation, natural-language reasoning.
|
|
26
28
|
|
|
@@ -36,11 +38,11 @@ Use for: context-aware decisions, flexible evaluation, natural-language reasonin
|
|
|
36
38
|
|
|
37
39
|
Use for: fast deterministic validations, file-system ops, external tools, performance-critical paths.
|
|
38
40
|
|
|
39
|
-
**Our convention:**
|
|
41
|
+
**Our convention:** hook logic lives in `.mjs` files — see `hooks/pre-bash-destructive-guard.mjs` and `hooks/enforce-scope.mjs`. The manifest invokes them through the repository's runtime wrapper.
|
|
40
42
|
|
|
41
43
|
## Configuration formats
|
|
42
44
|
|
|
43
|
-
|
|
45
|
+
Keep the file location and its outer document shape explicit when copying an example.
|
|
44
46
|
|
|
45
47
|
### Plugin `hooks/hooks.json` — wrapper format
|
|
46
48
|
|
|
@@ -63,25 +65,27 @@ This is where people trip up. Two formats exist; they are NOT interchangeable.
|
|
|
63
65
|
- `hooks` wrapper is required
|
|
64
66
|
- `description` is optional
|
|
65
67
|
|
|
66
|
-
### User `.claude/settings.json` —
|
|
68
|
+
### User or project `.claude/settings.json` — settings format
|
|
67
69
|
|
|
68
70
|
```json
|
|
69
71
|
{
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
"hooks": {
|
|
73
|
+
"PreToolUse": [
|
|
74
|
+
{
|
|
75
|
+
"matcher": "Write|Edit",
|
|
76
|
+
"hooks": [
|
|
77
|
+
{ "type": "command", "command": "~/my-hook.sh" }
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
}
|
|
78
82
|
}
|
|
79
83
|
```
|
|
80
84
|
|
|
81
|
-
-
|
|
82
|
-
-
|
|
85
|
+
- The top-level `hooks` key is required in settings.
|
|
86
|
+
- Plugin `hooks/hooks.json` may additionally carry a top-level `description`.
|
|
83
87
|
|
|
84
|
-
|
|
88
|
+
The distinction is registration and scope: settings hooks belong to a user, project, or managed policy; plugin hooks run while the plugin is enabled. The nested event → matcher group → handler shape is the same.
|
|
85
89
|
|
|
86
90
|
## Hook events
|
|
87
91
|
|
|
@@ -92,7 +96,7 @@ Mixing these up is the #1 reason new hooks don't fire.
|
|
|
92
96
|
| `UserPromptSubmit` | User submits prompt | Add context, validate |
|
|
93
97
|
| `Stop` | Main agent stopping | Completeness check |
|
|
94
98
|
| `SubagentStop` | Subagent stopping | Task validation |
|
|
95
|
-
| `SessionStart` | Session begins | Context load |
|
|
99
|
+
| `SessionStart` | Session begins or resumes | Context load |
|
|
96
100
|
| `SessionEnd` | Session ends | Cleanup, logging |
|
|
97
101
|
| `PreCompact` | Before compaction | Preserve critical state |
|
|
98
102
|
| `Notification` | User notified | Logging, reactions |
|
|
@@ -102,7 +106,9 @@ Mixing these up is the #1 reason new hooks don't fire.
|
|
|
102
106
|
```json
|
|
103
107
|
{
|
|
104
108
|
"hookSpecificOutput": {
|
|
105
|
-
"
|
|
109
|
+
"hookEventName": "PreToolUse",
|
|
110
|
+
"permissionDecision": "deny",
|
|
111
|
+
"permissionDecisionReason": "Why this decision was made",
|
|
106
112
|
"updatedInput": { "field": "modified_value" }
|
|
107
113
|
},
|
|
108
114
|
"systemMessage": "Explanation shown to Claude"
|
|
@@ -113,12 +119,14 @@ Mixing these up is the #1 reason new hooks don't fire.
|
|
|
113
119
|
|
|
114
120
|
```json
|
|
115
121
|
{
|
|
116
|
-
"decision": "
|
|
117
|
-
"reason": "Why
|
|
122
|
+
"decision": "block",
|
|
123
|
+
"reason": "Why Claude should continue",
|
|
118
124
|
"systemMessage": "Additional context"
|
|
119
125
|
}
|
|
120
126
|
```
|
|
121
127
|
|
|
128
|
+
Omit `decision` to allow stopping. `approve` is not a valid Stop decision. For non-error feedback that keeps the conversation running, use `hookSpecificOutput.additionalContext` with `hookEventName` set to `Stop` or `SubagentStop`.
|
|
129
|
+
|
|
122
130
|
### SessionStart: persist env vars
|
|
123
131
|
|
|
124
132
|
```bash
|
|
@@ -136,17 +144,18 @@ All hooks receive JSON on stdin:
|
|
|
136
144
|
"session_id": "abc123",
|
|
137
145
|
"transcript_path": "/path/to/transcript.jsonl",
|
|
138
146
|
"cwd": "/current/working/dir",
|
|
139
|
-
"permission_mode": "
|
|
147
|
+
"permission_mode": "default",
|
|
140
148
|
"hook_event_name": "PreToolUse"
|
|
141
149
|
}
|
|
142
150
|
```
|
|
143
151
|
|
|
144
152
|
Event-specific extras:
|
|
145
|
-
- `PreToolUse
|
|
146
|
-
- `
|
|
147
|
-
- `
|
|
153
|
+
- `PreToolUse`: `tool_name`, `tool_input`, `tool_use_id`
|
|
154
|
+
- `PostToolUse`: `tool_name`, `tool_input`, `tool_response`, `tool_use_id`
|
|
155
|
+
- `UserPromptSubmit`: `prompt`
|
|
156
|
+
- `Stop`: `stop_hook_active`, `last_assistant_message`; `SubagentStop` also carries agent identity and transcript fields
|
|
148
157
|
|
|
149
|
-
|
|
158
|
+
Event fields vary and evolve. Parse only fields needed by the hook and consult the official event section before depending on one. The `UserPromptSubmit` field name above was last checked against the official reference on 2026-09-15 (branch `codex/ecc-systematic-review`); this plugin registers no `UserPromptSubmit` handler, so no code here exercises either spelling — verify before depending on it. Prompt and agent hooks receive the complete input through `$ARGUMENTS`.
|
|
150
159
|
|
|
151
160
|
## Environment variables
|
|
152
161
|
|
|
@@ -222,7 +231,7 @@ echo $file_path # ❌ unquoted injection risk
|
|
|
222
231
|
|
|
223
232
|
### Timeouts
|
|
224
233
|
|
|
225
|
-
|
|
234
|
+
Current defaults are 600 seconds for command/HTTP/MCP-tool hooks, 30 seconds for prompt hooks, and 60 seconds for agent hooks, with shorter defaults for some events. `SessionEnd` also has a shared time budget. Set a short explicit timeout appropriate to the hook; a timed-out `PreToolUse` command hook does not block the tool call.
|
|
226
235
|
|
|
227
236
|
```json
|
|
228
237
|
{ "type": "command", "command": "...", "timeout": 10 }
|
|
@@ -232,17 +241,13 @@ Defaults: command hooks 60s, prompt hooks 30s. Set explicitly when the work is k
|
|
|
232
241
|
|
|
233
242
|
All matching hooks run **in parallel** — they don't see each other's output, ordering is non-deterministic. Design for independence.
|
|
234
243
|
|
|
235
|
-
##
|
|
244
|
+
## Registration and reload behavior
|
|
236
245
|
|
|
237
|
-
|
|
246
|
+
Installed capability and active registration are different. A plugin can ship hook files without those hooks running when the plugin is disabled. Settings hooks merge with plugin and managed hooks; `/hooks` shows the active sources.
|
|
238
247
|
|
|
239
|
-
|
|
240
|
-
1. Edit hook
|
|
241
|
-
2. Exit Claude Code
|
|
242
|
-
3. Restart (`claude` or `cc`)
|
|
243
|
-
4. Verify with `/hooks` command or `claude --debug`
|
|
248
|
+
Direct edits to hooks in settings files are normally picked up by Claude Code's file watcher. Plugin registration changes may require disabling/re-enabling the plugin or starting a fresh session. A command hook's script is launched when the event fires, so editing the script itself can affect the next invocation without re-registering the manifest.
|
|
244
249
|
|
|
245
|
-
|
|
250
|
+
To test a registration change, inspect `/hooks`, trigger the matching event, and use `claude --debug` when the source, matcher, output, or timeout remains unclear.
|
|
246
251
|
|
|
247
252
|
## Debugging
|
|
248
253
|
|
|
@@ -269,7 +274,7 @@ output=$(./your-hook.mjs < test-input.json)
|
|
|
269
274
|
echo "$output" | jq .
|
|
270
275
|
```
|
|
271
276
|
|
|
272
|
-
Invalid
|
|
277
|
+
Invalid structured output is normally reported as a non-blocking hook error and the action proceeds, so always verify the output and the resulting decision.
|
|
273
278
|
|
|
274
279
|
## Conditional activation
|
|
275
280
|
|
|
@@ -292,8 +297,8 @@ enabled=$(jq -r '.strictMode // false' "$CONFIG_FILE" 2>/dev/null)
|
|
|
292
297
|
|
|
293
298
|
## Our in-house examples (read these, not the upstream `examples/`)
|
|
294
299
|
|
|
295
|
-
- `hooks/pre-bash-destructive-guard.mjs` — policy-driven command blocker
|
|
296
|
-
- `hooks/enforce-scope.mjs` —
|
|
300
|
+
- `hooks/pre-bash-destructive-guard.mjs` — policy-driven command blocker backed by `.orchestrator/policy/blocked-commands.json`
|
|
301
|
+
- `hooks/enforce-scope.mjs` — scope enforcement using `wave-scope.json` in the platform's state directory
|
|
297
302
|
- `hooks/on-session-start.mjs` — banner + session init
|
|
298
303
|
- `hooks/post-edit-validate.mjs` — validates edits after the fact
|
|
299
304
|
- `hooks/on-stop.mjs` — session-event capture + metrics
|
|
@@ -306,7 +311,7 @@ enabled=$(jq -r '.strictMode // false' "$CONFIG_FILE" 2>/dev/null)
|
|
|
306
311
|
- Validate every input field before trusting it
|
|
307
312
|
- Quote all shell variables
|
|
308
313
|
- Set explicit timeouts for known-slow work
|
|
309
|
-
- Return structured JSON on
|
|
314
|
+
- Return only schema-valid structured JSON when the event needs a decision or context; emit nothing on a silent allow
|
|
310
315
|
|
|
311
316
|
**Don't:**
|
|
312
317
|
- Hardcoded paths
|
|
@@ -409,5 +414,5 @@ env-precedence, PluginRootResolutionError class shape.
|
|
|
409
414
|
|
|
410
415
|
## References
|
|
411
416
|
|
|
412
|
-
- [Official hooks
|
|
417
|
+
- [Official hooks reference](https://code.claude.com/docs/en/hooks)
|
|
413
418
|
- Upstream: [patterns.md](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/plugin-dev/skills/hook-development/references/patterns.md), [advanced.md](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/plugin-dev/skills/hook-development/references/advanced.md) — read these for edge cases we haven't hit yet
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: memory-cleanup
|
|
3
3
|
user-invocable: true
|
|
4
|
+
argument-hint: "[--dry-run | --apply-pending]"
|
|
4
5
|
tags: [memory, maintenance, meta, dream]
|
|
5
6
|
model: sonnet
|
|
6
7
|
model-preference: sonnet
|
|
@@ -20,6 +21,12 @@ description: >
|
|
|
20
21
|
|
|
21
22
|
# Memory Cleanup — Manual Dream Process
|
|
22
23
|
|
|
24
|
+
## Invocation
|
|
25
|
+
|
|
26
|
+
The user invoked `/memory-cleanup` with arguments: **$ARGUMENTS**. Parse them before anything else — two optional, mutually-exclusive flags are recognised (`--dry-run`, `--apply-pending`, see PRD #502); passing both is an error, and the absence of both selects the legacy interactive 4-phase mode. The per-flag behaviour, the exact status lines and the exit codes are in § Argument Handling (Phase 0) below; the interactive default runs Phases 1-4 (Orient → Gather Signal → Consolidate → Prune & Index) against `~/.claude/projects/<encoded-cwd>/memory/` and reports per § Output.
|
|
27
|
+
|
|
28
|
+
Sidecar producer/consumer contract: session-end Phase 3.6.5 (`scripts/lib/auto-dream.mjs`) is nudge-only (#614) — it never dispatches a subagent to write the sidecar. The only real producer of `.orchestrator/pending-dream.md` is a manual `/memory-cleanup --dry-run` run; `--apply-pending` is the operator-confirmed consumer in a later session. The sidecar file is single-writer — concurrent sessions cannot collide because the writer holds the session-lock. <!-- path-check: example -->
|
|
29
|
+
|
|
23
30
|
Implements the 4-phase memory consolidation process modelled after Claude Code's Auto Dream feature. Run after major refactors, framework migrations, or every 5+ sessions in a repo.
|
|
24
31
|
|
|
25
32
|
The memory system lives at `~/.claude/projects/<encoded-cwd>/memory/` and consists of:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: npm-publish
|
|
3
|
-
user-invocable:
|
|
3
|
+
user-invocable: false
|
|
4
4
|
model: sonnet
|
|
5
5
|
description: Use when publishing this package to npm — a version release (npm publish), verifying the registry/pi.dev listing, or diagnosing npm auth failures (E403 2FA/token errors). Token-based flow via NPM_TOKEN in .env.local with a temp userconfig, the leakage gate before every publish, post-publish verification and marker/badge upkeep. Trigger on "publish to npm", "npm release", "E403 publish error".
|
|
6
6
|
---
|
|
@@ -39,7 +39,7 @@ The script gates mechanics. These three are yours, and it will not make them for
|
|
|
39
39
|
|
|
40
40
|
**2. What a leak means when one is found.** A hit from the leakage gate is not a pattern to silence. Decide which of two it is: a real leak (fix `package.json` `files`, re-pack, re-check) or genuine over-matching (fix `LEAKAGE_PATTERNS` in `scripts/release.mjs` **with a test**). There is no third option, and neither is "publish anyway and clean it up in the next version" — an npm publish is not revocable, and unpublishing burns the version number permanently. Operator handling detail: `docs/distribution/npm-publish-checklist.md` § 3.
|
|
41
41
|
|
|
42
|
-
**3. When to abort instead of repair.** Abort — do not patch forward — when the failure is upstream of the target-confirmed npm receipt: a red preflight row, a lagging `github` mirror, CI not green on the exact commit **on either platform** (`--check` carries both `ci-green-on-head` for GitLab and `ci-green-on-head-github` for the mirror, whose macOS matrix leg has no GitLab equivalent), a dead token, or a publish that did not issue the target receipt. These are cheap to fix and re-run from the top. Repair-in-place is only appropriate *after* that receipt, where the version is already immutable: registry propagation, a missing GitHub release, or a lagging site deploy can be reconciled because npm already has the correct artifact. When `--publish` reports **Post-publish reconciliation required**, **do not rerun `--publish`**; repair the listed state directly. `
|
|
42
|
+
**3. When to abort instead of repair.** Abort — do not patch forward — when the failure is upstream of the target-confirmed npm receipt: a red preflight row, a lagging `github` mirror, CI not green on the exact commit **on either platform** (`--check` carries both `ci-green-on-head` for GitLab and `ci-green-on-head-github` for the mirror, whose macOS matrix leg has no GitLab equivalent), a dead token, or a publish that did not issue the target receipt. These are cheap to fix and re-run from the top. Repair-in-place is only appropriate *after* that receipt, where the version is already immutable: registry propagation, a missing GitHub release, or a lagging site deploy can be reconciled because npm already has the correct artifact. When `--publish` reports **Post-publish reconciliation required**, **do not rerun `--publish`**; repair the listed state directly. `skills/release/SKILL.md` § Abort criteria is the operative list.
|
|
43
43
|
|
|
44
44
|
## Failure-mode table
|
|
45
45
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: persona-panel
|
|
3
3
|
user-invocable: true
|
|
4
|
+
argument-hint: "<target> [--personas <names,...>] [--mode <voting|hard-gate|summary>] [--threshold <M-of-N|all|any>] [--grounding <off|re-derive>] [--dry-run]"
|
|
4
5
|
tags: [review, personas, content, quality, multi-agent]
|
|
5
6
|
model: inherit
|
|
6
7
|
description: >
|
|
@@ -13,6 +14,60 @@ description: >
|
|
|
13
14
|
|
|
14
15
|
# Persona Panel Skill
|
|
15
16
|
|
|
17
|
+
## Invocation
|
|
18
|
+
|
|
19
|
+
The user invoked `/persona-panel` with arguments: **$ARGUMENTS**. Parse them before doing anything else — including before the Phase 0 bootstrap gate's side effects.
|
|
20
|
+
|
|
21
|
+
**Positional argument (required):**
|
|
22
|
+
|
|
23
|
+
- `<target>` — file path, directory, or range to review. Must be resolvable via `validatePathInsideProject` against the current project root (Phase 2). Relative paths are resolved from the project root. Globs are accepted (e.g. `src/app/api/*.ts`).
|
|
24
|
+
|
|
25
|
+
**Recognized flags:**
|
|
26
|
+
|
|
27
|
+
- `--personas <names,...>` — comma-separated subset of catalog names to include (e.g. `physicist,ai-expert`). Default: all personas discovered in `.claude/personas/`. Names are matched case-insensitively against `<name>.md` catalog files.
|
|
28
|
+
- `--mode <voting|hard-gate|summary>` — consolidation mode; the short forms are aliases of the Phase 4 mode names `voting-quorum`, `hard-gate-threshold` and `coordinator-summary` respectively. Default: `voting-quorum`. `summary` emits an explicit WARN that this mode adds one additional LLM call.
|
|
29
|
+
- `--threshold <spec>` — quorum spec. Accepted forms: `M-of-N` where M and N are integers 1..20, `all`, or `any`. Parsed by `scripts/lib/persona-panel/threshold.mjs::parseThreshold()`. Default: `all` for `hard-gate-threshold`. In `voting-quorum` the majority default of Phase 4 applies unless `--quorum <M>` overrides it.
|
|
30
|
+
- `--quorum <M>` — integer M-of-N override for `voting-quorum` (see Phase 4).
|
|
31
|
+
- `--grounding <off|re-derive>` — Grounding-Review mode (#730 Epic H). `off` (default): personas evaluate the target as-is. `re-derive`: each persona independently re-derives supporting sources via Read/Grep/Glob instead of trusting a "Sources" section the target may already assert, and reports them as `derived_sources`. Advisory-only in v1 — never influences `final_verdict`. See `skills/persona-panel/persona-format.md` § "Grounding Mode (optional)".
|
|
32
|
+
- `--lines <start>-<end>` — restrict the review to a line range of the target (validated in Phase 2: start ≤ end, both positive integers).
|
|
33
|
+
- `--dry-run` — resolve catalog and target, print the dispatch plan (persona names, models, target), do NOT call `Agent()`, do NOT write a sidecar. Exit 0 on success.
|
|
34
|
+
|
|
35
|
+
**Validation errors (all exit 1):**
|
|
36
|
+
|
|
37
|
+
- Missing `<target>`: `missing required arg <target>` — print the usage line and exit 1 without running any phase.
|
|
38
|
+
- Unknown flag (starts with `--` but not in the list above): `unknown flag: --<name>. Valid: --personas, --mode, --threshold, --quorum, --grounding, --lines, --dry-run`.
|
|
39
|
+
- `--mode` value not in enum: `invalid --mode value: '<value>'. Valid: voting, hard-gate, summary`.
|
|
40
|
+
- `--threshold` value fails `parseThreshold()`: echo the parser error verbatim, e.g. `invalid threshold 'foo': expected M-of-N (M,N integers 1..20), 'all', or 'any'`.
|
|
41
|
+
- `--grounding` value not in enum: `invalid --grounding value: '<value>'. Valid: off, re-derive`.
|
|
42
|
+
- `<target>` outside project root: `target path outside project: <path>`.
|
|
43
|
+
|
|
44
|
+
### Examples
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
/persona-panel src/app/api/invoices.ts
|
|
48
|
+
```
|
|
49
|
+
All `.claude/personas/*.md` are dispatched, voting consolidation, sidecar written.
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
/persona-panel src/app/api/invoices.ts --personas physicist,ai-expert
|
|
53
|
+
```
|
|
54
|
+
Only the `physicist` and `ai-expert` catalog entries are dispatched.
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
/persona-panel notes/draft.md --mode hard-gate --threshold all
|
|
58
|
+
```
|
|
59
|
+
All resolved personas must return PASS; a single FAIL produces a final FAIL verdict.
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
/persona-panel src/ --dry-run
|
|
63
|
+
```
|
|
64
|
+
Prints the planned dispatch list and exits 0 without calling `Agent()` or writing a sidecar.
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
/persona-panel docs/design-doc.md --grounding re-derive
|
|
68
|
+
```
|
|
69
|
+
Each persona re-derives its own supporting sources rather than trusting a "Sources" section already present in the input document (for example, `docs/design-doc.md`), reporting them as `derived_sources`. Advisory-only — `final_verdict` is unaffected. <!-- path-check: example -->
|
|
70
|
+
|
|
16
71
|
## Overview
|
|
17
72
|
|
|
18
73
|
Persona Panel runs any number of catalog-defined personas in parallel against a single target
|
|
@@ -355,7 +410,7 @@ result. If `final_verdict == "warn"`: exit 0 with a warning line on stderr. If
|
|
|
355
410
|
|
|
356
411
|
## See Also
|
|
357
412
|
|
|
358
|
-
- `
|
|
413
|
+
- `scripts/lib/persona-panel/threshold.mjs` — parseThreshold() for `--threshold` specs
|
|
359
414
|
- `agents/schemas/persona-panel-sidecar.schema.json` — sidecar JSON Schema (Draft 2020-12)
|
|
360
415
|
- `scripts/lib/persona-panel/catalog-loader.mjs` — loadCatalog() implementation
|
|
361
416
|
- `scripts/lib/persona-panel/persona-runner.mjs` — buildPersonaPrompt() implementation
|
|
@@ -170,7 +170,7 @@ diff is reported alongside the panel result and has **zero influence on `final_v
|
|
|
170
170
|
is signal for the operator to review, not a consolidation input. `consolidate()` and `tally()`
|
|
171
171
|
in `consolidator.mjs` are deliberately unaware of grounding data.
|
|
172
172
|
|
|
173
|
-
**Enabling it:** pass `--grounding re-derive` to `/persona-panel` (see `
|
|
173
|
+
**Enabling it:** pass `--grounding re-derive` to `/persona-panel` (see `skills/persona-panel/SKILL.md`).
|
|
174
174
|
Default remains `--grounding off`.
|
|
175
175
|
|
|
176
176
|
---
|
package/skills/plan/SKILL.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan
|
|
3
|
-
user-invocable:
|
|
3
|
+
user-invocable: true
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
argument-hint: "[new|feature|retro]"
|
|
4
6
|
tags: [planning, prd, requirements, research]
|
|
5
7
|
model: inherit
|
|
6
8
|
model-preference: opus
|
|
@@ -19,6 +21,24 @@ description: >
|
|
|
19
21
|
|
|
20
22
|
> Project-instruction file resolution: CLAUDE.md and AGENTS.md (Codex CLI) are transparent aliases — see [skills/_shared/instruction-file-resolution.md](../_shared/instruction-file-resolution.md). All references below to `CLAUDE.md` resolve via that precedence rule.
|
|
21
23
|
|
|
24
|
+
## Invocation
|
|
25
|
+
|
|
26
|
+
You are beginning a structured planning session. The user invoked `/plan` with mode: **$ARGUMENTS** (if empty, Phase 2's Mode Router asks which mode they want: `new`, `feature`, or `retro`).
|
|
27
|
+
|
|
28
|
+
**Modes:** `new` = project kickoff, `feature` = feature PRD, `retro` = retrospective.
|
|
29
|
+
|
|
30
|
+
**Your job: guide the user through structured requirement gathering and produce a complete plan document for the chosen mode.** Follow the phases below precisely. Do NOT skip any phase. Do NOT make assumptions — gather requirements interactively.
|
|
31
|
+
|
|
32
|
+
### Headless (`claude -p`)
|
|
33
|
+
|
|
34
|
+
`session` and `plan` are **reserved terminal-only built-in names** in non-interactive sessions — under `claude -p` the bare form answers `"/plan isn't available in this environment."`, and no frontmatter or manifest field overrides that (reproduced with an empty `CLAUDE_CONFIG_DIR` and no plugin loaded, claude 2.1.273, measured 2026-09-16). Use the namespaced form, which does resolve:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
claude -p "/session-orchestrator:plan feature" --plugin-dir "$PWD"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Interactive sessions are unaffected — `/plan` works there as it always has.
|
|
41
|
+
|
|
22
42
|
## File Structure
|
|
23
43
|
|
|
24
44
|
- `SKILL.md` — Core framework: mode router, Q&A engine, shared phases
|
|
@@ -92,6 +112,13 @@ This is the distinctive mechanic shared by all three modes. Every question wave
|
|
|
92
112
|
|
|
93
113
|
### 3.1 Pre-Question Research
|
|
94
114
|
|
|
115
|
+
Read [Research Evidence Contract](../_shared/research-evidence.md) before the
|
|
116
|
+
first research wave. Apply it to findings that materially affect an option or
|
|
117
|
+
recommendation; keep trivial local lookups concise. Carry the source revision or
|
|
118
|
+
date, evidence basis, local equivalent, disposition, and any falsifiable next
|
|
119
|
+
check into each research brief and the synthesis so documented claims and
|
|
120
|
+
inferences remain distinct.
|
|
121
|
+
|
|
95
122
|
Before each Q&A wave, dispatch 2-3 `Agent()` tool calls in a single message (parallel execution) with `subagent_type: "Explore"`:
|
|
96
123
|
|
|
97
124
|
1. **Market/online context agent** — searches for relevant market data, best practices, competitor analysis, or technical patterns depending on the questions to be asked. Tools: WebSearch, WebFetch.
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: portfolio
|
|
2
3
|
description: Aggregate cross-repo issue/MR/CI health across vault-registered projects into a single Markdown dashboard
|
|
4
|
+
user-invocable: true
|
|
3
5
|
argument-hint: "[--dry-run] [--repo <name>]"
|
|
6
|
+
model: inherit
|
|
4
7
|
---
|
|
5
|
-
|
|
6
8
|
# Portfolio
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
## Invocation
|
|
11
|
+
|
|
12
|
+
The user invoked `/portfolio` with arguments: **$ARGUMENTS**. This skill carries the argument validation (`--dry-run`, `--repo <name>`), the config/mode/vault gates, the dispatch into `scripts/lib/gitlab-portfolio/cli.mjs`, and the exit-code table — all below; `skills/gitlab-portfolio/SKILL.md` owns the dashboard schema.
|
|
13
|
+
|
|
14
|
+
Aggregates open issues, MRs, and staleness signals across all vault-registered repositories and writes a structured dashboard to `<vault-dir>/01-projects/_PORTFOLIO.md`.
|
|
9
15
|
|
|
10
16
|
## Argument Validation
|
|
11
17
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: reconcile
|
|
3
3
|
user-invocable: true
|
|
4
|
+
argument-hint: "[--dry-run]"
|
|
4
5
|
tags: [learning, rules, intelligence, meta]
|
|
5
6
|
model: sonnet
|
|
6
7
|
model-preference: sonnet
|
|
@@ -19,6 +20,15 @@ description: >
|
|
|
19
20
|
|
|
20
21
|
# Reconcile Skill
|
|
21
22
|
|
|
23
|
+
## Invocation
|
|
24
|
+
|
|
25
|
+
The user invoked `/reconcile` with arguments: **$ARGUMENTS** — parsed in Phase 1.3 below.
|
|
26
|
+
|
|
27
|
+
- `/reconcile` — full approval flow: engine → AUQ → write approved rules.
|
|
28
|
+
- `/reconcile --dry-run` — print proposals and rejections without writing anything or rendering the AUQ prompt.
|
|
29
|
+
|
|
30
|
+
**Engine seams used:** `runReconcile` (engine.mjs) · `writeApprovedRules` (writer.mjs) · `reconcile` config block · `.claude/rules/` write target.
|
|
31
|
+
|
|
22
32
|
On-demand version of the session-end Phase 3.6.8 reconciliation flow. Turns eligible learnings
|
|
23
33
|
from `.orchestrator/metrics/learnings.jsonl` into proposed `.claude/rules/<slug>.md` entries,
|
|
24
34
|
presenting each batch of 4 to the coordinator via AUQ multiSelect for operator approval before
|
|
@@ -384,6 +394,17 @@ consolidation survives the next `/reconcile`:
|
|
|
384
394
|
regenerates that learning as a standalone file on the next run.
|
|
385
395
|
- **A merged file's `expires-at` is the EARLIEST of its parts**, never the
|
|
386
396
|
latest: it must not outlive its shortest-lived content.
|
|
397
|
+
- **An EXPIRED file no longer dedupes** (#1387): the provenance reader skips it
|
|
398
|
+
whole, so its learnings become re-proposable — fail-open on an unparseable
|
|
399
|
+
date. Two known limits, measured 2026-09-18: this is the on-disk half only
|
|
400
|
+
(79 of this repo's 92 provenance keys are ALSO sidecar-terminal, so just 13
|
|
401
|
+
return), and a file the sweep cannot split or cannot read
|
|
402
|
+
(`no-1to1-mapping`, `no-provenance-block`, `unreadable`, and since GH#70
|
|
403
|
+
`no-counter-sentence` — the fail-closed branch that touches such a file not
|
|
404
|
+
at all, deletion included; none in the live tree today, `skipped: []` over 7
|
|
405
|
+
files) that expires legitimately
|
|
406
|
+
re-proposes on every run with no mechanical exit. Detail:
|
|
407
|
+
`docs/rule-authoring.md` § Consolidated rules.
|
|
387
408
|
- **A dropped learning must be STAMPED before deletion, or it regenerates.**
|
|
388
409
|
`rm .claude/rules/<slug>.md` alone leaves `isProcessed()` false and no
|
|
389
410
|
on-disk marker, so the engine re-proposes it. Stamp it terminal first with
|
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: release
|
|
2
3
|
description: Cut a release — the order the steps must run in, and the criteria that abort a release
|
|
4
|
+
user-invocable: true
|
|
3
5
|
disable-model-invocation: true
|
|
4
6
|
argument-hint: "[X.Y.Z]"
|
|
7
|
+
model: inherit
|
|
5
8
|
---
|
|
6
|
-
|
|
7
9
|
# Release
|
|
8
10
|
|
|
9
11
|
The user wants to cut a release of this package. Optional argument — the target version: **$ARGUMENTS**.
|
|
10
12
|
|
|
11
|
-
**The mechanism is `scripts/release.mjs`.** It exists, it is executable, and its pure half is unit-tested (`tests/scripts/release.test.mjs`). This
|
|
13
|
+
**The mechanism is `scripts/release.mjs`.** It exists, it is executable, and its pure half is unit-tested (`tests/scripts/release.test.mjs`). This skill carries only the two things the script cannot carry: the **order**, and the **criteria that stop a release**. Do not restate the script's internals here — `node scripts/release.mjs --help` and the file header are the reference.
|
|
14
|
+
|
|
15
|
+
## Invocation
|
|
16
|
+
|
|
17
|
+
`$ARGUMENTS` is optional and holds the target version `X.Y.Z`. When it is empty, resolve the target from `package.json` and the CHANGELOG before step 2.
|
|
18
|
+
|
|
19
|
+
The flags this repo's release path uses — the operator-facing entry points, in the order they run:
|
|
20
|
+
|
|
21
|
+
- `node scripts/release.mjs --set-version X.Y.Z` — rewrite every version surface and sync `package-lock.json`.
|
|
22
|
+
- `node scripts/release.mjs --check --json` — the preflight gate; every row must be green.
|
|
23
|
+
- `node scripts/release.mjs --publish` — the irreversible step; give it ≥600 s of wall clock.
|
|
24
|
+
|
|
25
|
+
`--skip-ci` marks the CI row green without checking anything and is **refused by the script** when combined with `--publish`; it is an inspection aid for `--check`, never a release path.
|
|
12
26
|
|
|
13
27
|
## Why the order is written down
|
|
14
28
|
|
|
@@ -10,6 +10,7 @@ description: >
|
|
|
10
10
|
(optional), and MCP Configuration. Will produce a Markdown checklist report and JSON sidecar."
|
|
11
11
|
<commentary>The user wants a compliance check; this skill is appropriate because it runs all 9
|
|
12
12
|
categories with pass/fail/warn/skipped statuses and writes structured output.</commentary></example>
|
|
13
|
+
user-invocable: true
|
|
13
14
|
model: inherit
|
|
14
15
|
color: cyan
|
|
15
16
|
---
|
|
@@ -18,6 +19,12 @@ color: cyan
|
|
|
18
19
|
|
|
19
20
|
Perform a comprehensive audit of the host repository against the ecosystem baseline. Emits a structured Markdown checklist report and a JSON sidecar for trend tracking.
|
|
20
21
|
|
|
22
|
+
## Invocation
|
|
23
|
+
|
|
24
|
+
There are no arguments — ignore `$ARGUMENTS`; anything passed is discarded.
|
|
25
|
+
|
|
26
|
+
Do NOT skip any category (except Clank when not detected). Do NOT auto-fix findings — report only.
|
|
27
|
+
|
|
21
28
|
## Purpose
|
|
22
29
|
|
|
23
30
|
Answer the question: "Does this repo match the ecosystem baseline?" — a compliance-focused, checkable question with a fixed 9-category checklist. Distinct from `/discovery` (broad quality probes) and `/harness-audit` (plugin installation health).
|