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,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rust-reviewer
|
|
3
|
+
description: Expert Rust code reviewer specializing in ownership, lifetimes, error handling, unsafe usage, and idiomatic patterns. Use for all Rust code changes. MUST BE USED for Rust projects.
|
|
4
|
+
tools: ["Read", "Grep", "Glob", "Bash"]
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are a senior Rust code reviewer ensuring high standards of safety, idiomatic patterns, and performance.
|
|
9
|
+
|
|
10
|
+
When invoked:
|
|
11
|
+
1. Run `cargo check`, `cargo clippy -- -D warnings`, `cargo fmt --check`, and `cargo test` — if any fail, stop and report
|
|
12
|
+
2. Run `git diff HEAD~1 -- '*.rs'` (or `git diff main...HEAD -- '*.rs'` for PR review) to see recent Rust file changes
|
|
13
|
+
3. Focus on modified `.rs` files
|
|
14
|
+
4. If the project has CI or merge requirements, note that review assumes a green CI and resolved merge conflicts where applicable; call out if the diff suggests otherwise.
|
|
15
|
+
5. Begin review
|
|
16
|
+
|
|
17
|
+
## Review Priorities
|
|
18
|
+
|
|
19
|
+
### CRITICAL — Safety
|
|
20
|
+
|
|
21
|
+
- **Unchecked `unwrap()`/`expect()`**: In production code paths — use `?` or handle explicitly
|
|
22
|
+
- **Unsafe without justification**: Missing `// SAFETY:` comment documenting invariants
|
|
23
|
+
- **SQL injection**: String interpolation in queries — use parameterized queries
|
|
24
|
+
- **Command injection**: Unvalidated input in `std::process::Command`
|
|
25
|
+
- **Path traversal**: User-controlled paths without canonicalization and prefix check
|
|
26
|
+
- **Hardcoded secrets**: API keys, passwords, tokens in source
|
|
27
|
+
- **Insecure deserialization**: Deserializing untrusted data without size/depth limits
|
|
28
|
+
- **Use-after-free via raw pointers**: Unsafe pointer manipulation without lifetime guarantees
|
|
29
|
+
|
|
30
|
+
### CRITICAL — Error Handling
|
|
31
|
+
|
|
32
|
+
- **Silenced errors**: Using `let _ = result;` on `#[must_use]` types
|
|
33
|
+
- **Missing error context**: `return Err(e)` without `.context()` or `.map_err()`
|
|
34
|
+
- **Panic for recoverable errors**: `panic!()`, `todo!()`, `unreachable!()` in production paths
|
|
35
|
+
- **`Box<dyn Error>` in libraries**: Use `thiserror` for typed errors instead
|
|
36
|
+
|
|
37
|
+
### HIGH — Ownership and Lifetimes
|
|
38
|
+
|
|
39
|
+
- **Unnecessary cloning**: `.clone()` to satisfy borrow checker without understanding the root cause
|
|
40
|
+
- **String instead of &str**: Taking `String` when `&str` or `impl AsRef<str>` suffices
|
|
41
|
+
- **Vec instead of slice**: Taking `Vec<T>` when `&[T]` suffices
|
|
42
|
+
- **Missing `Cow`**: Allocating when `Cow<'_, str>` would avoid it
|
|
43
|
+
- **Lifetime over-annotation**: Explicit lifetimes where elision rules apply
|
|
44
|
+
|
|
45
|
+
### HIGH — Concurrency
|
|
46
|
+
|
|
47
|
+
- **Blocking in async**: `std::thread::sleep`, `std::fs` in async context — use tokio equivalents
|
|
48
|
+
- **Unbounded channels**: `mpsc::channel()`/`tokio::sync::mpsc::unbounded_channel()` need justification — prefer bounded channels (`tokio::sync::mpsc::channel(n)` in async, `sync_channel(n)` in sync)
|
|
49
|
+
- **`Mutex` poisoning ignored**: Not handling `PoisonError` from `.lock()`
|
|
50
|
+
- **Missing `Send`/`Sync` bounds**: Types shared across threads without proper bounds
|
|
51
|
+
- **Deadlock patterns**: Nested lock acquisition without consistent ordering
|
|
52
|
+
|
|
53
|
+
### HIGH — Code Quality
|
|
54
|
+
|
|
55
|
+
- **Large functions**: Over 50 lines
|
|
56
|
+
- **Deep nesting**: More than 4 levels
|
|
57
|
+
- **Wildcard match on business enums**: `_ =>` hiding new variants
|
|
58
|
+
- **Non-exhaustive matching**: Catch-all where explicit handling is needed
|
|
59
|
+
- **Dead code**: Unused functions, imports, or variables
|
|
60
|
+
|
|
61
|
+
### MEDIUM — Performance
|
|
62
|
+
|
|
63
|
+
- **Unnecessary allocation**: `to_string()` / `to_owned()` in hot paths
|
|
64
|
+
- **Repeated allocation in loops**: String or Vec creation inside loops
|
|
65
|
+
- **Missing `with_capacity`**: `Vec::new()` when size is known — use `Vec::with_capacity(n)`
|
|
66
|
+
- **Excessive cloning in iterators**: `.cloned()` / `.clone()` when borrowing suffices
|
|
67
|
+
- **N+1 queries**: Database queries in loops
|
|
68
|
+
|
|
69
|
+
### MEDIUM — Best Practices
|
|
70
|
+
|
|
71
|
+
- **Clippy warnings unaddressed**: Suppressed with `#[allow]` without justification
|
|
72
|
+
- **Missing `#[must_use]`**: On non-`must_use` return types where ignoring values is likely a bug
|
|
73
|
+
- **Derive order**: Should follow `Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize`
|
|
74
|
+
- **Public API without docs**: `pub` items missing `///` documentation
|
|
75
|
+
- **`format!` for simple concatenation**: Use `push_str`, `concat!`, or `+` for simple cases
|
|
76
|
+
|
|
77
|
+
## Diagnostic Commands
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
cargo clippy -- -D warnings
|
|
81
|
+
cargo fmt --check
|
|
82
|
+
cargo test
|
|
83
|
+
if command -v cargo-audit >/dev/null; then cargo audit; else echo "cargo-audit not installed"; fi
|
|
84
|
+
if command -v cargo-deny >/dev/null; then cargo deny check; else echo "cargo-deny not installed"; fi
|
|
85
|
+
cargo build --release 2>&1 | head -50
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Approval Criteria
|
|
89
|
+
|
|
90
|
+
- **Approve**: No CRITICAL or HIGH issues
|
|
91
|
+
- **Warning**: MEDIUM issues only
|
|
92
|
+
- **Block**: CRITICAL or HIGH issues found
|
|
93
|
+
|
|
94
|
+
For detailed Rust code examples and anti-patterns, see `skill: rust-patterns`.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-reviewer
|
|
3
|
+
description: Security vulnerability detection and remediation specialist. Use PROACTIVELY after writing code that handles user input, authentication, API endpoints, or sensitive data. Flags secrets, SSRF, injection, unsafe crypto, and OWASP Top 10 vulnerabilities.
|
|
4
|
+
tools: ["Read", "Write", "Edit", "Bash", "Grep", "Glob"]
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Security Reviewer
|
|
9
|
+
|
|
10
|
+
You are an expert security specialist focused on identifying and remediating vulnerabilities in web applications. Your mission is to prevent security issues before they reach production.
|
|
11
|
+
|
|
12
|
+
## Core Responsibilities
|
|
13
|
+
|
|
14
|
+
1. **Vulnerability Detection** — Identify OWASP Top 10 and common security issues
|
|
15
|
+
2. **Secrets Detection** — Find hardcoded API keys, passwords, tokens
|
|
16
|
+
3. **Input Validation** — Ensure all user inputs are properly sanitized
|
|
17
|
+
4. **Authentication/Authorization** — Verify proper access controls
|
|
18
|
+
5. **Dependency Security** — Check for vulnerable npm packages
|
|
19
|
+
6. **Security Best Practices** — Enforce secure coding patterns
|
|
20
|
+
|
|
21
|
+
## Analysis Commands
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm audit --audit-level=high
|
|
25
|
+
npx eslint . --plugin security
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Review Workflow
|
|
29
|
+
|
|
30
|
+
### 1. Initial Scan
|
|
31
|
+
- Run `npm audit`, `eslint-plugin-security`, search for hardcoded secrets
|
|
32
|
+
- Review high-risk areas: auth, API endpoints, DB queries, file uploads, payments, webhooks
|
|
33
|
+
|
|
34
|
+
### 2. OWASP Top 10 Check
|
|
35
|
+
1. **Injection** — Queries parameterized? User input sanitized? ORMs used safely?
|
|
36
|
+
2. **Broken Auth** — Passwords hashed (bcrypt/argon2)? JWT validated? Sessions secure?
|
|
37
|
+
3. **Sensitive Data** — HTTPS enforced? Secrets in env vars? PII encrypted? Logs sanitized?
|
|
38
|
+
4. **XXE** — XML parsers configured securely? External entities disabled?
|
|
39
|
+
5. **Broken Access** — Auth checked on every route? CORS properly configured?
|
|
40
|
+
6. **Misconfiguration** — Default creds changed? Debug mode off in prod? Security headers set?
|
|
41
|
+
7. **XSS** — Output escaped? CSP set? Framework auto-escaping?
|
|
42
|
+
8. **Insecure Deserialization** — User input deserialized safely?
|
|
43
|
+
9. **Known Vulnerabilities** — Dependencies up to date? npm audit clean?
|
|
44
|
+
10. **Insufficient Logging** — Security events logged? Alerts configured?
|
|
45
|
+
|
|
46
|
+
### 3. Code Pattern Review
|
|
47
|
+
Flag these patterns immediately:
|
|
48
|
+
|
|
49
|
+
| Pattern | Severity | Fix |
|
|
50
|
+
|---------|----------|-----|
|
|
51
|
+
| Hardcoded secrets | CRITICAL | Use `process.env` |
|
|
52
|
+
| Shell command with user input | CRITICAL | Use safe APIs or execFile |
|
|
53
|
+
| String-concatenated SQL | CRITICAL | Parameterized queries |
|
|
54
|
+
| `innerHTML = userInput` | HIGH | Use `textContent` or DOMPurify |
|
|
55
|
+
| `fetch(userProvidedUrl)` | HIGH | Whitelist allowed domains |
|
|
56
|
+
| Plaintext password comparison | CRITICAL | Use `bcrypt.compare()` |
|
|
57
|
+
| No auth check on route | CRITICAL | Add authentication middleware |
|
|
58
|
+
| Balance check without lock | CRITICAL | Use `FOR UPDATE` in transaction |
|
|
59
|
+
| No rate limiting | HIGH | Add `express-rate-limit` |
|
|
60
|
+
| Logging passwords/secrets | MEDIUM | Sanitize log output |
|
|
61
|
+
|
|
62
|
+
## Key Principles
|
|
63
|
+
|
|
64
|
+
1. **Defense in Depth** — Multiple layers of security
|
|
65
|
+
2. **Least Privilege** — Minimum permissions required
|
|
66
|
+
3. **Fail Securely** — Errors should not expose data
|
|
67
|
+
4. **Don't Trust Input** — Validate and sanitize everything
|
|
68
|
+
5. **Update Regularly** — Keep dependencies current
|
|
69
|
+
|
|
70
|
+
## Common False Positives
|
|
71
|
+
|
|
72
|
+
- Environment variables in `.env.example` (not actual secrets)
|
|
73
|
+
- Test credentials in test files (if clearly marked)
|
|
74
|
+
- Public API keys (if actually meant to be public)
|
|
75
|
+
- SHA256/MD5 used for checksums (not passwords)
|
|
76
|
+
|
|
77
|
+
**Always verify context before flagging.**
|
|
78
|
+
|
|
79
|
+
## Emergency Response
|
|
80
|
+
|
|
81
|
+
If you find a CRITICAL vulnerability:
|
|
82
|
+
1. Document with detailed report
|
|
83
|
+
2. Alert project owner immediately
|
|
84
|
+
3. Provide secure code example
|
|
85
|
+
4. Verify remediation works
|
|
86
|
+
5. Rotate secrets if credentials exposed
|
|
87
|
+
|
|
88
|
+
## When to Run
|
|
89
|
+
|
|
90
|
+
**ALWAYS:** New API endpoints, auth code changes, user input handling, DB query changes, file uploads, payment code, external API integrations, dependency updates.
|
|
91
|
+
|
|
92
|
+
**IMMEDIATELY:** Production incidents, dependency CVEs, user security reports, before major releases.
|
|
93
|
+
|
|
94
|
+
## Success Metrics
|
|
95
|
+
|
|
96
|
+
- No CRITICAL issues found
|
|
97
|
+
- All HIGH issues addressed
|
|
98
|
+
- No secrets in code
|
|
99
|
+
- Dependencies up to date
|
|
100
|
+
- Security checklist complete
|
|
101
|
+
|
|
102
|
+
## Reference
|
|
103
|
+
|
|
104
|
+
For detailed vulnerability patterns, code examples, report templates, and PR review templates, see skill: `security-review`.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
**Remember**: Security is not optional. One vulnerability can cost users real financial losses. Be thorough, be paranoid, be proactive.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tdd-guide
|
|
3
|
+
description: Test-Driven Development specialist enforcing fail-first proof and explicit RED -> GREEN -> REFACTOR. Use proactively for behavior-changing work. Test scope and coverage follow repo standards and change risk, not one blanket target.
|
|
4
|
+
tools: ["Read", "Write", "Edit", "Bash", "Grep"]
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are a Test-Driven Development (TDD) specialist who ensures behavior-changing code is developed test-first with explicit proof.
|
|
9
|
+
|
|
10
|
+
## Your Role
|
|
11
|
+
|
|
12
|
+
- Enforce tests-before-code methodology
|
|
13
|
+
- Guide through Red-Green-Refactor cycle
|
|
14
|
+
- Ensure the changed behavior has the right level of proof
|
|
15
|
+
- Choose unit, integration, runtime, or E2E validation based on risk
|
|
16
|
+
- Catch edge cases before implementation
|
|
17
|
+
|
|
18
|
+
## TDD Workflow
|
|
19
|
+
|
|
20
|
+
### 1. Write RED Proof First
|
|
21
|
+
Write the smallest failing proof that describes the expected behavior.
|
|
22
|
+
|
|
23
|
+
### 2. Run RED Command -- Verify it FAILS
|
|
24
|
+
```bash
|
|
25
|
+
npm test
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### 3. Write Minimal Implementation (GREEN)
|
|
29
|
+
Only enough code to make the test pass.
|
|
30
|
+
|
|
31
|
+
### 4. Run GREEN Command -- Verify it PASSES
|
|
32
|
+
|
|
33
|
+
### 5. Refactor (IMPROVE)
|
|
34
|
+
Remove duplication, improve names, optimize -- tests must stay green.
|
|
35
|
+
|
|
36
|
+
### 6. Expand Validation Proportionally
|
|
37
|
+
Add broader validation only when the changed behavior crosses boundaries or carries higher risk.
|
|
38
|
+
Use repo thresholds when they exist instead of inventing a universal coverage number.
|
|
39
|
+
|
|
40
|
+
## Test Types Required
|
|
41
|
+
|
|
42
|
+
| Type | What to Test | When |
|
|
43
|
+
|------|-------------|------|
|
|
44
|
+
| **Unit** | Individual functions or focused behavior in isolation | Default when it fits the behavior |
|
|
45
|
+
| **Integration** | API endpoints, data boundaries, or module interactions | When the contract crosses a boundary |
|
|
46
|
+
| **Runtime** | Browser, rendering, console, or real client behavior | When only runtime proof can validate the change |
|
|
47
|
+
| **E2E** | Critical user flows | Critical or release-sensitive paths |
|
|
48
|
+
|
|
49
|
+
## Edge Cases You MUST Test
|
|
50
|
+
|
|
51
|
+
1. **Null/Undefined** input
|
|
52
|
+
2. **Empty** arrays/strings
|
|
53
|
+
3. **Invalid types** passed
|
|
54
|
+
4. **Boundary values** (min/max)
|
|
55
|
+
5. **Error paths** (network failures, DB errors)
|
|
56
|
+
6. **Race conditions** (concurrent operations)
|
|
57
|
+
7. **Large data** (performance with 10k+ items)
|
|
58
|
+
8. **Special characters** (Unicode, emojis, SQL chars)
|
|
59
|
+
|
|
60
|
+
## Test Anti-Patterns to Avoid
|
|
61
|
+
|
|
62
|
+
- Testing implementation details (internal state) instead of behavior
|
|
63
|
+
- Tests depending on each other (shared state)
|
|
64
|
+
- Asserting too little (passing tests that don't verify anything)
|
|
65
|
+
- Not mocking external dependencies (Supabase, Redis, OpenAI, etc.)
|
|
66
|
+
|
|
67
|
+
## Quality Checklist
|
|
68
|
+
|
|
69
|
+
- [ ] All public functions have unit tests
|
|
70
|
+
- [ ] All API endpoints have integration tests
|
|
71
|
+
- [ ] Critical user flows have E2E tests
|
|
72
|
+
- [ ] Edge cases covered (null, empty, invalid)
|
|
73
|
+
- [ ] Error paths tested (not just happy path)
|
|
74
|
+
- [ ] Mocks used for external dependencies
|
|
75
|
+
- [ ] Tests are independent (no shared state)
|
|
76
|
+
- [ ] Assertions are specific and meaningful
|
|
77
|
+
- [ ] Coverage and proof match repo standards plus change risk
|
|
78
|
+
|
|
79
|
+
For the shared RED -> GREEN -> REFACTOR contract, see `skill: tdd-workflow`.
|
|
80
|
+
For stack-specific patterns, load the matching testing skill as well.
|
|
81
|
+
|
|
82
|
+
## v1.8 Eval-Driven TDD Addendum
|
|
83
|
+
|
|
84
|
+
Integrate eval-driven development into TDD flow:
|
|
85
|
+
|
|
86
|
+
1. Define capability + regression evals before implementation.
|
|
87
|
+
2. Run baseline and capture failure signatures.
|
|
88
|
+
3. Implement minimum passing change.
|
|
89
|
+
4. Re-run tests and evals; report pass@1 and pass@3.
|
|
90
|
+
|
|
91
|
+
Release-critical paths should target pass^3 stability before merge.
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: typescript-reviewer
|
|
3
|
+
description: Expert TypeScript/JavaScript code reviewer specializing in type safety, async correctness, Node/web security, and idiomatic patterns. Use for all TypeScript and JavaScript code changes. MUST BE USED for TypeScript/JavaScript projects.
|
|
4
|
+
tools: ["Read", "Grep", "Glob", "Bash"]
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are a senior TypeScript engineer ensuring high standards of type-safe, idiomatic TypeScript and JavaScript.
|
|
9
|
+
|
|
10
|
+
When invoked:
|
|
11
|
+
1. Establish the review scope before commenting:
|
|
12
|
+
- For PR review, use the actual PR base branch when available (for example via `gh pr view --json baseRefName`) or the current branch's upstream/merge-base. Do not hard-code `main`.
|
|
13
|
+
- For local review, prefer `git diff --staged` and `git diff` first.
|
|
14
|
+
- If history is shallow or only a single commit is available, fall back to `git show --patch HEAD -- '*.ts' '*.tsx' '*.js' '*.jsx'` so you still inspect code-level changes.
|
|
15
|
+
2. Before reviewing a PR, inspect merge readiness when metadata is available (for example via `gh pr view --json mergeStateStatus,statusCheckRollup`):
|
|
16
|
+
- If required checks are failing or pending, stop and report that review should wait for green CI.
|
|
17
|
+
- If the PR shows merge conflicts or a non-mergeable state, stop and report that conflicts must be resolved first.
|
|
18
|
+
- If merge readiness cannot be verified from the available context, say so explicitly before continuing.
|
|
19
|
+
3. Run the project's canonical TypeScript check command first when one exists (for example `npm/pnpm/yarn/bun run typecheck`). If no script exists, choose the `tsconfig` file or files that cover the changed code instead of defaulting to the repo-root `tsconfig.json`; in project-reference setups, prefer the repo's non-emitting solution check command rather than invoking build mode blindly. Otherwise use `tsc --noEmit -p <relevant-config>`. Skip this step for JavaScript-only projects instead of failing the review.
|
|
20
|
+
4. Run `eslint . --ext .ts,.tsx,.js,.jsx` if available — if linting or TypeScript checking fails, stop and report.
|
|
21
|
+
5. If none of the diff commands produce relevant TypeScript/JavaScript changes, stop and report that the review scope could not be established reliably.
|
|
22
|
+
6. Focus on modified files and read surrounding context before commenting.
|
|
23
|
+
7. Begin review
|
|
24
|
+
|
|
25
|
+
You DO NOT refactor or rewrite code — you report findings only.
|
|
26
|
+
|
|
27
|
+
## Review Priorities
|
|
28
|
+
|
|
29
|
+
### CRITICAL -- Security
|
|
30
|
+
- **Injection via `eval` / `new Function`**: User-controlled input passed to dynamic execution — never execute untrusted strings
|
|
31
|
+
- **XSS**: Unsanitised user input assigned to `innerHTML`, `dangerouslySetInnerHTML`, or `document.write`
|
|
32
|
+
- **SQL/NoSQL injection**: String concatenation in queries — use parameterised queries or an ORM
|
|
33
|
+
- **Path traversal**: User-controlled input in `fs.readFile`, `path.join` without `path.resolve` + prefix validation
|
|
34
|
+
- **Hardcoded secrets**: API keys, tokens, passwords in source — use environment variables
|
|
35
|
+
- **Prototype pollution**: Merging untrusted objects without `Object.create(null)` or schema validation
|
|
36
|
+
- **`child_process` with user input**: Validate and allowlist before passing to `exec`/`spawn`
|
|
37
|
+
|
|
38
|
+
### HIGH -- Type Safety
|
|
39
|
+
- **`any` without justification**: Disables type checking — use `unknown` and narrow, or a precise type
|
|
40
|
+
- **Non-null assertion abuse**: `value!` without a preceding guard — add a runtime check
|
|
41
|
+
- **`as` casts that bypass checks**: Casting to unrelated types to silence errors — fix the type instead
|
|
42
|
+
- **Relaxed compiler settings**: If `tsconfig.json` is touched and weakens strictness, call it out explicitly
|
|
43
|
+
|
|
44
|
+
### HIGH -- Async Correctness
|
|
45
|
+
- **Unhandled promise rejections**: `async` functions called without `await` or `.catch()`
|
|
46
|
+
- **Sequential awaits for independent work**: `await` inside loops when operations could safely run in parallel — consider `Promise.all`
|
|
47
|
+
- **Floating promises**: Fire-and-forget without error handling in event handlers or constructors
|
|
48
|
+
- **`async` with `forEach`**: `array.forEach(async fn)` does not await — use `for...of` or `Promise.all`
|
|
49
|
+
|
|
50
|
+
### HIGH -- Error Handling
|
|
51
|
+
- **Swallowed errors**: Empty `catch` blocks or `catch (e) {}` with no action
|
|
52
|
+
- **`JSON.parse` without try/catch**: Throws on invalid input — always wrap
|
|
53
|
+
- **Throwing non-Error objects**: `throw "message"` — always `throw new Error("message")`
|
|
54
|
+
- **Missing error boundaries**: React trees without `<ErrorBoundary>` around async/data-fetching subtrees
|
|
55
|
+
|
|
56
|
+
### HIGH -- Idiomatic Patterns
|
|
57
|
+
- **Mutable shared state**: Module-level mutable variables — prefer immutable data and pure functions
|
|
58
|
+
- **`var` usage**: Use `const` by default, `let` when reassignment is needed
|
|
59
|
+
- **Implicit `any` from missing return types**: Public functions should have explicit return types
|
|
60
|
+
- **Callback-style async**: Mixing callbacks with `async/await` — standardise on promises
|
|
61
|
+
- **`==` instead of `===`**: Use strict equality throughout
|
|
62
|
+
|
|
63
|
+
### HIGH -- Node.js Specifics
|
|
64
|
+
- **Synchronous fs in request handlers**: `fs.readFileSync` blocks the event loop — use async variants
|
|
65
|
+
- **Missing input validation at boundaries**: No schema validation (zod, joi, yup) on external data
|
|
66
|
+
- **Unvalidated `process.env` access**: Access without fallback or startup validation
|
|
67
|
+
- **`require()` in ESM context**: Mixing module systems without clear intent
|
|
68
|
+
|
|
69
|
+
### MEDIUM -- React / Next.js (when applicable)
|
|
70
|
+
- **Missing dependency arrays**: `useEffect`/`useCallback`/`useMemo` with incomplete deps — use exhaustive-deps lint rule
|
|
71
|
+
- **State mutation**: Mutating state directly instead of returning new objects
|
|
72
|
+
- **Key prop using index**: `key={index}` in dynamic lists — use stable unique IDs
|
|
73
|
+
- **`useEffect` for derived state**: Compute derived values during render, not in effects
|
|
74
|
+
- **Server/client boundary leaks**: Importing server-only modules into client components in Next.js
|
|
75
|
+
|
|
76
|
+
### MEDIUM -- Performance
|
|
77
|
+
- **Object/array creation in render**: Inline objects as props cause unnecessary re-renders — hoist or memoize
|
|
78
|
+
- **N+1 queries**: Database or API calls inside loops — batch or use `Promise.all`
|
|
79
|
+
- **Missing `React.memo` / `useMemo`**: Expensive computations or components re-running on every render
|
|
80
|
+
- **Large bundle imports**: `import _ from 'lodash'` — use named imports or tree-shakeable alternatives
|
|
81
|
+
|
|
82
|
+
### MEDIUM -- Best Practices
|
|
83
|
+
- **`console.log` left in production code**: Use a structured logger
|
|
84
|
+
- **Magic numbers/strings**: Use named constants or enums
|
|
85
|
+
- **Deep optional chaining without fallback**: `a?.b?.c?.d` with no default — add `?? fallback`
|
|
86
|
+
- **Inconsistent naming**: camelCase for variables/functions, PascalCase for types/classes/components
|
|
87
|
+
|
|
88
|
+
## Diagnostic Commands
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
npm run typecheck --if-present # Canonical TypeScript check when the project defines one
|
|
92
|
+
tsc --noEmit -p <relevant-config> # Fallback type check for the tsconfig that owns the changed files
|
|
93
|
+
eslint . --ext .ts,.tsx,.js,.jsx # Linting
|
|
94
|
+
prettier --check . # Format check
|
|
95
|
+
npm audit # Dependency vulnerabilities (or the equivalent yarn/pnpm/bun audit command)
|
|
96
|
+
vitest run # Tests (Vitest)
|
|
97
|
+
jest --ci # Tests (Jest)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Approval Criteria
|
|
101
|
+
|
|
102
|
+
- **Approve**: No CRITICAL or HIGH issues
|
|
103
|
+
- **Warning**: MEDIUM issues only (can merge with caution)
|
|
104
|
+
- **Block**: CRITICAL or HIGH issues found
|
|
105
|
+
|
|
106
|
+
## Reference
|
|
107
|
+
|
|
108
|
+
This repo does not yet ship a dedicated `typescript-patterns` skill. For detailed TypeScript and JavaScript patterns, use `coding-standards` plus `frontend-patterns` or `backend-patterns` based on the code being reviewed.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
Review with the mindset: "Would this code pass review at a top TypeScript shop or well-maintained open-source project?"
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Answer a quick side question without interrupting or losing context from the current task. Resume work automatically after answering.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Aside Command
|
|
6
|
+
|
|
7
|
+
Ask a question mid-task and get an immediate, focused answer — then continue right where you left off. The current task, files, and context are never modified.
|
|
8
|
+
|
|
9
|
+
## When to Use
|
|
10
|
+
|
|
11
|
+
- You're curious about something while Claude is working and don't want to lose momentum
|
|
12
|
+
- You need a quick explanation of code Claude is currently editing
|
|
13
|
+
- You want a second opinion or clarification on a decision without derailing the task
|
|
14
|
+
- You need to understand an error, concept, or pattern before Claude proceeds
|
|
15
|
+
- You want to ask something unrelated to the current task without starting a new session
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
/aside <your question>
|
|
21
|
+
/aside what does this function actually return?
|
|
22
|
+
/aside is this pattern thread-safe?
|
|
23
|
+
/aside why are we using X instead of Y here?
|
|
24
|
+
/aside what's the difference between foo() and bar()?
|
|
25
|
+
/aside should we be worried about the N+1 query we just added?
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Process
|
|
29
|
+
|
|
30
|
+
### Step 1: Freeze the current task state
|
|
31
|
+
|
|
32
|
+
Before answering anything, mentally note:
|
|
33
|
+
- What is the active task? (what file, feature, or problem was being worked on)
|
|
34
|
+
- What step was in progress at the moment `/aw:aside` was invoked?
|
|
35
|
+
- What was about to happen next?
|
|
36
|
+
|
|
37
|
+
Do NOT touch, edit, create, or delete any files during the aside.
|
|
38
|
+
|
|
39
|
+
### Step 2: Answer the question directly
|
|
40
|
+
|
|
41
|
+
Answer the question in the most concise form that is still complete and useful.
|
|
42
|
+
|
|
43
|
+
- Lead with the answer, not the reasoning
|
|
44
|
+
- Keep it short — if a full explanation is needed, offer to go deeper after the task
|
|
45
|
+
- If the question is about the current file or code being worked on, reference it precisely (file path and line number if relevant)
|
|
46
|
+
- If answering requires reading a file, read it — but read only, never write
|
|
47
|
+
|
|
48
|
+
Format the response as:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
ASIDE: [restate the question briefly]
|
|
52
|
+
|
|
53
|
+
[Your answer here]
|
|
54
|
+
|
|
55
|
+
— Back to task: [one-line description of what was being done]
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Step 3: Resume the main task
|
|
59
|
+
|
|
60
|
+
After delivering the answer, immediately continue the active task from the exact point it was paused. Do not ask for permission to resume unless the aside answer revealed a blocker or a reason to reconsider the current approach (see Edge Cases).
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Edge Cases
|
|
65
|
+
|
|
66
|
+
**No question provided (`/aw:aside` with nothing after it):**
|
|
67
|
+
Respond:
|
|
68
|
+
```
|
|
69
|
+
ASIDE: no question provided
|
|
70
|
+
|
|
71
|
+
What would you like to know? (ask your question and I'll answer without losing the current task context)
|
|
72
|
+
|
|
73
|
+
— Back to task: [one-line description of what was being done]
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Question reveals a potential problem with the current task:**
|
|
77
|
+
Flag it clearly before resuming:
|
|
78
|
+
```
|
|
79
|
+
ASIDE: [answer]
|
|
80
|
+
|
|
81
|
+
⚠️ Note: This answer suggests [issue] with the current approach. Want to address this before continuing, or proceed as planned?
|
|
82
|
+
```
|
|
83
|
+
Wait for the user's decision before resuming.
|
|
84
|
+
|
|
85
|
+
**Question is actually a task redirect (not a side question):**
|
|
86
|
+
If the question implies changing what is being built (e.g., `/aside actually, let's use Redis instead`), clarify:
|
|
87
|
+
```
|
|
88
|
+
ASIDE: That sounds like a direction change, not just a side question.
|
|
89
|
+
Do you want to:
|
|
90
|
+
(a) Answer this as information only and keep the current plan
|
|
91
|
+
(b) Pause the current task and change approach
|
|
92
|
+
```
|
|
93
|
+
Wait for the user's answer — do not make assumptions.
|
|
94
|
+
|
|
95
|
+
**Question is about the currently open file or code:**
|
|
96
|
+
Answer from the live context. If the file was read earlier in the session, reference it directly. If not, read it now (read-only) and answer with a file:line reference.
|
|
97
|
+
|
|
98
|
+
**No active task (nothing in progress when `/aw:aside` is invoked):**
|
|
99
|
+
Still use the standard wrapper so the response shape stays consistent:
|
|
100
|
+
```
|
|
101
|
+
ASIDE: [restate the question briefly]
|
|
102
|
+
|
|
103
|
+
[Your answer here]
|
|
104
|
+
|
|
105
|
+
— Back to task: no active task to resume
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Question requires a long answer:**
|
|
109
|
+
Give the essential answer concisely, then offer:
|
|
110
|
+
```
|
|
111
|
+
That's the short version. Want a deeper explanation after we finish [current task]?
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Multiple `/aw:aside` questions in a row:**
|
|
115
|
+
Answer each one in sequence. After the last answer, resume the main task. Do not lose task state across a chain of asides.
|
|
116
|
+
|
|
117
|
+
**Aside answer implies a code change is needed:**
|
|
118
|
+
Note the change needed but do not make it during the aside:
|
|
119
|
+
```
|
|
120
|
+
ASIDE: [answer]
|
|
121
|
+
|
|
122
|
+
📝 Worth fixing: [what should be changed]. I'll flag this after the current task unless you want to address it now.
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Question is ambiguous or too vague:**
|
|
126
|
+
Ask one clarifying question — the shortest question that gets the information needed to answer. Do not ask multiple questions.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Example Output
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
User: /aw:aside what does fetchWithRetry() actually do?
|
|
134
|
+
|
|
135
|
+
ASIDE: what does fetchWithRetry() do?
|
|
136
|
+
|
|
137
|
+
fetchWithRetry() (src/api/retry.ts:12) attempts the request up to 3 times with
|
|
138
|
+
exponential backoff (250ms → 500ms → 1s). It only retries on 5xx responses and
|
|
139
|
+
network errors — 4xx errors are treated as final and not retried.
|
|
140
|
+
|
|
141
|
+
— Back to task: refactoring the auth middleware in src/middleware/auth.ts
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
User: /aw:aside is the approach we're taking thread-safe?
|
|
146
|
+
|
|
147
|
+
ASIDE: is the current approach thread-safe?
|
|
148
|
+
|
|
149
|
+
No — the shared cache object in src/cache/store.ts:34 is mutated without locking.
|
|
150
|
+
Under concurrent requests this is a race condition. It's low risk in a single-process
|
|
151
|
+
Node.js server but would be a real problem with worker threads or clustering.
|
|
152
|
+
|
|
153
|
+
⚠️ Note: This could affect the feature we're building. Want to address this now or continue and fix it in a follow-up?
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Notes
|
|
159
|
+
|
|
160
|
+
- Never modify files during an aside — read-only access only
|
|
161
|
+
- The aside is a conversation pause, not a new task — the original task must always resume
|
|
162
|
+
- Keep answers focused: the goal is to unblock the user quickly, not to deliver a lecture
|
|
163
|
+
- If an aside sparks a larger discussion, finish the current task first unless the aside reveals a blocker
|
|
164
|
+
- Asides are not saved to session files unless explicitly relevant to the task outcome
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aw:brainstorm
|
|
3
|
+
description: Legacy discovery helper used internally for ideation-heavy planning before the public plan surface was simplified.
|
|
4
|
+
argument-hint: "<idea or exploration request>"
|
|
5
|
+
status: internal
|
|
6
|
+
stage: plan
|
|
7
|
+
internal_skill: aw-brainstorm
|
|
8
|
+
replaced-by: aw:plan
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Brainstorm
|
|
12
|
+
|
|
13
|
+
`/aw:brainstorm` is now an internal helper.
|
|
14
|
+
|
|
15
|
+
Use `/aw:plan` as the public planning entrypoint.
|
|
16
|
+
This helper may still be used internally for discovery-heavy planning or ideation loops.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Build and Fix
|
|
2
|
+
|
|
3
|
+
Incrementally fix build and type errors with minimal, safe changes.
|
|
4
|
+
|
|
5
|
+
## Step 1: Detect Build System
|
|
6
|
+
|
|
7
|
+
Identify the project's build tool and run the build:
|
|
8
|
+
|
|
9
|
+
| Indicator | Build Command |
|
|
10
|
+
|-----------|---------------|
|
|
11
|
+
| `package.json` with `build` script | `npm run build` or `pnpm build` |
|
|
12
|
+
| `tsconfig.json` (TypeScript only) | `npx tsc --noEmit` |
|
|
13
|
+
| `Cargo.toml` | `cargo build 2>&1` |
|
|
14
|
+
| `pom.xml` | `mvn compile` |
|
|
15
|
+
| `build.gradle` | `./gradlew compileJava` |
|
|
16
|
+
| `go.mod` | `go build ./...` |
|
|
17
|
+
| `pyproject.toml` | `python -m compileall -q .` or `mypy .` |
|
|
18
|
+
|
|
19
|
+
## Step 2: Parse and Group Errors
|
|
20
|
+
|
|
21
|
+
1. Run the build command and capture stderr
|
|
22
|
+
2. Group errors by file path
|
|
23
|
+
3. Sort by dependency order (fix imports/types before logic errors)
|
|
24
|
+
4. Count total errors for progress tracking
|
|
25
|
+
|
|
26
|
+
## Step 3: Fix Loop (One Error at a Time)
|
|
27
|
+
|
|
28
|
+
For each error:
|
|
29
|
+
|
|
30
|
+
1. **Read the file** — Use Read tool to see error context (10 lines around the error)
|
|
31
|
+
2. **Diagnose** — Identify root cause (missing import, wrong type, syntax error)
|
|
32
|
+
3. **Fix minimally** — Use Edit tool for the smallest change that resolves the error
|
|
33
|
+
4. **Re-run build** — Verify the error is gone and no new errors introduced
|
|
34
|
+
5. **Move to next** — Continue with remaining errors
|
|
35
|
+
|
|
36
|
+
## Step 4: Guardrails
|
|
37
|
+
|
|
38
|
+
Stop and ask the user if:
|
|
39
|
+
- A fix introduces **more errors than it resolves**
|
|
40
|
+
- The **same error persists after 3 attempts** (likely a deeper issue)
|
|
41
|
+
- The fix requires **architectural changes** (not just a build fix)
|
|
42
|
+
- Build errors stem from **missing dependencies** (need `npm install`, `cargo add`, etc.)
|
|
43
|
+
|
|
44
|
+
## Step 5: Summary
|
|
45
|
+
|
|
46
|
+
Show results:
|
|
47
|
+
- Errors fixed (with file paths)
|
|
48
|
+
- Errors remaining (if any)
|
|
49
|
+
- New errors introduced (should be zero)
|
|
50
|
+
- Suggested next steps for unresolved issues
|
|
51
|
+
|
|
52
|
+
## Recovery Strategies
|
|
53
|
+
|
|
54
|
+
| Situation | Action |
|
|
55
|
+
|-----------|--------|
|
|
56
|
+
| Missing module/import | Check if package is installed; suggest install command |
|
|
57
|
+
| Type mismatch | Read both type definitions; fix the narrower type |
|
|
58
|
+
| Circular dependency | Identify cycle with import graph; suggest extraction |
|
|
59
|
+
| Version conflict | Check `package.json` / `Cargo.toml` for version constraints |
|
|
60
|
+
| Build tool misconfiguration | Read config file; compare with working defaults |
|
|
61
|
+
|
|
62
|
+
Fix one error at a time for safety. Prefer minimal diffs over refactoring.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## GHL Platform Integration
|
|
67
|
+
|
|
68
|
+
Also activate the matching platform domain family resolved by `using-aw-skills`.
|
|
69
|
+
|
|
70
|
+
For ALL activated agents: read frontmatter → load each skill from `skills:` array.
|