@winspan/claude-forge 8.54.4 → 9.12.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/DEVELOPMENT.md +723 -46
- package/README.md +166 -21
- package/dist/catalogs/agents.json +67 -0
- package/dist/catalogs/skills.json +306 -0
- package/dist/claudemd/claudemd-generator.d.ts +45 -45
- package/dist/claudemd/claudemd-generator.d.ts.map +1 -1
- package/dist/claudemd/claudemd-generator.js +128 -449
- package/dist/claudemd/claudemd-generator.js.map +1 -1
- package/dist/claudemd/index.d.ts +14 -4
- package/dist/claudemd/index.d.ts.map +1 -1
- package/dist/claudemd/index.js +15 -4
- package/dist/claudemd/index.js.map +1 -1
- package/dist/claudemd/resume-manager.d.ts.map +1 -1
- package/dist/claudemd/resume-manager.js +37 -9
- package/dist/claudemd/resume-manager.js.map +1 -1
- package/dist/claudemd/templates/swarm-protocol.md +35 -186
- package/dist/claudemd/violations-manager.d.ts +40 -0
- package/dist/claudemd/violations-manager.d.ts.map +1 -0
- package/dist/claudemd/violations-manager.js +106 -0
- package/dist/claudemd/violations-manager.js.map +1 -0
- package/dist/cli/commands/admin.d.ts +15 -0
- package/dist/cli/commands/admin.d.ts.map +1 -0
- package/dist/cli/commands/admin.js +177 -0
- package/dist/cli/commands/admin.js.map +1 -0
- package/dist/cli/commands/agent.d.ts +169 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +690 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +18 -0
- package/dist/cli/commands/agents.d.ts.map +1 -0
- package/dist/cli/commands/agents.js +160 -0
- package/dist/cli/commands/agents.js.map +1 -0
- package/dist/cli/commands/bypass.d.ts +18 -0
- package/dist/cli/commands/bypass.d.ts.map +1 -0
- package/dist/cli/commands/bypass.js +87 -0
- package/dist/cli/commands/bypass.js.map +1 -0
- package/dist/cli/commands/claudemd.d.ts +60 -0
- package/dist/cli/commands/claudemd.d.ts.map +1 -1
- package/dist/cli/commands/claudemd.js +174 -37
- package/dist/cli/commands/claudemd.js.map +1 -1
- package/dist/cli/commands/codegraph.d.ts +17 -0
- package/dist/cli/commands/codegraph.d.ts.map +1 -0
- package/dist/cli/commands/codegraph.js +263 -0
- package/dist/cli/commands/codegraph.js.map +1 -0
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +94 -1
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/daemon.d.ts +39 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/daemon.js +167 -20
- package/dist/cli/commands/daemon.js.map +1 -1
- package/dist/cli/commands/decisions.d.ts +129 -0
- package/dist/cli/commands/decisions.d.ts.map +1 -0
- package/dist/cli/commands/decisions.js +706 -0
- package/dist/cli/commands/decisions.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +29 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +124 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/entropy.d.ts +35 -0
- package/dist/cli/commands/entropy.d.ts.map +1 -0
- package/dist/cli/commands/entropy.js +121 -0
- package/dist/cli/commands/entropy.js.map +1 -0
- package/dist/cli/commands/executions.d.ts +1 -0
- package/dist/cli/commands/executions.d.ts.map +1 -1
- package/dist/cli/commands/executions.js +12 -2
- package/dist/cli/commands/executions.js.map +1 -1
- package/dist/cli/commands/fix.d.ts +31 -0
- package/dist/cli/commands/fix.d.ts.map +1 -0
- package/dist/cli/commands/fix.js +108 -0
- package/dist/cli/commands/fix.js.map +1 -0
- package/dist/cli/commands/governance.d.ts +21 -0
- package/dist/cli/commands/governance.d.ts.map +1 -0
- package/dist/cli/commands/governance.js +60 -0
- package/dist/cli/commands/governance.js.map +1 -0
- package/dist/cli/commands/init.d.ts +27 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +158 -146
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/insights-goal-check.d.ts +54 -0
- package/dist/cli/commands/insights-goal-check.d.ts.map +1 -0
- package/dist/cli/commands/insights-goal-check.js +318 -0
- package/dist/cli/commands/insights-goal-check.js.map +1 -0
- package/dist/cli/commands/insights.d.ts +15 -0
- package/dist/cli/commands/insights.d.ts.map +1 -0
- package/dist/cli/commands/insights.js +127 -0
- package/dist/cli/commands/insights.js.map +1 -0
- package/dist/cli/commands/knowledge.d.ts +117 -0
- package/dist/cli/commands/knowledge.d.ts.map +1 -0
- package/dist/cli/commands/knowledge.js +1070 -0
- package/dist/cli/commands/knowledge.js.map +1 -0
- package/dist/cli/commands/loop.d.ts +95 -0
- package/dist/cli/commands/loop.d.ts.map +1 -0
- package/dist/cli/commands/loop.js +408 -0
- package/dist/cli/commands/loop.js.map +1 -0
- package/dist/cli/commands/maintenance.d.ts +33 -0
- package/dist/cli/commands/maintenance.d.ts.map +1 -0
- package/dist/cli/commands/maintenance.js +75 -0
- package/dist/cli/commands/maintenance.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +22 -11
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +93 -5
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/menu.d.ts.map +1 -1
- package/dist/cli/commands/menu.js +10 -184
- package/dist/cli/commands/menu.js.map +1 -1
- package/dist/cli/commands/project.d.ts +98 -0
- package/dist/cli/commands/project.d.ts.map +1 -0
- package/dist/cli/commands/project.js +382 -0
- package/dist/cli/commands/project.js.map +1 -0
- package/dist/cli/commands/skills.d.ts +131 -0
- package/dist/cli/commands/skills.d.ts.map +1 -1
- package/dist/cli/commands/skills.js +404 -118
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/spec.d.ts +40 -0
- package/dist/cli/commands/spec.d.ts.map +1 -0
- package/dist/cli/commands/spec.js +49 -0
- package/dist/cli/commands/spec.js.map +1 -0
- package/dist/cli/commands/stats.d.ts.map +1 -1
- package/dist/cli/commands/stats.js +11 -3
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +17 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/trace.d.ts.map +1 -1
- package/dist/cli/commands/trace.js +4 -9
- package/dist/cli/commands/trace.js.map +1 -1
- package/dist/cli/commands/violations.d.ts +14 -0
- package/dist/cli/commands/violations.d.ts.map +1 -0
- package/dist/cli/commands/violations.js +43 -0
- package/dist/cli/commands/violations.js.map +1 -0
- package/dist/cli/index.js +34 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/hook-manager.d.ts +1 -1
- package/dist/cli/init/hook-manager.d.ts.map +1 -1
- package/dist/cli/init/hook-manager.js +6 -0
- package/dist/cli/init/hook-manager.js.map +1 -1
- package/dist/cli/utils/resolve-session.d.ts +32 -0
- package/dist/cli/utils/resolve-session.d.ts.map +1 -0
- package/dist/cli/utils/resolve-session.js +39 -0
- package/dist/cli/utils/resolve-session.js.map +1 -0
- package/dist/core/config.d.ts +4 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +11 -23
- package/dist/core/config.js.map +1 -1
- package/dist/core/constants.d.ts +51 -13
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +63 -13
- package/dist/core/constants.js.map +1 -1
- package/dist/core/diagnostics/checks.d.ts +151 -0
- package/dist/core/diagnostics/checks.d.ts.map +1 -0
- package/dist/core/diagnostics/checks.js +766 -0
- package/dist/core/diagnostics/checks.js.map +1 -0
- package/dist/core/diagnostics/daemon-status.d.ts +77 -0
- package/dist/core/diagnostics/daemon-status.d.ts.map +1 -0
- package/dist/core/diagnostics/daemon-status.js +113 -0
- package/dist/core/diagnostics/daemon-status.js.map +1 -0
- package/dist/core/diagnostics/entropy-checks.d.ts +83 -0
- package/dist/core/diagnostics/entropy-checks.d.ts.map +1 -0
- package/dist/core/diagnostics/entropy-checks.js +400 -0
- package/dist/core/diagnostics/entropy-checks.js.map +1 -0
- package/dist/core/diagnostics/fix-runner.d.ts +54 -0
- package/dist/core/diagnostics/fix-runner.d.ts.map +1 -0
- package/dist/core/diagnostics/fix-runner.js +90 -0
- package/dist/core/diagnostics/fix-runner.js.map +1 -0
- package/dist/core/diagnostics/heartbeat-reader.d.ts +28 -0
- package/dist/core/diagnostics/heartbeat-reader.d.ts.map +1 -0
- package/dist/core/diagnostics/heartbeat-reader.js +50 -0
- package/dist/core/diagnostics/heartbeat-reader.js.map +1 -0
- package/dist/core/diagnostics/knip-runner.d.ts +49 -0
- package/dist/core/diagnostics/knip-runner.d.ts.map +1 -0
- package/dist/core/diagnostics/knip-runner.js +100 -0
- package/dist/core/diagnostics/knip-runner.js.map +1 -0
- package/dist/core/diagnostics/markers.d.ts +96 -0
- package/dist/core/diagnostics/markers.d.ts.map +1 -0
- package/dist/core/diagnostics/markers.js +153 -0
- package/dist/core/diagnostics/markers.js.map +1 -0
- package/dist/core/event-fields.d.ts +27 -0
- package/dist/core/event-fields.d.ts.map +1 -1
- package/dist/core/event-fields.js +43 -0
- package/dist/core/event-fields.js.map +1 -1
- package/dist/core/governance/global-inject.d.ts +90 -0
- package/dist/core/governance/global-inject.d.ts.map +1 -0
- package/dist/core/governance/global-inject.js +184 -0
- package/dist/core/governance/global-inject.js.map +1 -0
- package/dist/core/insights/agent-anchor-guard.d.ts +77 -0
- package/dist/core/insights/agent-anchor-guard.d.ts.map +1 -0
- package/dist/core/insights/agent-anchor-guard.js +119 -0
- package/dist/core/insights/agent-anchor-guard.js.map +1 -0
- package/dist/core/insights/agent-distill-context.d.ts +55 -0
- package/dist/core/insights/agent-distill-context.d.ts.map +1 -0
- package/dist/core/insights/agent-distill-context.js +146 -0
- package/dist/core/insights/agent-distill-context.js.map +1 -0
- package/dist/core/insights/agent-distill-spawn.d.ts +56 -0
- package/dist/core/insights/agent-distill-spawn.d.ts.map +1 -0
- package/dist/core/insights/agent-distill-spawn.js +179 -0
- package/dist/core/insights/agent-distill-spawn.js.map +1 -0
- package/dist/core/insights/agent-drift.d.ts +66 -0
- package/dist/core/insights/agent-drift.d.ts.map +1 -0
- package/dist/core/insights/agent-drift.js +109 -0
- package/dist/core/insights/agent-drift.js.map +1 -0
- package/dist/core/insights/agent-evolution-sources.d.ts +21 -0
- package/dist/core/insights/agent-evolution-sources.d.ts.map +1 -0
- package/dist/core/insights/agent-evolution-sources.js +36 -0
- package/dist/core/insights/agent-evolution-sources.js.map +1 -0
- package/dist/core/insights/agent-health.d.ts +142 -0
- package/dist/core/insights/agent-health.d.ts.map +1 -0
- package/dist/core/insights/agent-health.js +296 -0
- package/dist/core/insights/agent-health.js.map +1 -0
- package/dist/core/insights/agent-patch-apply.d.ts +45 -0
- package/dist/core/insights/agent-patch-apply.d.ts.map +1 -0
- package/dist/core/insights/agent-patch-apply.js +165 -0
- package/dist/core/insights/agent-patch-apply.js.map +1 -0
- package/dist/core/insights/agent-suggest.d.ts +128 -0
- package/dist/core/insights/agent-suggest.d.ts.map +1 -0
- package/dist/core/insights/agent-suggest.js +284 -0
- package/dist/core/insights/agent-suggest.js.map +1 -0
- package/dist/core/insights/coverage-tiers.d.ts +46 -0
- package/dist/core/insights/coverage-tiers.d.ts.map +1 -0
- package/dist/core/insights/coverage-tiers.js +95 -0
- package/dist/core/insights/coverage-tiers.js.map +1 -0
- package/dist/core/insights/experience-extractor.d.ts +60 -0
- package/dist/core/insights/experience-extractor.d.ts.map +1 -0
- package/dist/core/insights/experience-extractor.js +319 -0
- package/dist/core/insights/experience-extractor.js.map +1 -0
- package/dist/core/insights/violation-reporter.d.ts +149 -0
- package/dist/core/insights/violation-reporter.d.ts.map +1 -0
- package/dist/core/insights/violation-reporter.js +391 -0
- package/dist/core/insights/violation-reporter.js.map +1 -0
- package/dist/core/loop/loop-engine.d.ts +140 -0
- package/dist/core/loop/loop-engine.d.ts.map +1 -0
- package/dist/core/loop/loop-engine.js +266 -0
- package/dist/core/loop/loop-engine.js.map +1 -0
- package/dist/core/queue/index.d.ts +16 -3
- package/dist/core/queue/index.d.ts.map +1 -1
- package/dist/core/queue/index.js +16 -4
- package/dist/core/queue/index.js.map +1 -1
- package/dist/core/storage/base.d.ts +317 -0
- package/dist/core/storage/base.d.ts.map +1 -1
- package/dist/core/storage/base.js +1093 -0
- package/dist/core/storage/base.js.map +1 -1
- package/dist/core/storage/codec/tool-input-codec.d.ts +93 -0
- package/dist/core/storage/codec/tool-input-codec.d.ts.map +1 -0
- package/dist/core/storage/codec/tool-input-codec.js +159 -0
- package/dist/core/storage/codec/tool-input-codec.js.map +1 -0
- package/dist/core/storage/codegraph-types.d.ts +79 -0
- package/dist/core/storage/codegraph-types.d.ts.map +1 -0
- package/dist/core/storage/codegraph-types.js +14 -0
- package/dist/core/storage/codegraph-types.js.map +1 -0
- package/dist/core/storage/codegraph.d.ts +186 -0
- package/dist/core/storage/codegraph.d.ts.map +1 -0
- package/dist/core/storage/codegraph.js +452 -0
- package/dist/core/storage/codegraph.js.map +1 -0
- package/dist/core/storage/decisions.d.ts +387 -0
- package/dist/core/storage/decisions.d.ts.map +1 -0
- package/dist/core/storage/decisions.js +534 -0
- package/dist/core/storage/decisions.js.map +1 -0
- package/dist/core/storage/events.d.ts +239 -8
- package/dist/core/storage/events.d.ts.map +1 -1
- package/dist/core/storage/events.js +705 -39
- package/dist/core/storage/events.js.map +1 -1
- package/dist/core/storage/feedback.d.ts +111 -0
- package/dist/core/storage/feedback.d.ts.map +1 -0
- package/dist/core/storage/feedback.js +186 -0
- package/dist/core/storage/feedback.js.map +1 -0
- package/dist/core/storage/forge-config.d.ts +40 -0
- package/dist/core/storage/forge-config.d.ts.map +1 -0
- package/dist/core/storage/forge-config.js +65 -0
- package/dist/core/storage/forge-config.js.map +1 -0
- package/dist/core/storage/injections.d.ts +68 -0
- package/dist/core/storage/injections.d.ts.map +1 -1
- package/dist/core/storage/injections.js +131 -5
- package/dist/core/storage/injections.js.map +1 -1
- package/dist/core/storage/knowledge.d.ts +332 -0
- package/dist/core/storage/knowledge.d.ts.map +1 -0
- package/dist/core/storage/knowledge.js +589 -0
- package/dist/core/storage/knowledge.js.map +1 -0
- package/dist/core/storage/maintenance.d.ts +36 -9
- package/dist/core/storage/maintenance.d.ts.map +1 -1
- package/dist/core/storage/maintenance.js +56 -24
- package/dist/core/storage/maintenance.js.map +1 -1
- package/dist/core/storage/pipeline-rollup.d.ts +111 -0
- package/dist/core/storage/pipeline-rollup.d.ts.map +1 -0
- package/dist/core/storage/pipeline-rollup.js +432 -0
- package/dist/core/storage/pipeline-rollup.js.map +1 -0
- package/dist/core/storage/routing.d.ts +50 -3
- package/dist/core/storage/routing.d.ts.map +1 -1
- package/dist/core/storage/routing.js +131 -10
- package/dist/core/storage/routing.js.map +1 -1
- package/dist/core/storage/rows.d.ts +31 -8
- package/dist/core/storage/rows.d.ts.map +1 -1
- package/dist/core/storage/schema.sql +367 -23
- package/dist/core/storage/sessions.d.ts +136 -0
- package/dist/core/storage/sessions.d.ts.map +1 -1
- package/dist/core/storage/sessions.js +352 -15
- package/dist/core/storage/sessions.js.map +1 -1
- package/dist/core/storage/skills.d.ts +160 -0
- package/dist/core/storage/skills.d.ts.map +1 -1
- package/dist/core/storage/skills.js +368 -7
- package/dist/core/storage/skills.js.map +1 -1
- package/dist/core/storage/sqlite.d.ts +309 -20
- package/dist/core/storage/sqlite.d.ts.map +1 -1
- package/dist/core/storage/sqlite.js +523 -16
- package/dist/core/storage/sqlite.js.map +1 -1
- package/dist/core/storage/tasks.d.ts +744 -2
- package/dist/core/storage/tasks.d.ts.map +1 -1
- package/dist/core/storage/tasks.js +1691 -17
- package/dist/core/storage/tasks.js.map +1 -1
- package/dist/core/storage/tool-intercepts.d.ts +69 -0
- package/dist/core/storage/tool-intercepts.d.ts.map +1 -0
- package/dist/core/storage/tool-intercepts.js +116 -0
- package/dist/core/storage/tool-intercepts.js.map +1 -0
- package/dist/core/types.d.ts +136 -18
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +10 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils/backup.d.ts +81 -0
- package/dist/core/utils/backup.d.ts.map +1 -0
- package/dist/core/utils/backup.js +98 -0
- package/dist/core/utils/backup.js.map +1 -0
- package/dist/core/utils/binary-paths.d.ts +124 -0
- package/dist/core/utils/binary-paths.d.ts.map +1 -0
- package/dist/core/utils/binary-paths.js +218 -0
- package/dist/core/utils/binary-paths.js.map +1 -0
- package/dist/core/utils/bypass-token.d.ts +75 -0
- package/dist/core/utils/bypass-token.d.ts.map +1 -0
- package/dist/core/utils/bypass-token.js +133 -0
- package/dist/core/utils/bypass-token.js.map +1 -0
- package/dist/core/utils/cc-builtin-agents.d.ts +3 -0
- package/dist/core/utils/cc-builtin-agents.d.ts.map +1 -0
- package/dist/core/utils/cc-builtin-agents.js +29 -0
- package/dist/core/utils/cc-builtin-agents.js.map +1 -0
- package/dist/core/utils/claude-cli-resolver.d.ts +26 -0
- package/dist/core/utils/claude-cli-resolver.d.ts.map +1 -0
- package/dist/core/utils/claude-cli-resolver.js +115 -0
- package/dist/core/utils/claude-cli-resolver.js.map +1 -0
- package/dist/core/utils/claude-cli-spawn.d.ts +106 -0
- package/dist/core/utils/claude-cli-spawn.d.ts.map +1 -0
- package/dist/core/utils/claude-cli-spawn.js +219 -0
- package/dist/core/utils/claude-cli-spawn.js.map +1 -0
- package/dist/core/utils/forge-resume-block.d.ts.map +1 -1
- package/dist/core/utils/forge-resume-block.js +3 -2
- package/dist/core/utils/forge-resume-block.js.map +1 -1
- package/dist/core/utils/logger.d.ts +15 -3
- package/dist/core/utils/logger.d.ts.map +1 -1
- package/dist/core/utils/logger.js +20 -2
- package/dist/core/utils/logger.js.map +1 -1
- package/dist/core/utils/noise-prompt.d.ts +97 -0
- package/dist/core/utils/noise-prompt.d.ts.map +1 -0
- package/dist/core/utils/noise-prompt.js +127 -0
- package/dist/core/utils/noise-prompt.js.map +1 -0
- package/dist/core/utils/path.d.ts +0 -4
- package/dist/core/utils/path.d.ts.map +1 -1
- package/dist/core/utils/path.js +0 -7
- package/dist/core/utils/path.js.map +1 -1
- package/dist/core/utils/time.d.ts +67 -0
- package/dist/core/utils/time.d.ts.map +1 -1
- package/dist/core/utils/time.js +147 -0
- package/dist/core/utils/time.js.map +1 -1
- package/dist/daemon/agent-sync.d.ts +24 -0
- package/dist/daemon/agent-sync.d.ts.map +1 -0
- package/dist/daemon/agent-sync.js +114 -0
- package/dist/daemon/agent-sync.js.map +1 -0
- package/dist/daemon/config-store.d.ts +55 -0
- package/dist/daemon/config-store.d.ts.map +1 -0
- package/dist/daemon/config-store.js +146 -0
- package/dist/daemon/config-store.js.map +1 -0
- package/dist/daemon/event-parser.d.ts +22 -0
- package/dist/daemon/event-parser.d.ts.map +1 -1
- package/dist/daemon/event-parser.js +54 -3
- package/dist/daemon/event-parser.js.map +1 -1
- package/dist/daemon/handlers/history-exporter.d.ts.map +1 -1
- package/dist/daemon/handlers/history-exporter.js +9 -8
- package/dist/daemon/handlers/history-exporter.js.map +1 -1
- package/dist/daemon/handlers/post-tool-use.d.ts +66 -4
- package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
- package/dist/daemon/handlers/post-tool-use.js +221 -8
- package/dist/daemon/handlers/post-tool-use.js.map +1 -1
- package/dist/daemon/handlers/pre-tool-use.d.ts +181 -0
- package/dist/daemon/handlers/pre-tool-use.d.ts.map +1 -0
- package/dist/daemon/handlers/pre-tool-use.js +618 -0
- package/dist/daemon/handlers/pre-tool-use.js.map +1 -0
- package/dist/daemon/handlers/stop.d.ts +55 -7
- package/dist/daemon/handlers/stop.d.ts.map +1 -1
- package/dist/daemon/handlers/stop.js +245 -8
- package/dist/daemon/handlers/stop.js.map +1 -1
- package/dist/daemon/handlers/user-prompt.d.ts +51 -14
- package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
- package/dist/daemon/handlers/user-prompt.js +223 -95
- package/dist/daemon/handlers/user-prompt.js.map +1 -1
- package/dist/daemon/handlers/violation-content-backfill.d.ts +76 -0
- package/dist/daemon/handlers/violation-content-backfill.d.ts.map +1 -0
- package/dist/daemon/handlers/violation-content-backfill.js +167 -0
- package/dist/daemon/handlers/violation-content-backfill.js.map +1 -0
- package/dist/daemon/hook-sync.d.ts.map +1 -1
- package/dist/daemon/hook-sync.js +2 -1
- package/dist/daemon/hook-sync.js.map +1 -1
- package/dist/daemon/index.d.ts +19 -0
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +439 -86
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/lifecycle.d.ts +48 -1
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +98 -2
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/router.d.ts +4 -1
- package/dist/daemon/router.d.ts.map +1 -1
- package/dist/daemon/router.js +4 -2
- package/dist/daemon/router.js.map +1 -1
- package/dist/daemon/rules/defaults.d.ts +20 -0
- package/dist/daemon/rules/defaults.d.ts.map +1 -0
- package/dist/daemon/rules/defaults.js +779 -0
- package/dist/daemon/rules/defaults.js.map +1 -0
- package/dist/daemon/rules/registry.d.ts +47 -0
- package/dist/daemon/rules/registry.d.ts.map +1 -0
- package/dist/daemon/rules/registry.js +84 -0
- package/dist/daemon/rules/registry.js.map +1 -0
- package/dist/daemon/rules/types.d.ts +176 -0
- package/dist/daemon/rules/types.d.ts.map +1 -0
- package/dist/daemon/rules/types.js +15 -0
- package/dist/daemon/rules/types.js.map +1 -0
- package/dist/daemon/rules/whitelist.d.ts +101 -0
- package/dist/daemon/rules/whitelist.d.ts.map +1 -0
- package/dist/daemon/rules/whitelist.js +210 -0
- package/dist/daemon/rules/whitelist.js.map +1 -0
- package/dist/daemon/rules/workflow-defaults.d.ts +52 -0
- package/dist/daemon/rules/workflow-defaults.d.ts.map +1 -0
- package/dist/daemon/rules/workflow-defaults.js +521 -0
- package/dist/daemon/rules/workflow-defaults.js.map +1 -0
- package/dist/daemon/server.d.ts +11 -1
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +7 -1
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/services/codegraph-sync.d.ts +94 -0
- package/dist/daemon/services/codegraph-sync.d.ts.map +1 -0
- package/dist/daemon/services/codegraph-sync.js +159 -0
- package/dist/daemon/services/codegraph-sync.js.map +1 -0
- package/dist/daemon/services/context-injector.d.ts +34 -0
- package/dist/daemon/services/context-injector.d.ts.map +1 -0
- package/dist/daemon/services/context-injector.js +61 -0
- package/dist/daemon/services/context-injector.js.map +1 -0
- package/dist/daemon/services/decision-hint.d.ts +240 -0
- package/dist/daemon/services/decision-hint.d.ts.map +1 -0
- package/dist/daemon/services/decision-hint.js +562 -0
- package/dist/daemon/services/decision-hint.js.map +1 -0
- package/dist/daemon/services/event-ttl-sweep.d.ts +86 -0
- package/dist/daemon/services/event-ttl-sweep.d.ts.map +1 -0
- package/dist/daemon/services/event-ttl-sweep.js +124 -0
- package/dist/daemon/services/event-ttl-sweep.js.map +1 -0
- package/dist/daemon/services/feedback-aggregator.d.ts +167 -0
- package/dist/daemon/services/feedback-aggregator.d.ts.map +1 -0
- package/dist/daemon/services/feedback-aggregator.js +415 -0
- package/dist/daemon/services/feedback-aggregator.js.map +1 -0
- package/dist/daemon/services/heartbeat-writer.d.ts +46 -0
- package/dist/daemon/services/heartbeat-writer.d.ts.map +1 -0
- package/dist/daemon/services/heartbeat-writer.js +82 -0
- package/dist/daemon/services/heartbeat-writer.js.map +1 -0
- package/dist/daemon/services/idle-session-sweeper.d.ts +61 -0
- package/dist/daemon/services/idle-session-sweeper.d.ts.map +1 -0
- package/dist/daemon/services/idle-session-sweeper.js +94 -0
- package/dist/daemon/services/idle-session-sweeper.js.map +1 -0
- package/dist/daemon/services/idle-task-budget.d.ts +50 -0
- package/dist/daemon/services/idle-task-budget.d.ts.map +1 -0
- package/dist/daemon/services/idle-task-budget.js +72 -0
- package/dist/daemon/services/idle-task-budget.js.map +1 -0
- package/dist/daemon/services/intercept-revive.d.ts +60 -0
- package/dist/daemon/services/intercept-revive.d.ts.map +1 -0
- package/dist/daemon/services/intercept-revive.js +86 -0
- package/dist/daemon/services/intercept-revive.js.map +1 -0
- package/dist/daemon/services/intercept-rollback-guard.d.ts +105 -0
- package/dist/daemon/services/intercept-rollback-guard.d.ts.map +1 -0
- package/dist/daemon/services/intercept-rollback-guard.js +152 -0
- package/dist/daemon/services/intercept-rollback-guard.js.map +1 -0
- package/dist/daemon/services/intercept-timeout-sweeper.d.ts +58 -0
- package/dist/daemon/services/intercept-timeout-sweeper.d.ts.map +1 -0
- package/dist/daemon/services/intercept-timeout-sweeper.js +83 -0
- package/dist/daemon/services/intercept-timeout-sweeper.js.map +1 -0
- package/dist/daemon/services/kb-injector.d.ts +57 -0
- package/dist/daemon/services/kb-injector.d.ts.map +1 -0
- package/dist/daemon/services/kb-injector.js +148 -0
- package/dist/daemon/services/kb-injector.js.map +1 -0
- package/dist/daemon/services/kb-rebuild-scheduler.d.ts +95 -0
- package/dist/daemon/services/kb-rebuild-scheduler.d.ts.map +1 -0
- package/dist/daemon/services/kb-rebuild-scheduler.js +149 -0
- package/dist/daemon/services/kb-rebuild-scheduler.js.map +1 -0
- package/dist/daemon/services/loop-hint.d.ts +139 -0
- package/dist/daemon/services/loop-hint.d.ts.map +1 -0
- package/dist/daemon/services/loop-hint.js +272 -0
- package/dist/daemon/services/loop-hint.js.map +1 -0
- package/dist/daemon/services/outcome-classification-service.d.ts +49 -0
- package/dist/daemon/services/outcome-classification-service.d.ts.map +1 -0
- package/dist/daemon/services/outcome-classification-service.js +214 -0
- package/dist/daemon/services/outcome-classification-service.js.map +1 -0
- package/dist/daemon/services/outcome-classifier.d.ts +136 -0
- package/dist/daemon/services/outcome-classifier.d.ts.map +1 -0
- package/dist/daemon/services/outcome-classifier.js +178 -0
- package/dist/daemon/services/outcome-classifier.js.map +1 -0
- package/dist/daemon/services/outcome-nudge.d.ts +107 -0
- package/dist/daemon/services/outcome-nudge.d.ts.map +1 -0
- package/dist/daemon/services/outcome-nudge.js +242 -0
- package/dist/daemon/services/outcome-nudge.js.map +1 -0
- package/dist/daemon/services/spec-approval.d.ts +127 -0
- package/dist/daemon/services/spec-approval.d.ts.map +1 -0
- package/dist/daemon/services/spec-approval.js +216 -0
- package/dist/daemon/services/spec-approval.js.map +1 -0
- package/dist/daemon/services/spec-gate.d.ts +54 -0
- package/dist/daemon/services/spec-gate.d.ts.map +1 -0
- package/dist/daemon/services/spec-gate.js +113 -0
- package/dist/daemon/services/spec-gate.js.map +1 -0
- package/dist/daemon/services/task-boundary-classifier.d.ts +78 -0
- package/dist/daemon/services/task-boundary-classifier.d.ts.map +1 -0
- package/dist/daemon/services/task-boundary-classifier.js +202 -0
- package/dist/daemon/services/task-boundary-classifier.js.map +1 -0
- package/dist/daemon/services/task-segmenter.d.ts +230 -1
- package/dist/daemon/services/task-segmenter.d.ts.map +1 -1
- package/dist/daemon/services/task-segmenter.js +527 -17
- package/dist/daemon/services/task-segmenter.js.map +1 -1
- package/dist/daemon/skill-sync.d.ts +7 -2
- package/dist/daemon/skill-sync.d.ts.map +1 -1
- package/dist/daemon/skill-sync.js +114 -9
- package/dist/daemon/skill-sync.js.map +1 -1
- package/dist/daemon/startup/maintenance-schedulers.d.ts +68 -0
- package/dist/daemon/startup/maintenance-schedulers.d.ts.map +1 -0
- package/dist/daemon/startup/maintenance-schedulers.js +294 -0
- package/dist/daemon/startup/maintenance-schedulers.js.map +1 -0
- package/dist/daemon/templates/agents/agent-retro-distiller.md +106 -0
- package/dist/daemon/templates/agents/claudemd-writer.md +102 -0
- package/dist/daemon/templates/agents/coder.md +262 -0
- package/dist/daemon/templates/agents/decision-maker.md +546 -0
- package/dist/daemon/templates/agents/doc-reviewer.md +118 -0
- package/dist/daemon/templates/agents/harness-debug-full.md +196 -0
- package/dist/daemon/templates/agents/knowledge-builder.md +120 -0
- package/dist/daemon/templates/agents/patch-applier.md +145 -0
- package/dist/daemon/templates/agents/planner.md +217 -0
- package/dist/daemon/templates/agents/safety-net-implementer.md +278 -0
- package/dist/daemon/templates/agents/skill-distiller.md +114 -0
- package/dist/daemon/templates/agents/task-boundary-classifier.md +65 -0
- package/dist/daemon/templates/agents/verify-agent.md +259 -0
- package/dist/daemon/utils/inject-block.d.ts +39 -0
- package/dist/daemon/utils/inject-block.d.ts.map +1 -0
- package/dist/daemon/utils/inject-block.js +25 -0
- package/dist/daemon/utils/inject-block.js.map +1 -0
- package/dist/hooks/hook-lib.sh +8 -0
- package/dist/hooks/notification.sh +19 -8
- package/dist/hooks/post-tool-use.sh +41 -23
- package/dist/hooks/pre-tool-use.sh +54 -23
- package/dist/hooks/session-start.sh +68 -0
- package/dist/hooks/stop.sh +31 -11
- package/dist/hooks/user-prompt-submit.sh +37 -21
- package/dist/knowledge/adapters/go-adapter.d.ts +65 -0
- package/dist/knowledge/adapters/go-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/go-adapter.js +294 -0
- package/dist/knowledge/adapters/go-adapter.js.map +1 -0
- package/dist/knowledge/adapters/index.d.ts +41 -0
- package/dist/knowledge/adapters/index.d.ts.map +1 -0
- package/dist/knowledge/adapters/index.js +71 -0
- package/dist/knowledge/adapters/index.js.map +1 -0
- package/dist/knowledge/adapters/java-adapter.d.ts +66 -0
- package/dist/knowledge/adapters/java-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/java-adapter.js +260 -0
- package/dist/knowledge/adapters/java-adapter.js.map +1 -0
- package/dist/knowledge/adapters/js-vue-adapter.d.ts +56 -0
- package/dist/knowledge/adapters/js-vue-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/js-vue-adapter.js +203 -0
- package/dist/knowledge/adapters/js-vue-adapter.js.map +1 -0
- package/dist/knowledge/adapters/kotlin-adapter.d.ts +55 -0
- package/dist/knowledge/adapters/kotlin-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/kotlin-adapter.js +209 -0
- package/dist/knowledge/adapters/kotlin-adapter.js.map +1 -0
- package/dist/knowledge/adapters/monorepo-adapter.d.ts +77 -0
- package/dist/knowledge/adapters/monorepo-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/monorepo-adapter.js +170 -0
- package/dist/knowledge/adapters/monorepo-adapter.js.map +1 -0
- package/dist/knowledge/adapters/python-adapter.d.ts +89 -0
- package/dist/knowledge/adapters/python-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/python-adapter.js +358 -0
- package/dist/knowledge/adapters/python-adapter.js.map +1 -0
- package/dist/knowledge/adapters/rust-adapter.d.ts +73 -0
- package/dist/knowledge/adapters/rust-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/rust-adapter.js +329 -0
- package/dist/knowledge/adapters/rust-adapter.js.map +1 -0
- package/dist/knowledge/adapters/types.d.ts +99 -0
- package/dist/knowledge/adapters/types.d.ts.map +1 -0
- package/dist/knowledge/adapters/types.js +17 -0
- package/dist/knowledge/adapters/types.js.map +1 -0
- package/dist/knowledge/adapters/typescript-adapter.d.ts +57 -0
- package/dist/knowledge/adapters/typescript-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/typescript-adapter.js +171 -0
- package/dist/knowledge/adapters/typescript-adapter.js.map +1 -0
- package/dist/knowledge/audit-applier.d.ts +70 -0
- package/dist/knowledge/audit-applier.d.ts.map +1 -0
- package/dist/knowledge/audit-applier.js +251 -0
- package/dist/knowledge/audit-applier.js.map +1 -0
- package/dist/knowledge/builder.d.ts +261 -0
- package/dist/knowledge/builder.d.ts.map +1 -0
- package/dist/knowledge/builder.js +966 -0
- package/dist/knowledge/builder.js.map +1 -0
- package/dist/knowledge/cli-provider.d.ts +151 -0
- package/dist/knowledge/cli-provider.d.ts.map +1 -0
- package/dist/knowledge/cli-provider.js +313 -0
- package/dist/knowledge/cli-provider.js.map +1 -0
- package/dist/knowledge/constants.d.ts +78 -0
- package/dist/knowledge/constants.d.ts.map +1 -0
- package/dist/knowledge/constants.js +98 -0
- package/dist/knowledge/constants.js.map +1 -0
- package/dist/knowledge/cross-module.d.ts +139 -0
- package/dist/knowledge/cross-module.d.ts.map +1 -0
- package/dist/knowledge/cross-module.js +370 -0
- package/dist/knowledge/cross-module.js.map +1 -0
- package/dist/knowledge/git-hooks.d.ts +67 -0
- package/dist/knowledge/git-hooks.d.ts.map +1 -0
- package/dist/knowledge/git-hooks.js +258 -0
- package/dist/knowledge/git-hooks.js.map +1 -0
- package/dist/knowledge/graph/edge-extractor.d.ts +45 -0
- package/dist/knowledge/graph/edge-extractor.d.ts.map +1 -0
- package/dist/knowledge/graph/edge-extractor.js +242 -0
- package/dist/knowledge/graph/edge-extractor.js.map +1 -0
- package/dist/knowledge/graph/impact.d.ts +73 -0
- package/dist/knowledge/graph/impact.d.ts.map +1 -0
- package/dist/knowledge/graph/impact.js +94 -0
- package/dist/knowledge/graph/impact.js.map +1 -0
- package/dist/knowledge/graph/types.d.ts +22 -0
- package/dist/knowledge/graph/types.d.ts.map +1 -0
- package/dist/knowledge/graph/types.js +13 -0
- package/dist/knowledge/graph/types.js.map +1 -0
- package/dist/knowledge/module-hash.d.ts +88 -0
- package/dist/knowledge/module-hash.d.ts.map +1 -0
- package/dist/knowledge/module-hash.js +162 -0
- package/dist/knowledge/module-hash.js.map +1 -0
- package/dist/knowledge/project-detector.d.ts +101 -0
- package/dist/knowledge/project-detector.d.ts.map +1 -0
- package/dist/knowledge/project-detector.js +223 -0
- package/dist/knowledge/project-detector.js.map +1 -0
- package/dist/knowledge/prompt.d.ts +237 -0
- package/dist/knowledge/prompt.d.ts.map +1 -0
- package/dist/knowledge/prompt.js +416 -0
- package/dist/knowledge/prompt.js.map +1 -0
- package/dist/knowledge/query.d.ts +118 -0
- package/dist/knowledge/query.d.ts.map +1 -0
- package/dist/knowledge/query.js +438 -0
- package/dist/knowledge/query.js.map +1 -0
- package/dist/knowledge/repo-map.d.ts +97 -0
- package/dist/knowledge/repo-map.d.ts.map +1 -0
- package/dist/knowledge/repo-map.js +447 -0
- package/dist/knowledge/repo-map.js.map +1 -0
- package/dist/knowledge/tools/index.d.ts +14 -0
- package/dist/knowledge/tools/index.d.ts.map +1 -0
- package/dist/knowledge/tools/index.js +11 -0
- package/dist/knowledge/tools/index.js.map +1 -0
- package/dist/knowledge/tools/knowledge-get-page.d.ts +46 -0
- package/dist/knowledge/tools/knowledge-get-page.d.ts.map +1 -0
- package/dist/knowledge/tools/knowledge-get-page.js +101 -0
- package/dist/knowledge/tools/knowledge-get-page.js.map +1 -0
- package/dist/knowledge/tools/knowledge-query.d.ts +77 -0
- package/dist/knowledge/tools/knowledge-query.d.ts.map +1 -0
- package/dist/knowledge/tools/knowledge-query.js +104 -0
- package/dist/knowledge/tools/knowledge-query.js.map +1 -0
- package/dist/knowledge/tools/repo-map-lookup.d.ts +45 -0
- package/dist/knowledge/tools/repo-map-lookup.d.ts.map +1 -0
- package/dist/knowledge/tools/repo-map-lookup.js +82 -0
- package/dist/knowledge/tools/repo-map-lookup.js.map +1 -0
- package/dist/knowledge/types.d.ts +269 -0
- package/dist/knowledge/types.d.ts.map +1 -0
- package/dist/knowledge/types.js +10 -0
- package/dist/knowledge/types.js.map +1 -0
- package/dist/knowledge/validator.d.ts +90 -0
- package/dist/knowledge/validator.d.ts.map +1 -0
- package/dist/knowledge/validator.js +355 -0
- package/dist/knowledge/validator.js.map +1 -0
- package/dist/mcp/server.d.ts +64 -8
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +448 -12
- package/dist/mcp/server.js.map +1 -1
- package/dist/skills/builtin-skills.d.ts +35 -0
- package/dist/skills/builtin-skills.d.ts.map +1 -0
- package/dist/skills/builtin-skills.js +68 -0
- package/dist/skills/builtin-skills.js.map +1 -0
- package/dist/skills/distill/attribution.d.ts +59 -0
- package/dist/skills/distill/attribution.d.ts.map +1 -0
- package/dist/skills/distill/attribution.js +101 -0
- package/dist/skills/distill/attribution.js.map +1 -0
- package/dist/skills/distill/distiller.d.ts +161 -0
- package/dist/skills/distill/distiller.d.ts.map +1 -0
- package/dist/skills/distill/distiller.js +461 -0
- package/dist/skills/distill/distiller.js.map +1 -0
- package/dist/skills/distill/index.d.ts +223 -0
- package/dist/skills/distill/index.d.ts.map +1 -0
- package/dist/skills/distill/index.js +466 -0
- package/dist/skills/distill/index.js.map +1 -0
- package/dist/skills/distill/project-anchor-guard.d.ts +116 -0
- package/dist/skills/distill/project-anchor-guard.d.ts.map +1 -0
- package/dist/skills/distill/project-anchor-guard.js +334 -0
- package/dist/skills/distill/project-anchor-guard.js.map +1 -0
- package/dist/skills/distill/topic-deduper.d.ts +77 -0
- package/dist/skills/distill/topic-deduper.d.ts.map +1 -0
- package/dist/skills/distill/topic-deduper.js +119 -0
- package/dist/skills/distill/topic-deduper.js.map +1 -0
- package/dist/skills/distill/upstream-fetcher.d.ts +71 -0
- package/dist/skills/distill/upstream-fetcher.d.ts.map +1 -0
- package/dist/skills/distill/upstream-fetcher.js +202 -0
- package/dist/skills/distill/upstream-fetcher.js.map +1 -0
- package/dist/skills/distilled/distilled-api-design.md +495 -0
- package/dist/skills/distilled/distilled-architecture-decision.md +173 -0
- package/dist/skills/distilled/distilled-brainstorming.md +79 -0
- package/dist/skills/distilled/distilled-brand-guidelines.md +86 -0
- package/dist/skills/distilled/distilled-canvas-design.md +128 -0
- package/dist/skills/distilled/distilled-claude-api.md +185 -0
- package/dist/skills/distilled/distilled-creator.md +181 -0
- package/dist/skills/distilled/distilled-db-schema-design.md +245 -0
- package/dist/skills/distilled/distilled-dispatching-parallel-agents.md +136 -0
- package/dist/skills/distilled/distilled-doc-coauthoring.md +144 -0
- package/dist/skills/distilled/distilled-docx.md +231 -0
- package/dist/skills/distilled/distilled-executing-plans.md +148 -0
- package/dist/skills/distilled/distilled-finishing-a-development-branch.md +213 -0
- package/dist/skills/distilled/distilled-frontend-design.md +118 -0
- package/dist/skills/distilled/distilled-harness-engineering.md +242 -0
- package/dist/skills/distilled/distilled-karpathy-guidelines.md +104 -0
- package/dist/skills/distilled/distilled-performance-optimization.md +175 -0
- package/dist/skills/distilled/distilled-receiving-code-review.md +185 -0
- package/dist/skills/distilled/distilled-spec-driven-design.md +193 -0
- package/dist/skills/distilled/distilled-subagent-driven-development.md +124 -0
- package/dist/skills/distilled/distilled-systematic-debugging.md +154 -0
- package/dist/skills/distilled/distilled-test-driven-development.md +432 -0
- package/dist/skills/distilled/distilled-using-superpowers.md +134 -0
- package/dist/skills/distilled/distilled-verification-before-completion.md +213 -0
- package/dist/skills/distilled/distilled-writing-skills.md +175 -0
- package/dist/skills/registry.d.ts +55 -51
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +82 -196
- package/dist/skills/registry.js.map +1 -1
- package/dist/skills/tools/pipeline-suggest.js +14 -14
- package/dist/skills/tools/pipeline-suggest.js.map +1 -1
- package/dist/skills/tools/skill-invoke.d.ts +3 -2
- package/dist/skills/tools/skill-invoke.d.ts.map +1 -1
- package/dist/skills/tools/skill-invoke.js +4 -2
- package/dist/skills/tools/skill-invoke.js.map +1 -1
- package/dist/web/analytics/anti-pattern-detector.d.ts.map +1 -1
- package/dist/web/analytics/anti-pattern-detector.js +6 -1
- package/dist/web/analytics/anti-pattern-detector.js.map +1 -1
- package/dist/web/analytics/drift-detector.d.ts +6 -0
- package/dist/web/analytics/drift-detector.d.ts.map +1 -1
- package/dist/web/analytics/drift-detector.js +15 -8
- package/dist/web/analytics/drift-detector.js.map +1 -1
- package/dist/web/analytics/weekly-report.d.ts +13 -0
- package/dist/web/analytics/weekly-report.d.ts.map +1 -1
- package/dist/web/analytics/weekly-report.js +17 -3
- package/dist/web/analytics/weekly-report.js.map +1 -1
- package/dist/web/routes/_helpers.d.ts +31 -0
- package/dist/web/routes/_helpers.d.ts.map +1 -1
- package/dist/web/routes/_helpers.js +33 -0
- package/dist/web/routes/_helpers.js.map +1 -1
- package/dist/web/routes/agent-content.d.ts +30 -0
- package/dist/web/routes/agent-content.d.ts.map +1 -0
- package/dist/web/routes/agent-content.js +139 -0
- package/dist/web/routes/agent-content.js.map +1 -0
- package/dist/web/routes/agent-distill.d.ts +49 -0
- package/dist/web/routes/agent-distill.d.ts.map +1 -0
- package/dist/web/routes/agent-distill.js +526 -0
- package/dist/web/routes/agent-distill.js.map +1 -0
- package/dist/web/routes/config.d.ts +56 -0
- package/dist/web/routes/config.d.ts.map +1 -0
- package/dist/web/routes/config.js +243 -0
- package/dist/web/routes/config.js.map +1 -0
- package/dist/web/routes/decisions.d.ts +15 -0
- package/dist/web/routes/decisions.d.ts.map +1 -0
- package/dist/web/routes/decisions.js +181 -0
- package/dist/web/routes/decisions.js.map +1 -0
- package/dist/web/routes/diagnostics.d.ts +61 -0
- package/dist/web/routes/diagnostics.d.ts.map +1 -0
- package/dist/web/routes/diagnostics.js +203 -0
- package/dist/web/routes/diagnostics.js.map +1 -0
- package/dist/web/routes/error-handler.d.ts +0 -4
- package/dist/web/routes/error-handler.d.ts.map +1 -1
- package/dist/web/routes/error-handler.js +0 -8
- package/dist/web/routes/error-handler.js.map +1 -1
- package/dist/web/routes/events.d.ts.map +1 -1
- package/dist/web/routes/events.js +26 -1
- package/dist/web/routes/events.js.map +1 -1
- package/dist/web/routes/health.d.ts +33 -0
- package/dist/web/routes/health.d.ts.map +1 -0
- package/dist/web/routes/health.js +37 -0
- package/dist/web/routes/health.js.map +1 -0
- package/dist/web/routes/insights.d.ts +0 -5
- package/dist/web/routes/insights.d.ts.map +1 -1
- package/dist/web/routes/insights.js +0 -0
- package/dist/web/routes/insights.js.map +1 -1
- package/dist/web/routes/knowledge.d.ts +57 -0
- package/dist/web/routes/knowledge.d.ts.map +1 -0
- package/dist/web/routes/knowledge.js +772 -0
- package/dist/web/routes/knowledge.js.map +1 -0
- package/dist/web/routes/patch.d.ts +60 -1
- package/dist/web/routes/patch.d.ts.map +1 -1
- package/dist/web/routes/patch.js +170 -64
- package/dist/web/routes/patch.js.map +1 -1
- package/dist/web/routes/pipeline.d.ts +28 -0
- package/dist/web/routes/pipeline.d.ts.map +1 -0
- package/dist/web/routes/pipeline.js +145 -0
- package/dist/web/routes/pipeline.js.map +1 -0
- package/dist/web/routes/rules.d.ts.map +1 -1
- package/dist/web/routes/rules.js +26 -7
- package/dist/web/routes/rules.js.map +1 -1
- package/dist/web/routes/sessions.d.ts.map +1 -1
- package/dist/web/routes/sessions.js +17 -8
- package/dist/web/routes/sessions.js.map +1 -1
- package/dist/web/routes/skill-content.d.ts +30 -0
- package/dist/web/routes/skill-content.d.ts.map +1 -0
- package/dist/web/routes/skill-content.js +117 -0
- package/dist/web/routes/skill-content.js.map +1 -0
- package/dist/web/routes/skill-stats.d.ts.map +1 -1
- package/dist/web/routes/skill-stats.js +153 -16
- package/dist/web/routes/skill-stats.js.map +1 -1
- package/dist/web/routes/skills-distill.d.ts +29 -0
- package/dist/web/routes/skills-distill.d.ts.map +1 -0
- package/dist/web/routes/skills-distill.js +552 -0
- package/dist/web/routes/skills-distill.js.map +1 -0
- package/dist/web/routes/skills.js +7 -7
- package/dist/web/routes/skills.js.map +1 -1
- package/dist/web/routes/stats.d.ts.map +1 -1
- package/dist/web/routes/stats.js +2 -1
- package/dist/web/routes/stats.js.map +1 -1
- package/dist/web/routes/task-timeline.d.ts +178 -0
- package/dist/web/routes/task-timeline.d.ts.map +1 -0
- package/dist/web/routes/task-timeline.js +530 -0
- package/dist/web/routes/task-timeline.js.map +1 -0
- package/dist/web/routes/tasks.d.ts.map +1 -1
- package/dist/web/routes/tasks.js +377 -8
- package/dist/web/routes/tasks.js.map +1 -1
- package/dist/web/routes/trace.d.ts.map +1 -1
- package/dist/web/routes/trace.js +3 -2
- package/dist/web/routes/trace.js.map +1 -1
- package/dist/web/routes/types.d.ts +0 -4
- package/dist/web/routes/types.d.ts.map +1 -1
- package/dist/web/routes/types.js +1 -1
- package/dist/web/routes/types.js.map +1 -1
- package/dist/web/routes/violations.d.ts +14 -0
- package/dist/web/routes/violations.d.ts.map +1 -0
- package/dist/web/routes/violations.js +112 -0
- package/dist/web/routes/violations.js.map +1 -0
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +99 -19
- package/dist/web/server.js.map +1 -1
- package/dist/web/services/agent-distill-manager.d.ts +122 -0
- package/dist/web/services/agent-distill-manager.d.ts.map +1 -0
- package/dist/web/services/agent-distill-manager.js +397 -0
- package/dist/web/services/agent-distill-manager.js.map +1 -0
- package/dist/web/services/build-manager.d.ts +72 -0
- package/dist/web/services/build-manager.d.ts.map +1 -0
- package/dist/web/services/build-manager.js +189 -0
- package/dist/web/services/build-manager.js.map +1 -0
- package/dist/web/services/distill-manager.d.ts +172 -0
- package/dist/web/services/distill-manager.d.ts.map +1 -0
- package/dist/web/services/distill-manager.js +411 -0
- package/dist/web/services/distill-manager.js.map +1 -0
- package/dist/web/static/assets/AgentDetailPage-DlUeA1sX.js +2 -0
- package/dist/web/static/assets/AgentDetailPage-DlUeA1sX.js.map +1 -0
- package/dist/web/static/assets/AgentDistillRunPage-Cybo4bii.js +3 -0
- package/dist/web/static/assets/AgentDistillRunPage-Cybo4bii.js.map +1 -0
- package/dist/web/static/assets/AgentsPage-Qd9FExLG.js +2 -0
- package/dist/web/static/assets/AgentsPage-Qd9FExLG.js.map +1 -0
- package/dist/web/static/assets/DaemonHealthPage-DTSVqtrI.js +2 -0
- package/dist/web/static/assets/DaemonHealthPage-DTSVqtrI.js.map +1 -0
- package/dist/web/static/assets/DecisionDetailPage-b4BA8dhc.js +2 -0
- package/dist/web/static/assets/DecisionDetailPage-b4BA8dhc.js.map +1 -0
- package/dist/web/static/assets/DecisionsPage-a3NRo_T7.js +2 -0
- package/dist/web/static/assets/DecisionsPage-a3NRo_T7.js.map +1 -0
- package/dist/web/static/assets/DiagnosticsPage-DIVdiIQG.js +2 -0
- package/dist/web/static/assets/DiagnosticsPage-DIVdiIQG.js.map +1 -0
- package/dist/web/static/assets/DistillDetailPage-U6a3l2iP.js +4 -0
- package/dist/web/static/assets/DistillDetailPage-U6a3l2iP.js.map +1 -0
- package/dist/web/static/assets/DistillPage-O7BHtRN8.js +2 -0
- package/dist/web/static/assets/DistillPage-O7BHtRN8.js.map +1 -0
- package/dist/web/static/assets/DistillRunPage-D1JuRWWr.js +2 -0
- package/dist/web/static/assets/DistillRunPage-D1JuRWWr.js.map +1 -0
- package/dist/web/static/assets/GlobalScopeHint-Q3wTJx3F.js +2 -0
- package/dist/web/static/assets/GlobalScopeHint-Q3wTJx3F.js.map +1 -0
- package/dist/web/static/assets/IssueDetailPage-BDfrtk2C.js +2 -0
- package/dist/web/static/assets/IssueDetailPage-BDfrtk2C.js.map +1 -0
- package/dist/web/static/assets/IssuesPage-SKmhlCrw.js +2 -0
- package/dist/web/static/assets/IssuesPage-SKmhlCrw.js.map +1 -0
- package/dist/web/static/assets/KbDetailPage-Yna86Na8.js +2 -0
- package/dist/web/static/assets/KbDetailPage-Yna86Na8.js.map +1 -0
- package/dist/web/static/assets/KbHitsPage-Cljl7H9p.js +2 -0
- package/dist/web/static/assets/KbHitsPage-Cljl7H9p.js.map +1 -0
- package/dist/web/static/assets/MarkdownRenderer-DlDQNihj.js +3 -0
- package/dist/web/static/assets/MarkdownRenderer-DlDQNihj.js.map +1 -0
- package/dist/web/static/assets/NotFound-LMzbP51V.js +2 -0
- package/dist/web/static/assets/NotFound-LMzbP51V.js.map +1 -0
- package/dist/web/static/assets/SettingsPage-DzoK4PKg.js +2 -0
- package/dist/web/static/assets/SettingsPage-DzoK4PKg.js.map +1 -0
- package/dist/web/static/assets/SkillDetailPage-BuBJJ_NX.js +2 -0
- package/dist/web/static/assets/SkillDetailPage-BuBJJ_NX.js.map +1 -0
- package/dist/web/static/assets/SkillsPage-aojkJpBc.js +2 -0
- package/dist/web/static/assets/SkillsPage-aojkJpBc.js.map +1 -0
- package/dist/web/static/assets/TaskDetailPage-1ckxnGhw.js +4 -0
- package/dist/web/static/assets/TaskDetailPage-1ckxnGhw.js.map +1 -0
- package/dist/web/static/assets/TasksHubPage-C2PLh3eg.js +6 -0
- package/dist/web/static/assets/TasksHubPage-C2PLh3eg.js.map +1 -0
- package/dist/web/static/assets/WorkplacePage-DHrp5VxS.js +2 -0
- package/dist/web/static/assets/WorkplacePage-DHrp5VxS.js.map +1 -0
- package/dist/web/static/assets/arco-DFQA6dO_.css +1 -0
- package/dist/web/static/assets/arco-DV6xCLhr.js +14 -0
- package/dist/web/static/assets/arco-DV6xCLhr.js.map +1 -0
- package/dist/web/static/assets/charts-BSV4cyC4.js +37 -0
- package/dist/web/static/assets/charts-BSV4cyC4.js.map +1 -0
- package/dist/web/static/assets/date-fns-sbWH3_uq.js +2 -0
- package/dist/web/static/assets/date-fns-sbWH3_uq.js.map +1 -0
- package/dist/web/static/assets/index-B_v_MKlb.css +1 -0
- package/dist/web/static/assets/index-DileOOE4.js +4 -0
- package/dist/web/static/assets/index-DileOOE4.js.map +1 -0
- package/dist/web/static/assets/lucide-CnlPQoG8.js +72 -0
- package/dist/web/static/assets/lucide-CnlPQoG8.js.map +1 -0
- package/dist/web/static/assets/markdown-CA7ePUts.js +30 -0
- package/dist/web/static/assets/markdown-CA7ePUts.js.map +1 -0
- package/dist/web/static/assets/outcome-BKGy9azt.js +2 -0
- package/dist/web/static/assets/outcome-BKGy9azt.js.map +1 -0
- package/dist/web/static/assets/query-CgCOpYWf.js +2 -0
- package/dist/web/static/assets/{query-C99w429o.js.map → query-CgCOpYWf.js.map} +1 -1
- package/dist/web/static/assets/{react-router-r79dBVy4.js → react-router-Cxmg8RuL.js} +3 -3
- package/dist/web/static/assets/{react-router-r79dBVy4.js.map → react-router-Cxmg8RuL.js.map} +1 -1
- package/dist/web/static/assets/react-vendor-tkvCrao7.js +57 -0
- package/dist/web/static/assets/react-vendor-tkvCrao7.js.map +1 -0
- package/dist/web/static/assets/syntax-highlighter-BDYycNja.js +6 -0
- package/dist/web/static/assets/syntax-highlighter-BDYycNja.js.map +1 -0
- package/dist/web/static/assets/useAgentStats-B-uTgqBd.js +2 -0
- package/dist/web/static/assets/useAgentStats-B-uTgqBd.js.map +1 -0
- package/dist/web/static/assets/useDecisions-D-G2Ft5T.js +2 -0
- package/dist/web/static/assets/useDecisions-D-G2Ft5T.js.map +1 -0
- package/dist/web/static/assets/useDistill-21dZkXlT.js +3 -0
- package/dist/web/static/assets/useDistill-21dZkXlT.js.map +1 -0
- package/dist/web/static/assets/useEffectiveProject-DQiyX54y.js +2 -0
- package/dist/web/static/assets/useEffectiveProject-DQiyX54y.js.map +1 -0
- package/dist/web/static/assets/useIssuesFeed-CFiyQkAL.js +2 -0
- package/dist/web/static/assets/useIssuesFeed-CFiyQkAL.js.map +1 -0
- package/dist/web/static/assets/useKbHits-xKXWgqh9.js +2 -0
- package/dist/web/static/assets/useKbHits-xKXWgqh9.js.map +1 -0
- package/dist/web/static/assets/useSkillStats-B5hbIwdf.js +2 -0
- package/dist/web/static/assets/useSkillStats-B5hbIwdf.js.map +1 -0
- package/dist/web/static/assets/vendor-DS-q4Eyc.js +36 -0
- package/dist/web/static/assets/vendor-DS-q4Eyc.js.map +1 -0
- package/dist/web/static/index.html +12 -8
- package/package.json +18 -5
- package/dist/core/ai/provider.d.ts +0 -63
- package/dist/core/ai/provider.d.ts.map +0 -1
- package/dist/core/ai/provider.js +0 -241
- package/dist/core/ai/provider.js.map +0 -1
- package/dist/core/ai/types.d.ts +0 -43
- package/dist/core/ai/types.d.ts.map +0 -1
- package/dist/core/ai/types.js +0 -5
- package/dist/core/ai/types.js.map +0 -1
- package/dist/core/storage/token-usage.d.ts +0 -36
- package/dist/core/storage/token-usage.d.ts.map +0 -1
- package/dist/core/storage/token-usage.js +0 -59
- package/dist/core/storage/token-usage.js.map +0 -1
- package/dist/core/utils/token-tracker.d.ts +0 -39
- package/dist/core/utils/token-tracker.d.ts.map +0 -1
- package/dist/core/utils/token-tracker.js +0 -69
- package/dist/core/utils/token-tracker.js.map +0 -1
- package/dist/skills/index.d.ts +0 -3
- package/dist/skills/index.d.ts.map +0 -1
- package/dist/skills/index.js +0 -3
- package/dist/skills/index.js.map +0 -1
- package/dist/skills/matcher.d.ts +0 -26
- package/dist/skills/matcher.d.ts.map +0 -1
- package/dist/skills/matcher.js +0 -113
- package/dist/skills/matcher.js.map +0 -1
- package/dist/skills/official/code-simplifier.md +0 -52
- package/dist/skills/official/find-skills.md +0 -142
- package/dist/skills/official/official-api-design.md +0 -30
- package/dist/skills/official/official-architecture-decision.md +0 -41
- package/dist/skills/official/official-bmad.md +0 -118
- package/dist/skills/official/official-db-schema-design.md +0 -34
- package/dist/skills/official/official-debug.md +0 -25
- package/dist/skills/official/official-doc-driven.md +0 -31
- package/dist/skills/official/official-harness-engineering.md +0 -108
- package/dist/skills/official/official-openspec.md +0 -89
- package/dist/skills/official/official-performance-optimization.md +0 -30
- package/dist/skills/official/official-pr-review.md +0 -35
- package/dist/skills/official/official-release-checklist.md +0 -30
- package/dist/skills/official/official-security-hardening.md +0 -32
- package/dist/skills/official/official-spec-driven-design.md +0 -31
- package/dist/skills/official/planning-with-files.md +0 -241
- package/dist/skills/official/ui-ux-pro-max.md +0 -105
- package/dist/skills/official/webapp-testing.md +0 -96
- package/dist/skills/official-skills.d.ts +0 -26
- package/dist/skills/official-skills.d.ts.map +0 -1
- package/dist/skills/official-skills.js +0 -74
- package/dist/skills/official-skills.js.map +0 -1
- package/dist/skills/semantic-matcher.d.ts +0 -60
- package/dist/skills/semantic-matcher.d.ts.map +0 -1
- package/dist/skills/semantic-matcher.js +0 -192
- package/dist/skills/semantic-matcher.js.map +0 -1
- package/dist/skills/upgrade-engine.d.ts +0 -93
- package/dist/skills/upgrade-engine.d.ts.map +0 -1
- package/dist/skills/upgrade-engine.js +0 -447
- package/dist/skills/upgrade-engine.js.map +0 -1
- package/dist/skills/upgrade-prompt.d.ts +0 -20
- package/dist/skills/upgrade-prompt.d.ts.map +0 -1
- package/dist/skills/upgrade-prompt.js +0 -75
- package/dist/skills/upgrade-prompt.js.map +0 -1
- package/dist/web/routes/ai.d.ts +0 -10
- package/dist/web/routes/ai.d.ts.map +0 -1
- package/dist/web/routes/ai.js +0 -186
- package/dist/web/routes/ai.js.map +0 -1
- package/dist/web/routes/token-usage.d.ts +0 -7
- package/dist/web/routes/token-usage.d.ts.map +0 -1
- package/dist/web/routes/token-usage.js +0 -18
- package/dist/web/routes/token-usage.js.map +0 -1
- package/dist/web/ssrf-guard.d.ts +0 -35
- package/dist/web/ssrf-guard.d.ts.map +0 -1
- package/dist/web/ssrf-guard.js +0 -93
- package/dist/web/ssrf-guard.js.map +0 -1
- package/dist/web/static/assets/AIConfig-CdDWzJyO.js +0 -2
- package/dist/web/static/assets/AIConfig-CdDWzJyO.js.map +0 -1
- package/dist/web/static/assets/Dashboard-CoEmmIDt.js +0 -2
- package/dist/web/static/assets/Dashboard-CoEmmIDt.js.map +0 -1
- package/dist/web/static/assets/Drawer-DdRTzlLB.js +0 -2
- package/dist/web/static/assets/Drawer-DdRTzlLB.js.map +0 -1
- package/dist/web/static/assets/Events-DrIq1SUS.js +0 -2
- package/dist/web/static/assets/Events-DrIq1SUS.js.map +0 -1
- package/dist/web/static/assets/Reports-DFBM3MDK.js +0 -2
- package/dist/web/static/assets/Reports-DFBM3MDK.js.map +0 -1
- package/dist/web/static/assets/SearchInput-qCj_jAcf.js +0 -2
- package/dist/web/static/assets/SearchInput-qCj_jAcf.js.map +0 -1
- package/dist/web/static/assets/SessionDetail-CCzwdoT7.js +0 -2
- package/dist/web/static/assets/SessionDetail-CCzwdoT7.js.map +0 -1
- package/dist/web/static/assets/Sessions-FfLYkAw9.js +0 -2
- package/dist/web/static/assets/Sessions-FfLYkAw9.js.map +0 -1
- package/dist/web/static/assets/Skills-C8Gvs3Qa.js +0 -2
- package/dist/web/static/assets/Skills-C8Gvs3Qa.js.map +0 -1
- package/dist/web/static/assets/TaskDetail-BS8pYhaR.js +0 -2
- package/dist/web/static/assets/TaskDetail-BS8pYhaR.js.map +0 -1
- package/dist/web/static/assets/Tasks-CyuhizG8.js +0 -2
- package/dist/web/static/assets/Tasks-CyuhizG8.js.map +0 -1
- package/dist/web/static/assets/charts-CLrM0_uM.js +0 -37
- package/dist/web/static/assets/charts-CLrM0_uM.js.map +0 -1
- package/dist/web/static/assets/date-fns-CZ_bHujz.js +0 -2
- package/dist/web/static/assets/date-fns-CZ_bHujz.js.map +0 -1
- package/dist/web/static/assets/export-L_VBD2p1.js +0 -4
- package/dist/web/static/assets/export-L_VBD2p1.js.map +0 -1
- package/dist/web/static/assets/index-CBX47X8l.js +0 -3
- package/dist/web/static/assets/index-CBX47X8l.js.map +0 -1
- package/dist/web/static/assets/index-DjIoMdoR.css +0 -1
- package/dist/web/static/assets/lucide-Bs_edTLa.js +0 -232
- package/dist/web/static/assets/lucide-Bs_edTLa.js.map +0 -1
- package/dist/web/static/assets/query-C99w429o.js +0 -2
- package/dist/web/static/assets/react-vendor-CSp-GLFF.js +0 -49
- package/dist/web/static/assets/react-vendor-CSp-GLFF.js.map +0 -1
- package/dist/web/static/assets/syntax-highlighter-44FakypI.js +0 -9
- package/dist/web/static/assets/syntax-highlighter-44FakypI.js.map +0 -1
- package/dist/web/static/assets/time-Bxuk0M-C.js +0 -2
- package/dist/web/static/assets/time-Bxuk0M-C.js.map +0 -1
- package/dist/web/static/assets/vendor-CMMjVdZs.js +0 -64
- package/dist/web/static/assets/vendor-CMMjVdZs.js.map +0 -1
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: distilled-systematic-debugging
|
|
3
|
+
version: 0.2.0-distilled
|
|
4
|
+
description: 'Distilled IT-universal skill: systematic-debugging (score 4.5/5)'
|
|
5
|
+
spawn_agent: harness-debug-full
|
|
6
|
+
keywords:
|
|
7
|
+
- systematic
|
|
8
|
+
- debugging
|
|
9
|
+
rubric_version: 2
|
|
10
|
+
distilled_from:
|
|
11
|
+
- upstream: https://github.com/obra/superpowers.git
|
|
12
|
+
license: MIT
|
|
13
|
+
commit: f2cbfbefebbfef77321e4c9abc9e949826bea9d7
|
|
14
|
+
paths:
|
|
15
|
+
- systematic-debugging/SKILL.md
|
|
16
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
17
|
+
license: MIT
|
|
18
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
19
|
+
paths:
|
|
20
|
+
- agent-introspection-debugging/SKILL.md
|
|
21
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
22
|
+
license: MIT
|
|
23
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
24
|
+
paths:
|
|
25
|
+
- agent-introspection-debugging/SKILL.md
|
|
26
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
27
|
+
license: MIT
|
|
28
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
29
|
+
paths:
|
|
30
|
+
- agent-introspection-debugging/SKILL.md
|
|
31
|
+
distilled_at: '2026-06-15T00:55:01.895Z'
|
|
32
|
+
distilled_by: claude-code skill-distiller agent
|
|
33
|
+
it_universal_score: 4.5
|
|
34
|
+
it_universal_dims:
|
|
35
|
+
d1: 1
|
|
36
|
+
d2: 0.5
|
|
37
|
+
d3: 1
|
|
38
|
+
d4: 1
|
|
39
|
+
d5: 1
|
|
40
|
+
it_universal_rationale: >-
|
|
41
|
+
Four-phase root-cause methodology (investigate → pattern → hypothesis → implement) with a
|
|
42
|
+
3+-failures-means-architectural-problem heuristic; language- and toolchain-neutral; directly
|
|
43
|
+
portable to any debugging session in any codebase.
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
# Systematic Debugging
|
|
47
|
+
|
|
48
|
+
## When to use
|
|
49
|
+
- Any test failure, bug report, or unexpected behaviour — before proposing fixes
|
|
50
|
+
- Performance problems, build failures, integration breakage
|
|
51
|
+
- **Especially** when under time pressure, when an "obvious" fix hasn't worked, or when you've already tried multiple fixes
|
|
52
|
+
- **Do not skip** for "simple" bugs — simple bugs have root causes too; the process is fast for them
|
|
53
|
+
|
|
54
|
+
## Core idea
|
|
55
|
+
|
|
56
|
+
Random fixes waste time and create new bugs; symptom-level patches mask underlying issues.
|
|
57
|
+
The core principle is: always find the root cause before attempting any fix.
|
|
58
|
+
The methodology gates progress through four sequential phases — Root Cause → Pattern Analysis → Hypothesis Testing → Implementation — so each phase must be complete before the next begins.
|
|
59
|
+
The payoff is measurable: systematic debugging takes 15–30 minutes versus 2–3 hours of guess-and-check thrashing, with a first-time fix rate near 95 % versus ≈ 40 %.
|
|
60
|
+
The single most important escalation heuristic: **if three or more distinct fixes have failed, stop fixing symptoms and question the architecture.**
|
|
61
|
+
|
|
62
|
+
## The Iron Law
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
If Phase 1 is incomplete, no fix may be proposed.
|
|
69
|
+
|
|
70
|
+
## Steps
|
|
71
|
+
|
|
72
|
+
### Phase 1 — Root Cause Investigation
|
|
73
|
+
|
|
74
|
+
1. **Read error messages completely.** Do not skim warnings; read stack traces to the bottom; note exact line numbers, file paths, and error codes. They often contain the solution.
|
|
75
|
+
|
|
76
|
+
2. **Reproduce consistently.** Establish exact reproduction steps. If the issue is not reliably reproducible, gather more data — do not guess.
|
|
77
|
+
|
|
78
|
+
3. **Check recent changes.** Review git diff, recent commits, new dependencies, config changes, and environment differences. Something changed; find it.
|
|
79
|
+
|
|
80
|
+
4. **Instrument boundaries in multi-component systems.**
|
|
81
|
+
For any system with multiple layers (e.g., API → service → database; build → sign → deploy):
|
|
82
|
+
- At each component boundary, log what data *enters* and what *exits*
|
|
83
|
+
- Verify config/environment propagation at every layer
|
|
84
|
+
- **Run once to collect evidence** showing *where* it breaks
|
|
85
|
+
- Analyse that evidence to identify the failing component
|
|
86
|
+
- Only then investigate that specific component in depth
|
|
87
|
+
|
|
88
|
+
5. **Trace data flow for deep call-stack errors.**
|
|
89
|
+
Start at the failing point and trace backwards: what called this with the bad value? Keep tracing up the call chain until you find the origination point. Fix at the source, not at the symptom.
|
|
90
|
+
|
|
91
|
+
### Phase 2 — Pattern Analysis
|
|
92
|
+
|
|
93
|
+
1. Find working examples of similar behaviour in the same codebase.
|
|
94
|
+
2. Read the reference implementation **completely** — never skim.
|
|
95
|
+
3. List every difference between working and broken, no matter how small.
|
|
96
|
+
4. Understand all dependencies: required config, environment assumptions, shared state.
|
|
97
|
+
|
|
98
|
+
### Phase 3 — Hypothesis and Testing
|
|
99
|
+
|
|
100
|
+
1. **Form one specific hypothesis:** *"I think X is the root cause because Y."* Write it down.
|
|
101
|
+
2. Make the **smallest possible change** to test it — one variable at a time.
|
|
102
|
+
3. Did it work? → proceed to Phase 4. Did not work? → form a **new** hypothesis; do **not** stack additional fixes on top.
|
|
103
|
+
4. When you don't know, say so. Research or ask; do not pretend.
|
|
104
|
+
|
|
105
|
+
### Phase 4 — Implementation
|
|
106
|
+
|
|
107
|
+
1. **Create a failing test case first** — the simplest possible automated reproduction. The test must fail before the fix.
|
|
108
|
+
2. **Implement exactly one fix** that addresses the confirmed root cause. No "while I'm here" changes; no bundled refactoring.
|
|
109
|
+
3. **Verify:** test now passes, no regressions introduced, issue is actually resolved.
|
|
110
|
+
4. **If the fix doesn't work:** stop, return to Phase 1 with the new information gathered. Never attempt a fourth fix without re-investigating from scratch.
|
|
111
|
+
5. **If 3 or more fixes have failed — question the architecture.**
|
|
112
|
+
Signals of an architectural problem (not a symptom problem):
|
|
113
|
+
- Each fix reveals a new failure in a different place
|
|
114
|
+
- Fixes require "massive refactoring" to implement cleanly
|
|
115
|
+
- Fixing one symptom creates new symptoms elsewhere
|
|
116
|
+
|
|
117
|
+
At this point: stop, document the pattern, and discuss whether the underlying design needs to change before any more fixes are attempted.
|
|
118
|
+
|
|
119
|
+
## Anti-patterns
|
|
120
|
+
|
|
121
|
+
Stop and return to Phase 1 whenever you catch yourself thinking:
|
|
122
|
+
|
|
123
|
+
- "Quick fix for now, investigate later"
|
|
124
|
+
- "Just try changing X and see if it works"
|
|
125
|
+
- "I'll add multiple changes at once and run tests"
|
|
126
|
+
- "It's probably X, let me fix that" — assumption without evidence
|
|
127
|
+
- "I don't fully understand, but this might work"
|
|
128
|
+
- "Pattern says X but I'll adapt it differently" — without reading it completely
|
|
129
|
+
- Proposing a solution before tracing the data flow
|
|
130
|
+
- "One more fix attempt" when two have already failed
|
|
131
|
+
|
|
132
|
+
### Common rationalisations
|
|
133
|
+
|
|
134
|
+
| Excuse | Reality |
|
|
135
|
+
|---|---|
|
|
136
|
+
| "Issue is simple, don't need process" | Simple issues have root causes. Process is fast for simple bugs. |
|
|
137
|
+
| "Emergency, no time for process" | Systematic debugging is faster than thrashing. |
|
|
138
|
+
| "Just try this first, then investigate" | First fix sets the pattern. Do it right from the start. |
|
|
139
|
+
| "I'll write the test after the fix works" | Untested fixes don't stick. A failing test first proves the fix. |
|
|
140
|
+
| "Multiple fixes at once saves time" | Can't isolate what worked; introduces new bugs. |
|
|
141
|
+
| "Reference too long, I'll adapt the pattern" | Partial understanding guarantees bugs. Read it completely. |
|
|
142
|
+
| "One more fix attempt" (after 2+ failures) | 3+ failures = architectural problem. Question the design. |
|
|
143
|
+
|
|
144
|
+
## Quick reference
|
|
145
|
+
|
|
146
|
+
| Phase | Key activities | Gate to move forward |
|
|
147
|
+
|---|---|---|
|
|
148
|
+
| 1 — Root Cause | Read errors; reproduce; check changes; instrument boundaries | Understand WHAT failed and WHY |
|
|
149
|
+
| 2 — Pattern | Find working examples; read reference completely; list differences | Root difference identified |
|
|
150
|
+
| 3 — Hypothesis | State single specific theory; test minimally | Confirmed or replaced with new hypothesis |
|
|
151
|
+
| 4 — Implementation | Failing test first; one fix; verify; escalate at 3 failures | Bug resolved, tests pass, no regressions |
|
|
152
|
+
|
|
153
|
+
## References
|
|
154
|
+
- Upstream: https://github.com/obra/superpowers.git
|
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: distilled-test-driven-development
|
|
3
|
+
version: 0.2.0-distilled
|
|
4
|
+
description: 'Distilled IT-universal skill: test-driven-development (score 3.5/5)'
|
|
5
|
+
keywords:
|
|
6
|
+
- test
|
|
7
|
+
- driven
|
|
8
|
+
- development
|
|
9
|
+
rubric_version: 2
|
|
10
|
+
distilled_from:
|
|
11
|
+
- upstream: https://github.com/obra/superpowers.git
|
|
12
|
+
license: MIT
|
|
13
|
+
commit: f2cbfbefebbfef77321e4c9abc9e949826bea9d7
|
|
14
|
+
paths:
|
|
15
|
+
- test-driven-development/SKILL.md
|
|
16
|
+
- upstream: https://github.com/anthropics/skills.git
|
|
17
|
+
license: Apache-2.0
|
|
18
|
+
commit: 690f15cac7f7b4c055c5ab109c79ed9259934081
|
|
19
|
+
paths:
|
|
20
|
+
- webapp-testing/SKILL.md
|
|
21
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
22
|
+
license: MIT
|
|
23
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
24
|
+
paths:
|
|
25
|
+
- ai-regression-testing/SKILL.md
|
|
26
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
27
|
+
license: MIT
|
|
28
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
29
|
+
paths:
|
|
30
|
+
- cpp-testing/SKILL.md
|
|
31
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
32
|
+
license: MIT
|
|
33
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
34
|
+
paths:
|
|
35
|
+
- csharp-testing/SKILL.md
|
|
36
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
37
|
+
license: MIT
|
|
38
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
39
|
+
paths:
|
|
40
|
+
- django-tdd/SKILL.md
|
|
41
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
42
|
+
license: MIT
|
|
43
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
44
|
+
paths:
|
|
45
|
+
- e2e-testing/SKILL.md
|
|
46
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
47
|
+
license: MIT
|
|
48
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
49
|
+
paths:
|
|
50
|
+
- fsharp-testing/SKILL.md
|
|
51
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
52
|
+
license: MIT
|
|
53
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
54
|
+
paths:
|
|
55
|
+
- golang-testing/SKILL.md
|
|
56
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
57
|
+
license: MIT
|
|
58
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
59
|
+
paths:
|
|
60
|
+
- kotlin-testing/SKILL.md
|
|
61
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
62
|
+
license: MIT
|
|
63
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
64
|
+
paths:
|
|
65
|
+
- laravel-tdd/SKILL.md
|
|
66
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
67
|
+
license: MIT
|
|
68
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
69
|
+
paths:
|
|
70
|
+
- perl-testing/SKILL.md
|
|
71
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
72
|
+
license: MIT
|
|
73
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
74
|
+
paths:
|
|
75
|
+
- python-testing/SKILL.md
|
|
76
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
77
|
+
license: MIT
|
|
78
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
79
|
+
paths:
|
|
80
|
+
- quarkus-tdd/SKILL.md
|
|
81
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
82
|
+
license: MIT
|
|
83
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
84
|
+
paths:
|
|
85
|
+
- rust-testing/SKILL.md
|
|
86
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
87
|
+
license: MIT
|
|
88
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
89
|
+
paths:
|
|
90
|
+
- springboot-tdd/SKILL.md
|
|
91
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
92
|
+
license: MIT
|
|
93
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
94
|
+
paths:
|
|
95
|
+
- swift-protocol-di-testing/SKILL.md
|
|
96
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
97
|
+
license: MIT
|
|
98
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
99
|
+
paths:
|
|
100
|
+
- tdd-workflow/SKILL.md
|
|
101
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
102
|
+
license: MIT
|
|
103
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
104
|
+
paths:
|
|
105
|
+
- golang-testing/SKILL.md
|
|
106
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
107
|
+
license: MIT
|
|
108
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
109
|
+
paths:
|
|
110
|
+
- tdd-workflow/SKILL.md
|
|
111
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
112
|
+
license: MIT
|
|
113
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
114
|
+
paths:
|
|
115
|
+
- e2e-testing/SKILL.md
|
|
116
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
117
|
+
license: MIT
|
|
118
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
119
|
+
paths:
|
|
120
|
+
- golang-testing/SKILL.md
|
|
121
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
122
|
+
license: MIT
|
|
123
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
124
|
+
paths:
|
|
125
|
+
- kotlin-testing/SKILL.md
|
|
126
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
127
|
+
license: MIT
|
|
128
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
129
|
+
paths:
|
|
130
|
+
- laravel-tdd/SKILL.md
|
|
131
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
132
|
+
license: MIT
|
|
133
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
134
|
+
paths:
|
|
135
|
+
- python-testing/SKILL.md
|
|
136
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
137
|
+
license: MIT
|
|
138
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
139
|
+
paths:
|
|
140
|
+
- quarkus-tdd/SKILL.md
|
|
141
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
142
|
+
license: MIT
|
|
143
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
144
|
+
paths:
|
|
145
|
+
- rust-testing/SKILL.md
|
|
146
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
147
|
+
license: MIT
|
|
148
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
149
|
+
paths:
|
|
150
|
+
- springboot-tdd/SKILL.md
|
|
151
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
152
|
+
license: MIT
|
|
153
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
154
|
+
paths:
|
|
155
|
+
- tdd-workflow/SKILL.md
|
|
156
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
157
|
+
license: MIT
|
|
158
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
159
|
+
paths:
|
|
160
|
+
- ai-regression-testing/SKILL.md
|
|
161
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
162
|
+
license: MIT
|
|
163
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
164
|
+
paths:
|
|
165
|
+
- cpp-testing/SKILL.md
|
|
166
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
167
|
+
license: MIT
|
|
168
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
169
|
+
paths:
|
|
170
|
+
- csharp-testing/SKILL.md
|
|
171
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
172
|
+
license: MIT
|
|
173
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
174
|
+
paths:
|
|
175
|
+
- django-tdd/SKILL.md
|
|
176
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
177
|
+
license: MIT
|
|
178
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
179
|
+
paths:
|
|
180
|
+
- e2e-testing/SKILL.md
|
|
181
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
182
|
+
license: MIT
|
|
183
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
184
|
+
paths:
|
|
185
|
+
- golang-testing/SKILL.md
|
|
186
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
187
|
+
license: MIT
|
|
188
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
189
|
+
paths:
|
|
190
|
+
- kotlin-testing/SKILL.md
|
|
191
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
192
|
+
license: MIT
|
|
193
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
194
|
+
paths:
|
|
195
|
+
- laravel-tdd/SKILL.md
|
|
196
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
197
|
+
license: MIT
|
|
198
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
199
|
+
paths:
|
|
200
|
+
- perl-testing/SKILL.md
|
|
201
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
202
|
+
license: MIT
|
|
203
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
204
|
+
paths:
|
|
205
|
+
- python-testing/SKILL.md
|
|
206
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
207
|
+
license: MIT
|
|
208
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
209
|
+
paths:
|
|
210
|
+
- rust-testing/SKILL.md
|
|
211
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
212
|
+
license: MIT
|
|
213
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
214
|
+
paths:
|
|
215
|
+
- springboot-tdd/SKILL.md
|
|
216
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
217
|
+
license: MIT
|
|
218
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
219
|
+
paths:
|
|
220
|
+
- swift-protocol-di-testing/SKILL.md
|
|
221
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
222
|
+
license: MIT
|
|
223
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
224
|
+
paths:
|
|
225
|
+
- tdd-workflow/SKILL.md
|
|
226
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
227
|
+
license: MIT
|
|
228
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
229
|
+
paths:
|
|
230
|
+
- golang-testing/SKILL.md
|
|
231
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
232
|
+
license: MIT
|
|
233
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
234
|
+
paths:
|
|
235
|
+
- tdd-workflow/SKILL.md
|
|
236
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
237
|
+
license: MIT
|
|
238
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
239
|
+
paths:
|
|
240
|
+
- ai-regression-testing/SKILL.md
|
|
241
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
242
|
+
license: MIT
|
|
243
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
244
|
+
paths:
|
|
245
|
+
- cpp-testing/SKILL.md
|
|
246
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
247
|
+
license: MIT
|
|
248
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
249
|
+
paths:
|
|
250
|
+
- csharp-testing/SKILL.md
|
|
251
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
252
|
+
license: MIT
|
|
253
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
254
|
+
paths:
|
|
255
|
+
- django-tdd/SKILL.md
|
|
256
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
257
|
+
license: MIT
|
|
258
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
259
|
+
paths:
|
|
260
|
+
- e2e-testing/SKILL.md
|
|
261
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
262
|
+
license: MIT
|
|
263
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
264
|
+
paths:
|
|
265
|
+
- fsharp-testing/SKILL.md
|
|
266
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
267
|
+
license: MIT
|
|
268
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
269
|
+
paths:
|
|
270
|
+
- golang-testing/SKILL.md
|
|
271
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
272
|
+
license: MIT
|
|
273
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
274
|
+
paths:
|
|
275
|
+
- kotlin-testing/SKILL.md
|
|
276
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
277
|
+
license: MIT
|
|
278
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
279
|
+
paths:
|
|
280
|
+
- laravel-tdd/SKILL.md
|
|
281
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
282
|
+
license: MIT
|
|
283
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
284
|
+
paths:
|
|
285
|
+
- perl-testing/SKILL.md
|
|
286
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
287
|
+
license: MIT
|
|
288
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
289
|
+
paths:
|
|
290
|
+
- python-testing/SKILL.md
|
|
291
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
292
|
+
license: MIT
|
|
293
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
294
|
+
paths:
|
|
295
|
+
- quarkus-tdd/SKILL.md
|
|
296
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
297
|
+
license: MIT
|
|
298
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
299
|
+
paths:
|
|
300
|
+
- rust-testing/SKILL.md
|
|
301
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
302
|
+
license: MIT
|
|
303
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
304
|
+
paths:
|
|
305
|
+
- springboot-tdd/SKILL.md
|
|
306
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
307
|
+
license: MIT
|
|
308
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
309
|
+
paths:
|
|
310
|
+
- swift-protocol-di-testing/SKILL.md
|
|
311
|
+
- upstream: https://github.com/affaan-m/ECC.git
|
|
312
|
+
license: MIT
|
|
313
|
+
commit: 928076cc08cbb31e8549cea2883b4f51811de1c8
|
|
314
|
+
paths:
|
|
315
|
+
- tdd-workflow/SKILL.md
|
|
316
|
+
distilled_at: '2026-06-15T00:56:21.265Z'
|
|
317
|
+
distilled_by: claude-code skill-distiller agent
|
|
318
|
+
it_universal_score: 3.5
|
|
319
|
+
it_universal_dims:
|
|
320
|
+
d1: 0.5
|
|
321
|
+
d2: 0.5
|
|
322
|
+
d3: 0.5
|
|
323
|
+
d4: 1
|
|
324
|
+
d5: 1
|
|
325
|
+
it_universal_rationale: >-
|
|
326
|
+
Red-Green-Refactor cycle, Iron Law, and anti-pattern taxonomy are fully language- and
|
|
327
|
+
tool-agnostic; only illustrative code samples and test-runner invocations are
|
|
328
|
+
TypeScript/npm-specific and trivially substitutable in any codebase.
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
# Test-Driven Development (TDD)
|
|
332
|
+
|
|
333
|
+
## When to use
|
|
334
|
+
- Implementing any new feature or behavior
|
|
335
|
+
- Fixing a bug (write a failing test that reproduces it *before* touching production code)
|
|
336
|
+
- Refactoring existing code (existing tests must stay green throughout)
|
|
337
|
+
- Any behavior change where correctness needs to be verifiable and regression-safe
|
|
338
|
+
|
|
339
|
+
**Exceptions (require explicit partner approval):** throwaway prototypes, generated/scaffolded code, configuration-only files.
|
|
340
|
+
|
|
341
|
+
## Core idea
|
|
342
|
+
Write the test first, watch it fail, then write the minimal production code to make it pass — no more, no less. If you never saw the test fail, you cannot know it tests the right thing. Tests written *after* passing code answer "what does this do?"; tests written *before* answer "what *should* this do?" and force edge-case discovery before implementation biases your thinking. The **Red → Green → Refactor** loop is the atomic unit of work: one failing test → minimal code to pass → clean up → repeat. Writing code first "just to explore" is test-after in disguise; the remedy is to delete the pre-written code and start over with a test.
|
|
343
|
+
|
|
344
|
+
## Steps
|
|
345
|
+
|
|
346
|
+
### 1. RED — Write One Failing Test
|
|
347
|
+
Describe the exact behavior you want in a single test:
|
|
348
|
+
- **One behavior per test** — if "and" appears in the name, split it into two tests
|
|
349
|
+
- **Descriptive name** — the test name should state the expected outcome, not the mechanism
|
|
350
|
+
- **Prefer real code over mocks** — use test doubles only when external I/O is unavoidable
|
|
351
|
+
|
|
352
|
+
### 2. Verify RED — Watch It Fail *(mandatory, never skip)*
|
|
353
|
+
Run this test in isolation with your project's test runner. Confirm:
|
|
354
|
+
- The test **fails** (not errors on syntax/import)
|
|
355
|
+
- The failure message matches what you expect ("feature missing", not "undefined is not a function")
|
|
356
|
+
- It fails because the feature is absent, not due to a typo in the test itself
|
|
357
|
+
|
|
358
|
+
If the test **passes immediately** → you are testing already-existing behavior; fix or delete the test.
|
|
359
|
+
If the test **errors** → fix the error and re-run until it fails cleanly for the right reason.
|
|
360
|
+
|
|
361
|
+
### 3. GREEN — Write Minimal Code to Pass
|
|
362
|
+
Write the simplest production code that makes the failing test pass:
|
|
363
|
+
- Do not add untested features (YAGNI)
|
|
364
|
+
- Do not refactor other code in the same commit
|
|
365
|
+
- Do not "improve" anything beyond what the single test requires
|
|
366
|
+
|
|
367
|
+
### 4. Verify GREEN — Watch It Pass *(mandatory)*
|
|
368
|
+
Run your full test suite. Confirm:
|
|
369
|
+
- The new test passes
|
|
370
|
+
- All pre-existing tests still pass
|
|
371
|
+
- Output is clean (no new warnings or errors introduced)
|
|
372
|
+
|
|
373
|
+
If other tests break → fix them **now**, before proceeding.
|
|
374
|
+
|
|
375
|
+
### 5. REFACTOR — Clean Up (tests still green)
|
|
376
|
+
With all tests passing, improve the code's internal quality:
|
|
377
|
+
- Remove duplication
|
|
378
|
+
- Improve naming and readability
|
|
379
|
+
- Extract helpers or shared abstractions
|
|
380
|
+
|
|
381
|
+
Never add new behavior in this phase. Re-run the full suite after every refactor step.
|
|
382
|
+
|
|
383
|
+
### 6. Repeat
|
|
384
|
+
Write the next failing test for the next unit of behavior and cycle again.
|
|
385
|
+
|
|
386
|
+
## Iron Law
|
|
387
|
+
|
|
388
|
+
```
|
|
389
|
+
NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
Wrote code before a test? **Delete it. Start fresh.** No "keep as reference", no "adapting" it while writing the test — that is still test-after. Delete means delete.
|
|
393
|
+
|
|
394
|
+
## Anti-patterns
|
|
395
|
+
|
|
396
|
+
| Rationalization | Reality |
|
|
397
|
+
|---|---|
|
|
398
|
+
| "Too simple to test" | Simple code breaks too. A focused test takes under a minute. |
|
|
399
|
+
| "I'll add tests after" | Tests that pass immediately on first run prove nothing was verified. |
|
|
400
|
+
| "Already manually tested all edge cases" | Ad-hoc testing has no record and cannot be re-run; automated tests are systematic. |
|
|
401
|
+
| "Deleting X hours of work is wasteful" | Sunk-cost fallacy. Unverified production code is technical debt compounding interest. |
|
|
402
|
+
| "I'll keep it as reference and write tests first" | You will adapt it. That is test-after. Delete it. |
|
|
403
|
+
| "TDD is dogmatic; I'm being pragmatic" | Catching bugs before commit is faster than debugging in production. Test-first *is* pragmatic. |
|
|
404
|
+
| "Tests-after achieve the same goals" | They answer different questions — see Core idea. |
|
|
405
|
+
| "This case is different because…" | It isn't. All of these mean: delete the code, start over. |
|
|
406
|
+
|
|
407
|
+
**Red flags — stop and restart the TDD cycle from scratch:**
|
|
408
|
+
- You wrote production code before any test
|
|
409
|
+
- The test passed immediately without any implementation
|
|
410
|
+
- You cannot articulate why the test failed
|
|
411
|
+
- You find yourself composing a "just this once" justification
|
|
412
|
+
|
|
413
|
+
## Verification Checklist (before marking any work complete)
|
|
414
|
+
- [ ] Every new function/method has a test written before its implementation
|
|
415
|
+
- [ ] Each test was observed to fail for the expected reason
|
|
416
|
+
- [ ] Only minimal code was written to pass each test
|
|
417
|
+
- [ ] All tests pass with a clean runner output (no new warnings)
|
|
418
|
+
- [ ] Edge cases and error paths are covered by dedicated tests
|
|
419
|
+
- [ ] Mocks/stubs are used only where real I/O is genuinely unavoidable
|
|
420
|
+
|
|
421
|
+
## When Stuck
|
|
422
|
+
|
|
423
|
+
| Problem | Solution |
|
|
424
|
+
|---|---|
|
|
425
|
+
| Don't know how to write the test | Write the API you *wish* existed; start with the assertion, work backwards |
|
|
426
|
+
| Test is overly complicated | Your design is too complicated — simplify the interface first |
|
|
427
|
+
| Must mock everything to test anything | Code is too coupled; introduce dependency injection |
|
|
428
|
+
| Test setup is enormous | Extract shared helpers; if still complex, the design needs simplification |
|
|
429
|
+
| Bug found in existing untested code | Write a failing test reproducing the bug, then follow the TDD cycle to fix it |
|
|
430
|
+
|
|
431
|
+
## References
|
|
432
|
+
- Upstream: https://github.com/obra/superpowers.git
|