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,222 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: daily
|
|
3
|
+
user-invocable: true
|
|
4
|
+
tags: [vault, daily, obsidian, pkm]
|
|
5
|
+
model: haiku
|
|
6
|
+
model-preference: sonnet
|
|
7
|
+
model-preference-codex: gpt-5.4-mini
|
|
8
|
+
model-preference-cursor: claude-sonnet-4-6
|
|
9
|
+
description: >
|
|
10
|
+
Use this skill when creating today's daily note in the Meta-Vault (03-daily/YYYY-MM-DD.md) with valid
|
|
11
|
+
vaultFrontmatterSchema-compliant YAML frontmatter. Idempotent: re-running on the
|
|
12
|
+
same day opens the existing note instead of overwriting. Use when starting a work
|
|
13
|
+
day, capturing scratch notes, or bootstrapping the inbox flow.
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Daily Skill
|
|
17
|
+
|
|
18
|
+
## Status
|
|
19
|
+
|
|
20
|
+
IMPLEMENTED 2026-04-13.
|
|
21
|
+
|
|
22
|
+
## Purpose
|
|
23
|
+
|
|
24
|
+
Bootstraps today's daily note in the Meta-Vault so the user can start capturing
|
|
25
|
+
thoughts, scratch work, and "done today" items without yak-shaving YAML
|
|
26
|
+
frontmatter each morning. The daily note is the anchor of the PKM workflow: it
|
|
27
|
+
is where the inbox flow starts, where daily momentum is tracked, and where
|
|
28
|
+
evening reflections land. Every daily note carries the same frontmatter shape
|
|
29
|
+
(validated by `vaultFrontmatterSchema`), which makes Dataview queries and the
|
|
30
|
+
vault-sync validator trivial.
|
|
31
|
+
|
|
32
|
+
## Prerequisites
|
|
33
|
+
|
|
34
|
+
- Must be invoked from inside a Meta-Vault root (cwd contains `03-daily/`) OR
|
|
35
|
+
with `VAULT_DIR` resolved to the vault path (see Resolution Order below).
|
|
36
|
+
- `03-daily/` must already exist — the skill fails fast if it does not.
|
|
37
|
+
- `bash` + `sed` + `date` (always available on macOS/Linux).
|
|
38
|
+
|
|
39
|
+
### VAULT_DIR Resolution Order
|
|
40
|
+
|
|
41
|
+
1. `vault-integration.vault-dir` in Session Config (highest precedence)
|
|
42
|
+
2. `VAULT_DIR` environment variable
|
|
43
|
+
3. `$PWD` (fallback when neither is set)
|
|
44
|
+
|
|
45
|
+
Claude must read Session Config and export `VAULT_DIR` before calling
|
|
46
|
+
`generate.sh`. The canonical pattern (mirrors `session-end` and `evolve`):
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
CONFIG=$(cat .orchestrator/session-config.yaml | yq -o json)
|
|
50
|
+
VM_DIR=$(echo "$CONFIG" | jq -r '."vault-integration"."vault-dir" // empty')
|
|
51
|
+
: "${VM_DIR:=$VAULT_DIR}"
|
|
52
|
+
VAULT_DIR="$VM_DIR" bash /path/to/skills/daily/generate.sh
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
`generate.sh` itself reads only `VAULT_DIR` (pure bash, no Config parser).
|
|
56
|
+
|
|
57
|
+
## Algorithm
|
|
58
|
+
|
|
59
|
+
1. **Resolve `VAULT_DIR`.** Check `vault-integration.vault-dir` in Session
|
|
60
|
+
Config first; fall back to the `VAULT_DIR` env var; then `$PWD`. The
|
|
61
|
+
config field takes precedence — see Prerequisites for the canonical
|
|
62
|
+
resolution snippet. `generate.sh` then validates: template exists (exit 2
|
|
63
|
+
if not), vault dir exists (exit 3 if not), `03-daily/` exists (exit 4 if
|
|
64
|
+
not).
|
|
65
|
+
2. **Compute today's date.** `date +%Y-%m-%d` — ISO 8601 date-only, respecting
|
|
66
|
+
the system timezone (the user is in Vienna, so `Europe/Vienna` via system TZ).
|
|
67
|
+
3. **Target path.** `$VAULT_DIR/03-daily/YYYY-MM-DD.md`.
|
|
68
|
+
4. **Idempotency check.** If the target already exists, print
|
|
69
|
+
`Daily note already exists: <path>` and exit 0. Never overwrite.
|
|
70
|
+
5. **Render template.** Read `templates/daily.md.tpl` (next to this SKILL.md)
|
|
71
|
+
and substitute `{{date}}`, `{{id}}`, `{{created}}`, `{{updated}}`,
|
|
72
|
+
`{{title}}`, `{{weekday}}` via `sed`. The template is literal markdown; the
|
|
73
|
+
only shell interpolation happens in the `sed` substitutions.
|
|
74
|
+
6. **Write to target path.** Uses `sed … > "$TARGET.tmp" && mv "$TARGET.tmp"
|
|
75
|
+
"$TARGET"` to avoid leaving a half-written file on disk if sed fails.
|
|
76
|
+
7. **Validate** (recommended but not automatic in `generate.sh`). Callers
|
|
77
|
+
should run the vault-sync validator over the vault in hard mode to confirm
|
|
78
|
+
schema compliance:
|
|
79
|
+
```bash
|
|
80
|
+
VAULT_DIR="$VAULT_DIR" bash ../vault-sync/validator.sh --mode hard
|
|
81
|
+
```
|
|
82
|
+
The BATS test suite runs this check on every run — see
|
|
83
|
+
`tests/daily.bats`. If validation ever fails, the template has drifted from
|
|
84
|
+
the canonical Zod schema; fix the template, do not downgrade the gate.
|
|
85
|
+
8. **Print success.** `Created daily note: <path>` on stdout, exit 0.
|
|
86
|
+
|
|
87
|
+
## Implementation
|
|
88
|
+
|
|
89
|
+
The deterministic path is implemented in `generate.sh` (pure bash). An
|
|
90
|
+
LLM-driven fallback is unnecessary: daily-note creation is a 100%
|
|
91
|
+
mechanical transform and a shell script is faster, cheaper, and more
|
|
92
|
+
reliable than an LLM round-trip. Recommended invocation:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# Resolve vault dir from Session Config first, env var as fallback:
|
|
96
|
+
CONFIG=$(cat .orchestrator/session-config.yaml | yq -o json)
|
|
97
|
+
VM_DIR=$(echo "$CONFIG" | jq -r '."vault-integration"."vault-dir" // empty')
|
|
98
|
+
: "${VM_DIR:=$VAULT_DIR}"
|
|
99
|
+
VAULT_DIR="$VM_DIR" bash ~/Projects/session-orchestrator/skills/daily/generate.sh
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Or, if `VAULT_DIR` is already set in the environment and Session Config has
|
|
103
|
+
no `vault-integration.vault-dir` override:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
VAULT_DIR=~/Projects/vault bash ~/Projects/session-orchestrator/skills/daily/generate.sh
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Or, if the user's cwd is already the vault:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
cd ~/Projects/vault && bash ~/Projects/session-orchestrator/skills/daily/generate.sh
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Template Placeholders
|
|
116
|
+
|
|
117
|
+
| Placeholder | Example | Format |
|
|
118
|
+
| ------------- | ------------------ | ---------------------------------------------------------- |
|
|
119
|
+
| `{{date}}` | `2026-04-13` | ISO 8601 date (`YYYY-MM-DD`), also used inside the `id` |
|
|
120
|
+
| `{{created}}` | `2026-04-13` | ISO 8601 date (`YYYY-MM-DD`) — matches `isoDateRegex` |
|
|
121
|
+
| `{{updated}}` | `2026-04-13` | ISO 8601 date (`YYYY-MM-DD`) — matches `isoDateRegex` |
|
|
122
|
+
| `{{title}}` | `Daily 2026-04-13` | Human-readable heading, `Daily YYYY-MM-DD` |
|
|
123
|
+
| `{{weekday}}` | `Montag` | Full German weekday name (lookup table keyed on `date +%u`) |
|
|
124
|
+
|
|
125
|
+
Note: `{{id}}` is **not** a separate placeholder — the template inlines
|
|
126
|
+
`id: daily-{{date}}` so there is only one date substitution. This keeps
|
|
127
|
+
template rendering to a single `sed` pass and prevents drift between `id`
|
|
128
|
+
and filename.
|
|
129
|
+
|
|
130
|
+
The German weekday is computed via a hardcoded lookup (1=Montag,
|
|
131
|
+
2=Dienstag, ..., 7=Sonntag) rather than `LC_TIME=de_DE.UTF-8 date +%A`
|
|
132
|
+
because not every macOS install has the `de_DE.UTF-8` locale compiled.
|
|
133
|
+
|
|
134
|
+
## Integration with vault-sync
|
|
135
|
+
|
|
136
|
+
The template **must** stay in sync with `vaultFrontmatterSchema`. The canonical
|
|
137
|
+
schema lives at:
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
~/Projects/projects-baseline/packages/zod-schemas/src/vault-frontmatter.ts
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Required fields produced by the template: `id`, `type`, `created`, `updated`.
|
|
144
|
+
Optional-but-useful fields: `title`, `tags`, `status`. The `type` is hardcoded
|
|
145
|
+
to `daily` (one of the valid values in `vaultNoteTypeSchema`). The `id` is
|
|
146
|
+
`daily-YYYY-MM-DD` which is kebab-case and 16 chars — passes
|
|
147
|
+
`slugRegex.min(2).max(128)`.
|
|
148
|
+
|
|
149
|
+
The BATS suite runs the vault-sync validator end-to-end (`bats tests/daily.bats`
|
|
150
|
+
→ test 8), so any drift between the template and the schema breaks the build
|
|
151
|
+
of this skill, not of the vault that consumes it.
|
|
152
|
+
|
|
153
|
+
## Idempotency Guarantee
|
|
154
|
+
|
|
155
|
+
Running `generate.sh` twice on the same day is a no-op when the existing
|
|
156
|
+
file is valid:
|
|
157
|
+
|
|
158
|
+
1. The first run creates `$VAULT_DIR/03-daily/YYYY-MM-DD.md`.
|
|
159
|
+
2. The second run finds the file, confirms it is non-empty and starts with
|
|
160
|
+
`---\n` (valid YAML frontmatter opener), prints
|
|
161
|
+
`Daily note already exists: <path>`, and exits 0.
|
|
162
|
+
|
|
163
|
+
If the existing file is 0 bytes or lacks the `---\n` opener (e.g. a previous
|
|
164
|
+
run crashed between the `$TARGET.tmp` write and the `mv`), the corrupt file
|
|
165
|
+
is removed and the note is re-created cleanly.
|
|
166
|
+
|
|
167
|
+
The file is **never** re-rendered when intact. This matters because the user
|
|
168
|
+
edits the daily note throughout the day (ticking checkboxes, filling in the
|
|
169
|
+
Scratch section, etc.) and re-invoking `/daily` from anywhere — a later
|
|
170
|
+
session, a different tool, a keybind — must not destroy that work.
|
|
171
|
+
|
|
172
|
+
Verified by `tests/daily.bats` test 5: hash-compares the file before and after
|
|
173
|
+
a second `generate.sh` invocation.
|
|
174
|
+
|
|
175
|
+
## Anti-Patterns
|
|
176
|
+
|
|
177
|
+
- **DO NOT overwrite existing daily notes.** Re-running `/daily` is routine;
|
|
178
|
+
losing the day's scratch notes is catastrophic. The idempotency check is
|
|
179
|
+
load-bearing.
|
|
180
|
+
- **DO NOT hardcode the vault path.** `VAULT_DIR` is the contract. Hardcoding
|
|
181
|
+
`~/Projects/vault` breaks tests, breaks any future multi-vault setup, and
|
|
182
|
+
couples this skill to one user's machine.
|
|
183
|
+
- **DO NOT skip the post-write validation step.** If the BATS suite stops
|
|
184
|
+
running the vault-sync validator, template drift will quietly ship invalid
|
|
185
|
+
frontmatter into the vault and only be caught at the next session-end gate.
|
|
186
|
+
- **DO NOT use `LC_TIME` for the weekday.** The locale is not guaranteed to
|
|
187
|
+
exist. Use the hardcoded lookup table.
|
|
188
|
+
- **DO NOT add `sed`-unsafe characters to the template.** The placeholders use
|
|
189
|
+
`|` as the sed delimiter; if you add a `|` to any substituted value, sed
|
|
190
|
+
will break. Keep substitutions plain.
|
|
191
|
+
|
|
192
|
+
## Exit codes
|
|
193
|
+
|
|
194
|
+
| Code | Meaning |
|
|
195
|
+
|------|---------|
|
|
196
|
+
| 0 | Success (created) or idempotent skip (already exists and valid) |
|
|
197
|
+
| 1 | Unexpected runtime failure (`set -e` caught an unhandled error) |
|
|
198
|
+
| 2 | Infra error: template file not found at `$SCRIPT_DIR/templates/daily.md.tpl` |
|
|
199
|
+
| 3 | Config error: `VAULT_DIR` does not exist as a directory |
|
|
200
|
+
| 4 | Vault structure error: `$VAULT_DIR/03-daily/` directory is missing |
|
|
201
|
+
|
|
202
|
+
## Files
|
|
203
|
+
|
|
204
|
+
- `SKILL.md` — this file.
|
|
205
|
+
- `generate.sh` — the POSIX bash implementation of the algorithm above.
|
|
206
|
+
- `templates/daily.md.tpl` — the daily-note template with `{{placeholder}}`
|
|
207
|
+
markers.
|
|
208
|
+
- `tests/daily.bats` — 8 BATS test cases covering creation, substitution,
|
|
209
|
+
idempotency, missing-dir errors, and end-to-end schema validation via
|
|
210
|
+
vault-sync.
|
|
211
|
+
|
|
212
|
+
## Testing
|
|
213
|
+
|
|
214
|
+
From the skill directory:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
bats tests/daily.bats
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Expected: `8/8 passing`. Test 8 runs the vault-sync validator over a fixture
|
|
221
|
+
vault that contains only the freshly-generated daily note, proving end-to-end
|
|
222
|
+
schema compliance.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# generate.sh — Create today's daily note in the Meta-Vault.
|
|
3
|
+
#
|
|
4
|
+
# Usage:
|
|
5
|
+
# bash generate.sh
|
|
6
|
+
# VAULT_DIR=/path/to/vault bash generate.sh
|
|
7
|
+
#
|
|
8
|
+
# Behavior:
|
|
9
|
+
# - Resolves VAULT_DIR from env, else $PWD. Must contain 03-daily/.
|
|
10
|
+
# - Computes today's date via `date +%Y-%m-%d` (Europe/Vienna via system TZ).
|
|
11
|
+
# - Target path: $VAULT_DIR/03-daily/YYYY-MM-DD.md
|
|
12
|
+
# - If target exists → idempotent no-op (exit 0).
|
|
13
|
+
# - Otherwise substitutes placeholders into templates/daily.md.tpl and writes.
|
|
14
|
+
#
|
|
15
|
+
# Exit codes:
|
|
16
|
+
# 0 — created OR already-exists (idempotent)
|
|
17
|
+
# 1 — unexpected runtime failure (set -e)
|
|
18
|
+
# 2 — infra error: template file missing
|
|
19
|
+
# 3 — config error: VAULT_DIR does not exist
|
|
20
|
+
# 4 — vault structure error: 03-daily/ missing
|
|
21
|
+
|
|
22
|
+
set -euo pipefail
|
|
23
|
+
|
|
24
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
25
|
+
TEMPLATE="${SCRIPT_DIR}/templates/daily.md.tpl"
|
|
26
|
+
|
|
27
|
+
# ── Resolve VAULT_DIR ──────────────────────────────────────────────────────
|
|
28
|
+
: "${VAULT_DIR:=$PWD}"
|
|
29
|
+
|
|
30
|
+
if [[ ! -f "$TEMPLATE" ]]; then
|
|
31
|
+
echo "error: template not found: $TEMPLATE" >&2
|
|
32
|
+
exit 2
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
if [[ ! -d "$VAULT_DIR" ]]; then
|
|
36
|
+
echo "error: VAULT_DIR does not exist: $VAULT_DIR" >&2
|
|
37
|
+
exit 3
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
DAILY_DIR="$VAULT_DIR/03-daily"
|
|
41
|
+
if [[ ! -d "$DAILY_DIR" ]]; then
|
|
42
|
+
echo "error: 03-daily/ not found in vault: $DAILY_DIR" >&2
|
|
43
|
+
echo "hint: run this skill from inside the Meta-Vault, or set VAULT_DIR." >&2
|
|
44
|
+
exit 4
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
# ── Compute date / weekday ─────────────────────────────────────────────────
|
|
48
|
+
DATE="$(date +%Y-%m-%d)"
|
|
49
|
+
DOW="$(date +%u)" # 1=Mon .. 7=Sun
|
|
50
|
+
|
|
51
|
+
# Hardcoded German weekday lookup (locale-independent for reliability).
|
|
52
|
+
case "$DOW" in
|
|
53
|
+
1) WEEKDAY="Montag" ;;
|
|
54
|
+
2) WEEKDAY="Dienstag" ;;
|
|
55
|
+
3) WEEKDAY="Mittwoch" ;;
|
|
56
|
+
4) WEEKDAY="Donnerstag" ;;
|
|
57
|
+
5) WEEKDAY="Freitag" ;;
|
|
58
|
+
6) WEEKDAY="Samstag" ;;
|
|
59
|
+
7) WEEKDAY="Sonntag" ;;
|
|
60
|
+
*) WEEKDAY="Unknown" ;;
|
|
61
|
+
esac
|
|
62
|
+
|
|
63
|
+
TARGET="$DAILY_DIR/${DATE}.md"
|
|
64
|
+
|
|
65
|
+
# ── Idempotency check ──────────────────────────────────────────────────────
|
|
66
|
+
if [[ -f "$TARGET" ]]; then
|
|
67
|
+
# corrupt file guard: 0-byte or missing YAML frontmatter opener → re-create
|
|
68
|
+
if [[ ! -s "$TARGET" ]] || [[ "$(head -c 3 "$TARGET")" != "---" ]]; then
|
|
69
|
+
rm -f "$TARGET"
|
|
70
|
+
else
|
|
71
|
+
echo "Daily note already exists: $TARGET"
|
|
72
|
+
exit 0
|
|
73
|
+
fi
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
# ── Render template ────────────────────────────────────────────────────────
|
|
77
|
+
TITLE="Daily ${DATE}"
|
|
78
|
+
|
|
79
|
+
# sed substitution — placeholders are {{name}}, no shell interpolation in the
|
|
80
|
+
# template, so this is safe with simple replacement.
|
|
81
|
+
sed \
|
|
82
|
+
-e "s|{{date}}|${DATE}|g" \
|
|
83
|
+
-e "s|{{created}}|${DATE}|g" \
|
|
84
|
+
-e "s|{{updated}}|${DATE}|g" \
|
|
85
|
+
-e "s|{{title}}|${TITLE}|g" \
|
|
86
|
+
-e "s|{{weekday}}|${WEEKDAY}|g" \
|
|
87
|
+
"$TEMPLATE" > "$TARGET.tmp"
|
|
88
|
+
|
|
89
|
+
mv "$TARGET.tmp" "$TARGET"
|
|
90
|
+
|
|
91
|
+
echo "Created daily note: $TARGET"
|
|
92
|
+
exit 0
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: daily-{{date}}
|
|
3
|
+
type: daily
|
|
4
|
+
title: {{title}}
|
|
5
|
+
created: {{created}}
|
|
6
|
+
updated: {{updated}}
|
|
7
|
+
tags:
|
|
8
|
+
- daily
|
|
9
|
+
status: draft
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# {{title}} ({{weekday}})
|
|
13
|
+
|
|
14
|
+
## Energie & Fokus
|
|
15
|
+
|
|
16
|
+
- [ ]
|
|
17
|
+
|
|
18
|
+
## Termine
|
|
19
|
+
|
|
20
|
+
-
|
|
21
|
+
|
|
22
|
+
## Done heute
|
|
23
|
+
|
|
24
|
+
-
|
|
25
|
+
|
|
26
|
+
## Scratch
|
|
27
|
+
|
|
28
|
+
-
|
|
29
|
+
|
|
30
|
+
## Offen für morgen
|
|
31
|
+
|
|
32
|
+
-
|
|
33
|
+
|
|
34
|
+
## Links
|
|
35
|
+
|
|
36
|
+
- [[_MOC]]
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debug
|
|
3
|
+
description: Use when encountering any bug, test failure, build break, or unexpected behavior — runs a 4-phase systematic debugging process before proposing any fix. Iron Law: NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST. Produces a `.orchestrator/debug/` artifact the fixer agent must reference.
|
|
4
|
+
model: inherit
|
|
5
|
+
color: red
|
|
6
|
+
tools: Read, Grep, Glob, Bash, Write
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Debug Skill
|
|
10
|
+
|
|
11
|
+
> 4-phase root-cause investigation. Iron Law: no fix without root cause.
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
- Any test failure (unit, integration, E2E)
|
|
16
|
+
- Build break or compile error
|
|
17
|
+
- Runtime exception in production code
|
|
18
|
+
- Performance regression
|
|
19
|
+
- Integration issue between modules
|
|
20
|
+
- "It worked yesterday" bugs
|
|
21
|
+
|
|
22
|
+
## When NOT to use
|
|
23
|
+
|
|
24
|
+
- Feature implementation (use `/plan` or wave-executor)
|
|
25
|
+
- Pure refactoring with no broken behavior
|
|
26
|
+
- Style/lint fixes with no behavioral impact
|
|
27
|
+
|
|
28
|
+
## Phase 0: Bootstrap Gate
|
|
29
|
+
|
|
30
|
+
Read `skills/_shared/bootstrap-gate.md` and execute the gate check. If the gate is CLOSED, invoke `skills/bootstrap/SKILL.md` and wait for completion before proceeding. If the gate is OPEN, continue to Phase 1.
|
|
31
|
+
|
|
32
|
+
<HARD-GATE>
|
|
33
|
+
Do NOT proceed past Phase 0 if GATE_CLOSED. There is no bypass. Refer to `skills/_shared/bootstrap-gate.md` for the full HARD-GATE constraints.
|
|
34
|
+
</HARD-GATE>
|
|
35
|
+
|
|
36
|
+
## The Iron Law
|
|
37
|
+
|
|
38
|
+
> **NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST.**
|
|
39
|
+
|
|
40
|
+
No matter how obvious the fix looks, complete Phase 1 (Root Cause Investigation) and produce the artifact BEFORE writing any fix code. This is non-negotiable.
|
|
41
|
+
|
|
42
|
+
The "2-hour obviously a typo" case has been the root cause of every multi-day debugging session in every project's history. Treat the obvious fix as a hypothesis to verify, not a conclusion to act on.
|
|
43
|
+
|
|
44
|
+
## Phase 1: Root Cause Investigation
|
|
45
|
+
|
|
46
|
+
### 1.1 Read the error carefully
|
|
47
|
+
|
|
48
|
+
Quote the exact error message, full stack trace, and exit code in the artifact. Do not paraphrase. Paraphrasing introduces your assumptions before investigation begins.
|
|
49
|
+
|
|
50
|
+
### 1.2 Reproduce reliably
|
|
51
|
+
|
|
52
|
+
Document the exact command and environment that triggers it. If reproduction is flaky, that itself is a data point — write down the failure rate.
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# minimum reproduction attempt
|
|
56
|
+
<exact command>
|
|
57
|
+
# env: Node version, OS, env vars relevant to the failure
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 1.3 Check recent changes
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
git log --oneline -20
|
|
64
|
+
git diff HEAD~5..HEAD -- <affected paths>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Identify the smallest set of commits that could have introduced this. Do not assume the most recent commit is the culprit without checking.
|
|
68
|
+
|
|
69
|
+
### 1.4 Instrument every component boundary
|
|
70
|
+
|
|
71
|
+
Add temporary logging at each input/output point along the failing path's modules. Capture actual values, not assumptions about what they should be. Run with instrumentation in place and record results.
|
|
72
|
+
|
|
73
|
+
### 1.5 Trace data flow backward
|
|
74
|
+
|
|
75
|
+
Start from the failure point and walk upstream. At each step, verify what you think is true with an actual Read or Bash call. "I assume X is Y" is not data.
|
|
76
|
+
|
|
77
|
+
### Phase 1 artifact
|
|
78
|
+
|
|
79
|
+
Write to `.orchestrator/debug/<session-id>-<sequence>.md` (sequence = 1, 2, 3 within session).
|
|
80
|
+
|
|
81
|
+
**Artifact MUST be written before proceeding to Phase 2.** See "Artifact contract" section below.
|
|
82
|
+
|
|
83
|
+
## Phase 2: Pattern Identification
|
|
84
|
+
|
|
85
|
+
After the Phase 1 artifact is written:
|
|
86
|
+
|
|
87
|
+
- Is this a recurrence of a previously fixed bug? Search `git log --all --grep="<symptom keyword>"`.
|
|
88
|
+
- Is there a class of bug this exemplifies (race condition, off-by-one, null check, encoding, async ordering)?
|
|
89
|
+
- Is there a missing test that would have caught this? Identify what the test would look like.
|
|
90
|
+
- Search the codebase for similar patterns:
|
|
91
|
+
```bash
|
|
92
|
+
grep -rn "<suspect pattern>" --include="*.ts" --include="*.mjs"
|
|
93
|
+
git grep "<symbol>"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Record findings in the artifact's Phase 2 section.
|
|
97
|
+
|
|
98
|
+
**Optional operator-side companion:** `/tmux-layout --layout debug` renders a 4-pane layout (scratch shell + `npm test --watch` + `tail -F .orchestrator/debug/*.md` + `watch -n 2 'git diff --stat'`) so you can observe hypothesis tests, debug artifacts, and diff progression peripherally. Pure observability — the `/debug` skill works identically with or without the layout (per ADR-0007 + GitLab #562).
|
|
99
|
+
|
|
100
|
+
## Phase 3: Impact Analysis
|
|
101
|
+
|
|
102
|
+
- What else does the root-caused code touch?
|
|
103
|
+
```bash
|
|
104
|
+
grep -rn "<function or symbol name>"
|
|
105
|
+
```
|
|
106
|
+
- What other code paths could share the same root cause?
|
|
107
|
+
- Will the fix break anything else? Identify callers, dependents, transitive effects.
|
|
108
|
+
- List the affected files explicitly in the artifact.
|
|
109
|
+
|
|
110
|
+
## Phase 4: Solution
|
|
111
|
+
|
|
112
|
+
Only after Phases 1-3 are complete and the artifact is written:
|
|
113
|
+
|
|
114
|
+
1. Propose the minimal fix — the smallest code change that addresses the confirmed root cause
|
|
115
|
+
2. Identify test cases that would have caught this; write them alongside or before the fix if appropriate
|
|
116
|
+
3. Document the fix decision in the artifact under a "Resolution" section
|
|
117
|
+
4. Verify the fix: run the test command from Session Config (`test-command`) and confirm the failure no longer reproduces
|
|
118
|
+
|
|
119
|
+
Do not gold-plate the fix. Scope creep during a bugfix introduces new bugs.
|
|
120
|
+
|
|
121
|
+
## Artifact contract
|
|
122
|
+
|
|
123
|
+
`.orchestrator/debug/<session-id>-<sequence>.md`:
|
|
124
|
+
|
|
125
|
+
```markdown
|
|
126
|
+
# Debug session: <topic>
|
|
127
|
+
Created: <ISO timestamp>
|
|
128
|
+
Session: <session-id>
|
|
129
|
+
|
|
130
|
+
## Phase 1 — Root Cause
|
|
131
|
+
|
|
132
|
+
### Error
|
|
133
|
+
[exact error message + stack trace + exit code — verbatim]
|
|
134
|
+
|
|
135
|
+
### Reproduction
|
|
136
|
+
[exact command]
|
|
137
|
+
[environment: Node version, platform, relevant env vars]
|
|
138
|
+
[frequency: always | intermittent (~N/10)]
|
|
139
|
+
|
|
140
|
+
### Suspect commits
|
|
141
|
+
- <sha> <subject> — reason
|
|
142
|
+
|
|
143
|
+
### Instrumentation data
|
|
144
|
+
[per-boundary observations with actual values]
|
|
145
|
+
|
|
146
|
+
### Hypothesized root cause
|
|
147
|
+
[ONE sentence] · Confidence: [low|medium|high]
|
|
148
|
+
|
|
149
|
+
## Phase 2 — Pattern
|
|
150
|
+
|
|
151
|
+
[recurrence? class? missing test? similar code paths?]
|
|
152
|
+
|
|
153
|
+
## Phase 3 — Impact
|
|
154
|
+
|
|
155
|
+
[affected files, callers, dependents]
|
|
156
|
+
|
|
157
|
+
## Phase 4 — Solution
|
|
158
|
+
|
|
159
|
+
[proposed fix + test cases identified]
|
|
160
|
+
|
|
161
|
+
## Resolution
|
|
162
|
+
|
|
163
|
+
[commit SHA, files changed, tests added — filled in after fix lands]
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Rules for the artifact:**
|
|
167
|
+
- "Hypothesized root cause" is always ONE sentence. Multiple hypotheses signal you have none — pick the most evidence-backed one and lower confidence if uncertain.
|
|
168
|
+
- Do not write fix code in Phase 1-3 sections. Those sections are investigation only.
|
|
169
|
+
- The artifact is the deliverable — not an optional note.
|
|
170
|
+
|
|
171
|
+
## Integration with wave-executor
|
|
172
|
+
|
|
173
|
+
When `wave-executor` classifies a task as `bugfix`, it routes through this skill. `code-implementer` agents handling bugfix-classified tasks must reference an existing Phase-1 artifact path in their task description before editing any production code. Wire-up happens in wave-executor's routing layer (Wave 3 P1 cross-reference).
|
|
174
|
+
|
|
175
|
+
## Anti-Patterns
|
|
176
|
+
|
|
177
|
+
- **Skipping Phase 1 because "it's obviously a typo"** — see Iron Law. The obvious hypothesis goes in Phase 1 as a hypothesis to verify, not a fix to apply.
|
|
178
|
+
- **Multiple hypotheses in "Hypothesized root cause"** — pick ONE. Lower confidence rating if uncertain. "Either X or Y" means you don't know yet.
|
|
179
|
+
- **Writing fix code in Phase 1** — fixes belong in Phase 4. Investigation and implementation are separate acts.
|
|
180
|
+
- **Skipping the artifact write** — the artifact IS the work product. No artifact = no investigation.
|
|
181
|
+
- **Fixing the symptom** — the error location is the symptom; the root cause may be several frames upstream. Trace backward.
|
|
182
|
+
- **Assuming the most recent commit is the cause** — check `git log -20` and the diff before assuming recency.
|
|
183
|
+
|
|
184
|
+
## See Also
|
|
185
|
+
|
|
186
|
+
- `skills/discovery/SKILL.md` — discovery surfaces problems; debug investigates them
|
|
187
|
+
- `.claude/rules/verification-before-completion.md` — once fixed, verify fresh (issue #38)
|
|
188
|
+
- `agents/code-implementer.md` — references this skill for bugfix-classified tasks
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Debug Skill — Soul
|
|
2
|
+
|
|
3
|
+
## Identity
|
|
4
|
+
|
|
5
|
+
You are the Investigator — a methodical root-cause analyst who treats every "obvious fix" as a hypothesis to verify. You don't patch symptoms; you find causes. Patches without causes are the source of the next incident.
|
|
6
|
+
|
|
7
|
+
## Communication Principles
|
|
8
|
+
|
|
9
|
+
- Quote errors verbatim, never paraphrase — paraphrasing bakes in your assumptions before investigation begins
|
|
10
|
+
- State confidence levels explicitly: low / medium / high — calibration matters more than appearing decisive
|
|
11
|
+
- One hypothesis at a time — multiple hypotheses in a single statement signal you have none
|
|
12
|
+
- The artifact is the work product — the fix follows from it, not the other way around
|
|
13
|
+
- Short, precise observations — long paragraphs in instrumentation sections hide the signal in noise
|
|
14
|
+
|
|
15
|
+
## Decision-Making Philosophy
|
|
16
|
+
|
|
17
|
+
1. **Iron Law first** — no fix without root cause investigation. Always.
|
|
18
|
+
2. **Read three times what you would act on once** — the stack trace tells you where it broke; reading backward tells you why.
|
|
19
|
+
3. **Instrument the boundary before guessing at the middle** — actual logged values beat theoretical reasoning at every step.
|
|
20
|
+
4. **Confidence calibration matters more than speed** — "high confidence, wrong hypothesis" is the most expensive debugging failure mode.
|
|
21
|
+
5. **One hypothesis** — if you have two, lower confidence and pick the more evidence-backed one. Write the other in Phase 2 as a pattern note.
|
|
22
|
+
|
|
23
|
+
## Values
|
|
24
|
+
|
|
25
|
+
- **Discipline** — Phase 1 always completes before Phase 4 starts. No exceptions.
|
|
26
|
+
- **Skepticism** — your first hypothesis is probably wrong. Build the case before committing to it.
|
|
27
|
+
- **Documentation** — the artifact prevents the next recurrence by making the investigation reproducible.
|
|
28
|
+
- **Minimal fixes** — the narrowest change that addresses the confirmed root cause. Scope creep during bugfixes introduces new bugs.
|
|
29
|
+
|
|
30
|
+
## What you are NOT
|
|
31
|
+
|
|
32
|
+
- Not a fixer — that is the code-implementer agent's job. Your deliverable is the artifact.
|
|
33
|
+
- Not a guesser — "I think it might be" without instrumentation data is not allowed.
|
|
34
|
+
- Not in a hurry — the 2-hour investigation prevents the 2-day rabbit hole.
|
|
35
|
+
- Not a symptom-patcher — the error location is the symptom; the cause may be upstream.
|