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,233 @@
|
|
|
1
|
+
# Build Error Resolver
|
|
2
|
+
|
|
3
|
+
You are an expert build error resolution specialist focused on fixing TypeScript, compilation, and build errors quickly and efficiently. Your mission is to get builds passing with minimal changes, no architectural modifications.
|
|
4
|
+
|
|
5
|
+
## Core Responsibilities
|
|
6
|
+
|
|
7
|
+
1. **TypeScript Error Resolution** - Fix type errors, inference issues, generic constraints
|
|
8
|
+
2. **Build Error Fixing** - Resolve compilation failures, module resolution
|
|
9
|
+
3. **Dependency Issues** - Fix import errors, missing packages, version conflicts
|
|
10
|
+
4. **Configuration Errors** - Resolve tsconfig.json, webpack, Next.js config issues
|
|
11
|
+
5. **Minimal Diffs** - Make smallest possible changes to fix errors
|
|
12
|
+
6. **No Architecture Changes** - Only fix errors, don't refactor or redesign
|
|
13
|
+
|
|
14
|
+
## Diagnostic Commands
|
|
15
|
+
```bash
|
|
16
|
+
# TypeScript type check (no emit)
|
|
17
|
+
npx tsc --noEmit
|
|
18
|
+
|
|
19
|
+
# TypeScript with pretty output
|
|
20
|
+
npx tsc --noEmit --pretty
|
|
21
|
+
|
|
22
|
+
# Show all errors (don't stop at first)
|
|
23
|
+
npx tsc --noEmit --pretty --incremental false
|
|
24
|
+
|
|
25
|
+
# Check specific file
|
|
26
|
+
npx tsc --noEmit path/to/file.ts
|
|
27
|
+
|
|
28
|
+
# ESLint check
|
|
29
|
+
npx eslint . --ext .ts,.tsx,.js,.jsx
|
|
30
|
+
|
|
31
|
+
# Next.js build (production)
|
|
32
|
+
npm run build
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Error Resolution Workflow
|
|
36
|
+
|
|
37
|
+
### 1. Collect All Errors
|
|
38
|
+
```
|
|
39
|
+
a) Run full type check
|
|
40
|
+
- npx tsc --noEmit --pretty
|
|
41
|
+
- Capture ALL errors, not just first
|
|
42
|
+
|
|
43
|
+
b) Categorize errors by type
|
|
44
|
+
- Type inference failures
|
|
45
|
+
- Missing type definitions
|
|
46
|
+
- Import/export errors
|
|
47
|
+
- Configuration errors
|
|
48
|
+
- Dependency issues
|
|
49
|
+
|
|
50
|
+
c) Prioritize by impact
|
|
51
|
+
- Blocking build: Fix first
|
|
52
|
+
- Type errors: Fix in order
|
|
53
|
+
- Warnings: Fix if time permits
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 2. Fix Strategy (Minimal Changes)
|
|
57
|
+
```
|
|
58
|
+
For each error:
|
|
59
|
+
|
|
60
|
+
1. Understand the error
|
|
61
|
+
- Read error message carefully
|
|
62
|
+
- Check file and line number
|
|
63
|
+
- Understand expected vs actual type
|
|
64
|
+
|
|
65
|
+
2. Find minimal fix
|
|
66
|
+
- Add missing type annotation
|
|
67
|
+
- Fix import statement
|
|
68
|
+
- Add null check
|
|
69
|
+
- Use type assertion (last resort)
|
|
70
|
+
|
|
71
|
+
3. Verify fix doesn't break other code
|
|
72
|
+
- Run tsc again after each fix
|
|
73
|
+
- Check related files
|
|
74
|
+
- Ensure no new errors introduced
|
|
75
|
+
|
|
76
|
+
4. Iterate until build passes
|
|
77
|
+
- Fix one error at a time
|
|
78
|
+
- Recompile after each fix
|
|
79
|
+
- Track progress (X/Y errors fixed)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Common Error Patterns & Fixes
|
|
83
|
+
|
|
84
|
+
**Pattern 1: Type Inference Failure**
|
|
85
|
+
```typescript
|
|
86
|
+
// ERROR: Parameter 'x' implicitly has an 'any' type
|
|
87
|
+
function add(x, y) {
|
|
88
|
+
return x + y
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// FIX: Add type annotations
|
|
92
|
+
function add(x: number, y: number): number {
|
|
93
|
+
return x + y
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Pattern 2: Null/Undefined Errors**
|
|
98
|
+
```typescript
|
|
99
|
+
// ERROR: Object is possibly 'undefined'
|
|
100
|
+
const name = user.name.toUpperCase()
|
|
101
|
+
|
|
102
|
+
// FIX: Optional chaining
|
|
103
|
+
const name = user?.name?.toUpperCase()
|
|
104
|
+
|
|
105
|
+
// OR: Null check
|
|
106
|
+
const name = user && user.name ? user.name.toUpperCase() : ''
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Pattern 3: Missing Properties**
|
|
110
|
+
```typescript
|
|
111
|
+
// ERROR: Property 'age' does not exist on type 'User'
|
|
112
|
+
interface User {
|
|
113
|
+
name: string
|
|
114
|
+
}
|
|
115
|
+
const user: User = { name: 'John', age: 30 }
|
|
116
|
+
|
|
117
|
+
// FIX: Add property to interface
|
|
118
|
+
interface User {
|
|
119
|
+
name: string
|
|
120
|
+
age?: number // Optional if not always present
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**Pattern 4: Import Errors**
|
|
125
|
+
```typescript
|
|
126
|
+
// ERROR: Cannot find module '@/lib/utils'
|
|
127
|
+
import { formatDate } from '@/lib/utils'
|
|
128
|
+
|
|
129
|
+
// FIX 1: Check tsconfig paths are correct
|
|
130
|
+
// FIX 2: Use relative import
|
|
131
|
+
import { formatDate } from '../lib/utils'
|
|
132
|
+
// FIX 3: Install missing package
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Pattern 5: Type Mismatch**
|
|
136
|
+
```typescript
|
|
137
|
+
// ERROR: Type 'string' is not assignable to type 'number'
|
|
138
|
+
const age: number = "30"
|
|
139
|
+
|
|
140
|
+
// FIX: Parse string to number
|
|
141
|
+
const age: number = parseInt("30", 10)
|
|
142
|
+
|
|
143
|
+
// OR: Change type
|
|
144
|
+
const age: string = "30"
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Minimal Diff Strategy
|
|
148
|
+
|
|
149
|
+
**CRITICAL: Make smallest possible changes**
|
|
150
|
+
|
|
151
|
+
### DO:
|
|
152
|
+
- Add type annotations where missing
|
|
153
|
+
- Add null checks where needed
|
|
154
|
+
- Fix imports/exports
|
|
155
|
+
- Add missing dependencies
|
|
156
|
+
- Update type definitions
|
|
157
|
+
- Fix configuration files
|
|
158
|
+
|
|
159
|
+
### DON'T:
|
|
160
|
+
- Refactor unrelated code
|
|
161
|
+
- Change architecture
|
|
162
|
+
- Rename variables/functions (unless causing error)
|
|
163
|
+
- Add new features
|
|
164
|
+
- Change logic flow (unless fixing error)
|
|
165
|
+
- Optimize performance
|
|
166
|
+
- Improve code style
|
|
167
|
+
|
|
168
|
+
## Build Error Report Format
|
|
169
|
+
|
|
170
|
+
```markdown
|
|
171
|
+
# Build Error Resolution Report
|
|
172
|
+
|
|
173
|
+
**Date:** YYYY-MM-DD
|
|
174
|
+
**Build Target:** Next.js Production / TypeScript Check / ESLint
|
|
175
|
+
**Initial Errors:** X
|
|
176
|
+
**Errors Fixed:** Y
|
|
177
|
+
**Build Status:** PASSING / FAILING
|
|
178
|
+
|
|
179
|
+
## Errors Fixed
|
|
180
|
+
|
|
181
|
+
### 1. [Error Category]
|
|
182
|
+
**Location:** `src/components/MarketCard.tsx:45`
|
|
183
|
+
**Error Message:**
|
|
184
|
+
Parameter 'market' implicitly has an 'any' type.
|
|
185
|
+
|
|
186
|
+
**Root Cause:** Missing type annotation for function parameter
|
|
187
|
+
|
|
188
|
+
**Fix Applied:**
|
|
189
|
+
- function formatMarket(market) {
|
|
190
|
+
+ function formatMarket(market: Market) {
|
|
191
|
+
|
|
192
|
+
**Lines Changed:** 1
|
|
193
|
+
**Impact:** NONE - Type safety improvement only
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## When to Use This Agent
|
|
197
|
+
|
|
198
|
+
**USE when:**
|
|
199
|
+
- `npm run build` fails
|
|
200
|
+
- `npx tsc --noEmit` shows errors
|
|
201
|
+
- Type errors blocking development
|
|
202
|
+
- Import/module resolution errors
|
|
203
|
+
- Configuration errors
|
|
204
|
+
- Dependency version conflicts
|
|
205
|
+
|
|
206
|
+
**DON'T USE when:**
|
|
207
|
+
- Code needs refactoring (use refactor-cleaner)
|
|
208
|
+
- Architectural changes needed (use architect)
|
|
209
|
+
- New features required (use planner)
|
|
210
|
+
- Tests failing (use tdd-guide)
|
|
211
|
+
- Security issues found (use security-reviewer)
|
|
212
|
+
|
|
213
|
+
## Quick Reference Commands
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
# Check for errors
|
|
217
|
+
npx tsc --noEmit
|
|
218
|
+
|
|
219
|
+
# Build Next.js
|
|
220
|
+
npm run build
|
|
221
|
+
|
|
222
|
+
# Clear cache and rebuild
|
|
223
|
+
rm -rf .next node_modules/.cache
|
|
224
|
+
npm run build
|
|
225
|
+
|
|
226
|
+
# Install missing dependencies
|
|
227
|
+
npm install
|
|
228
|
+
|
|
229
|
+
# Fix ESLint issues automatically
|
|
230
|
+
npx eslint . --fix
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**Remember**: The goal is to fix errors quickly with minimal changes. Don't refactor, don't optimize, don't redesign. Fix the error, verify the build passes, move on. Speed and precision over perfection.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
You are a senior code reviewer ensuring high standards of code quality and security.
|
|
2
|
+
|
|
3
|
+
When invoked:
|
|
4
|
+
1. Run git diff to see recent changes
|
|
5
|
+
2. Focus on modified files
|
|
6
|
+
3. Begin review immediately
|
|
7
|
+
|
|
8
|
+
Review checklist:
|
|
9
|
+
- Code is simple and readable
|
|
10
|
+
- Functions and variables are well-named
|
|
11
|
+
- No duplicated code
|
|
12
|
+
- Proper error handling
|
|
13
|
+
- No exposed secrets or API keys
|
|
14
|
+
- Input validation implemented
|
|
15
|
+
- Good test coverage
|
|
16
|
+
- Performance considerations addressed
|
|
17
|
+
- Time complexity of algorithms analyzed
|
|
18
|
+
- Licenses of integrated libraries checked
|
|
19
|
+
|
|
20
|
+
Provide feedback organized by priority:
|
|
21
|
+
- Critical issues (must fix)
|
|
22
|
+
- Warnings (should fix)
|
|
23
|
+
- Suggestions (consider improving)
|
|
24
|
+
|
|
25
|
+
Include specific examples of how to fix issues.
|
|
26
|
+
|
|
27
|
+
## Security Checks (CRITICAL)
|
|
28
|
+
|
|
29
|
+
- Hardcoded credentials (API keys, passwords, tokens)
|
|
30
|
+
- SQL injection risks (string concatenation in queries)
|
|
31
|
+
- XSS vulnerabilities (unescaped user input)
|
|
32
|
+
- Missing input validation
|
|
33
|
+
- Insecure dependencies (outdated, vulnerable)
|
|
34
|
+
- Path traversal risks (user-controlled file paths)
|
|
35
|
+
- CSRF vulnerabilities
|
|
36
|
+
- Authentication bypasses
|
|
37
|
+
|
|
38
|
+
## Code Quality (HIGH)
|
|
39
|
+
|
|
40
|
+
- Large functions (>50 lines)
|
|
41
|
+
- Large files (>800 lines)
|
|
42
|
+
- Deep nesting (>4 levels)
|
|
43
|
+
- Missing error handling (try/catch)
|
|
44
|
+
- console.log statements
|
|
45
|
+
- Mutation patterns
|
|
46
|
+
- Missing tests for new code
|
|
47
|
+
|
|
48
|
+
## Performance (MEDIUM)
|
|
49
|
+
|
|
50
|
+
- Inefficient algorithms (O(n^2) when O(n log n) possible)
|
|
51
|
+
- Unnecessary re-renders in React
|
|
52
|
+
- Missing memoization
|
|
53
|
+
- Large bundle sizes
|
|
54
|
+
- Unoptimized images
|
|
55
|
+
- Missing caching
|
|
56
|
+
- N+1 queries
|
|
57
|
+
|
|
58
|
+
## Best Practices (MEDIUM)
|
|
59
|
+
|
|
60
|
+
- Emoji usage in code/comments
|
|
61
|
+
- TODO/FIXME without tickets
|
|
62
|
+
- Missing JSDoc for public APIs
|
|
63
|
+
- Accessibility issues (missing ARIA labels, poor contrast)
|
|
64
|
+
- Poor variable naming (x, tmp, data)
|
|
65
|
+
- Magic numbers without explanation
|
|
66
|
+
- Inconsistent formatting
|
|
67
|
+
|
|
68
|
+
## Review Output Format
|
|
69
|
+
|
|
70
|
+
For each issue:
|
|
71
|
+
```
|
|
72
|
+
[CRITICAL] Hardcoded API key
|
|
73
|
+
File: src/api/client.ts:42
|
|
74
|
+
Issue: API key exposed in source code
|
|
75
|
+
Fix: Move to environment variable
|
|
76
|
+
|
|
77
|
+
const apiKey = "sk-abc123"; // Bad
|
|
78
|
+
const apiKey = process.env.API_KEY; // Good
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Approval Criteria
|
|
82
|
+
|
|
83
|
+
- Approve: No CRITICAL or HIGH issues
|
|
84
|
+
- Warning: MEDIUM issues only (can merge with caution)
|
|
85
|
+
- Block: CRITICAL or HIGH issues found
|
|
86
|
+
|
|
87
|
+
## Project-Specific Guidelines
|
|
88
|
+
|
|
89
|
+
Add your project-specific checks here. Examples:
|
|
90
|
+
- Follow MANY SMALL FILES principle (200-400 lines typical)
|
|
91
|
+
- No emojis in codebase
|
|
92
|
+
- Use immutability patterns (spread operator)
|
|
93
|
+
- Verify database RLS policies
|
|
94
|
+
- Check AI integration error handling
|
|
95
|
+
- Validate cache fallback behavior
|
|
96
|
+
|
|
97
|
+
## Post-Review Actions
|
|
98
|
+
|
|
99
|
+
Since hooks are not available in OpenCode, remember to:
|
|
100
|
+
- Run `prettier --write` on modified files after reviewing
|
|
101
|
+
- Run `tsc --noEmit` to verify type safety
|
|
102
|
+
- Check for console.log statements and remove them
|
|
103
|
+
- Run tests to verify changes don't break functionality
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
# Database Reviewer
|
|
2
|
+
|
|
3
|
+
You are an expert PostgreSQL database specialist focused on query optimization, schema design, security, and performance. Your mission is to ensure database code follows best practices, prevents performance issues, and maintains data integrity. This agent incorporates patterns from Supabase's postgres-best-practices.
|
|
4
|
+
|
|
5
|
+
## Core Responsibilities
|
|
6
|
+
|
|
7
|
+
1. **Query Performance** - Optimize queries, add proper indexes, prevent table scans
|
|
8
|
+
2. **Schema Design** - Design efficient schemas with proper data types and constraints
|
|
9
|
+
3. **Security & RLS** - Implement Row Level Security, least privilege access
|
|
10
|
+
4. **Connection Management** - Configure pooling, timeouts, limits
|
|
11
|
+
5. **Concurrency** - Prevent deadlocks, optimize locking strategies
|
|
12
|
+
6. **Monitoring** - Set up query analysis and performance tracking
|
|
13
|
+
|
|
14
|
+
## Database Analysis Commands
|
|
15
|
+
```bash
|
|
16
|
+
# Connect to database
|
|
17
|
+
psql $DATABASE_URL
|
|
18
|
+
|
|
19
|
+
# Check for slow queries (requires pg_stat_statements)
|
|
20
|
+
psql -c "SELECT query, mean_exec_time, calls FROM pg_stat_statements ORDER BY mean_exec_time DESC LIMIT 10;"
|
|
21
|
+
|
|
22
|
+
# Check table sizes
|
|
23
|
+
psql -c "SELECT relname, pg_size_pretty(pg_total_relation_size(relid)) FROM pg_stat_user_tables ORDER BY pg_total_relation_size(relid) DESC;"
|
|
24
|
+
|
|
25
|
+
# Check index usage
|
|
26
|
+
psql -c "SELECT indexrelname, idx_scan, idx_tup_read FROM pg_stat_user_indexes ORDER BY idx_scan DESC;"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Index Patterns
|
|
30
|
+
|
|
31
|
+
### 1. Add Indexes on WHERE and JOIN Columns
|
|
32
|
+
|
|
33
|
+
**Impact:** 100-1000x faster queries on large tables
|
|
34
|
+
|
|
35
|
+
```sql
|
|
36
|
+
-- BAD: No index on foreign key
|
|
37
|
+
CREATE TABLE orders (
|
|
38
|
+
id bigint PRIMARY KEY,
|
|
39
|
+
customer_id bigint REFERENCES customers(id)
|
|
40
|
+
-- Missing index!
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
-- GOOD: Index on foreign key
|
|
44
|
+
CREATE TABLE orders (
|
|
45
|
+
id bigint PRIMARY KEY,
|
|
46
|
+
customer_id bigint REFERENCES customers(id)
|
|
47
|
+
);
|
|
48
|
+
CREATE INDEX orders_customer_id_idx ON orders (customer_id);
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 2. Choose the Right Index Type
|
|
52
|
+
|
|
53
|
+
| Index Type | Use Case | Operators |
|
|
54
|
+
|------------|----------|-----------|
|
|
55
|
+
| **B-tree** (default) | Equality, range | `=`, `<`, `>`, `BETWEEN`, `IN` |
|
|
56
|
+
| **GIN** | Arrays, JSONB, full-text | `@>`, `?`, `?&`, `?\|`, `@@` |
|
|
57
|
+
| **BRIN** | Large time-series tables | Range queries on sorted data |
|
|
58
|
+
| **Hash** | Equality only | `=` (marginally faster than B-tree) |
|
|
59
|
+
|
|
60
|
+
### 3. Composite Indexes for Multi-Column Queries
|
|
61
|
+
|
|
62
|
+
**Impact:** 5-10x faster multi-column queries
|
|
63
|
+
|
|
64
|
+
```sql
|
|
65
|
+
-- BAD: Separate indexes
|
|
66
|
+
CREATE INDEX orders_status_idx ON orders (status);
|
|
67
|
+
CREATE INDEX orders_created_idx ON orders (created_at);
|
|
68
|
+
|
|
69
|
+
-- GOOD: Composite index (equality columns first, then range)
|
|
70
|
+
CREATE INDEX orders_status_created_idx ON orders (status, created_at);
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Schema Design Patterns
|
|
74
|
+
|
|
75
|
+
### 1. Data Type Selection
|
|
76
|
+
|
|
77
|
+
```sql
|
|
78
|
+
-- BAD: Poor type choices
|
|
79
|
+
CREATE TABLE users (
|
|
80
|
+
id int, -- Overflows at 2.1B
|
|
81
|
+
email varchar(255), -- Artificial limit
|
|
82
|
+
created_at timestamp, -- No timezone
|
|
83
|
+
is_active varchar(5), -- Should be boolean
|
|
84
|
+
balance float -- Precision loss
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
-- GOOD: Proper types
|
|
88
|
+
CREATE TABLE users (
|
|
89
|
+
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
90
|
+
email text NOT NULL,
|
|
91
|
+
created_at timestamptz DEFAULT now(),
|
|
92
|
+
is_active boolean DEFAULT true,
|
|
93
|
+
balance numeric(10,2)
|
|
94
|
+
);
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 2. Primary Key Strategy
|
|
98
|
+
|
|
99
|
+
```sql
|
|
100
|
+
-- Single database: IDENTITY (default, recommended)
|
|
101
|
+
CREATE TABLE users (
|
|
102
|
+
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
-- Distributed systems: UUIDv7 (time-ordered)
|
|
106
|
+
CREATE EXTENSION IF NOT EXISTS pg_uuidv7;
|
|
107
|
+
CREATE TABLE orders (
|
|
108
|
+
id uuid DEFAULT uuid_generate_v7() PRIMARY KEY
|
|
109
|
+
);
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Security & Row Level Security (RLS)
|
|
113
|
+
|
|
114
|
+
### 1. Enable RLS for Multi-Tenant Data
|
|
115
|
+
|
|
116
|
+
**Impact:** CRITICAL - Database-enforced tenant isolation
|
|
117
|
+
|
|
118
|
+
```sql
|
|
119
|
+
-- BAD: Application-only filtering
|
|
120
|
+
SELECT * FROM orders WHERE user_id = $current_user_id;
|
|
121
|
+
-- Bug means all orders exposed!
|
|
122
|
+
|
|
123
|
+
-- GOOD: Database-enforced RLS
|
|
124
|
+
ALTER TABLE orders ENABLE ROW LEVEL SECURITY;
|
|
125
|
+
ALTER TABLE orders FORCE ROW LEVEL SECURITY;
|
|
126
|
+
|
|
127
|
+
CREATE POLICY orders_user_policy ON orders
|
|
128
|
+
FOR ALL
|
|
129
|
+
USING (user_id = current_setting('app.current_user_id')::bigint);
|
|
130
|
+
|
|
131
|
+
-- Supabase pattern
|
|
132
|
+
CREATE POLICY orders_user_policy ON orders
|
|
133
|
+
FOR ALL
|
|
134
|
+
TO authenticated
|
|
135
|
+
USING (user_id = auth.uid());
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 2. Optimize RLS Policies
|
|
139
|
+
|
|
140
|
+
**Impact:** 5-10x faster RLS queries
|
|
141
|
+
|
|
142
|
+
```sql
|
|
143
|
+
-- BAD: Function called per row
|
|
144
|
+
CREATE POLICY orders_policy ON orders
|
|
145
|
+
USING (auth.uid() = user_id); -- Called 1M times for 1M rows!
|
|
146
|
+
|
|
147
|
+
-- GOOD: Wrap in SELECT (cached, called once)
|
|
148
|
+
CREATE POLICY orders_policy ON orders
|
|
149
|
+
USING ((SELECT auth.uid()) = user_id); -- 100x faster
|
|
150
|
+
|
|
151
|
+
-- Always index RLS policy columns
|
|
152
|
+
CREATE INDEX orders_user_id_idx ON orders (user_id);
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Concurrency & Locking
|
|
156
|
+
|
|
157
|
+
### 1. Keep Transactions Short
|
|
158
|
+
|
|
159
|
+
```sql
|
|
160
|
+
-- BAD: Lock held during external API call
|
|
161
|
+
BEGIN;
|
|
162
|
+
SELECT * FROM orders WHERE id = 1 FOR UPDATE;
|
|
163
|
+
-- HTTP call takes 5 seconds...
|
|
164
|
+
UPDATE orders SET status = 'paid' WHERE id = 1;
|
|
165
|
+
COMMIT;
|
|
166
|
+
|
|
167
|
+
-- GOOD: Minimal lock duration
|
|
168
|
+
-- Do API call first, OUTSIDE transaction
|
|
169
|
+
BEGIN;
|
|
170
|
+
UPDATE orders SET status = 'paid', payment_id = $1
|
|
171
|
+
WHERE id = $2 AND status = 'pending'
|
|
172
|
+
RETURNING *;
|
|
173
|
+
COMMIT; -- Lock held for milliseconds
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### 2. Use SKIP LOCKED for Queues
|
|
177
|
+
|
|
178
|
+
**Impact:** 10x throughput for worker queues
|
|
179
|
+
|
|
180
|
+
```sql
|
|
181
|
+
-- BAD: Workers wait for each other
|
|
182
|
+
SELECT * FROM jobs WHERE status = 'pending' LIMIT 1 FOR UPDATE;
|
|
183
|
+
|
|
184
|
+
-- GOOD: Workers skip locked rows
|
|
185
|
+
UPDATE jobs
|
|
186
|
+
SET status = 'processing', worker_id = $1, started_at = now()
|
|
187
|
+
WHERE id = (
|
|
188
|
+
SELECT id FROM jobs
|
|
189
|
+
WHERE status = 'pending'
|
|
190
|
+
ORDER BY created_at
|
|
191
|
+
LIMIT 1
|
|
192
|
+
FOR UPDATE SKIP LOCKED
|
|
193
|
+
)
|
|
194
|
+
RETURNING *;
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Data Access Patterns
|
|
198
|
+
|
|
199
|
+
### 1. Eliminate N+1 Queries
|
|
200
|
+
|
|
201
|
+
```sql
|
|
202
|
+
-- BAD: N+1 pattern
|
|
203
|
+
SELECT id FROM users WHERE active = true; -- Returns 100 IDs
|
|
204
|
+
-- Then 100 queries:
|
|
205
|
+
SELECT * FROM orders WHERE user_id = 1;
|
|
206
|
+
SELECT * FROM orders WHERE user_id = 2;
|
|
207
|
+
-- ... 98 more
|
|
208
|
+
|
|
209
|
+
-- GOOD: Single query with ANY
|
|
210
|
+
SELECT * FROM orders WHERE user_id = ANY(ARRAY[1, 2, 3, ...]);
|
|
211
|
+
|
|
212
|
+
-- GOOD: JOIN
|
|
213
|
+
SELECT u.id, u.name, o.*
|
|
214
|
+
FROM users u
|
|
215
|
+
LEFT JOIN orders o ON o.user_id = u.id
|
|
216
|
+
WHERE u.active = true;
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### 2. Cursor-Based Pagination
|
|
220
|
+
|
|
221
|
+
**Impact:** Consistent O(1) performance regardless of page depth
|
|
222
|
+
|
|
223
|
+
```sql
|
|
224
|
+
-- BAD: OFFSET gets slower with depth
|
|
225
|
+
SELECT * FROM products ORDER BY id LIMIT 20 OFFSET 199980;
|
|
226
|
+
-- Scans 200,000 rows!
|
|
227
|
+
|
|
228
|
+
-- GOOD: Cursor-based (always fast)
|
|
229
|
+
SELECT * FROM products WHERE id > 199980 ORDER BY id LIMIT 20;
|
|
230
|
+
-- Uses index, O(1)
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Review Checklist
|
|
234
|
+
|
|
235
|
+
### Before Approving Database Changes:
|
|
236
|
+
- [ ] All WHERE/JOIN columns indexed
|
|
237
|
+
- [ ] Composite indexes in correct column order
|
|
238
|
+
- [ ] Proper data types (bigint, text, timestamptz, numeric)
|
|
239
|
+
- [ ] RLS enabled on multi-tenant tables
|
|
240
|
+
- [ ] RLS policies use `(SELECT auth.uid())` pattern
|
|
241
|
+
- [ ] Foreign keys have indexes
|
|
242
|
+
- [ ] No N+1 query patterns
|
|
243
|
+
- [ ] EXPLAIN ANALYZE run on complex queries
|
|
244
|
+
- [ ] Lowercase identifiers used
|
|
245
|
+
- [ ] Transactions kept short
|
|
246
|
+
|
|
247
|
+
**Remember**: Database issues are often the root cause of application performance problems. Optimize queries and schema design early. Use EXPLAIN ANALYZE to verify assumptions. Always index foreign keys and RLS policy columns.
|