@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,213 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: distilled-finishing-a-development-branch
|
|
3
|
+
version: 0.2.0-distilled
|
|
4
|
+
description: 'Distilled IT-universal skill: finishing-a-development-branch (score 4/5)'
|
|
5
|
+
keywords:
|
|
6
|
+
- finishing
|
|
7
|
+
- development
|
|
8
|
+
- branch
|
|
9
|
+
rubric_version: 2
|
|
10
|
+
distilled_from:
|
|
11
|
+
- upstream: https://github.com/obra/superpowers.git
|
|
12
|
+
license: MIT
|
|
13
|
+
commit: f2cbfbefebbfef77321e4c9abc9e949826bea9d7
|
|
14
|
+
paths:
|
|
15
|
+
- finishing-a-development-branch/SKILL.md
|
|
16
|
+
distilled_at: '2026-06-15T00:51:18.934Z'
|
|
17
|
+
distilled_by: claude-code skill-distiller agent
|
|
18
|
+
it_universal_score: 4
|
|
19
|
+
it_universal_dims:
|
|
20
|
+
d1: 1
|
|
21
|
+
d2: 0.5
|
|
22
|
+
d3: 0.5
|
|
23
|
+
d4: 1
|
|
24
|
+
d5: 1
|
|
25
|
+
it_universal_rationale: >-
|
|
26
|
+
Language-neutral git workflow with environment-detection and structured options; only minor
|
|
27
|
+
worktree-path conventions need adapting per harness.
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
# Finishing a Development Branch
|
|
31
|
+
|
|
32
|
+
## When to use
|
|
33
|
+
- Implementation is complete and you need to integrate or dispose of the work
|
|
34
|
+
- You are on a feature/fix branch and all tests pass
|
|
35
|
+
- You need to choose between merge, PR, keep, or discard in a structured way
|
|
36
|
+
- Working with git worktrees and must avoid phantom-state cleanup mistakes
|
|
37
|
+
|
|
38
|
+
## Core idea
|
|
39
|
+
|
|
40
|
+
Before presenting any option to the user, always verify tests pass—broken code must not be merged or pushed. Next, detect the git workspace state (normal repo vs. named-branch worktree vs. detached HEAD) because this controls which options are valid and how cleanup works. Present exactly 4 options (or 3 for detached HEAD) so the conversation stays concrete. Execute in safe order: merge first, remove worktree second, delete branch last. Apply worktree cleanup only for merge/discard paths and only for worktrees your tooling created (provenance check), never for harness-owned workspaces.
|
|
41
|
+
|
|
42
|
+
## Steps
|
|
43
|
+
|
|
44
|
+
### 1 — Verify tests
|
|
45
|
+
|
|
46
|
+
Run the project's test suite before anything else:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Pick the right command for your stack:
|
|
50
|
+
npm test # Node/JS
|
|
51
|
+
cargo test # Rust
|
|
52
|
+
pytest # Python
|
|
53
|
+
go test ./... # Go
|
|
54
|
+
# etc.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
If tests fail, stop. Show the failures and do not proceed to menu.
|
|
58
|
+
|
|
59
|
+
### 2 — Detect workspace state
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
|
|
63
|
+
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
| State | Menu | Worktree cleanup? |
|
|
67
|
+
|---|---|---|
|
|
68
|
+
| `GIT_DIR == GIT_COMMON` (normal repo) | 4 options | No worktree exists |
|
|
69
|
+
| `GIT_DIR != GIT_COMMON`, named branch | 4 options | Provenance-based (Step 6) |
|
|
70
|
+
| `GIT_DIR != GIT_COMMON`, detached HEAD | 3 options | No (externally managed) |
|
|
71
|
+
|
|
72
|
+
### 3 — Determine base branch
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
If ambiguous, ask: "This branch split from `main` — is that correct?"
|
|
79
|
+
|
|
80
|
+
### 4 — Present options
|
|
81
|
+
|
|
82
|
+
**Normal repo / named-branch worktree → exactly 4 options:**
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
Implementation complete. What would you like to do?
|
|
86
|
+
|
|
87
|
+
1. Merge back to <base-branch> locally
|
|
88
|
+
2. Push and create a Pull Request
|
|
89
|
+
3. Keep the branch as-is (I'll handle it later)
|
|
90
|
+
4. Discard this work
|
|
91
|
+
|
|
92
|
+
Which option?
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Detached HEAD → exactly 3 options:**
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
Implementation complete. You're on a detached HEAD (externally managed workspace).
|
|
99
|
+
|
|
100
|
+
1. Push as new branch and create a Pull Request
|
|
101
|
+
2. Keep as-is (I'll handle it later)
|
|
102
|
+
3. Discard this work
|
|
103
|
+
|
|
104
|
+
Which option?
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Keep the menu concise — no extra explanation inline.
|
|
108
|
+
|
|
109
|
+
### 5 — Execute the chosen option
|
|
110
|
+
|
|
111
|
+
#### Option 1 — Merge locally
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
MAIN_ROOT=$(git -C "$(git rev-parse --git-common-dir)/.." rev-parse --show-toplevel)
|
|
115
|
+
cd "$MAIN_ROOT"
|
|
116
|
+
git checkout <base-branch>
|
|
117
|
+
git pull
|
|
118
|
+
git merge <feature-branch>
|
|
119
|
+
# Re-run tests on merged result; stop if they fail
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
After tests pass on merged result → run Step 6 cleanup, then:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
git branch -d <feature-branch>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
#### Option 2 — Push and create PR
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
git push -u origin <feature-branch>
|
|
132
|
+
gh pr create --title "<title>" --body "$(cat <<'EOF'
|
|
133
|
+
## Summary
|
|
134
|
+
- <bullet 1>
|
|
135
|
+
- <bullet 2>
|
|
136
|
+
|
|
137
|
+
## Test Plan
|
|
138
|
+
- [ ] <verification step>
|
|
139
|
+
EOF
|
|
140
|
+
)"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Do NOT clean up the worktree** — user needs it for PR iteration.
|
|
144
|
+
|
|
145
|
+
#### Option 3 — Keep as-is
|
|
146
|
+
|
|
147
|
+
Report: "Keeping branch `<name>`. Worktree preserved at `<path>`."
|
|
148
|
+
Do nothing else.
|
|
149
|
+
|
|
150
|
+
#### Option 4 — Discard
|
|
151
|
+
|
|
152
|
+
First confirm with the user:
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
This will permanently delete:
|
|
156
|
+
- Branch <name>
|
|
157
|
+
- All commits: <list>
|
|
158
|
+
- Worktree at <path> (if applicable)
|
|
159
|
+
|
|
160
|
+
Type 'discard' to confirm.
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Wait for the exact word `discard`. Then:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
MAIN_ROOT=$(git -C "$(git rev-parse --git-common-dir)/.." rev-parse --show-toplevel)
|
|
167
|
+
cd "$MAIN_ROOT"
|
|
168
|
+
# Run Step 6 cleanup first, then:
|
|
169
|
+
git branch -D <feature-branch>
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### 6 — Worktree cleanup (Options 1 and 4 only)
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
|
|
176
|
+
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
|
|
177
|
+
WORKTREE_PATH=$(git rev-parse --show-toplevel)
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
- **`GIT_DIR == GIT_COMMON`**: Normal repo, no worktree. Done.
|
|
181
|
+
- **Worktree path is under your tooling's managed directories** (e.g. `.worktrees/`, `worktrees/`, or your harness's configured path): you own cleanup.
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
MAIN_ROOT=$(git -C "$(git rev-parse --git-common-dir)/.." rev-parse --show-toplevel)
|
|
185
|
+
cd "$MAIN_ROOT"
|
|
186
|
+
git worktree remove "$WORKTREE_PATH"
|
|
187
|
+
git worktree prune # self-healing: remove stale registrations
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
- **Otherwise**: The host harness owns this workspace. Do **not** remove it. Use the harness's workspace-exit mechanism if available; otherwise leave it in place.
|
|
191
|
+
|
|
192
|
+
## Quick-reference matrix
|
|
193
|
+
|
|
194
|
+
| Option | Merge | Push | Keep worktree | Delete branch |
|
|
195
|
+
|---|---|---|---|---|
|
|
196
|
+
| 1 Merge locally | ✓ | — | no | yes (soft) |
|
|
197
|
+
| 2 Create PR | — | ✓ | **yes** | — |
|
|
198
|
+
| 3 Keep as-is | — | — | **yes** | — |
|
|
199
|
+
| 4 Discard | — | — | no | yes (force) |
|
|
200
|
+
|
|
201
|
+
## Anti-patterns
|
|
202
|
+
|
|
203
|
+
- **Skipping test verification** — never offer the menu before tests pass
|
|
204
|
+
- **Open-ended "what next?"** — always present the numbered menu, not a free-form question
|
|
205
|
+
- **Cleaning up worktree for PR path** — user needs it alive for review feedback
|
|
206
|
+
- **Deleting branch before removing worktree** — `git branch -d` will fail; remove worktree first
|
|
207
|
+
- **Running `git worktree remove` from inside the worktree** — always `cd` to main repo root first
|
|
208
|
+
- **Removing harness-owned worktrees** — provenance check required; only remove what your tooling created
|
|
209
|
+
- **Merging without re-running tests** — always verify tests on the merged result, not just the feature branch
|
|
210
|
+
- **Skipping discard confirmation** — require the typed word `discard`; do not proceed on "yes"
|
|
211
|
+
|
|
212
|
+
## References
|
|
213
|
+
- Upstream: https://github.com/obra/superpowers.git
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: distilled-frontend-design
|
|
3
|
+
version: 0.2.0-distilled
|
|
4
|
+
description: 'Distilled IT-universal skill: frontend-design (score 4.5/5)'
|
|
5
|
+
keywords:
|
|
6
|
+
- frontend
|
|
7
|
+
- design
|
|
8
|
+
rubric_version: 2
|
|
9
|
+
distilled_from:
|
|
10
|
+
- upstream: https://github.com/anthropics/skills.git
|
|
11
|
+
license: Apache-2.0
|
|
12
|
+
commit: 690f15cac7f7b4c055c5ab109c79ed9259934081
|
|
13
|
+
paths:
|
|
14
|
+
- frontend-design/SKILL.md
|
|
15
|
+
distilled_at: '2026-06-15T01:09:37.059Z'
|
|
16
|
+
distilled_by: claude-code skill-distiller agent
|
|
17
|
+
it_universal_score: 4.5
|
|
18
|
+
it_universal_dims:
|
|
19
|
+
d1: 0.5
|
|
20
|
+
d2: 1
|
|
21
|
+
d3: 1
|
|
22
|
+
d4: 1
|
|
23
|
+
d5: 1
|
|
24
|
+
it_universal_rationale: >-
|
|
25
|
+
Pure design-methodology skill covering HTML/CSS/JS/React/Vue with no repo-specific paths, no
|
|
26
|
+
IDE/CI lock-in, and transferable aesthetic doctrine applicable to any web UI project.
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
# Production-Grade Frontend Design (Avoiding Generic AI Aesthetics)
|
|
30
|
+
|
|
31
|
+
## When to use
|
|
32
|
+
- Building any web UI: components, pages, dashboards, landing pages, posters, or full apps
|
|
33
|
+
- Styling or beautifying an existing interface
|
|
34
|
+
- Generating HTML/CSS/JS, React, Vue, or other frontend artifacts
|
|
35
|
+
- When the goal is a memorable, polished result rather than "functional but forgettable"
|
|
36
|
+
|
|
37
|
+
## Core idea
|
|
38
|
+
Before writing a single line of code, commit to a **bold, intentional aesthetic direction** and execute it with precision. The biggest failure mode in AI-generated UI is converging on the same generic choices (purple gradients, Inter font, evenly-distributed pastels, predictable card layouts). Instead, pick an extreme — brutally minimal, maximalist chaos, retro-futuristic, editorial, industrial — and pursue it without hedging. Production-quality comes from cohesion and intentionality, not complexity. A restrained minimal design is as valid as an elaborate maximalist one, provided every detail serves the chosen direction. The one rule: no two designs should look the same.
|
|
39
|
+
|
|
40
|
+
## Steps
|
|
41
|
+
|
|
42
|
+
### 1. Design Thinking (before coding)
|
|
43
|
+
Answer four questions explicitly:
|
|
44
|
+
- **Purpose**: What problem does this UI solve? Who are the users?
|
|
45
|
+
- **Tone**: Choose a specific aesthetic extreme (see palette below). Name it; commit to it.
|
|
46
|
+
- **Constraints**: Framework requirements, performance targets, accessibility needs.
|
|
47
|
+
- **Differentiator**: What is the single most memorable thing about this design?
|
|
48
|
+
|
|
49
|
+
**Aesthetic palette to choose from (non-exhaustive):**
|
|
50
|
+
Brutally minimal · Maximalist chaos · Retro-futuristic · Organic/natural · Luxury/refined · Playful/toy-like · Editorial/magazine · Brutalist/raw · Art deco/geometric · Soft/pastel · Industrial/utilitarian · Vaporwave · Swiss grid · Dark gothic · Cottagecore · Bauhaus
|
|
51
|
+
|
|
52
|
+
### 2. Typography
|
|
53
|
+
- Select **two** fonts: a distinctive display font + a refined body font. Pair them with contrast (serif + grotesque, slab + geometric sans, etc.).
|
|
54
|
+
- Avoid: Arial, Roboto, Inter, system-ui, and any font that reads as "AI default".
|
|
55
|
+
- Use large, expressive type scales — big headings create hierarchy without extra elements.
|
|
56
|
+
- Letter-spacing, line-height, and font-weight are as important as font choice.
|
|
57
|
+
|
|
58
|
+
### 3. Color & Theme
|
|
59
|
+
- Define a **dominant color** + one or two **sharp accent** colors via CSS custom properties (`--color-*`).
|
|
60
|
+
- Avoid timid, evenly-distributed palettes. High contrast between dominant and accent creates energy.
|
|
61
|
+
- Alternate between dark-background and light-background themes across generations — never default to white.
|
|
62
|
+
- All color decisions should flow from `var(--*)` tokens for easy theming.
|
|
63
|
+
|
|
64
|
+
```css
|
|
65
|
+
:root {
|
|
66
|
+
--bg: #0c0c0c;
|
|
67
|
+
--surface: #1a1a1a;
|
|
68
|
+
--accent: #e8ff5a; /* sharp, single accent */
|
|
69
|
+
--text: #f0ede8;
|
|
70
|
+
--text-muted: #888;
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 4. Motion & Animation
|
|
75
|
+
- Prefer **CSS-only** animations for HTML artifacts; use Motion/Framer Motion for React when available.
|
|
76
|
+
- Focus effort on **one well-orchestrated moment**: a staggered page load with `animation-delay` creates more delight than many scattered micro-interactions.
|
|
77
|
+
- Use scroll-triggered reveals and hover states that **surprise** the user.
|
|
78
|
+
- Animations should reinforce the aesthetic (brutalist: snappy/hard cuts; luxury: slow eases; playful: bouncy springs).
|
|
79
|
+
|
|
80
|
+
```css
|
|
81
|
+
/* Staggered reveal pattern */
|
|
82
|
+
.item { opacity: 0; transform: translateY(20px); animation: reveal 0.5s ease forwards; }
|
|
83
|
+
.item:nth-child(1) { animation-delay: 0.1s; }
|
|
84
|
+
.item:nth-child(2) { animation-delay: 0.2s; }
|
|
85
|
+
/* ... */
|
|
86
|
+
@keyframes reveal { to { opacity: 1; transform: none; } }
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 5. Spatial Composition
|
|
90
|
+
- Break grid monotony: use asymmetry, overlapping elements, diagonal flow, or grid-breaking accents.
|
|
91
|
+
- Alternate between generous negative space (minimalist) and controlled density (maximalist).
|
|
92
|
+
- Avoid equal-weight columns and predictable card grids unless the aesthetic calls for strict structure.
|
|
93
|
+
|
|
94
|
+
### 6. Backgrounds & Visual Atmosphere
|
|
95
|
+
Go beyond solid colors. Choose contextually:
|
|
96
|
+
- **Gradient meshes** (radial-gradient composited at multiple positions)
|
|
97
|
+
- **Noise/grain textures** (SVG `feTurbulence` or CSS `backdrop-filter`)
|
|
98
|
+
- **Geometric patterns** (repeating SVG or CSS `background-image: repeating-linear-gradient(...)`)
|
|
99
|
+
- **Layered transparencies** with `rgba` + `backdrop-filter: blur()`
|
|
100
|
+
- **Dramatic shadows** as design elements, not just depth cues
|
|
101
|
+
- **Decorative borders / ruled lines** for editorial aesthetics
|
|
102
|
+
|
|
103
|
+
### 7. Implementation discipline
|
|
104
|
+
- Match code complexity to aesthetic vision. Maximalist → elaborate animations and effects. Minimalist → restraint, precise spacing, subtle details.
|
|
105
|
+
- Ship working code, not wireframes. All interactive states (hover, focus, active, disabled) must be designed.
|
|
106
|
+
- Use semantic HTML; keep accessibility a baseline, not an afterthought (`aria-*`, focus rings, contrast ratios).
|
|
107
|
+
|
|
108
|
+
## Anti-patterns
|
|
109
|
+
- ❌ Inter / Roboto / Arial / system-ui as the "default" font
|
|
110
|
+
- ❌ Purple-gradient-on-white-background as the "default" color scheme
|
|
111
|
+
- ❌ Predictable card-grid layouts with equal gutters everywhere
|
|
112
|
+
- ❌ Timid, evenly-distributed pastel palettes
|
|
113
|
+
- ❌ Space Grotesk or similar "popular AI pick" fonts repeated across designs
|
|
114
|
+
- ❌ Animations on every element rather than one orchestrated focal moment
|
|
115
|
+
- ❌ Generating the same aesthetic twice — vary theme (light/dark), font pairing, and spatial logic each time
|
|
116
|
+
|
|
117
|
+
## References
|
|
118
|
+
- Upstream: https://github.com/anthropics/skills.git
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: distilled-harness-engineering
|
|
3
|
+
version: 0.1.0-distilled
|
|
4
|
+
description: 'Distilled IT-universal skill: harness-engineering (score 5/5)'
|
|
5
|
+
spawn_agent: safety-net-implementer
|
|
6
|
+
keywords:
|
|
7
|
+
- harness
|
|
8
|
+
- engineering
|
|
9
|
+
- legacy
|
|
10
|
+
- 遗留代码
|
|
11
|
+
- 特征测试
|
|
12
|
+
- characterization
|
|
13
|
+
- 重构
|
|
14
|
+
- refactor
|
|
15
|
+
- 改造
|
|
16
|
+
- 老代码
|
|
17
|
+
rubric_version: 2
|
|
18
|
+
distilled_from:
|
|
19
|
+
- upstream: https://github.com/winspan/claude-forge.git
|
|
20
|
+
license: MIT
|
|
21
|
+
commit: 7d96b86c
|
|
22
|
+
paths:
|
|
23
|
+
- official/official-harness-engineering.md
|
|
24
|
+
distilled_at: '2026-05-27T02:00:47.967Z'
|
|
25
|
+
distilled_by: claude-sonnet-4-6
|
|
26
|
+
it_universal_score: 5
|
|
27
|
+
it_universal_dims:
|
|
28
|
+
d1: 1
|
|
29
|
+
d2: 1
|
|
30
|
+
d3: 1
|
|
31
|
+
d4: 1
|
|
32
|
+
d5: 1
|
|
33
|
+
it_universal_rationale: Characterization-tests-first refactor; SDLC universal.
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 触发条件
|
|
37
|
+
|
|
38
|
+
- 需要修改缺少测试覆盖的现有代码(遗留代码、接手的陌生代码库)
|
|
39
|
+
- 代码复杂度高,直接改动风险大,担心破坏现有行为
|
|
40
|
+
- 计划进行大规模重构或模块迁移
|
|
41
|
+
- 接手高风险核心模块,需要在理解行为后再动手
|
|
42
|
+
- 现有代码有隐含假设或副作用,需要先记录再修改
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 核心原则
|
|
47
|
+
|
|
48
|
+
1. **先保护,后修改** — 在任何改动之前,用测试固化现有行为,确保改动有安全网兜底。
|
|
49
|
+
2. **特征测试记录现实,不评判对错** — 测试描述"代码现在做什么",即使存在 bug 也先如实记录,避免在理解阶段引入主观判断。
|
|
50
|
+
3. **小步前进,即时验证** — 每次只改一处,改完立即运行测试套件;测试失败立即回滚,不积累未验证的变更。
|
|
51
|
+
4. **行为一致性是重构的唯一成功标准** — 重构完成后,外部可观测行为必须与原始行为文档一致;新功能用新测试覆盖,不混入重构过程。
|
|
52
|
+
5. **与 TDD 的边界清晰** — TDD 用于新功能(先写测试再实现);Harness Engineering 用于改动现有代码(先理解再保护再修改),两者目的不同,不可混用。
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 工作流
|
|
57
|
+
|
|
58
|
+
**复杂度判断(入口)**
|
|
59
|
+
|
|
60
|
+
| 复杂度 | 描述 | 流程 |
|
|
61
|
+
|--------|------|------|
|
|
62
|
+
| 简单 | 改动范围小、依赖少 | 跳过阶段 1,直接从阶段 2 开始 |
|
|
63
|
+
| 中等 | 多模块依赖、有副作用 | 完整四阶段 |
|
|
64
|
+
| 复杂 | 核心模块、跨层依赖、高风险迁移 | 完整四阶段 + 额外人工审查 |
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
**阶段 1 — 理解(Understand)**
|
|
69
|
+
|
|
70
|
+
1. 阅读目标代码,识别关键逻辑、边界条件和隐含假设。
|
|
71
|
+
2. 绘制依赖关系图:哪些调用方依赖这段代码,哪些外部资源(数据库、网络、文件系统)被访问。
|
|
72
|
+
3. 找到所有入口点(公开接口、事件触发点)和输出点(返回值、副作用、写操作)。
|
|
73
|
+
4. 输出**行为文档**:以自然语言或表格记录当前实际行为,作为后续阶段的基准。
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
**阶段 2 — 特征测试(Characterize)**
|
|
78
|
+
|
|
79
|
+
5. 针对行为文档中的每条行为编写特征测试(Characterization Tests),覆盖正常路径、边界条件和已知异常路径。
|
|
80
|
+
6. 运行测试套件,确保**全部通过**(目标覆盖率 > 80%)。若测试失败,说明行为文档有遗漏,先补文档再补测试,不修改被测代码。
|
|
81
|
+
7. 全绿后方可进入下一阶段。
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
**阶段 3 — 安全重构(Refactor)**
|
|
86
|
+
|
|
87
|
+
8. 按优先级逐步重构:消除重复 → 提取函数/模块 → 改善命名 → 简化复杂逻辑。每次只改一处,改完立即运行完整 harness;测试失败立即回滚。
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
**阶段 4 — 验证(Verify)**
|
|
92
|
+
|
|
93
|
+
在阶段 3 完成后执行:运行完整测试套件;对照原始行为文档逐条确认行为一致性;进行代码审查;新增行为用新测试覆盖,旧特征测试在确认无用后逐步退役。
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 反模式
|
|
98
|
+
|
|
99
|
+
1. **边理解边修改** — 在行为文档和特征测试建立之前就动手改代码,导致无法判断改动是否破坏了原有行为。
|
|
100
|
+
2. **特征测试写"应该怎样"而非"现在怎样"** — 将期望行为写入特征测试,掩盖了现有 bug,后续重构时误以为行为已修复。
|
|
101
|
+
3. **大步重构,延迟运行测试** — 一次性改动多处后才运行测试,失败时无法定位是哪一步引入的问题。
|
|
102
|
+
4. **测试失败后继续前进** — 不回滚、不修复,带着红色测试继续重构,导致安全网失效。
|
|
103
|
+
5. **将重构与新功能开发混在同一次提交** — 行为变更和结构变更混合,代码审查和问题定位都变得困难。
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 验证标准
|
|
108
|
+
|
|
109
|
+
完成 Harness Engineering 流程后,逐项确认:
|
|
110
|
+
|
|
111
|
+
- [ ] 行为文档已输出,覆盖所有已知入口点、输出点和边界条件
|
|
112
|
+
- [ ] 特征测试覆盖率 ≥ 80%,且在重构开始前全部通过(全绿)
|
|
113
|
+
- [ ] 重构过程中每一步改动后测试均保持全绿;出现红色时已立即回滚
|
|
114
|
+
- [ ] 重构完成后,外部可观测行为与行为文档逐条一致
|
|
115
|
+
- [ ] 新增行为有独立的新测试覆盖,未混入特征测试
|
|
116
|
+
- [ ] 代码审查已完成,无遗留的 TODO / 临时注释
|
|
117
|
+
- [ ] 旧特征测试中已无用的部分已标记退役或删除
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 适用范围
|
|
122
|
+
|
|
123
|
+
本技能适用于以下通用层次,与具体技术栈无关:
|
|
124
|
+
|
|
125
|
+
- **后端服务** — 业务逻辑层、API 处理层、中间件
|
|
126
|
+
- **持久化层** — 数据库访问、文件读写、缓存操作
|
|
127
|
+
- **CLI 工具** — 命令解析、子命令处理、输出格式化
|
|
128
|
+
- **前端** — 组件逻辑、状态管理、数据转换工具函数
|
|
129
|
+
- **调度器 / 后台任务** — 定时任务、队列消费者、事件处理器
|
|
130
|
+
- **知识库 / 配置加载** — 配置解析、数据初始化、静态资源处理
|
|
131
|
+
|
|
132
|
+
> 任何存在"不敢改、不了解、没有测试"的代码模块,均适用本技能。
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 上游对照
|
|
137
|
+
|
|
138
|
+
本技能从单一上游的 harness-engineering 规范(来源见 frontmatter)提炼,核心方法论源自 Michael Feathers《Working Effectively with Legacy Code》的特征测试思想。上游文档包含特定 Agent 调用建议(`researcher` / `tester` / `refactor-specialist`),已泛化为通用流程步骤,适配任意项目的工具链和团队分工。
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 示例(伪代码)
|
|
143
|
+
|
|
144
|
+
场景:对一个缺少测试的"用户权限校验"模块进行重构。
|
|
145
|
+
|
|
146
|
+
### 阶段 1 — 理解
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
// 阅读 auth_check 模块,记录行为文档
|
|
150
|
+
behavior_doc = {
|
|
151
|
+
inputs: [user_id, resource_id, action],
|
|
152
|
+
outputs: [bool: allowed, side_effect: audit_log_write],
|
|
153
|
+
paths: [
|
|
154
|
+
"user not found → return false",
|
|
155
|
+
"resource not found → raise NotFoundError",
|
|
156
|
+
"user.role == 'admin' → return true (skip resource check)",
|
|
157
|
+
"user.permissions includes action → return true",
|
|
158
|
+
"otherwise → return false + write audit log"
|
|
159
|
+
],
|
|
160
|
+
hidden_deps: ["reads from cache first, falls back to DB", "audit log is async"]
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### 阶段 2 — 特征测试
|
|
165
|
+
|
|
166
|
+
```python
|
|
167
|
+
# Python
|
|
168
|
+
def test_admin_always_allowed():
|
|
169
|
+
assert auth_check(admin_user, any_resource, "delete") == True
|
|
170
|
+
|
|
171
|
+
def test_unknown_user_denied():
|
|
172
|
+
assert auth_check(unknown_id, resource, "read") == False
|
|
173
|
+
|
|
174
|
+
def test_missing_resource_raises():
|
|
175
|
+
with raises(NotFoundError):
|
|
176
|
+
auth_check(user, nonexistent_resource, "read")
|
|
177
|
+
|
|
178
|
+
def test_permitted_action_allowed():
|
|
179
|
+
assert auth_check(user_with_read, resource, "read") == True
|
|
180
|
+
|
|
181
|
+
def test_denied_action_writes_audit():
|
|
182
|
+
auth_check(user_no_perms, resource, "write")
|
|
183
|
+
assert audit_log.last_entry.action == "write"
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
```typescript
|
|
187
|
+
// TypeScript
|
|
188
|
+
test("admin always allowed", () => {
|
|
189
|
+
expect(authCheck(adminUser, anyResource, "delete")).toBe(true);
|
|
190
|
+
});
|
|
191
|
+
test("unknown user denied", () => {
|
|
192
|
+
expect(authCheck(unknownId, resource, "read")).toBe(false);
|
|
193
|
+
});
|
|
194
|
+
test("missing resource raises", () => {
|
|
195
|
+
expect(() => authCheck(user, nonexistentResource, "read")).toThrow(NotFoundError);
|
|
196
|
+
});
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
```go
|
|
200
|
+
// Go
|
|
201
|
+
func TestAdminAlwaysAllowed(t *testing.T) {
|
|
202
|
+
result, _ := authCheck(adminUser, anyResource, "delete")
|
|
203
|
+
assert.True(t, result)
|
|
204
|
+
}
|
|
205
|
+
func TestUnknownUserDenied(t *testing.T) {
|
|
206
|
+
result, _ := authCheck(unknownID, resource, "read")
|
|
207
|
+
assert.False(t, result)
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
> 运行测试套件 → 全绿 → 进入阶段 3。
|
|
212
|
+
|
|
213
|
+
### 阶段 3 — 安全重构(小步示例)
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
// 步骤 A:提取 "admin shortcut" 为独立函数
|
|
217
|
+
function isAdminShortcut(user, action) → bool
|
|
218
|
+
|
|
219
|
+
// 运行 harness → 全绿 → 提交
|
|
220
|
+
|
|
221
|
+
// 步骤 B:提取 "permission lookup" 为独立函数
|
|
222
|
+
function hasPermission(user, resource, action) → bool
|
|
223
|
+
|
|
224
|
+
// 运行 harness → 全绿 → 提交
|
|
225
|
+
|
|
226
|
+
// 步骤 C:将 audit log 写入改为显式调用,消除隐式副作用
|
|
227
|
+
// 运行 harness → 某测试红色 → 立即 git revert 步骤 C → 分析原因
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### 阶段 4 — 验证
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
// 对照行为文档逐条验证
|
|
234
|
+
✓ "admin → true" — test_admin_always_allowed 通过
|
|
235
|
+
✓ "user not found → false" — test_unknown_user_denied 通过
|
|
236
|
+
✓ "resource not found → raise"— test_missing_resource_raises 通过
|
|
237
|
+
✓ "permitted → true" — test_permitted_action_allowed 通过
|
|
238
|
+
✓ "denied → audit log" — test_denied_action_writes_audit 通过
|
|
239
|
+
|
|
240
|
+
// 新增行为(重构后 audit log 改为显式)→ 新增独立测试覆盖
|
|
241
|
+
// 旧特征测试中针对隐式副作用的断言 → 标记退役
|
|
242
|
+
```
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: distilled-karpathy-guidelines
|
|
3
|
+
version: 0.2.0-distilled
|
|
4
|
+
description: "Karpathy 4 条 LLM 编程铁律 — moved as-is, not re-distilled (already a distillation of multica-ai/andrej-karpathy-skills)"
|
|
5
|
+
keywords:
|
|
6
|
+
- karpathy
|
|
7
|
+
- guidelines
|
|
8
|
+
- 编程原则
|
|
9
|
+
- 编程铁律
|
|
10
|
+
- simplicity
|
|
11
|
+
- surgical
|
|
12
|
+
- goal-driven
|
|
13
|
+
- 简洁优先
|
|
14
|
+
- 外科手术
|
|
15
|
+
- 目标可验证
|
|
16
|
+
- 行数预算
|
|
17
|
+
- 可验证判据
|
|
18
|
+
- 事前思考
|
|
19
|
+
- think before coding
|
|
20
|
+
distilled_from:
|
|
21
|
+
- upstream: https://github.com/multica-ai/andrej-karpathy-skills
|
|
22
|
+
license: MIT
|
|
23
|
+
commit: as-is-moved
|
|
24
|
+
paths:
|
|
25
|
+
- "andrej-karpathy-skills/SKILL.md (via local official-karpathy-guidelines.md)"
|
|
26
|
+
distilled_at: '2026-05-27T01:02:33.000Z'
|
|
27
|
+
distilled_by: "as-is-copy (Q8 spec 0849; not re-distilled to avoid lossy compression)"
|
|
28
|
+
it_universal_score: 5
|
|
29
|
+
it_universal_dims:
|
|
30
|
+
d1: 1
|
|
31
|
+
d2: 1
|
|
32
|
+
d3: 1
|
|
33
|
+
d4: 1
|
|
34
|
+
d5: 1
|
|
35
|
+
it_universal_rationale: "Karpathy 4 principles are themselves an IT-universal distillation; re-distilling would be lossy."
|
|
36
|
+
move_provenance: "copied as-is from upstream per spec 0849 Q8"
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
# Karpathy 编程铁律(4 条)
|
|
40
|
+
|
|
41
|
+
源自 Andrej Karpathy 总结的 LLM 常见踩坑(multica-ai/andrej-karpathy-skills,
|
|
42
|
+
MIT),转成事前提示 + 自查清单。这 4 条与「任何项目」开发流程中常见的「自检 →
|
|
43
|
+
Plan-then-Implement → Agent 委托」模式一致;本 skill 把它们提炼成任何任务开始
|
|
44
|
+
前可快速过一遍的具体动作。
|
|
45
|
+
|
|
46
|
+
## 1. Think Before Coding(事先思考)
|
|
47
|
+
|
|
48
|
+
把**模糊**换成**明确**,把**隐式假设**换成**显式问题**。
|
|
49
|
+
|
|
50
|
+
实操:
|
|
51
|
+
- 任务里有不确定的地方 → 在 spec / agent prompt / commit message 里**写出来**
|
|
52
|
+
- 强烈推荐采用 Plan-then-Implement 工作流(先出 spec → review → 实施),
|
|
53
|
+
本身就是这条原则的强制路径
|
|
54
|
+
- 自查:"这个改动假设了什么?任何一个假设错了会怎样?"
|
|
55
|
+
- 触发 → 用 planner-type agent 出 spec;spec 必须包含 "Open questions" 段
|
|
56
|
+
|
|
57
|
+
## 2. Simplicity First(简洁优先)
|
|
58
|
+
|
|
59
|
+
LLM 倾向于过度设计:加抽象层、写"以后可能用"的代码、引入新依赖。**默认拒绝**。
|
|
60
|
+
|
|
61
|
+
实操:
|
|
62
|
+
- 3 行重复优于 1 个早熟抽象
|
|
63
|
+
- 不要为"未来可能的需求"留 hook
|
|
64
|
+
- 改动**行数预算**:bug fix ≤ 50 行 / feature ≤ 200 行 / 超出 → 拆分
|
|
65
|
+
- 重写优于打补丁:旧代码改动 > 60% 时,整段重写比逐处 patch 更易读
|
|
66
|
+
- 对应通用原则:"Do what has been asked; nothing more, nothing less"
|
|
67
|
+
|
|
68
|
+
## 3. Surgical Changes(外科手术式修改)
|
|
69
|
+
|
|
70
|
+
只改用户**明确**要求的代码。保留:
|
|
71
|
+
- 现有 dead code(不在你 scope 内)
|
|
72
|
+
- 现有命名风格(一致性 > 个人审美)
|
|
73
|
+
- 现有"看起来糟糕但能跑"的代码
|
|
74
|
+
|
|
75
|
+
实操:
|
|
76
|
+
- 改 1 个函数的 bug,不要顺手"清理"邻居函数
|
|
77
|
+
- 用 `git diff` 自查改动范围:超出 scope → 拆分另一个 commit
|
|
78
|
+
- 涉及 ≥2 文件 → 推荐 spawn 专门 agent 处理;agent prompt 写明
|
|
79
|
+
"DO NOT touch X, Y, Z"
|
|
80
|
+
- 反模式:"顺手把这块也优化了" → 多半要回滚 + 拆 PR
|
|
81
|
+
|
|
82
|
+
## 4. Goal-Driven Execution(目标可验证)
|
|
83
|
+
|
|
84
|
+
**不要**写不可验证的目标。LLM 在不可验证目标上倾向"自我宣告成功"。
|
|
85
|
+
|
|
86
|
+
❌ 反例:
|
|
87
|
+
- "修复 X bug" / "性能更好" / "代码更清晰" / "完整修复"
|
|
88
|
+
|
|
89
|
+
✅ 正例:
|
|
90
|
+
- "后台服务重启 → 100 个工具调用全部入事件表 → SELECT COUNT(*) > 0"
|
|
91
|
+
- "tasks-routes.test.ts 21/21 通过 + agent_detail.subagent_type === 'researcher'"
|
|
92
|
+
- "DB 文件大小 275MB → 50MB;events 表行数 42k → 30k"
|
|
93
|
+
|
|
94
|
+
实操:
|
|
95
|
+
- 任何 spec 必须有 `## Success criteria` 段(planner-type agent 应强制)
|
|
96
|
+
- 判据要可执行(命令 / SQL / 测试名 / 浏览器步骤 / 数字阈值)
|
|
97
|
+
- 主线程交付前自查:"这条判据能 run 吗?" 不能 → 改写
|
|
98
|
+
|
|
99
|
+
## 触发条件
|
|
100
|
+
|
|
101
|
+
本 skill 适合在以下任务前注入:
|
|
102
|
+
- 新功能 / 重构 / Bug 修复(任何 ≥3 文件改动)
|
|
103
|
+
- Plan-then-Implement 流程的 spec 撰写阶段
|
|
104
|
+
- 主线程委托 sub-agent 前(让 agent prompt 引用本 skill 4 条)
|