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,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aw:finish
|
|
3
|
+
description: Legacy completion helper retained for compatibility while the public release stage converges on aw:deploy.
|
|
4
|
+
argument-hint: "<verified work or release handoff>"
|
|
5
|
+
status: deprecated
|
|
6
|
+
stage: deploy
|
|
7
|
+
internal_skill: aw-finish
|
|
8
|
+
replaced-by: aw:deploy
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Finish
|
|
12
|
+
|
|
13
|
+
`/aw:finish` is a legacy helper.
|
|
14
|
+
|
|
15
|
+
Use `/aw:deploy` as the public release entrypoint.
|
|
16
|
+
This helper may remain available temporarily for compatibility or migration.
|
|
17
|
+
|
|
18
|
+
## Deprecation Timeline
|
|
19
|
+
|
|
20
|
+
`/aw:finish` is deprecated only as a public entrypoint.
|
|
21
|
+
The internal `aw-finish` skill remains active until `/aw:deploy` fully absorbs the branch-completion decision flow and workspace cleanup metadata.
|
|
22
|
+
Do not remove the compatibility helper before that migration is complete.
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Fix Go build errors, go vet warnings, and linter issues incrementally. Invokes the go-build-resolver agent for minimal, surgical fixes.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Go Build and Fix
|
|
6
|
+
|
|
7
|
+
This command invokes the **go-build-resolver** agent to incrementally fix Go build errors with minimal changes.
|
|
8
|
+
|
|
9
|
+
## What This Command Does
|
|
10
|
+
|
|
11
|
+
1. **Run Diagnostics**: Execute `go build`, `go vet`, `staticcheck`
|
|
12
|
+
2. **Parse Errors**: Group by file and sort by severity
|
|
13
|
+
3. **Fix Incrementally**: One error at a time
|
|
14
|
+
4. **Verify Each Fix**: Re-run build after each change
|
|
15
|
+
5. **Report Summary**: Show what was fixed and what remains
|
|
16
|
+
|
|
17
|
+
## When to Use
|
|
18
|
+
|
|
19
|
+
Use `/aw:go-build` when:
|
|
20
|
+
- `go build ./...` fails with errors
|
|
21
|
+
- `go vet ./...` reports issues
|
|
22
|
+
- `golangci-lint run` shows warnings
|
|
23
|
+
- Module dependencies are broken
|
|
24
|
+
- After pulling changes that break the build
|
|
25
|
+
|
|
26
|
+
## Diagnostic Commands Run
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Primary build check
|
|
30
|
+
go build ./...
|
|
31
|
+
|
|
32
|
+
# Static analysis
|
|
33
|
+
go vet ./...
|
|
34
|
+
|
|
35
|
+
# Extended linting (if available)
|
|
36
|
+
staticcheck ./...
|
|
37
|
+
golangci-lint run
|
|
38
|
+
|
|
39
|
+
# Module issues
|
|
40
|
+
go mod verify
|
|
41
|
+
go mod tidy -v
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Example Session
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
User: /aw:go-build
|
|
48
|
+
|
|
49
|
+
Agent:
|
|
50
|
+
# Go Build Resolution
|
|
51
|
+
|
|
52
|
+
## Initial Diagnostics
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
$ go build ./...
|
|
56
|
+
internal/service/user.go:25:15: undefined: UserRepository
|
|
57
|
+
internal/handler/api.go:42:9: cannot use x (type string) as type int
|
|
58
|
+
internal/handler/api.go:58:2: missing return at end of function
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Errors found: 3
|
|
62
|
+
|
|
63
|
+
## Fix 1: Undefined Identifier
|
|
64
|
+
|
|
65
|
+
File: internal/service/user.go:25
|
|
66
|
+
Error: undefined: UserRepository
|
|
67
|
+
Cause: Missing import
|
|
68
|
+
|
|
69
|
+
```go
|
|
70
|
+
// Added import
|
|
71
|
+
import "project/internal/repository"
|
|
72
|
+
|
|
73
|
+
// Changed
|
|
74
|
+
var repo UserRepository
|
|
75
|
+
// To
|
|
76
|
+
var repo repository.UserRepository
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
$ go build ./...
|
|
81
|
+
# 2 errors remaining
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Fix 2: Type Mismatch
|
|
85
|
+
|
|
86
|
+
File: internal/handler/api.go:42
|
|
87
|
+
Error: cannot use x (type string) as type int
|
|
88
|
+
|
|
89
|
+
```go
|
|
90
|
+
// Changed
|
|
91
|
+
count := params.Get("count")
|
|
92
|
+
// To
|
|
93
|
+
countStr := params.Get("count")
|
|
94
|
+
count, _ := strconv.Atoi(countStr)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
$ go build ./...
|
|
99
|
+
# 1 error remaining
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Fix 3: Missing Return
|
|
103
|
+
|
|
104
|
+
File: internal/handler/api.go:58
|
|
105
|
+
Error: missing return at end of function
|
|
106
|
+
|
|
107
|
+
```go
|
|
108
|
+
func GetUser(id string) (*User, error) {
|
|
109
|
+
if id == "" {
|
|
110
|
+
return nil, ErrInvalidID
|
|
111
|
+
}
|
|
112
|
+
user := findUser(id)
|
|
113
|
+
// Added missing return
|
|
114
|
+
return user, nil
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
$ go build ./...
|
|
120
|
+
# Build successful!
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Final Verification
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
$ go vet ./...
|
|
127
|
+
# No issues
|
|
128
|
+
|
|
129
|
+
$ go test ./...
|
|
130
|
+
ok project/internal/service 0.015s
|
|
131
|
+
ok project/internal/handler 0.023s
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Summary
|
|
135
|
+
|
|
136
|
+
| Metric | Count |
|
|
137
|
+
|--------|-------|
|
|
138
|
+
| Build errors fixed | 3 |
|
|
139
|
+
| Vet warnings fixed | 0 |
|
|
140
|
+
| Files modified | 2 |
|
|
141
|
+
| Remaining issues | 0 |
|
|
142
|
+
|
|
143
|
+
Build Status: ✅ SUCCESS
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Common Errors Fixed
|
|
147
|
+
|
|
148
|
+
| Error | Typical Fix |
|
|
149
|
+
|-------|-------------|
|
|
150
|
+
| `undefined: X` | Add import or fix typo |
|
|
151
|
+
| `cannot use X as Y` | Type conversion or fix assignment |
|
|
152
|
+
| `missing return` | Add return statement |
|
|
153
|
+
| `X does not implement Y` | Add missing method |
|
|
154
|
+
| `import cycle` | Restructure packages |
|
|
155
|
+
| `declared but not used` | Remove or use variable |
|
|
156
|
+
| `cannot find package` | `go get` or `go mod tidy` |
|
|
157
|
+
|
|
158
|
+
## Fix Strategy
|
|
159
|
+
|
|
160
|
+
1. **Build errors first** - Code must compile
|
|
161
|
+
2. **Vet warnings second** - Fix suspicious constructs
|
|
162
|
+
3. **Lint warnings third** - Style and best practices
|
|
163
|
+
4. **One fix at a time** - Verify each change
|
|
164
|
+
5. **Minimal changes** - Don't refactor, just fix
|
|
165
|
+
|
|
166
|
+
## Stop Conditions
|
|
167
|
+
|
|
168
|
+
The agent will stop and report if:
|
|
169
|
+
- Same error persists after 3 attempts
|
|
170
|
+
- Fix introduces more errors
|
|
171
|
+
- Requires architectural changes
|
|
172
|
+
- Missing external dependencies
|
|
173
|
+
|
|
174
|
+
## Related Commands
|
|
175
|
+
|
|
176
|
+
- `/aw:go-test` - Run tests after build succeeds
|
|
177
|
+
- `/aw:go-review` - Review code quality
|
|
178
|
+
- `/aw:test` - Run targeted QA and proof
|
|
179
|
+
- `/aw:review` - Run readiness and findings review
|
|
180
|
+
|
|
181
|
+
## Related
|
|
182
|
+
|
|
183
|
+
- Agent: `agents/go-build-resolver.md`
|
|
184
|
+
- Skill: `skills/golang-patterns/`
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Comprehensive Go code review for idiomatic patterns, concurrency safety, error handling, and security. Invokes the go-reviewer agent.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Go Code Review
|
|
6
|
+
|
|
7
|
+
This command invokes the **go-reviewer** agent for comprehensive Go-specific code review.
|
|
8
|
+
|
|
9
|
+
## What This Command Does
|
|
10
|
+
|
|
11
|
+
1. **Identify Go Changes**: Find modified `.go` files via `git diff`
|
|
12
|
+
2. **Run Static Analysis**: Execute `go vet`, `staticcheck`, and `golangci-lint`
|
|
13
|
+
3. **Security Scan**: Check for SQL injection, command injection, race conditions
|
|
14
|
+
4. **Concurrency Review**: Analyze goroutine safety, channel usage, mutex patterns
|
|
15
|
+
5. **Idiomatic Go Check**: Verify code follows Go conventions and best practices
|
|
16
|
+
6. **Generate Report**: Categorize issues by severity
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
|
|
20
|
+
Use `/aw:go-review` when:
|
|
21
|
+
- After writing or modifying Go code
|
|
22
|
+
- Before committing Go changes
|
|
23
|
+
- Reviewing pull requests with Go code
|
|
24
|
+
- Onboarding to a new Go codebase
|
|
25
|
+
- Learning idiomatic Go patterns
|
|
26
|
+
|
|
27
|
+
## Review Categories
|
|
28
|
+
|
|
29
|
+
### CRITICAL (Must Fix)
|
|
30
|
+
- SQL/Command injection vulnerabilities
|
|
31
|
+
- Race conditions without synchronization
|
|
32
|
+
- Goroutine leaks
|
|
33
|
+
- Hardcoded credentials
|
|
34
|
+
- Unsafe pointer usage
|
|
35
|
+
- Ignored errors in critical paths
|
|
36
|
+
|
|
37
|
+
### HIGH (Should Fix)
|
|
38
|
+
- Missing error wrapping with context
|
|
39
|
+
- Panic instead of error returns
|
|
40
|
+
- Context not propagated
|
|
41
|
+
- Unbuffered channels causing deadlocks
|
|
42
|
+
- Interface not satisfied errors
|
|
43
|
+
- Missing mutex protection
|
|
44
|
+
|
|
45
|
+
### MEDIUM (Consider)
|
|
46
|
+
- Non-idiomatic code patterns
|
|
47
|
+
- Missing godoc comments on exports
|
|
48
|
+
- Inefficient string concatenation
|
|
49
|
+
- Slice not preallocated
|
|
50
|
+
- Table-driven tests not used
|
|
51
|
+
|
|
52
|
+
## Automated Checks Run
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Static analysis
|
|
56
|
+
go vet ./...
|
|
57
|
+
|
|
58
|
+
# Advanced checks (if installed)
|
|
59
|
+
staticcheck ./...
|
|
60
|
+
golangci-lint run
|
|
61
|
+
|
|
62
|
+
# Race detection
|
|
63
|
+
go build -race ./...
|
|
64
|
+
|
|
65
|
+
# Security vulnerabilities
|
|
66
|
+
govulncheck ./...
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Example Usage
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
User: /aw:go-review
|
|
73
|
+
|
|
74
|
+
Agent:
|
|
75
|
+
# Go Code Review Report
|
|
76
|
+
|
|
77
|
+
## Files Reviewed
|
|
78
|
+
- internal/handler/user.go (modified)
|
|
79
|
+
- internal/service/auth.go (modified)
|
|
80
|
+
|
|
81
|
+
## Static Analysis Results
|
|
82
|
+
✓ go vet: No issues
|
|
83
|
+
✓ staticcheck: No issues
|
|
84
|
+
|
|
85
|
+
## Issues Found
|
|
86
|
+
|
|
87
|
+
[CRITICAL] Race Condition
|
|
88
|
+
File: internal/service/auth.go:45
|
|
89
|
+
Issue: Shared map accessed without synchronization
|
|
90
|
+
```go
|
|
91
|
+
var cache = map[string]*Session{} // Concurrent access!
|
|
92
|
+
|
|
93
|
+
func GetSession(id string) *Session {
|
|
94
|
+
return cache[id] // Race condition
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
Fix: Use sync.RWMutex or sync.Map
|
|
98
|
+
```go
|
|
99
|
+
var (
|
|
100
|
+
cache = map[string]*Session{}
|
|
101
|
+
cacheMu sync.RWMutex
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
func GetSession(id string) *Session {
|
|
105
|
+
cacheMu.RLock()
|
|
106
|
+
defer cacheMu.RUnlock()
|
|
107
|
+
return cache[id]
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
[HIGH] Missing Error Context
|
|
112
|
+
File: internal/handler/user.go:28
|
|
113
|
+
Issue: Error returned without context
|
|
114
|
+
```go
|
|
115
|
+
return err // No context
|
|
116
|
+
```
|
|
117
|
+
Fix: Wrap with context
|
|
118
|
+
```go
|
|
119
|
+
return fmt.Errorf("get user %s: %w", userID, err)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Summary
|
|
123
|
+
- CRITICAL: 1
|
|
124
|
+
- HIGH: 1
|
|
125
|
+
- MEDIUM: 0
|
|
126
|
+
|
|
127
|
+
Recommendation: ❌ Block merge until CRITICAL issue is fixed
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Approval Criteria
|
|
131
|
+
|
|
132
|
+
| Status | Condition |
|
|
133
|
+
|--------|-----------|
|
|
134
|
+
| ✅ Approve | No CRITICAL or HIGH issues |
|
|
135
|
+
| ⚠️ Warning | Only MEDIUM issues (merge with caution) |
|
|
136
|
+
| ❌ Block | CRITICAL or HIGH issues found |
|
|
137
|
+
|
|
138
|
+
## Integration with Other Commands
|
|
139
|
+
|
|
140
|
+
- Use `/aw:go-test` first to ensure tests pass
|
|
141
|
+
- Use `/aw:go-build` if build errors occur
|
|
142
|
+
- Use `/aw:go-review` before committing
|
|
143
|
+
- Use `/aw:code-review` for non-Go specific concerns
|
|
144
|
+
|
|
145
|
+
## Related
|
|
146
|
+
|
|
147
|
+
- Agent: `agents/go-reviewer.md`
|
|
148
|
+
- Skills: `skills/golang-patterns/`, `skills/golang-testing/`
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Enforce TDD workflow for Go. Write table-driven tests first, then implement. Verify 80%+ coverage with go test -cover.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Go TDD Command
|
|
6
|
+
|
|
7
|
+
This command enforces test-driven development methodology for Go code using idiomatic Go testing patterns.
|
|
8
|
+
|
|
9
|
+
## What This Command Does
|
|
10
|
+
|
|
11
|
+
1. **Define Types/Interfaces**: Scaffold function signatures first
|
|
12
|
+
2. **Write Table-Driven Tests**: Create comprehensive test cases (RED)
|
|
13
|
+
3. **Run Tests**: Verify tests fail for the right reason
|
|
14
|
+
4. **Implement Code**: Write minimal code to pass (GREEN)
|
|
15
|
+
5. **Refactor**: Improve while keeping tests green
|
|
16
|
+
6. **Check Coverage**: Ensure 80%+ coverage
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
|
|
20
|
+
Use `/aw:go-test` when:
|
|
21
|
+
- Implementing new Go functions
|
|
22
|
+
- Adding test coverage to existing code
|
|
23
|
+
- Fixing bugs (write failing test first)
|
|
24
|
+
- Building critical business logic
|
|
25
|
+
- Learning TDD workflow in Go
|
|
26
|
+
|
|
27
|
+
## TDD Cycle
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
RED → Write failing table-driven test
|
|
31
|
+
GREEN → Implement minimal code to pass
|
|
32
|
+
REFACTOR → Improve code, tests stay green
|
|
33
|
+
REPEAT → Next test case
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Example Session
|
|
37
|
+
|
|
38
|
+
````
|
|
39
|
+
User: /aw:go-test I need a function to validate email addresses
|
|
40
|
+
|
|
41
|
+
Agent:
|
|
42
|
+
# TDD Session: Email Validator
|
|
43
|
+
|
|
44
|
+
## Step 1: Define Interface
|
|
45
|
+
|
|
46
|
+
```go
|
|
47
|
+
// validator/email.go
|
|
48
|
+
package validator
|
|
49
|
+
|
|
50
|
+
// ValidateEmail checks if the given string is a valid email address.
|
|
51
|
+
// Returns nil if valid, error describing the issue otherwise.
|
|
52
|
+
func ValidateEmail(email string) error {
|
|
53
|
+
panic("not implemented")
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Step 2: Write Table-Driven Tests (RED)
|
|
58
|
+
|
|
59
|
+
```go
|
|
60
|
+
// validator/email_test.go
|
|
61
|
+
package validator
|
|
62
|
+
|
|
63
|
+
import (
|
|
64
|
+
"testing"
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
func TestValidateEmail(t *testing.T) {
|
|
68
|
+
tests := []struct {
|
|
69
|
+
name string
|
|
70
|
+
email string
|
|
71
|
+
wantErr bool
|
|
72
|
+
}{
|
|
73
|
+
// Valid emails
|
|
74
|
+
{"simple email", "user@example.com", false},
|
|
75
|
+
{"with subdomain", "user@mail.example.com", false},
|
|
76
|
+
{"with plus", "user+tag@example.com", false},
|
|
77
|
+
{"with dots", "first.last@example.com", false},
|
|
78
|
+
|
|
79
|
+
// Invalid emails
|
|
80
|
+
{"empty string", "", true},
|
|
81
|
+
{"no at sign", "userexample.com", true},
|
|
82
|
+
{"no domain", "user@", true},
|
|
83
|
+
{"no local part", "@example.com", true},
|
|
84
|
+
{"double at", "user@@example.com", true},
|
|
85
|
+
{"spaces", "user @example.com", true},
|
|
86
|
+
{"no tld", "user@example", true},
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
for _, tt := range tests {
|
|
90
|
+
t.Run(tt.name, func(t *testing.T) {
|
|
91
|
+
err := ValidateEmail(tt.email)
|
|
92
|
+
if tt.wantErr && err == nil {
|
|
93
|
+
t.Errorf("ValidateEmail(%q) = nil; want error", tt.email)
|
|
94
|
+
}
|
|
95
|
+
if !tt.wantErr && err != nil {
|
|
96
|
+
t.Errorf("ValidateEmail(%q) = %v; want nil", tt.email, err)
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Step 3: Run Tests - Verify FAIL
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
$ go test ./validator/...
|
|
107
|
+
|
|
108
|
+
--- FAIL: TestValidateEmail (0.00s)
|
|
109
|
+
--- FAIL: TestValidateEmail/simple_email (0.00s)
|
|
110
|
+
panic: not implemented
|
|
111
|
+
|
|
112
|
+
FAIL
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
✓ Tests fail as expected (panic).
|
|
116
|
+
|
|
117
|
+
## Step 4: Implement Minimal Code (GREEN)
|
|
118
|
+
|
|
119
|
+
```go
|
|
120
|
+
// validator/email.go
|
|
121
|
+
package validator
|
|
122
|
+
|
|
123
|
+
import (
|
|
124
|
+
"errors"
|
|
125
|
+
"regexp"
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
var emailRegex = regexp.MustCompile(`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`)
|
|
129
|
+
|
|
130
|
+
var (
|
|
131
|
+
ErrEmailEmpty = errors.New("email cannot be empty")
|
|
132
|
+
ErrEmailInvalid = errors.New("email format is invalid")
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
func ValidateEmail(email string) error {
|
|
136
|
+
if email == "" {
|
|
137
|
+
return ErrEmailEmpty
|
|
138
|
+
}
|
|
139
|
+
if !emailRegex.MatchString(email) {
|
|
140
|
+
return ErrEmailInvalid
|
|
141
|
+
}
|
|
142
|
+
return nil
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Step 5: Run Tests - Verify PASS
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
$ go test ./validator/...
|
|
150
|
+
|
|
151
|
+
PASS
|
|
152
|
+
ok project/validator 0.003s
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
✓ All tests passing!
|
|
156
|
+
|
|
157
|
+
## Step 6: Check Coverage
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
$ go test -cover ./validator/...
|
|
161
|
+
|
|
162
|
+
PASS
|
|
163
|
+
coverage: 100.0% of statements
|
|
164
|
+
ok project/validator 0.003s
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
✓ Coverage: 100%
|
|
168
|
+
|
|
169
|
+
## TDD Complete!
|
|
170
|
+
````
|
|
171
|
+
|
|
172
|
+
## Test Patterns
|
|
173
|
+
|
|
174
|
+
### Table-Driven Tests
|
|
175
|
+
```go
|
|
176
|
+
tests := []struct {
|
|
177
|
+
name string
|
|
178
|
+
input InputType
|
|
179
|
+
want OutputType
|
|
180
|
+
wantErr bool
|
|
181
|
+
}{
|
|
182
|
+
{"case 1", input1, want1, false},
|
|
183
|
+
{"case 2", input2, want2, true},
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
for _, tt := range tests {
|
|
187
|
+
t.Run(tt.name, func(t *testing.T) {
|
|
188
|
+
got, err := Function(tt.input)
|
|
189
|
+
// assertions
|
|
190
|
+
})
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Parallel Tests
|
|
195
|
+
```go
|
|
196
|
+
for _, tt := range tests {
|
|
197
|
+
tt := tt // Capture
|
|
198
|
+
t.Run(tt.name, func(t *testing.T) {
|
|
199
|
+
t.Parallel()
|
|
200
|
+
// test body
|
|
201
|
+
})
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Test Helpers
|
|
206
|
+
```go
|
|
207
|
+
func setupTestDB(t *testing.T) *sql.DB {
|
|
208
|
+
t.Helper()
|
|
209
|
+
db := createDB()
|
|
210
|
+
t.Cleanup(func() { db.Close() })
|
|
211
|
+
return db
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Coverage Commands
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
# Basic coverage
|
|
219
|
+
go test -cover ./...
|
|
220
|
+
|
|
221
|
+
# Coverage profile
|
|
222
|
+
go test -coverprofile=coverage.out ./...
|
|
223
|
+
|
|
224
|
+
# View in browser
|
|
225
|
+
go tool cover -html=coverage.out
|
|
226
|
+
|
|
227
|
+
# Coverage by function
|
|
228
|
+
go tool cover -func=coverage.out
|
|
229
|
+
|
|
230
|
+
# With race detection
|
|
231
|
+
go test -race -cover ./...
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Coverage Targets
|
|
235
|
+
|
|
236
|
+
| Code Type | Target |
|
|
237
|
+
|-----------|--------|
|
|
238
|
+
| Critical business logic | 100% |
|
|
239
|
+
| Public APIs | 90%+ |
|
|
240
|
+
| General code | 80%+ |
|
|
241
|
+
| Generated code | Exclude |
|
|
242
|
+
|
|
243
|
+
## TDD Best Practices
|
|
244
|
+
|
|
245
|
+
**DO:**
|
|
246
|
+
- Write test FIRST, before any implementation
|
|
247
|
+
- Run tests after each change
|
|
248
|
+
- Use table-driven tests for comprehensive coverage
|
|
249
|
+
- Test behavior, not implementation details
|
|
250
|
+
- Include edge cases (empty, nil, max values)
|
|
251
|
+
|
|
252
|
+
**DON'T:**
|
|
253
|
+
- Write implementation before tests
|
|
254
|
+
- Skip the RED phase
|
|
255
|
+
- Test private functions directly
|
|
256
|
+
- Use `time.Sleep` in tests
|
|
257
|
+
- Ignore flaky tests
|
|
258
|
+
|
|
259
|
+
## Related Commands
|
|
260
|
+
|
|
261
|
+
- `/aw:go-build` - Fix build errors
|
|
262
|
+
- `/aw:go-review` - Review code after implementation
|
|
263
|
+
- `/aw:test` - Run targeted QA and proof
|
|
264
|
+
- `/aw:review` - Run readiness and findings review
|
|
265
|
+
|
|
266
|
+
## Related
|
|
267
|
+
|
|
268
|
+
- Skill: `skills/golang-testing/`
|
|
269
|
+
- Skill: `skills/tdd-workflow/`
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Fix Gradle build errors for Android and KMP projects
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Gradle Build Fix
|
|
6
|
+
|
|
7
|
+
Incrementally fix Gradle build and compilation errors for Android and Kotlin Multiplatform projects.
|
|
8
|
+
|
|
9
|
+
## Step 1: Detect Build Configuration
|
|
10
|
+
|
|
11
|
+
Identify the project type and run the appropriate build:
|
|
12
|
+
|
|
13
|
+
| Indicator | Build Command |
|
|
14
|
+
|-----------|---------------|
|
|
15
|
+
| `build.gradle.kts` + `composeApp/` (KMP) | `./gradlew composeApp:compileKotlinMetadata 2>&1` |
|
|
16
|
+
| `build.gradle.kts` + `app/` (Android) | `./gradlew app:compileDebugKotlin 2>&1` |
|
|
17
|
+
| `settings.gradle.kts` with modules | `./gradlew assemble 2>&1` |
|
|
18
|
+
| Detekt configured | `./gradlew detekt 2>&1` |
|
|
19
|
+
|
|
20
|
+
Also check `gradle.properties` and `local.properties` for configuration.
|
|
21
|
+
|
|
22
|
+
## Step 2: Parse and Group Errors
|
|
23
|
+
|
|
24
|
+
1. Run the build command and capture output
|
|
25
|
+
2. Separate Kotlin compilation errors from Gradle configuration errors
|
|
26
|
+
3. Group by module and file path
|
|
27
|
+
4. Sort: configuration errors first, then compilation errors by dependency order
|
|
28
|
+
|
|
29
|
+
## Step 3: Fix Loop
|
|
30
|
+
|
|
31
|
+
For each error:
|
|
32
|
+
|
|
33
|
+
1. **Read the file** — Full context around the error line
|
|
34
|
+
2. **Diagnose** — Common categories:
|
|
35
|
+
- Missing import or unresolved reference
|
|
36
|
+
- Type mismatch or incompatible types
|
|
37
|
+
- Missing dependency in `build.gradle.kts`
|
|
38
|
+
- Expect/actual mismatch (KMP)
|
|
39
|
+
- Compose compiler error
|
|
40
|
+
3. **Fix minimally** — Smallest change that resolves the error
|
|
41
|
+
4. **Re-run build** — Verify fix and check for new errors
|
|
42
|
+
5. **Continue** — Move to next error
|
|
43
|
+
|
|
44
|
+
## Step 4: Guardrails
|
|
45
|
+
|
|
46
|
+
Stop and ask the user if:
|
|
47
|
+
- Fix introduces more errors than it resolves
|
|
48
|
+
- Same error persists after 3 attempts
|
|
49
|
+
- Error requires adding new dependencies or changing module structure
|
|
50
|
+
- Gradle sync itself fails (configuration-phase error)
|
|
51
|
+
- Error is in generated code (Room, SQLDelight, KSP)
|
|
52
|
+
|
|
53
|
+
## Step 5: Summary
|
|
54
|
+
|
|
55
|
+
Report:
|
|
56
|
+
- Errors fixed (module, file, description)
|
|
57
|
+
- Errors remaining
|
|
58
|
+
- New errors introduced (should be zero)
|
|
59
|
+
- Suggested next steps
|
|
60
|
+
|
|
61
|
+
## Common Gradle/KMP Fixes
|
|
62
|
+
|
|
63
|
+
| Error | Fix |
|
|
64
|
+
|-------|-----|
|
|
65
|
+
| Unresolved reference in `commonMain` | Check if the dependency is in `commonMain.dependencies {}` |
|
|
66
|
+
| Expect declaration without actual | Add `actual` implementation in each platform source set |
|
|
67
|
+
| Compose compiler version mismatch | Align Kotlin and Compose compiler versions in `libs.versions.toml` |
|
|
68
|
+
| Duplicate class | Check for conflicting dependencies with `./gradlew dependencies` |
|
|
69
|
+
| KSP error | Run `./gradlew kspCommonMainKotlinMetadata` to regenerate |
|
|
70
|
+
| Configuration cache issue | Check for non-serializable task inputs |
|