aw-ecc 1.4.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/api-design/SKILL.md +523 -0
- package/.agents/skills/api-design/agents/openai.yaml +7 -0
- package/.agents/skills/article-writing/SKILL.md +85 -0
- package/.agents/skills/article-writing/agents/openai.yaml +7 -0
- package/.agents/skills/backend-patterns/SKILL.md +598 -0
- package/.agents/skills/backend-patterns/agents/openai.yaml +7 -0
- package/.agents/skills/bun-runtime/SKILL.md +84 -0
- package/.agents/skills/bun-runtime/agents/openai.yaml +7 -0
- package/.agents/skills/claude-api/SKILL.md +337 -0
- package/.agents/skills/claude-api/agents/openai.yaml +7 -0
- package/.agents/skills/coding-standards/SKILL.md +530 -0
- package/.agents/skills/coding-standards/agents/openai.yaml +7 -0
- package/.agents/skills/content-engine/SKILL.md +88 -0
- package/.agents/skills/content-engine/agents/openai.yaml +7 -0
- package/.agents/skills/crosspost/SKILL.md +188 -0
- package/.agents/skills/crosspost/agents/openai.yaml +7 -0
- package/.agents/skills/deep-research/SKILL.md +155 -0
- package/.agents/skills/deep-research/agents/openai.yaml +7 -0
- package/.agents/skills/dmux-workflows/SKILL.md +144 -0
- package/.agents/skills/dmux-workflows/agents/openai.yaml +7 -0
- package/.agents/skills/documentation-lookup/SKILL.md +90 -0
- package/.agents/skills/documentation-lookup/agents/openai.yaml +7 -0
- package/.agents/skills/e2e-testing/SKILL.md +326 -0
- package/.agents/skills/e2e-testing/agents/openai.yaml +7 -0
- package/.agents/skills/eval-harness/SKILL.md +236 -0
- package/.agents/skills/eval-harness/agents/openai.yaml +7 -0
- package/.agents/skills/everything-claude-code/SKILL.md +442 -0
- package/.agents/skills/everything-claude-code/agents/openai.yaml +6 -0
- package/.agents/skills/exa-search/SKILL.md +170 -0
- package/.agents/skills/exa-search/agents/openai.yaml +7 -0
- package/.agents/skills/fal-ai-media/SKILL.md +277 -0
- package/.agents/skills/fal-ai-media/agents/openai.yaml +7 -0
- package/.agents/skills/frontend-patterns/SKILL.md +642 -0
- package/.agents/skills/frontend-patterns/agents/openai.yaml +7 -0
- package/.agents/skills/frontend-slides/SKILL.md +184 -0
- package/.agents/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/.agents/skills/frontend-slides/agents/openai.yaml +7 -0
- package/.agents/skills/investor-materials/SKILL.md +96 -0
- package/.agents/skills/investor-materials/agents/openai.yaml +7 -0
- package/.agents/skills/investor-outreach/SKILL.md +76 -0
- package/.agents/skills/investor-outreach/agents/openai.yaml +7 -0
- package/.agents/skills/market-research/SKILL.md +75 -0
- package/.agents/skills/market-research/agents/openai.yaml +7 -0
- package/.agents/skills/mcp-server-patterns/SKILL.md +67 -0
- package/.agents/skills/nextjs-turbopack/SKILL.md +44 -0
- package/.agents/skills/nextjs-turbopack/agents/openai.yaml +7 -0
- package/.agents/skills/security-review/SKILL.md +495 -0
- package/.agents/skills/security-review/agents/openai.yaml +7 -0
- package/.agents/skills/strategic-compact/SKILL.md +103 -0
- package/.agents/skills/strategic-compact/agents/openai.yaml +7 -0
- package/.agents/skills/tdd-workflow/SKILL.md +410 -0
- package/.agents/skills/tdd-workflow/agents/openai.yaml +7 -0
- package/.agents/skills/verification-loop/SKILL.md +126 -0
- package/.agents/skills/verification-loop/agents/openai.yaml +7 -0
- package/.agents/skills/video-editing/SKILL.md +308 -0
- package/.agents/skills/video-editing/agents/openai.yaml +7 -0
- package/.agents/skills/x-api/SKILL.md +214 -0
- package/.agents/skills/x-api/agents/openai.yaml +7 -0
- package/.claude-plugin/README.md +17 -0
- package/.claude-plugin/plugin.json +24 -0
- package/.codex/AGENTS.md +93 -0
- package/.codex/INSTALL.md +64 -0
- package/.codex/agents/docs-researcher.toml +9 -0
- package/.codex/agents/explorer.toml +9 -0
- package/.codex/agents/reviewer.toml +9 -0
- package/.codex/config.toml +108 -0
- package/.codex/hooks/aw-post-tool-use.sh +5 -0
- package/.codex/hooks/aw-pre-tool-use.sh +5 -0
- package/.codex/hooks/aw-session-start.sh +21 -0
- package/.codex/hooks/aw-stop.sh +5 -0
- package/.codex/hooks/aw-user-prompt-submit.sh +9 -0
- package/.codex/hooks.json +62 -0
- package/.cursor/INSTALL.md +40 -0
- package/.cursor/hooks/adapter.js +120 -0
- package/.cursor/hooks/after-file-edit.js +11 -0
- package/.cursor/hooks/after-mcp-execution.js +11 -0
- package/.cursor/hooks/after-shell-execution.js +11 -0
- package/.cursor/hooks/after-tab-file-edit.js +12 -0
- package/.cursor/hooks/aw-phase-adapter.js +43 -0
- package/.cursor/hooks/before-mcp-execution.js +11 -0
- package/.cursor/hooks/before-read-file.js +13 -0
- package/.cursor/hooks/before-shell-execution.js +11 -0
- package/.cursor/hooks/before-submit-prompt.js +41 -0
- package/.cursor/hooks/before-tab-file-read.js +13 -0
- package/.cursor/hooks/pre-compact.js +11 -0
- package/.cursor/hooks/session-end.js +11 -0
- package/.cursor/hooks/session-start.js +11 -0
- package/.cursor/hooks/shared/aw-phase-definitions.js +190 -0
- package/.cursor/hooks/shared/aw-phase-runner.js +61 -0
- package/.cursor/hooks/shared/session-start.sh +20 -0
- package/.cursor/hooks/shared/user-prompt-submit.sh +155 -0
- package/.cursor/hooks/stop.js +11 -0
- package/.cursor/hooks/subagent-start.js +10 -0
- package/.cursor/hooks/subagent-stop.js +10 -0
- package/.cursor/hooks.json +115 -0
- package/.cursor/rules/common-agents.md +53 -0
- package/.cursor/rules/common-coding-style.md +52 -0
- package/.cursor/rules/common-development-workflow.md +33 -0
- package/.cursor/rules/common-git-workflow.md +28 -0
- package/.cursor/rules/common-hooks.md +34 -0
- package/.cursor/rules/common-patterns.md +35 -0
- package/.cursor/rules/common-performance.md +59 -0
- package/.cursor/rules/common-security.md +33 -0
- package/.cursor/rules/common-testing.md +33 -0
- package/.cursor/rules/golang-coding-style.md +31 -0
- package/.cursor/rules/golang-hooks.md +16 -0
- package/.cursor/rules/golang-patterns.md +44 -0
- package/.cursor/rules/golang-security.md +33 -0
- package/.cursor/rules/golang-testing.md +30 -0
- package/.cursor/rules/kotlin-coding-style.md +39 -0
- package/.cursor/rules/kotlin-hooks.md +16 -0
- package/.cursor/rules/kotlin-patterns.md +50 -0
- package/.cursor/rules/kotlin-security.md +58 -0
- package/.cursor/rules/kotlin-testing.md +38 -0
- package/.cursor/rules/php-coding-style.md +25 -0
- package/.cursor/rules/php-hooks.md +21 -0
- package/.cursor/rules/php-patterns.md +23 -0
- package/.cursor/rules/php-security.md +24 -0
- package/.cursor/rules/php-testing.md +26 -0
- package/.cursor/rules/python-coding-style.md +42 -0
- package/.cursor/rules/python-hooks.md +19 -0
- package/.cursor/rules/python-patterns.md +39 -0
- package/.cursor/rules/python-security.md +30 -0
- package/.cursor/rules/python-testing.md +38 -0
- package/.cursor/rules/swift-coding-style.md +47 -0
- package/.cursor/rules/swift-hooks.md +20 -0
- package/.cursor/rules/swift-patterns.md +66 -0
- package/.cursor/rules/swift-security.md +33 -0
- package/.cursor/rules/swift-testing.md +45 -0
- package/.cursor/rules/typescript-coding-style.md +63 -0
- package/.cursor/rules/typescript-hooks.md +20 -0
- package/.cursor/rules/typescript-patterns.md +50 -0
- package/.cursor/rules/typescript-security.md +26 -0
- package/.cursor/rules/typescript-testing.md +16 -0
- package/.cursor/skills/article-writing/SKILL.md +85 -0
- package/.cursor/skills/bun-runtime/SKILL.md +84 -0
- package/.cursor/skills/content-engine/SKILL.md +88 -0
- package/.cursor/skills/documentation-lookup/SKILL.md +90 -0
- package/.cursor/skills/frontend-slides/SKILL.md +184 -0
- package/.cursor/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/.cursor/skills/investor-materials/SKILL.md +96 -0
- package/.cursor/skills/investor-outreach/SKILL.md +76 -0
- package/.cursor/skills/market-research/SKILL.md +75 -0
- package/.cursor/skills/mcp-server-patterns/SKILL.md +67 -0
- package/.cursor/skills/nextjs-turbopack/SKILL.md +44 -0
- package/.opencode/MIGRATION.md +368 -0
- package/.opencode/README.md +204 -0
- package/.opencode/commands/build-fix.md +56 -0
- package/.opencode/commands/checkpoint.md +67 -0
- package/.opencode/commands/code-review.md +68 -0
- package/.opencode/commands/e2e.md +105 -0
- package/.opencode/commands/eval.md +88 -0
- package/.opencode/commands/evolve.md +36 -0
- package/.opencode/commands/go-build.md +87 -0
- package/.opencode/commands/go-review.md +71 -0
- package/.opencode/commands/go-test.md +131 -0
- package/.opencode/commands/harness-audit.md +71 -0
- package/.opencode/commands/instinct-export.md +93 -0
- package/.opencode/commands/instinct-import.md +88 -0
- package/.opencode/commands/instinct-status.md +29 -0
- package/.opencode/commands/learn.md +61 -0
- package/.opencode/commands/loop-start.md +32 -0
- package/.opencode/commands/loop-status.md +24 -0
- package/.opencode/commands/model-route.md +26 -0
- package/.opencode/commands/orchestrate.md +88 -0
- package/.opencode/commands/plan.md +49 -0
- package/.opencode/commands/projects.md +23 -0
- package/.opencode/commands/promote.md +23 -0
- package/.opencode/commands/quality-gate.md +29 -0
- package/.opencode/commands/refactor-clean.md +102 -0
- package/.opencode/commands/rust-build.md +78 -0
- package/.opencode/commands/rust-review.md +65 -0
- package/.opencode/commands/rust-test.md +104 -0
- package/.opencode/commands/security.md +89 -0
- package/.opencode/commands/setup-pm.md +67 -0
- package/.opencode/commands/skill-create.md +117 -0
- package/.opencode/commands/tdd.md +66 -0
- package/.opencode/commands/test-coverage.md +80 -0
- package/.opencode/commands/update-codemaps.md +81 -0
- package/.opencode/commands/update-docs.md +67 -0
- package/.opencode/commands/verify.md +67 -0
- package/.opencode/index.ts +79 -0
- package/.opencode/instructions/INSTRUCTIONS.md +337 -0
- package/.opencode/opencode.json +319 -0
- package/.opencode/package.json +70 -0
- package/.opencode/plugins/ecc-hooks.ts +455 -0
- package/.opencode/plugins/index.ts +12 -0
- package/.opencode/prompts/agents/architect.txt +175 -0
- package/.opencode/prompts/agents/build-error-resolver.txt +233 -0
- package/.opencode/prompts/agents/code-reviewer.txt +103 -0
- package/.opencode/prompts/agents/database-reviewer.txt +247 -0
- package/.opencode/prompts/agents/doc-updater.txt +192 -0
- package/.opencode/prompts/agents/e2e-runner.txt +305 -0
- package/.opencode/prompts/agents/go-build-resolver.txt +325 -0
- package/.opencode/prompts/agents/go-reviewer.txt +241 -0
- package/.opencode/prompts/agents/planner.txt +112 -0
- package/.opencode/prompts/agents/refactor-cleaner.txt +241 -0
- package/.opencode/prompts/agents/rust-build-resolver.txt +93 -0
- package/.opencode/prompts/agents/rust-reviewer.txt +61 -0
- package/.opencode/prompts/agents/security-reviewer.txt +207 -0
- package/.opencode/prompts/agents/tdd-guide.txt +211 -0
- package/.opencode/tools/check-coverage.ts +170 -0
- package/.opencode/tools/format-code.ts +68 -0
- package/.opencode/tools/git-summary.ts +54 -0
- package/.opencode/tools/index.ts +13 -0
- package/.opencode/tools/lint-check.ts +85 -0
- package/.opencode/tools/run-tests.ts +139 -0
- package/.opencode/tools/security-audit.ts +277 -0
- package/.opencode/tsconfig.json +29 -0
- package/AGENTS.md +124 -0
- package/LICENSE +21 -0
- package/README.md +146 -0
- package/README.zh-CN.md +552 -0
- package/agents/architect.md +211 -0
- package/agents/build-error-resolver.md +114 -0
- package/agents/chief-of-staff.md +151 -0
- package/agents/code-reviewer.md +237 -0
- package/agents/cpp-build-resolver.md +90 -0
- package/agents/cpp-reviewer.md +72 -0
- package/agents/database-reviewer.md +91 -0
- package/agents/doc-updater.md +107 -0
- package/agents/docs-lookup.md +68 -0
- package/agents/e2e-runner.md +107 -0
- package/agents/evals/code-reviewer-scenarios.json +23 -0
- package/agents/flutter-reviewer.md +243 -0
- package/agents/go-build-resolver.md +94 -0
- package/agents/go-reviewer.md +76 -0
- package/agents/harness-optimizer.md +35 -0
- package/agents/java-build-resolver.md +153 -0
- package/agents/java-reviewer.md +92 -0
- package/agents/kotlin-build-resolver.md +118 -0
- package/agents/kotlin-reviewer.md +159 -0
- package/agents/loop-operator.md +36 -0
- package/agents/planner.md +212 -0
- package/agents/python-reviewer.md +98 -0
- package/agents/pytorch-build-resolver.md +120 -0
- package/agents/refactor-cleaner.md +85 -0
- package/agents/rust-build-resolver.md +148 -0
- package/agents/rust-reviewer.md +94 -0
- package/agents/security-reviewer.md +108 -0
- package/agents/tdd-guide.md +91 -0
- package/agents/typescript-reviewer.md +112 -0
- package/commands/aside.md +164 -0
- package/commands/brainstorm.md +16 -0
- package/commands/build-fix.md +70 -0
- package/commands/build.md +91 -0
- package/commands/checkpoint.md +74 -0
- package/commands/claw.md +51 -0
- package/commands/code-review.md +24 -0
- package/commands/context-budget.md +29 -0
- package/commands/cpp-build.md +174 -0
- package/commands/cpp-review.md +132 -0
- package/commands/cpp-test.md +252 -0
- package/commands/deploy.md +75 -0
- package/commands/devfleet.md +92 -0
- package/commands/docs.md +31 -0
- package/commands/e2e.md +373 -0
- package/commands/eval.md +120 -0
- package/commands/evolve.md +178 -0
- package/commands/execute.md +51 -0
- package/commands/finish.md +22 -0
- package/commands/go-build.md +184 -0
- package/commands/go-review.md +148 -0
- package/commands/go-test.md +269 -0
- package/commands/gradle-build.md +70 -0
- package/commands/harness-audit.md +71 -0
- package/commands/instinct-export.md +66 -0
- package/commands/instinct-import.md +114 -0
- package/commands/instinct-status.md +59 -0
- package/commands/investigate.md +63 -0
- package/commands/kotlin-build.md +175 -0
- package/commands/kotlin-review.md +140 -0
- package/commands/kotlin-test.md +313 -0
- package/commands/learn-eval.md +116 -0
- package/commands/learn.md +70 -0
- package/commands/loop-start.md +32 -0
- package/commands/loop-status.md +24 -0
- package/commands/model-route.md +26 -0
- package/commands/multi-backend.md +166 -0
- package/commands/multi-execute.md +324 -0
- package/commands/multi-frontend.md +165 -0
- package/commands/multi-plan.md +277 -0
- package/commands/multi-workflow.md +200 -0
- package/commands/orchestrate.md +240 -0
- package/commands/plan.md +130 -0
- package/commands/pm2.md +272 -0
- package/commands/projects.md +39 -0
- package/commands/promote.md +41 -0
- package/commands/prompt-optimize.md +38 -0
- package/commands/prune.md +31 -0
- package/commands/python-review.md +297 -0
- package/commands/quality-gate.md +29 -0
- package/commands/refactor-clean.md +89 -0
- package/commands/resume-session.md +155 -0
- package/commands/review.md +64 -0
- package/commands/rules-distill.md +11 -0
- package/commands/rust-build.md +188 -0
- package/commands/rust-review.md +142 -0
- package/commands/rust-test.md +309 -0
- package/commands/save-session.md +275 -0
- package/commands/sessions.md +333 -0
- package/commands/setup-pm.md +80 -0
- package/commands/ship.md +77 -0
- package/commands/skill-create.md +174 -0
- package/commands/skill-health.md +54 -0
- package/commands/tdd.md +20 -0
- package/commands/test-coverage.md +77 -0
- package/commands/test.md +64 -0
- package/commands/update-codemaps.md +72 -0
- package/commands/update-docs.md +84 -0
- package/commands/verify.md +55 -0
- package/contexts/dev.md +20 -0
- package/contexts/research.md +26 -0
- package/contexts/review.md +22 -0
- package/examples/CLAUDE.md +100 -0
- package/examples/statusline.json +19 -0
- package/examples/user-CLAUDE.md +109 -0
- package/hooks/README.md +219 -0
- package/hooks/hooks.json +320 -0
- package/hooks/run-hook.cmd +31 -0
- package/hooks/session-start +6 -0
- package/install.ps1 +38 -0
- package/install.sh +17 -0
- package/manifests/install-components.json +415 -0
- package/manifests/install-modules.json +500 -0
- package/manifests/install-profiles.json +80 -0
- package/mcp-configs/mcp-servers.json +153 -0
- package/package.json +131 -0
- package/plugins/README.md +85 -0
- package/rules/README.md +106 -0
- package/rules/common/agents.md +50 -0
- package/rules/common/coding-style.md +48 -0
- package/rules/common/development-workflow.md +38 -0
- package/rules/common/git-workflow.md +24 -0
- package/rules/common/hooks.md +30 -0
- package/rules/common/patterns.md +31 -0
- package/rules/common/performance.md +55 -0
- package/rules/common/security.md +29 -0
- package/rules/common/testing.md +29 -0
- package/rules/cpp/coding-style.md +44 -0
- package/rules/cpp/hooks.md +39 -0
- package/rules/cpp/patterns.md +51 -0
- package/rules/cpp/security.md +51 -0
- package/rules/cpp/testing.md +44 -0
- package/rules/csharp/coding-style.md +72 -0
- package/rules/csharp/hooks.md +25 -0
- package/rules/csharp/patterns.md +50 -0
- package/rules/csharp/security.md +58 -0
- package/rules/csharp/testing.md +46 -0
- package/rules/golang/coding-style.md +32 -0
- package/rules/golang/hooks.md +17 -0
- package/rules/golang/patterns.md +45 -0
- package/rules/golang/security.md +34 -0
- package/rules/golang/testing.md +31 -0
- package/rules/java/coding-style.md +114 -0
- package/rules/java/hooks.md +18 -0
- package/rules/java/patterns.md +146 -0
- package/rules/java/security.md +100 -0
- package/rules/java/testing.md +131 -0
- package/rules/kotlin/coding-style.md +86 -0
- package/rules/kotlin/hooks.md +17 -0
- package/rules/kotlin/patterns.md +146 -0
- package/rules/kotlin/security.md +82 -0
- package/rules/kotlin/testing.md +128 -0
- package/rules/perl/coding-style.md +46 -0
- package/rules/perl/hooks.md +22 -0
- package/rules/perl/patterns.md +76 -0
- package/rules/perl/security.md +69 -0
- package/rules/perl/testing.md +54 -0
- package/rules/php/coding-style.md +40 -0
- package/rules/php/hooks.md +24 -0
- package/rules/php/patterns.md +33 -0
- package/rules/php/security.md +37 -0
- package/rules/php/testing.md +39 -0
- package/rules/python/coding-style.md +42 -0
- package/rules/python/hooks.md +19 -0
- package/rules/python/patterns.md +39 -0
- package/rules/python/security.md +30 -0
- package/rules/python/testing.md +38 -0
- package/rules/rust/coding-style.md +151 -0
- package/rules/rust/hooks.md +16 -0
- package/rules/rust/patterns.md +168 -0
- package/rules/rust/security.md +141 -0
- package/rules/rust/testing.md +154 -0
- package/rules/swift/coding-style.md +47 -0
- package/rules/swift/hooks.md +20 -0
- package/rules/swift/patterns.md +66 -0
- package/rules/swift/security.md +33 -0
- package/rules/swift/testing.md +45 -0
- package/rules/typescript/coding-style.md +199 -0
- package/rules/typescript/hooks.md +22 -0
- package/rules/typescript/patterns.md +52 -0
- package/rules/typescript/security.md +28 -0
- package/rules/typescript/testing.md +18 -0
- package/schemas/ecc-install-config.schema.json +58 -0
- package/schemas/hooks.schema.json +197 -0
- package/schemas/install-components.schema.json +58 -0
- package/schemas/install-modules.schema.json +105 -0
- package/schemas/install-profiles.schema.json +45 -0
- package/schemas/install-state.schema.json +210 -0
- package/schemas/package-manager.schema.json +23 -0
- package/schemas/plugin.schema.json +58 -0
- package/schemas/provenance.schema.json +31 -0
- package/schemas/state-store.schema.json +316 -0
- package/scripts/ci/catalog.js +245 -0
- package/scripts/ci/validate-agents.js +81 -0
- package/scripts/ci/validate-commands.js +136 -0
- package/scripts/ci/validate-hooks.js +239 -0
- package/scripts/ci/validate-install-manifests.js +214 -0
- package/scripts/ci/validate-no-personal-paths.js +63 -0
- package/scripts/ci/validate-rules.js +81 -0
- package/scripts/ci/validate-skills.js +56 -0
- package/scripts/claw.js +473 -0
- package/scripts/codex/merge-mcp-config.js +304 -0
- package/scripts/cursor-aw-home/hooks.json +115 -0
- package/scripts/cursor-aw-hooks/adapter.js +120 -0
- package/scripts/cursor-aw-hooks/after-file-edit.js +11 -0
- package/scripts/cursor-aw-hooks/after-mcp-execution.js +11 -0
- package/scripts/cursor-aw-hooks/after-shell-execution.js +11 -0
- package/scripts/cursor-aw-hooks/aw-phase-adapter.js +43 -0
- package/scripts/cursor-aw-hooks/before-mcp-execution.js +11 -0
- package/scripts/cursor-aw-hooks/before-shell-execution.js +11 -0
- package/scripts/cursor-aw-hooks/before-submit-prompt.js +41 -0
- package/scripts/cursor-aw-hooks/pre-compact.js +11 -0
- package/scripts/cursor-aw-hooks/session-end.js +11 -0
- package/scripts/cursor-aw-hooks/session-start.js +11 -0
- package/scripts/cursor-aw-hooks/stop.js +11 -0
- package/scripts/doctor.js +110 -0
- package/scripts/ecc.js +208 -0
- package/scripts/generate-aw-hooks.js +110 -0
- package/scripts/harness-audit.js +512 -0
- package/scripts/hooks/auto-tmux-dev.js +88 -0
- package/scripts/hooks/check-console-log.js +71 -0
- package/scripts/hooks/check-hook-enabled.js +12 -0
- package/scripts/hooks/config-protection.js +125 -0
- package/scripts/hooks/cost-tracker.js +78 -0
- package/scripts/hooks/doc-file-warning.js +63 -0
- package/scripts/hooks/evaluate-session.js +100 -0
- package/scripts/hooks/governance-capture.js +280 -0
- package/scripts/hooks/insaits-security-monitor.py +269 -0
- package/scripts/hooks/insaits-security-wrapper.js +88 -0
- package/scripts/hooks/mcp-health-check.js +588 -0
- package/scripts/hooks/post-bash-build-complete.js +27 -0
- package/scripts/hooks/post-bash-pr-created.js +37 -0
- package/scripts/hooks/post-edit-console-warn.js +54 -0
- package/scripts/hooks/post-edit-format.js +109 -0
- package/scripts/hooks/post-edit-typecheck.js +96 -0
- package/scripts/hooks/post-mcp-log.js +27 -0
- package/scripts/hooks/pre-bash-dev-server-block.js +187 -0
- package/scripts/hooks/pre-bash-git-push-reminder.js +28 -0
- package/scripts/hooks/pre-bash-tmux-reminder.js +33 -0
- package/scripts/hooks/pre-compact.js +48 -0
- package/scripts/hooks/pre-mcp-log.js +26 -0
- package/scripts/hooks/pre-write-doc-warn.js +9 -0
- package/scripts/hooks/quality-gate.js +168 -0
- package/scripts/hooks/run-with-flags-shell.sh +32 -0
- package/scripts/hooks/run-with-flags.js +120 -0
- package/scripts/hooks/session-end-marker.js +29 -0
- package/scripts/hooks/session-end.js +301 -0
- package/scripts/hooks/session-start-rules-context.sh +5 -0
- package/scripts/hooks/session-start.js +98 -0
- package/scripts/hooks/shared/aw-phase-definitions.js +190 -0
- package/scripts/hooks/shared/aw-phase-runner.js +61 -0
- package/scripts/hooks/shared/session-start.sh +20 -0
- package/scripts/hooks/shared/user-prompt-submit.sh +155 -0
- package/scripts/hooks/suggest-compact.js +80 -0
- package/scripts/install-apply.js +140 -0
- package/scripts/install-plan.js +254 -0
- package/scripts/lib/agent-compress.js +244 -0
- package/scripts/lib/aw-harness-registry.js +122 -0
- package/scripts/lib/aw-hook-contract.js +86 -0
- package/scripts/lib/claude-aw-hook-files.js +28 -0
- package/scripts/lib/claude-hook-config.js +76 -0
- package/scripts/lib/codex-aw-hook-files.js +38 -0
- package/scripts/lib/codex-hook-config.js +88 -0
- package/scripts/lib/cursor-aw-hook-files.js +62 -0
- package/scripts/lib/cursor-hook-config.js +148 -0
- package/scripts/lib/hook-flags.js +74 -0
- package/scripts/lib/inspection.js +212 -0
- package/scripts/lib/install/apply.js +23 -0
- package/scripts/lib/install/config.js +82 -0
- package/scripts/lib/install/request.js +120 -0
- package/scripts/lib/install/runtime.js +54 -0
- package/scripts/lib/install-executor.js +778 -0
- package/scripts/lib/install-lifecycle.js +1311 -0
- package/scripts/lib/install-manifests.js +448 -0
- package/scripts/lib/install-state.js +313 -0
- package/scripts/lib/install-targets/antigravity-project.js +69 -0
- package/scripts/lib/install-targets/claude-home.js +54 -0
- package/scripts/lib/install-targets/codex-home.js +62 -0
- package/scripts/lib/install-targets/cursor-project.js +80 -0
- package/scripts/lib/install-targets/helpers.js +307 -0
- package/scripts/lib/install-targets/opencode-home.js +10 -0
- package/scripts/lib/install-targets/registry.js +66 -0
- package/scripts/lib/orchestration-session.js +299 -0
- package/scripts/lib/package-manager.d.ts +119 -0
- package/scripts/lib/package-manager.js +431 -0
- package/scripts/lib/project-detect.js +428 -0
- package/scripts/lib/resolve-ecc-root.js +89 -0
- package/scripts/lib/resolve-formatter.js +185 -0
- package/scripts/lib/session-adapters/canonical-session.js +531 -0
- package/scripts/lib/session-adapters/claude-history.js +160 -0
- package/scripts/lib/session-adapters/dmux-tmux.js +90 -0
- package/scripts/lib/session-adapters/registry.js +127 -0
- package/scripts/lib/session-aliases.d.ts +136 -0
- package/scripts/lib/session-aliases.js +481 -0
- package/scripts/lib/session-manager.d.ts +131 -0
- package/scripts/lib/session-manager.js +464 -0
- package/scripts/lib/shell-split.js +86 -0
- package/scripts/lib/skill-evolution/dashboard.js +401 -0
- package/scripts/lib/skill-evolution/health.js +263 -0
- package/scripts/lib/skill-evolution/index.js +20 -0
- package/scripts/lib/skill-evolution/provenance.js +187 -0
- package/scripts/lib/skill-evolution/tracker.js +146 -0
- package/scripts/lib/skill-evolution/versioning.js +237 -0
- package/scripts/lib/skill-improvement/amendify.js +89 -0
- package/scripts/lib/skill-improvement/evaluate.js +59 -0
- package/scripts/lib/skill-improvement/health.js +118 -0
- package/scripts/lib/skill-improvement/observations.js +108 -0
- package/scripts/lib/state-store/index.js +191 -0
- package/scripts/lib/state-store/migrations.js +178 -0
- package/scripts/lib/state-store/queries.js +697 -0
- package/scripts/lib/state-store/schema.js +92 -0
- package/scripts/lib/tmux-worktree-orchestrator.js +475 -0
- package/scripts/lib/utils.d.ts +183 -0
- package/scripts/lib/utils.js +564 -0
- package/scripts/list-installed.js +90 -0
- package/scripts/orchestrate-codex-worker.sh +107 -0
- package/scripts/orchestrate-worktrees.js +40 -0
- package/scripts/orchestration-status.js +82 -0
- package/scripts/repair.js +97 -0
- package/scripts/session-inspect.js +150 -0
- package/scripts/sessions-cli.js +177 -0
- package/scripts/setup-package-manager.js +204 -0
- package/scripts/skill-create-output.js +244 -0
- package/scripts/status.js +176 -0
- package/scripts/uninstall.js +96 -0
- package/skills/agent-eval/SKILL.md +145 -0
- package/skills/agent-harness-construction/SKILL.md +73 -0
- package/skills/agentic-engineering/SKILL.md +63 -0
- package/skills/ai-first-engineering/SKILL.md +51 -0
- package/skills/ai-regression-testing/SKILL.md +385 -0
- package/skills/android-clean-architecture/SKILL.md +339 -0
- package/skills/api-and-interface-design/SKILL.md +75 -0
- package/skills/api-design/SKILL.md +523 -0
- package/skills/architecture-decision-records/SKILL.md +179 -0
- package/skills/article-writing/SKILL.md +85 -0
- package/skills/autonomous-loops/SKILL.md +610 -0
- package/skills/aw-brainstorm/SKILL.md +115 -0
- package/skills/aw-build/SKILL.md +189 -0
- package/skills/aw-build/evals/build-stage-cases.json +28 -0
- package/skills/aw-debug/SKILL.md +49 -0
- package/skills/aw-deploy/SKILL.md +101 -0
- package/skills/aw-deploy/evals/deploy-stage-cases.json +32 -0
- package/skills/aw-execute/SKILL.md +47 -0
- package/skills/aw-execute/references/mode-code.md +47 -0
- package/skills/aw-execute/references/mode-docs.md +28 -0
- package/skills/aw-execute/references/mode-infra.md +44 -0
- package/skills/aw-execute/references/mode-migration.md +58 -0
- package/skills/aw-execute/references/worker-implementer.md +26 -0
- package/skills/aw-execute/references/worker-parallel-worker.md +23 -0
- package/skills/aw-execute/references/worker-quality-reviewer.md +23 -0
- package/skills/aw-execute/references/worker-spec-reviewer.md +23 -0
- package/skills/aw-execute/scripts/build-worker-bundle.js +229 -0
- package/skills/aw-finish/SKILL.md +111 -0
- package/skills/aw-investigate/SKILL.md +109 -0
- package/skills/aw-plan/SKILL.md +399 -0
- package/skills/aw-prepare/SKILL.md +118 -0
- package/skills/aw-review/SKILL.md +123 -0
- package/skills/aw-rules/SKILL.md +129 -0
- package/skills/aw-rules/references/known-hallucinations.md +43 -0
- package/skills/aw-rules/references/verification-sources.md +50 -0
- package/skills/aw-ship/SKILL.md +115 -0
- package/skills/aw-spec/SKILL.md +128 -0
- package/skills/aw-tasks/SKILL.md +155 -0
- package/skills/aw-test/SKILL.md +118 -0
- package/skills/aw-verify/SKILL.md +51 -0
- package/skills/aw-yolo/SKILL.md +111 -0
- package/skills/backend-patterns/SKILL.md +598 -0
- package/skills/benchmark/SKILL.md +87 -0
- package/skills/blueprint/SKILL.md +105 -0
- package/skills/browser-qa/SKILL.md +81 -0
- package/skills/browser-testing-with-devtools/SKILL.md +81 -0
- package/skills/bun-runtime/SKILL.md +84 -0
- package/skills/canary-watch/SKILL.md +93 -0
- package/skills/carrier-relationship-management/SKILL.md +212 -0
- package/skills/ci-cd-and-automation/SKILL.md +71 -0
- package/skills/claude-api/SKILL.md +337 -0
- package/skills/claude-devfleet/SKILL.md +103 -0
- package/skills/click-path-audit/SKILL.md +244 -0
- package/skills/clickhouse-io/SKILL.md +439 -0
- package/skills/code-simplification/SKILL.md +74 -0
- package/skills/codebase-onboarding/SKILL.md +233 -0
- package/skills/coding-standards/SKILL.md +530 -0
- package/skills/compose-multiplatform-patterns/SKILL.md +299 -0
- package/skills/configure-ecc/SKILL.md +367 -0
- package/skills/content-engine/SKILL.md +88 -0
- package/skills/content-hash-cache-pattern/SKILL.md +161 -0
- package/skills/context-budget/SKILL.md +135 -0
- package/skills/context-engineering/SKILL.md +74 -0
- package/skills/continuous-agent-loop/SKILL.md +45 -0
- package/skills/continuous-learning/SKILL.md +119 -0
- package/skills/continuous-learning/config.json +18 -0
- package/skills/continuous-learning/evaluate-session.sh +69 -0
- package/skills/continuous-learning-v2/SKILL.md +365 -0
- package/skills/continuous-learning-v2/agents/observer-loop.sh +191 -0
- package/skills/continuous-learning-v2/agents/observer.md +198 -0
- package/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
- package/skills/continuous-learning-v2/agents/start-observer.sh +240 -0
- package/skills/continuous-learning-v2/config.json +8 -0
- package/skills/continuous-learning-v2/hooks/observe.sh +412 -0
- package/skills/continuous-learning-v2/scripts/detect-project.sh +228 -0
- package/skills/continuous-learning-v2/scripts/instinct-cli.py +1426 -0
- package/skills/continuous-learning-v2/scripts/test_parse_instinct.py +984 -0
- package/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/skills/cpp-coding-standards/SKILL.md +723 -0
- package/skills/cpp-testing/SKILL.md +324 -0
- package/skills/crosspost/SKILL.md +190 -0
- package/skills/customs-trade-compliance/SKILL.md +263 -0
- package/skills/data-scraper-agent/SKILL.md +764 -0
- package/skills/database-migrations/SKILL.md +429 -0
- package/skills/deep-research/SKILL.md +155 -0
- package/skills/deployment-patterns/SKILL.md +427 -0
- package/skills/deprecation-and-migration/SKILL.md +75 -0
- package/skills/design-system/SKILL.md +76 -0
- package/skills/django-patterns/SKILL.md +734 -0
- package/skills/django-security/SKILL.md +593 -0
- package/skills/django-tdd/SKILL.md +729 -0
- package/skills/django-verification/SKILL.md +469 -0
- package/skills/dmux-workflows/SKILL.md +191 -0
- package/skills/docker-patterns/SKILL.md +364 -0
- package/skills/documentation-and-adrs/SKILL.md +75 -0
- package/skills/documentation-lookup/SKILL.md +90 -0
- package/skills/e2e-testing/SKILL.md +326 -0
- package/skills/energy-procurement/SKILL.md +228 -0
- package/skills/enterprise-agent-ops/SKILL.md +50 -0
- package/skills/eval-harness/SKILL.md +270 -0
- package/skills/exa-search/SKILL.md +103 -0
- package/skills/fal-ai-media/SKILL.md +284 -0
- package/skills/flutter-dart-code-review/SKILL.md +435 -0
- package/skills/foundation-models-on-device/SKILL.md +243 -0
- package/skills/frontend-patterns/SKILL.md +642 -0
- package/skills/frontend-slides/SKILL.md +184 -0
- package/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/skills/frontend-ui-engineering/SKILL.md +68 -0
- package/skills/git-workflow-and-versioning/SKILL.md +75 -0
- package/skills/golang-patterns/SKILL.md +674 -0
- package/skills/golang-testing/SKILL.md +720 -0
- package/skills/idea-refine/SKILL.md +84 -0
- package/skills/incremental-implementation/SKILL.md +86 -0
- package/skills/inventory-demand-planning/SKILL.md +247 -0
- package/skills/investor-materials/SKILL.md +96 -0
- package/skills/investor-outreach/SKILL.md +76 -0
- package/skills/iterative-retrieval/SKILL.md +211 -0
- package/skills/java-coding-standards/SKILL.md +147 -0
- package/skills/jpa-patterns/SKILL.md +151 -0
- package/skills/kotlin-coroutines-flows/SKILL.md +284 -0
- package/skills/kotlin-exposed-patterns/SKILL.md +719 -0
- package/skills/kotlin-ktor-patterns/SKILL.md +689 -0
- package/skills/kotlin-patterns/SKILL.md +711 -0
- package/skills/kotlin-testing/SKILL.md +824 -0
- package/skills/laravel-patterns/SKILL.md +415 -0
- package/skills/laravel-security/SKILL.md +285 -0
- package/skills/laravel-tdd/SKILL.md +283 -0
- package/skills/laravel-verification/SKILL.md +179 -0
- package/skills/liquid-glass-design/SKILL.md +279 -0
- package/skills/logistics-exception-management/SKILL.md +222 -0
- package/skills/market-research/SKILL.md +75 -0
- package/skills/mcp-server-patterns/SKILL.md +67 -0
- package/skills/nanoclaw-repl/SKILL.md +33 -0
- package/skills/nextjs-turbopack/SKILL.md +44 -0
- package/skills/nutrient-document-processing/SKILL.md +167 -0
- package/skills/nuxt4-patterns/SKILL.md +100 -0
- package/skills/performance-optimization/SKILL.md +77 -0
- package/skills/perl-patterns/SKILL.md +504 -0
- package/skills/perl-security/SKILL.md +503 -0
- package/skills/perl-testing/SKILL.md +475 -0
- package/skills/plankton-code-quality/SKILL.md +236 -0
- package/skills/postgres-patterns/SKILL.md +147 -0
- package/skills/product-lens/SKILL.md +79 -0
- package/skills/production-scheduling/SKILL.md +238 -0
- package/skills/project-guidelines-example/SKILL.md +349 -0
- package/skills/prompt-optimizer/SKILL.md +397 -0
- package/skills/python-patterns/SKILL.md +750 -0
- package/skills/python-testing/SKILL.md +816 -0
- package/skills/pytorch-patterns/SKILL.md +396 -0
- package/skills/quality-nonconformance/SKILL.md +260 -0
- package/skills/ralphinho-rfc-pipeline/SKILL.md +67 -0
- package/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
- package/skills/returns-reverse-logistics/SKILL.md +240 -0
- package/skills/rules-distill/SKILL.md +264 -0
- package/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/skills/rust-patterns/SKILL.md +499 -0
- package/skills/rust-testing/SKILL.md +500 -0
- package/skills/safety-guard/SKILL.md +69 -0
- package/skills/santa-method/SKILL.md +306 -0
- package/skills/search-first/SKILL.md +161 -0
- package/skills/security-and-hardening/SKILL.md +70 -0
- package/skills/security-review/SKILL.md +495 -0
- package/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/skills/security-scan/SKILL.md +165 -0
- package/skills/skill-comply/SKILL.md +58 -0
- package/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
- package/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
- package/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
- package/skills/skill-comply/prompts/classifier.md +24 -0
- package/skills/skill-comply/prompts/scenario_generator.md +62 -0
- package/skills/skill-comply/prompts/spec_generator.md +42 -0
- package/skills/skill-comply/pyproject.toml +15 -0
- package/skills/skill-comply/scripts/__init__.py +0 -0
- package/skills/skill-comply/scripts/classifier.py +85 -0
- package/skills/skill-comply/scripts/grader.py +122 -0
- package/skills/skill-comply/scripts/parser.py +107 -0
- package/skills/skill-comply/scripts/report.py +170 -0
- package/skills/skill-comply/scripts/run.py +127 -0
- package/skills/skill-comply/scripts/runner.py +161 -0
- package/skills/skill-comply/scripts/scenario_generator.py +70 -0
- package/skills/skill-comply/scripts/spec_generator.py +72 -0
- package/skills/skill-comply/scripts/utils.py +13 -0
- package/skills/skill-comply/tests/test_grader.py +137 -0
- package/skills/skill-comply/tests/test_parser.py +90 -0
- package/skills/skill-quality-review/SKILL.md +102 -0
- package/skills/skill-quality-review/references/review-rubric.md +112 -0
- package/skills/skill-stocktake/SKILL.md +197 -0
- package/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
- package/skills/skill-stocktake/scripts/save-results.sh +56 -0
- package/skills/skill-stocktake/scripts/scan.sh +170 -0
- package/skills/springboot-patterns/SKILL.md +314 -0
- package/skills/springboot-security/SKILL.md +272 -0
- package/skills/springboot-tdd/SKILL.md +158 -0
- package/skills/springboot-verification/SKILL.md +231 -0
- package/skills/strategic-compact/SKILL.md +131 -0
- package/skills/strategic-compact/suggest-compact.sh +54 -0
- package/skills/swift-actor-persistence/SKILL.md +143 -0
- package/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/skills/swift-protocol-di-testing/SKILL.md +190 -0
- package/skills/swiftui-patterns/SKILL.md +259 -0
- package/skills/tdd-workflow/SKILL.md +145 -0
- package/skills/team-builder/SKILL.md +161 -0
- package/skills/using-aw-skills/SKILL.md +290 -0
- package/skills/using-aw-skills/evals/skill-trigger-cases.tsv +25 -0
- package/skills/using-aw-skills/evals/test-skill-triggers.sh +171 -0
- package/skills/using-aw-skills/hooks/hooks.json +9 -0
- package/skills/using-aw-skills/hooks/session-start.sh +188 -0
- package/skills/using-platform-skills/SKILL.md +163 -0
- package/skills/using-platform-skills/evals/platform-selection-cases.json +52 -0
- package/skills/verification-loop/SKILL.md +126 -0
- package/skills/video-editing/SKILL.md +310 -0
- package/skills/videodb/SKILL.md +374 -0
- package/skills/videodb/reference/api-reference.md +550 -0
- package/skills/videodb/reference/capture-reference.md +407 -0
- package/skills/videodb/reference/capture.md +101 -0
- package/skills/videodb/reference/editor.md +443 -0
- package/skills/videodb/reference/generative.md +331 -0
- package/skills/videodb/reference/rtstream-reference.md +564 -0
- package/skills/videodb/reference/rtstream.md +65 -0
- package/skills/videodb/reference/search.md +230 -0
- package/skills/videodb/reference/streaming.md +406 -0
- package/skills/videodb/reference/use-cases.md +118 -0
- package/skills/videodb/scripts/ws_listener.py +282 -0
- package/skills/visa-doc-translate/README.md +86 -0
- package/skills/visa-doc-translate/SKILL.md +117 -0
- package/skills/x-api/SKILL.md +208 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-engine
|
|
3
|
+
description: Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Content Engine
|
|
8
|
+
|
|
9
|
+
Turn one idea into strong, platform-native content instead of posting the same thing everywhere.
|
|
10
|
+
|
|
11
|
+
## When to Activate
|
|
12
|
+
|
|
13
|
+
- writing X posts or threads
|
|
14
|
+
- drafting LinkedIn posts or launch updates
|
|
15
|
+
- scripting short-form video or YouTube explainers
|
|
16
|
+
- repurposing articles, podcasts, demos, or docs into social content
|
|
17
|
+
- building a lightweight content plan around a launch, milestone, or theme
|
|
18
|
+
|
|
19
|
+
## First Questions
|
|
20
|
+
|
|
21
|
+
Clarify:
|
|
22
|
+
- source asset: what are we adapting from
|
|
23
|
+
- audience: builders, investors, customers, operators, or general audience
|
|
24
|
+
- platform: X, LinkedIn, TikTok, YouTube, newsletter, or multi-platform
|
|
25
|
+
- goal: awareness, conversion, recruiting, authority, launch support, or engagement
|
|
26
|
+
|
|
27
|
+
## Core Rules
|
|
28
|
+
|
|
29
|
+
1. Adapt for the platform. Do not cross-post the same copy.
|
|
30
|
+
2. Hooks matter more than summaries.
|
|
31
|
+
3. Every post should carry one clear idea.
|
|
32
|
+
4. Use specifics over slogans.
|
|
33
|
+
5. Keep the ask small and clear.
|
|
34
|
+
|
|
35
|
+
## Platform Guidance
|
|
36
|
+
|
|
37
|
+
### X
|
|
38
|
+
- open fast
|
|
39
|
+
- one idea per post or per tweet in a thread
|
|
40
|
+
- keep links out of the main body unless necessary
|
|
41
|
+
- avoid hashtag spam
|
|
42
|
+
|
|
43
|
+
### LinkedIn
|
|
44
|
+
- strong first line
|
|
45
|
+
- short paragraphs
|
|
46
|
+
- more explicit framing around lessons, results, and takeaways
|
|
47
|
+
|
|
48
|
+
### TikTok / Short Video
|
|
49
|
+
- first 3 seconds must interrupt attention
|
|
50
|
+
- script around visuals, not just narration
|
|
51
|
+
- one demo, one claim, one CTA
|
|
52
|
+
|
|
53
|
+
### YouTube
|
|
54
|
+
- show the result early
|
|
55
|
+
- structure by chapter
|
|
56
|
+
- refresh the visual every 20-30 seconds
|
|
57
|
+
|
|
58
|
+
### Newsletter
|
|
59
|
+
- deliver one clear lens, not a bundle of unrelated items
|
|
60
|
+
- make section titles skimmable
|
|
61
|
+
- keep the opening paragraph doing real work
|
|
62
|
+
|
|
63
|
+
## Repurposing Flow
|
|
64
|
+
|
|
65
|
+
Default cascade:
|
|
66
|
+
1. anchor asset: article, video, demo, memo, or launch doc
|
|
67
|
+
2. extract 3-7 atomic ideas
|
|
68
|
+
3. write platform-native variants
|
|
69
|
+
4. trim repetition across outputs
|
|
70
|
+
5. align CTAs with platform intent
|
|
71
|
+
|
|
72
|
+
## Deliverables
|
|
73
|
+
|
|
74
|
+
When asked for a campaign, return:
|
|
75
|
+
- the core angle
|
|
76
|
+
- platform-specific drafts
|
|
77
|
+
- optional posting order
|
|
78
|
+
- optional CTA variants
|
|
79
|
+
- any missing inputs needed before publishing
|
|
80
|
+
|
|
81
|
+
## Quality Gate
|
|
82
|
+
|
|
83
|
+
Before delivering:
|
|
84
|
+
- each draft reads natively for its platform
|
|
85
|
+
- hooks are strong and specific
|
|
86
|
+
- no generic hype language
|
|
87
|
+
- no duplicated copy across platforms unless requested
|
|
88
|
+
- the CTA matches the content and audience
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-hash-cache-pattern
|
|
3
|
+
description: Cache expensive file processing results using SHA-256 content hashes — path-independent, auto-invalidating, with service layer separation.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Content-Hash File Cache Pattern
|
|
8
|
+
|
|
9
|
+
Cache expensive file processing results (PDF parsing, text extraction, image analysis) using SHA-256 content hashes as cache keys. Unlike path-based caching, this approach survives file moves/renames and auto-invalidates when content changes.
|
|
10
|
+
|
|
11
|
+
## When to Activate
|
|
12
|
+
|
|
13
|
+
- Building file processing pipelines (PDF, images, text extraction)
|
|
14
|
+
- Processing cost is high and same files are processed repeatedly
|
|
15
|
+
- Need a `--cache/--no-cache` CLI option
|
|
16
|
+
- Want to add caching to existing pure functions without modifying them
|
|
17
|
+
|
|
18
|
+
## Core Pattern
|
|
19
|
+
|
|
20
|
+
### 1. Content-Hash Based Cache Key
|
|
21
|
+
|
|
22
|
+
Use file content (not path) as the cache key:
|
|
23
|
+
|
|
24
|
+
```python
|
|
25
|
+
import hashlib
|
|
26
|
+
from pathlib import Path
|
|
27
|
+
|
|
28
|
+
_HASH_CHUNK_SIZE = 65536 # 64KB chunks for large files
|
|
29
|
+
|
|
30
|
+
def compute_file_hash(path: Path) -> str:
|
|
31
|
+
"""SHA-256 of file contents (chunked for large files)."""
|
|
32
|
+
if not path.is_file():
|
|
33
|
+
raise FileNotFoundError(f"File not found: {path}")
|
|
34
|
+
sha256 = hashlib.sha256()
|
|
35
|
+
with open(path, "rb") as f:
|
|
36
|
+
while True:
|
|
37
|
+
chunk = f.read(_HASH_CHUNK_SIZE)
|
|
38
|
+
if not chunk:
|
|
39
|
+
break
|
|
40
|
+
sha256.update(chunk)
|
|
41
|
+
return sha256.hexdigest()
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Why content hash?** File rename/move = cache hit. Content change = automatic invalidation. No index file needed.
|
|
45
|
+
|
|
46
|
+
### 2. Frozen Dataclass for Cache Entry
|
|
47
|
+
|
|
48
|
+
```python
|
|
49
|
+
from dataclasses import dataclass
|
|
50
|
+
|
|
51
|
+
@dataclass(frozen=True, slots=True)
|
|
52
|
+
class CacheEntry:
|
|
53
|
+
file_hash: str
|
|
54
|
+
source_path: str
|
|
55
|
+
document: ExtractedDocument # The cached result
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 3. File-Based Cache Storage
|
|
59
|
+
|
|
60
|
+
Each cache entry is stored as `{hash}.json` — O(1) lookup by hash, no index file required.
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
import json
|
|
64
|
+
from typing import Any
|
|
65
|
+
|
|
66
|
+
def write_cache(cache_dir: Path, entry: CacheEntry) -> None:
|
|
67
|
+
cache_dir.mkdir(parents=True, exist_ok=True)
|
|
68
|
+
cache_file = cache_dir / f"{entry.file_hash}.json"
|
|
69
|
+
data = serialize_entry(entry)
|
|
70
|
+
cache_file.write_text(json.dumps(data, ensure_ascii=False), encoding="utf-8")
|
|
71
|
+
|
|
72
|
+
def read_cache(cache_dir: Path, file_hash: str) -> CacheEntry | None:
|
|
73
|
+
cache_file = cache_dir / f"{file_hash}.json"
|
|
74
|
+
if not cache_file.is_file():
|
|
75
|
+
return None
|
|
76
|
+
try:
|
|
77
|
+
raw = cache_file.read_text(encoding="utf-8")
|
|
78
|
+
data = json.loads(raw)
|
|
79
|
+
return deserialize_entry(data)
|
|
80
|
+
except (json.JSONDecodeError, ValueError, KeyError):
|
|
81
|
+
return None # Treat corruption as cache miss
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 4. Service Layer Wrapper (SRP)
|
|
85
|
+
|
|
86
|
+
Keep the processing function pure. Add caching as a separate service layer.
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
def extract_with_cache(
|
|
90
|
+
file_path: Path,
|
|
91
|
+
*,
|
|
92
|
+
cache_enabled: bool = True,
|
|
93
|
+
cache_dir: Path = Path(".cache"),
|
|
94
|
+
) -> ExtractedDocument:
|
|
95
|
+
"""Service layer: cache check -> extraction -> cache write."""
|
|
96
|
+
if not cache_enabled:
|
|
97
|
+
return extract_text(file_path) # Pure function, no cache knowledge
|
|
98
|
+
|
|
99
|
+
file_hash = compute_file_hash(file_path)
|
|
100
|
+
|
|
101
|
+
# Check cache
|
|
102
|
+
cached = read_cache(cache_dir, file_hash)
|
|
103
|
+
if cached is not None:
|
|
104
|
+
logger.info("Cache hit: %s (hash=%s)", file_path.name, file_hash[:12])
|
|
105
|
+
return cached.document
|
|
106
|
+
|
|
107
|
+
# Cache miss -> extract -> store
|
|
108
|
+
logger.info("Cache miss: %s (hash=%s)", file_path.name, file_hash[:12])
|
|
109
|
+
doc = extract_text(file_path)
|
|
110
|
+
entry = CacheEntry(file_hash=file_hash, source_path=str(file_path), document=doc)
|
|
111
|
+
write_cache(cache_dir, entry)
|
|
112
|
+
return doc
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Key Design Decisions
|
|
116
|
+
|
|
117
|
+
| Decision | Rationale |
|
|
118
|
+
|----------|-----------|
|
|
119
|
+
| SHA-256 content hash | Path-independent, auto-invalidates on content change |
|
|
120
|
+
| `{hash}.json` file naming | O(1) lookup, no index file needed |
|
|
121
|
+
| Service layer wrapper | SRP: extraction stays pure, cache is a separate concern |
|
|
122
|
+
| Manual JSON serialization | Full control over frozen dataclass serialization |
|
|
123
|
+
| Corruption returns `None` | Graceful degradation, re-processes on next run |
|
|
124
|
+
| `cache_dir.mkdir(parents=True)` | Lazy directory creation on first write |
|
|
125
|
+
|
|
126
|
+
## Best Practices
|
|
127
|
+
|
|
128
|
+
- **Hash content, not paths** — paths change, content identity doesn't
|
|
129
|
+
- **Chunk large files** when hashing — avoid loading entire files into memory
|
|
130
|
+
- **Keep processing functions pure** — they should know nothing about caching
|
|
131
|
+
- **Log cache hit/miss** with truncated hashes for debugging
|
|
132
|
+
- **Handle corruption gracefully** — treat invalid cache entries as misses, never crash
|
|
133
|
+
|
|
134
|
+
## Anti-Patterns to Avoid
|
|
135
|
+
|
|
136
|
+
```python
|
|
137
|
+
# BAD: Path-based caching (breaks on file move/rename)
|
|
138
|
+
cache = {"/path/to/file.pdf": result}
|
|
139
|
+
|
|
140
|
+
# BAD: Adding cache logic inside the processing function (SRP violation)
|
|
141
|
+
def extract_text(path, *, cache_enabled=False, cache_dir=None):
|
|
142
|
+
if cache_enabled: # Now this function has two responsibilities
|
|
143
|
+
...
|
|
144
|
+
|
|
145
|
+
# BAD: Using dataclasses.asdict() with nested frozen dataclasses
|
|
146
|
+
# (can cause issues with complex nested types)
|
|
147
|
+
data = dataclasses.asdict(entry) # Use manual serialization instead
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## When to Use
|
|
151
|
+
|
|
152
|
+
- File processing pipelines (PDF parsing, OCR, text extraction, image analysis)
|
|
153
|
+
- CLI tools that benefit from `--cache/--no-cache` options
|
|
154
|
+
- Batch processing where the same files appear across runs
|
|
155
|
+
- Adding caching to existing pure functions without modifying them
|
|
156
|
+
|
|
157
|
+
## When NOT to Use
|
|
158
|
+
|
|
159
|
+
- Data that must always be fresh (real-time feeds)
|
|
160
|
+
- Cache entries that would be extremely large (consider streaming instead)
|
|
161
|
+
- Results that depend on parameters beyond file content (e.g., different extraction configs)
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: context-budget
|
|
3
|
+
description: Audits Claude Code context window consumption across agents, skills, MCP servers, and rules. Identifies bloat, redundant components, and produces prioritized token-savings recommendations.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Context Budget
|
|
8
|
+
|
|
9
|
+
Analyze token overhead across every loaded component in a Claude Code session and surface actionable optimizations to reclaim context space.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- Session performance feels sluggish or output quality is degrading
|
|
14
|
+
- You've recently added many skills, agents, or MCP servers
|
|
15
|
+
- You want to know how much context headroom you actually have
|
|
16
|
+
- Planning to add more components and need to know if there's room
|
|
17
|
+
- Running `/context-budget` command (this skill backs it)
|
|
18
|
+
|
|
19
|
+
## How It Works
|
|
20
|
+
|
|
21
|
+
### Phase 1: Inventory
|
|
22
|
+
|
|
23
|
+
Scan all component directories and estimate token consumption:
|
|
24
|
+
|
|
25
|
+
**Agents** (`agents/*.md`)
|
|
26
|
+
- Count lines and tokens per file (words × 1.3)
|
|
27
|
+
- Extract `description` frontmatter length
|
|
28
|
+
- Flag: files >200 lines (heavy), description >30 words (bloated frontmatter)
|
|
29
|
+
|
|
30
|
+
**Skills** (`skills/*/SKILL.md`)
|
|
31
|
+
- Count tokens per SKILL.md
|
|
32
|
+
- Flag: files >400 lines
|
|
33
|
+
- Check for duplicate copies in `.agents/skills/` — skip identical copies to avoid double-counting
|
|
34
|
+
|
|
35
|
+
**Rules** (`rules/**/*.md`)
|
|
36
|
+
- Count tokens per file
|
|
37
|
+
- Flag: files >100 lines
|
|
38
|
+
- Detect content overlap between rule files in the same language module
|
|
39
|
+
|
|
40
|
+
**MCP Servers** (`.mcp.json` or active MCP config)
|
|
41
|
+
- Count configured servers and total tool count
|
|
42
|
+
- Estimate schema overhead at ~500 tokens per tool
|
|
43
|
+
- Flag: servers with >20 tools, servers that wrap simple CLI commands (`gh`, `git`, `npm`, `supabase`, `vercel`)
|
|
44
|
+
|
|
45
|
+
**CLAUDE.md** (project + user-level)
|
|
46
|
+
- Count tokens per file in the CLAUDE.md chain
|
|
47
|
+
- Flag: combined total >300 lines
|
|
48
|
+
|
|
49
|
+
### Phase 2: Classify
|
|
50
|
+
|
|
51
|
+
Sort every component into a bucket:
|
|
52
|
+
|
|
53
|
+
| Bucket | Criteria | Action |
|
|
54
|
+
|--------|----------|--------|
|
|
55
|
+
| **Always needed** | Referenced in CLAUDE.md, backs an active command, or matches current project type | Keep |
|
|
56
|
+
| **Sometimes needed** | Domain-specific (e.g. language patterns), not referenced in CLAUDE.md | Consider on-demand activation |
|
|
57
|
+
| **Rarely needed** | No command reference, overlapping content, or no obvious project match | Remove or lazy-load |
|
|
58
|
+
|
|
59
|
+
### Phase 3: Detect Issues
|
|
60
|
+
|
|
61
|
+
Identify the following problem patterns:
|
|
62
|
+
|
|
63
|
+
- **Bloated agent descriptions** — description >30 words in frontmatter loads into every Task tool invocation
|
|
64
|
+
- **Heavy agents** — files >200 lines inflate Task tool context on every spawn
|
|
65
|
+
- **Redundant components** — skills that duplicate agent logic, rules that duplicate CLAUDE.md
|
|
66
|
+
- **MCP over-subscription** — >10 servers, or servers wrapping CLI tools available for free
|
|
67
|
+
- **CLAUDE.md bloat** — verbose explanations, outdated sections, instructions that should be rules
|
|
68
|
+
|
|
69
|
+
### Phase 4: Report
|
|
70
|
+
|
|
71
|
+
Produce the context budget report:
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
Context Budget Report
|
|
75
|
+
═══════════════════════════════════════
|
|
76
|
+
|
|
77
|
+
Total estimated overhead: ~XX,XXX tokens
|
|
78
|
+
Context model: Claude Sonnet (200K window)
|
|
79
|
+
Effective available context: ~XXX,XXX tokens (XX%)
|
|
80
|
+
|
|
81
|
+
Component Breakdown:
|
|
82
|
+
┌─────────────────┬────────┬───────────┐
|
|
83
|
+
│ Component │ Count │ Tokens │
|
|
84
|
+
├─────────────────┼────────┼───────────┤
|
|
85
|
+
│ Agents │ N │ ~X,XXX │
|
|
86
|
+
│ Skills │ N │ ~X,XXX │
|
|
87
|
+
│ Rules │ N │ ~X,XXX │
|
|
88
|
+
│ MCP tools │ N │ ~XX,XXX │
|
|
89
|
+
│ CLAUDE.md │ N │ ~X,XXX │
|
|
90
|
+
└─────────────────┴────────┴───────────┘
|
|
91
|
+
|
|
92
|
+
⚠ Issues Found (N):
|
|
93
|
+
[ranked by token savings]
|
|
94
|
+
|
|
95
|
+
Top 3 Optimizations:
|
|
96
|
+
1. [action] → save ~X,XXX tokens
|
|
97
|
+
2. [action] → save ~X,XXX tokens
|
|
98
|
+
3. [action] → save ~X,XXX tokens
|
|
99
|
+
|
|
100
|
+
Potential savings: ~XX,XXX tokens (XX% of current overhead)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
In verbose mode, additionally output per-file token counts, line-by-line breakdown of the heaviest files, specific redundant lines between overlapping components, and MCP tool list with per-tool schema size estimates.
|
|
104
|
+
|
|
105
|
+
## Examples
|
|
106
|
+
|
|
107
|
+
**Basic audit**
|
|
108
|
+
```
|
|
109
|
+
User: /context-budget
|
|
110
|
+
Skill: Scans setup → 16 agents (12,400 tokens), 28 skills (6,200), 87 MCP tools (43,500), 2 CLAUDE.md (1,200)
|
|
111
|
+
Flags: 3 heavy agents, 14 MCP servers (3 CLI-replaceable)
|
|
112
|
+
Top saving: remove 3 MCP servers → -27,500 tokens (47% overhead reduction)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**Verbose mode**
|
|
116
|
+
```
|
|
117
|
+
User: /context-budget --verbose
|
|
118
|
+
Skill: Full report + per-file breakdown showing planner.md (213 lines, 1,840 tokens),
|
|
119
|
+
MCP tool list with per-tool sizes, duplicated rule lines side by side
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Pre-expansion check**
|
|
123
|
+
```
|
|
124
|
+
User: I want to add 5 more MCP servers, do I have room?
|
|
125
|
+
Skill: Current overhead 33% → adding 5 servers (~50 tools) would add ~25,000 tokens → pushes to 45% overhead
|
|
126
|
+
Recommendation: remove 2 CLI-replaceable servers first to stay under 40%
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Best Practices
|
|
130
|
+
|
|
131
|
+
- **Token estimation**: use `words × 1.3` for prose, `chars / 4` for code-heavy files
|
|
132
|
+
- **MCP is the biggest lever**: each tool schema costs ~500 tokens; a 30-tool server costs more than all your skills combined
|
|
133
|
+
- **Agent descriptions are loaded always**: even if the agent is never invoked, its description field is present in every Task tool context
|
|
134
|
+
- **Verbose mode for debugging**: use when you need to pinpoint the exact files driving overhead, not for regular audits
|
|
135
|
+
- **Audit after changes**: run after adding any agent, skill, or MCP server to catch creep early
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: context-engineering
|
|
3
|
+
description: Curates the right task context at the right time. Use when starting work, switching tasks, debugging context drift, or when output quality drops because the agent is missing or overloaded with information.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Context Engineering
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
Better context beats louder instructions.
|
|
12
|
+
This skill keeps the active context focused, ordered, and scoped to the current decision so the agent follows the right rules without drowning in irrelevant files.
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
|
|
16
|
+
- starting a new feature, bug, or review pass
|
|
17
|
+
- switching from one subsystem or stage to another
|
|
18
|
+
- output quality degrades or the agent starts ignoring conventions
|
|
19
|
+
- the repo is large and only a small part is relevant
|
|
20
|
+
- multiple possible standards or artifacts could apply
|
|
21
|
+
|
|
22
|
+
**When NOT to use**
|
|
23
|
+
|
|
24
|
+
- the task is tiny and already has a clear, narrow input set
|
|
25
|
+
|
|
26
|
+
## Workflow
|
|
27
|
+
|
|
28
|
+
1. Establish the context hierarchy.
|
|
29
|
+
Load in this order:
|
|
30
|
+
- repo rules and stage contracts
|
|
31
|
+
- approved planning artifacts or stage outputs
|
|
32
|
+
- org standards, baseline profiles, and `.aw_rules`
|
|
33
|
+
- relevant source files and diffs
|
|
34
|
+
- runtime evidence, logs, test output, screenshots
|
|
35
|
+
- conversation history
|
|
36
|
+
2. Pack only what the current stage needs.
|
|
37
|
+
Planning needs specs and boundaries.
|
|
38
|
+
Build needs concrete file scope and validation targets.
|
|
39
|
+
Review needs evidence first.
|
|
40
|
+
Investigation needs failure signals first.
|
|
41
|
+
3. Remove context that no longer serves the current task.
|
|
42
|
+
Old branches of thought, unrelated files, and stale runtime output are noise once the decision moves on.
|
|
43
|
+
4. Repack at stage transitions.
|
|
44
|
+
A good context pack for `plan` is not the same as one for `build`, `test`, or `review`.
|
|
45
|
+
5. Detect drift early.
|
|
46
|
+
If the agent starts guessing, inventing APIs, or broadening scope, stop and rebuild the context pack instead of pushing forward with bad state.
|
|
47
|
+
6. Record the current anchors.
|
|
48
|
+
Name the source-of-truth files and evidence the current work depends on.
|
|
49
|
+
|
|
50
|
+
## Common Rationalizations
|
|
51
|
+
|
|
52
|
+
| Rationalization | Reality |
|
|
53
|
+
|---|---|
|
|
54
|
+
| "I'll just load everything." | Too much context reduces focus and increases wrong pattern matching. |
|
|
55
|
+
| "Conversation history is enough." | History is the weakest context layer when repo rules or artifacts disagree. |
|
|
56
|
+
| "The agent should infer the convention." | If the convention matters, load it explicitly. |
|
|
57
|
+
| "I can keep the same context pack across all stages." | Different stages need different information density and order. |
|
|
58
|
+
|
|
59
|
+
## Red Flags
|
|
60
|
+
|
|
61
|
+
- the agent cites stale artifacts after the stage changed
|
|
62
|
+
- unrelated files keep reappearing in reasoning or edits
|
|
63
|
+
- errors are discussed without the exact failing output loaded
|
|
64
|
+
- repo rules are overridden by conversation memory
|
|
65
|
+
|
|
66
|
+
## Verification
|
|
67
|
+
|
|
68
|
+
After repacking context, confirm:
|
|
69
|
+
|
|
70
|
+
- [ ] the highest-priority rules are loaded first
|
|
71
|
+
- [ ] only stage-relevant files and evidence are active
|
|
72
|
+
- [ ] stale or contradictory context was removed or named
|
|
73
|
+
- [ ] the source-of-truth inputs are explicit
|
|
74
|
+
- [ ] the agent can explain the current task using the packed context only
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: continuous-agent-loop
|
|
3
|
+
description: Patterns for continuous autonomous agent loops with quality gates, evals, and recovery controls.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Continuous Agent Loop
|
|
8
|
+
|
|
9
|
+
This is the v1.8+ canonical loop skill name. It supersedes `autonomous-loops` while keeping compatibility for one release.
|
|
10
|
+
|
|
11
|
+
## Loop Selection Flow
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
Start
|
|
15
|
+
|
|
|
16
|
+
+-- Need strict CI/PR control? -- yes --> continuous-pr
|
|
17
|
+
|
|
|
18
|
+
+-- Need RFC decomposition? -- yes --> rfc-dag
|
|
19
|
+
|
|
|
20
|
+
+-- Need exploratory parallel generation? -- yes --> infinite
|
|
21
|
+
|
|
|
22
|
+
+-- default --> sequential
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Combined Pattern
|
|
26
|
+
|
|
27
|
+
Recommended production stack:
|
|
28
|
+
1. RFC decomposition (`ralphinho-rfc-pipeline`)
|
|
29
|
+
2. quality gates (`plankton-code-quality` + `/quality-gate`)
|
|
30
|
+
3. eval loop (`eval-harness`)
|
|
31
|
+
4. session persistence (`nanoclaw-repl`)
|
|
32
|
+
|
|
33
|
+
## Failure Modes
|
|
34
|
+
|
|
35
|
+
- loop churn without measurable progress
|
|
36
|
+
- repeated retries with same root cause
|
|
37
|
+
- merge queue stalls
|
|
38
|
+
- cost drift from unbounded escalation
|
|
39
|
+
|
|
40
|
+
## Recovery
|
|
41
|
+
|
|
42
|
+
- freeze loop
|
|
43
|
+
- run `/harness-audit`
|
|
44
|
+
- reduce scope to failing unit
|
|
45
|
+
- replay with explicit acceptance criteria
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: continuous-learning
|
|
3
|
+
description: Automatically extract reusable patterns from Claude Code sessions and save them as learned skills for future use.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Continuous Learning Skill
|
|
8
|
+
|
|
9
|
+
Automatically evaluates Claude Code sessions on end to extract reusable patterns that can be saved as learned skills.
|
|
10
|
+
|
|
11
|
+
## When to Activate
|
|
12
|
+
|
|
13
|
+
- Setting up automatic pattern extraction from Claude Code sessions
|
|
14
|
+
- Configuring the Stop hook for session evaluation
|
|
15
|
+
- Reviewing or curating learned skills in `~/.claude/skills/learned/`
|
|
16
|
+
- Adjusting extraction thresholds or pattern categories
|
|
17
|
+
- Comparing v1 (this) vs v2 (instinct-based) approaches
|
|
18
|
+
|
|
19
|
+
## How It Works
|
|
20
|
+
|
|
21
|
+
This skill runs as a **Stop hook** at the end of each session:
|
|
22
|
+
|
|
23
|
+
1. **Session Evaluation**: Checks if session has enough messages (default: 10+)
|
|
24
|
+
2. **Pattern Detection**: Identifies extractable patterns from the session
|
|
25
|
+
3. **Skill Extraction**: Saves useful patterns to `~/.claude/skills/learned/`
|
|
26
|
+
|
|
27
|
+
## Configuration
|
|
28
|
+
|
|
29
|
+
Edit `config.json` to customize:
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"min_session_length": 10,
|
|
34
|
+
"extraction_threshold": "medium",
|
|
35
|
+
"auto_approve": false,
|
|
36
|
+
"learned_skills_path": "~/.claude/skills/learned/",
|
|
37
|
+
"patterns_to_detect": [
|
|
38
|
+
"error_resolution",
|
|
39
|
+
"user_corrections",
|
|
40
|
+
"workarounds",
|
|
41
|
+
"debugging_techniques",
|
|
42
|
+
"project_specific"
|
|
43
|
+
],
|
|
44
|
+
"ignore_patterns": [
|
|
45
|
+
"simple_typos",
|
|
46
|
+
"one_time_fixes",
|
|
47
|
+
"external_api_issues"
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Pattern Types
|
|
53
|
+
|
|
54
|
+
| Pattern | Description |
|
|
55
|
+
|---------|-------------|
|
|
56
|
+
| `error_resolution` | How specific errors were resolved |
|
|
57
|
+
| `user_corrections` | Patterns from user corrections |
|
|
58
|
+
| `workarounds` | Solutions to framework/library quirks |
|
|
59
|
+
| `debugging_techniques` | Effective debugging approaches |
|
|
60
|
+
| `project_specific` | Project-specific conventions |
|
|
61
|
+
|
|
62
|
+
## Hook Setup
|
|
63
|
+
|
|
64
|
+
Add to your `~/.claude/settings.json`:
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"hooks": {
|
|
69
|
+
"Stop": [{
|
|
70
|
+
"matcher": "*",
|
|
71
|
+
"hooks": [{
|
|
72
|
+
"type": "command",
|
|
73
|
+
"command": "~/.claude/skills/continuous-learning/evaluate-session.sh"
|
|
74
|
+
}]
|
|
75
|
+
}]
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Why Stop Hook?
|
|
81
|
+
|
|
82
|
+
- **Lightweight**: Runs once at session end
|
|
83
|
+
- **Non-blocking**: Doesn't add latency to every message
|
|
84
|
+
- **Complete context**: Has access to full session transcript
|
|
85
|
+
|
|
86
|
+
## Related
|
|
87
|
+
|
|
88
|
+
- [The Longform Guide](https://x.com/affaanmustafa/status/2014040193557471352) - Section on continuous learning
|
|
89
|
+
- `/learn` command - Manual pattern extraction mid-session
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Comparison Notes (Research: Jan 2025)
|
|
94
|
+
|
|
95
|
+
### vs Homunculus
|
|
96
|
+
|
|
97
|
+
Homunculus v2 takes a more sophisticated approach:
|
|
98
|
+
|
|
99
|
+
| Feature | Our Approach | Homunculus v2 |
|
|
100
|
+
|---------|--------------|---------------|
|
|
101
|
+
| Observation | Stop hook (end of session) | PreToolUse/PostToolUse hooks (100% reliable) |
|
|
102
|
+
| Analysis | Main context | Background agent (Haiku) |
|
|
103
|
+
| Granularity | Full skills | Atomic "instincts" |
|
|
104
|
+
| Confidence | None | 0.3-0.9 weighted |
|
|
105
|
+
| Evolution | Direct to skill | Instincts → cluster → skill/command/agent |
|
|
106
|
+
| Sharing | None | Export/import instincts |
|
|
107
|
+
|
|
108
|
+
**Key insight from homunculus:**
|
|
109
|
+
> "v1 relied on skills to observe. Skills are probabilistic—they fire ~50-80% of the time. v2 uses hooks for observation (100% reliable) and instincts as the atomic unit of learned behavior."
|
|
110
|
+
|
|
111
|
+
### Potential v2 Enhancements
|
|
112
|
+
|
|
113
|
+
1. **Instinct-based learning** - Smaller, atomic behaviors with confidence scoring
|
|
114
|
+
2. **Background observer** - Haiku agent analyzing in parallel
|
|
115
|
+
3. **Confidence decay** - Instincts lose confidence if contradicted
|
|
116
|
+
4. **Domain tagging** - code-style, testing, git, debugging, etc.
|
|
117
|
+
5. **Evolution path** - Cluster related instincts into skills/commands
|
|
118
|
+
|
|
119
|
+
See: `docs/continuous-learning-v2-spec.md` for full spec.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"min_session_length": 10,
|
|
3
|
+
"extraction_threshold": "medium",
|
|
4
|
+
"auto_approve": false,
|
|
5
|
+
"learned_skills_path": "~/.claude/skills/learned/",
|
|
6
|
+
"patterns_to_detect": [
|
|
7
|
+
"error_resolution",
|
|
8
|
+
"user_corrections",
|
|
9
|
+
"workarounds",
|
|
10
|
+
"debugging_techniques",
|
|
11
|
+
"project_specific"
|
|
12
|
+
],
|
|
13
|
+
"ignore_patterns": [
|
|
14
|
+
"simple_typos",
|
|
15
|
+
"one_time_fixes",
|
|
16
|
+
"external_api_issues"
|
|
17
|
+
]
|
|
18
|
+
}
|