javi-forge 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitignore.template +105 -0
- package/.releaserc +44 -0
- package/README.md +45 -0
- package/ai-config/.skillignore +15 -0
- package/ai-config/AUTO_INVOKE.md +300 -0
- package/ai-config/agents/_TEMPLATE.md +93 -0
- package/ai-config/agents/business/api-designer.md +1657 -0
- package/ai-config/agents/business/business-analyst.md +1331 -0
- package/ai-config/agents/business/product-strategist.md +206 -0
- package/ai-config/agents/business/project-manager.md +178 -0
- package/ai-config/agents/business/requirements-analyst.md +1277 -0
- package/ai-config/agents/business/technical-writer.md +1679 -0
- package/ai-config/agents/creative/ux-designer.md +205 -0
- package/ai-config/agents/data-ai/ai-engineer.md +487 -0
- package/ai-config/agents/data-ai/analytics-engineer.md +953 -0
- package/ai-config/agents/data-ai/data-engineer.md +173 -0
- package/ai-config/agents/data-ai/data-scientist.md +672 -0
- package/ai-config/agents/data-ai/mlops-engineer.md +814 -0
- package/ai-config/agents/data-ai/prompt-engineer.md +772 -0
- package/ai-config/agents/development/angular-expert.md +620 -0
- package/ai-config/agents/development/backend-architect.md +795 -0
- package/ai-config/agents/development/database-specialist.md +212 -0
- package/ai-config/agents/development/frontend-specialist.md +686 -0
- package/ai-config/agents/development/fullstack-engineer.md +668 -0
- package/ai-config/agents/development/golang-pro.md +338 -0
- package/ai-config/agents/development/java-enterprise.md +400 -0
- package/ai-config/agents/development/javascript-pro.md +422 -0
- package/ai-config/agents/development/nextjs-pro.md +474 -0
- package/ai-config/agents/development/python-pro.md +570 -0
- package/ai-config/agents/development/react-pro.md +487 -0
- package/ai-config/agents/development/rust-pro.md +246 -0
- package/ai-config/agents/development/spring-boot-4-expert.md +326 -0
- package/ai-config/agents/development/typescript-pro.md +336 -0
- package/ai-config/agents/development/vue-specialist.md +605 -0
- package/ai-config/agents/infrastructure/cloud-architect.md +472 -0
- package/ai-config/agents/infrastructure/deployment-manager.md +358 -0
- package/ai-config/agents/infrastructure/devops-engineer.md +455 -0
- package/ai-config/agents/infrastructure/incident-responder.md +519 -0
- package/ai-config/agents/infrastructure/kubernetes-expert.md +705 -0
- package/ai-config/agents/infrastructure/monitoring-specialist.md +674 -0
- package/ai-config/agents/infrastructure/performance-engineer.md +658 -0
- package/ai-config/agents/orchestrator.md +241 -0
- package/ai-config/agents/quality/accessibility-auditor.md +1204 -0
- package/ai-config/agents/quality/code-reviewer-compact.md +123 -0
- package/ai-config/agents/quality/code-reviewer.md +363 -0
- package/ai-config/agents/quality/dependency-manager.md +743 -0
- package/ai-config/agents/quality/e2e-test-specialist.md +1005 -0
- package/ai-config/agents/quality/performance-tester.md +1086 -0
- package/ai-config/agents/quality/security-auditor.md +133 -0
- package/ai-config/agents/quality/test-engineer.md +453 -0
- package/ai-config/agents/specialists/api-designer.md +87 -0
- package/ai-config/agents/specialists/backend-architect.md +73 -0
- package/ai-config/agents/specialists/code-reviewer.md +77 -0
- package/ai-config/agents/specialists/db-optimizer.md +75 -0
- package/ai-config/agents/specialists/devops-engineer.md +83 -0
- package/ai-config/agents/specialists/documentation-writer.md +78 -0
- package/ai-config/agents/specialists/frontend-developer.md +75 -0
- package/ai-config/agents/specialists/performance-analyst.md +82 -0
- package/ai-config/agents/specialists/refactor-specialist.md +74 -0
- package/ai-config/agents/specialists/security-auditor.md +74 -0
- package/ai-config/agents/specialists/test-engineer.md +81 -0
- package/ai-config/agents/specialists/ux-consultant.md +76 -0
- package/ai-config/agents/specialized/agent-generator.md +1190 -0
- package/ai-config/agents/specialized/blockchain-developer.md +149 -0
- package/ai-config/agents/specialized/code-migrator.md +892 -0
- package/ai-config/agents/specialized/context-manager.md +978 -0
- package/ai-config/agents/specialized/documentation-writer.md +1078 -0
- package/ai-config/agents/specialized/ecommerce-expert.md +1756 -0
- package/ai-config/agents/specialized/embedded-engineer.md +1714 -0
- package/ai-config/agents/specialized/error-detective.md +1034 -0
- package/ai-config/agents/specialized/fintech-specialist.md +1659 -0
- package/ai-config/agents/specialized/freelance-project-planner-v2.md +1988 -0
- package/ai-config/agents/specialized/freelance-project-planner-v3.md +2136 -0
- package/ai-config/agents/specialized/freelance-project-planner-v4.md +4503 -0
- package/ai-config/agents/specialized/freelance-project-planner.md +722 -0
- package/ai-config/agents/specialized/game-developer.md +1963 -0
- package/ai-config/agents/specialized/healthcare-dev.md +1620 -0
- package/ai-config/agents/specialized/mobile-developer.md +188 -0
- package/ai-config/agents/specialized/parallel-plan-executor.md +506 -0
- package/ai-config/agents/specialized/plan-executor.md +485 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/00-INDEX.md +485 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/01-CORE.md +3493 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/02-SELF-CORRECTION.md +778 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/03-PROGRESSIVE-SETUP.md +918 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/04-DEPLOYMENT.md +1537 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/05-TESTING.md +2633 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/06-OPERATIONS.md +5610 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/INSTALL.md +335 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/QUICK-REFERENCE.txt +215 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/README.md +260 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/START-HERE.md +379 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/WORKFLOW-DIAGRAM.md +355 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/solo-dev-planner.md +279 -0
- package/ai-config/agents/specialized/template-writer.md +347 -0
- package/ai-config/agents/specialized/test-runner.md +99 -0
- package/ai-config/agents/specialized/vibekanban-smart-worker.md +244 -0
- package/ai-config/agents/specialized/wave-executor.md +138 -0
- package/ai-config/agents/specialized/workflow-optimizer.md +1114 -0
- package/ai-config/commands/git/changelog.md +32 -0
- package/ai-config/commands/git/ci-local.md +70 -0
- package/ai-config/commands/git/commit.md +35 -0
- package/ai-config/commands/git/fix-issue.md +23 -0
- package/ai-config/commands/git/pr-create.md +42 -0
- package/ai-config/commands/git/pr-review.md +50 -0
- package/ai-config/commands/git/worktree.md +39 -0
- package/ai-config/commands/refactoring/cleanup.md +24 -0
- package/ai-config/commands/refactoring/dead-code.md +40 -0
- package/ai-config/commands/refactoring/extract.md +31 -0
- package/ai-config/commands/testing/e2e.md +30 -0
- package/ai-config/commands/testing/tdd.md +36 -0
- package/ai-config/commands/testing/test-coverage.md +30 -0
- package/ai-config/commands/testing/test-fix.md +24 -0
- package/ai-config/commands/workflow/generate-agents-md.md +85 -0
- package/ai-config/commands/workflow/planning.md +47 -0
- package/ai-config/commands/workflows/compound.md +89 -0
- package/ai-config/commands/workflows/plan.md +77 -0
- package/ai-config/commands/workflows/review.md +78 -0
- package/ai-config/commands/workflows/work.md +75 -0
- package/ai-config/config.yaml +18 -0
- package/ai-config/hooks/_TEMPLATE.md +96 -0
- package/ai-config/hooks/block-dangerous-commands.md +75 -0
- package/ai-config/hooks/commit-guard.md +90 -0
- package/ai-config/hooks/context-loader.md +73 -0
- package/ai-config/hooks/improve-prompt.md +91 -0
- package/ai-config/hooks/learning-log.md +72 -0
- package/ai-config/hooks/model-router.md +86 -0
- package/ai-config/hooks/secret-scanner.md +64 -0
- package/ai-config/hooks/skill-validator.md +102 -0
- package/ai-config/hooks/task-artifact.md +114 -0
- package/ai-config/hooks/validate-workflow.md +100 -0
- package/ai-config/prompts/base.md +71 -0
- package/ai-config/prompts/modes/debug.md +34 -0
- package/ai-config/prompts/modes/deploy.md +40 -0
- package/ai-config/prompts/modes/research.md +32 -0
- package/ai-config/prompts/modes/review.md +33 -0
- package/ai-config/prompts/review-policy.md +79 -0
- package/ai-config/skills/_TEMPLATE.md +157 -0
- package/ai-config/skills/backend/api-gateway/SKILL.md +254 -0
- package/ai-config/skills/backend/bff-concepts/SKILL.md +239 -0
- package/ai-config/skills/backend/bff-spring/SKILL.md +364 -0
- package/ai-config/skills/backend/chi-router/SKILL.md +396 -0
- package/ai-config/skills/backend/error-handling/SKILL.md +255 -0
- package/ai-config/skills/backend/exceptions-spring/SKILL.md +323 -0
- package/ai-config/skills/backend/fastapi/SKILL.md +302 -0
- package/ai-config/skills/backend/gateway-spring/SKILL.md +390 -0
- package/ai-config/skills/backend/go-backend/SKILL.md +457 -0
- package/ai-config/skills/backend/gradle-multimodule/SKILL.md +274 -0
- package/ai-config/skills/backend/graphql-concepts/SKILL.md +352 -0
- package/ai-config/skills/backend/graphql-spring/SKILL.md +398 -0
- package/ai-config/skills/backend/grpc-concepts/SKILL.md +283 -0
- package/ai-config/skills/backend/grpc-spring/SKILL.md +445 -0
- package/ai-config/skills/backend/jwt-auth/SKILL.md +412 -0
- package/ai-config/skills/backend/notifications-concepts/SKILL.md +259 -0
- package/ai-config/skills/backend/recommendations-concepts/SKILL.md +261 -0
- package/ai-config/skills/backend/search-concepts/SKILL.md +263 -0
- package/ai-config/skills/backend/search-spring/SKILL.md +375 -0
- package/ai-config/skills/backend/spring-boot-4/SKILL.md +172 -0
- package/ai-config/skills/backend/websockets/SKILL.md +532 -0
- package/ai-config/skills/data-ai/ai-ml/SKILL.md +423 -0
- package/ai-config/skills/data-ai/analytics-concepts/SKILL.md +195 -0
- package/ai-config/skills/data-ai/analytics-spring/SKILL.md +340 -0
- package/ai-config/skills/data-ai/duckdb-analytics/SKILL.md +440 -0
- package/ai-config/skills/data-ai/langchain/SKILL.md +238 -0
- package/ai-config/skills/data-ai/mlflow/SKILL.md +302 -0
- package/ai-config/skills/data-ai/onnx-inference/SKILL.md +290 -0
- package/ai-config/skills/data-ai/powerbi/SKILL.md +352 -0
- package/ai-config/skills/data-ai/pytorch/SKILL.md +274 -0
- package/ai-config/skills/data-ai/scikit-learn/SKILL.md +321 -0
- package/ai-config/skills/data-ai/vector-db/SKILL.md +301 -0
- package/ai-config/skills/database/graph-databases/SKILL.md +218 -0
- package/ai-config/skills/database/graph-spring/SKILL.md +361 -0
- package/ai-config/skills/database/pgx-postgres/SKILL.md +512 -0
- package/ai-config/skills/database/redis-cache/SKILL.md +343 -0
- package/ai-config/skills/database/sqlite-embedded/SKILL.md +388 -0
- package/ai-config/skills/database/timescaledb/SKILL.md +320 -0
- package/ai-config/skills/docs/api-documentation/SKILL.md +293 -0
- package/ai-config/skills/docs/docs-spring/SKILL.md +377 -0
- package/ai-config/skills/docs/mustache-templates/SKILL.md +190 -0
- package/ai-config/skills/docs/technical-docs/SKILL.md +447 -0
- package/ai-config/skills/frontend/astro-ssr/SKILL.md +441 -0
- package/ai-config/skills/frontend/frontend-design/SKILL.md +54 -0
- package/ai-config/skills/frontend/frontend-web/SKILL.md +368 -0
- package/ai-config/skills/frontend/mantine-ui/SKILL.md +396 -0
- package/ai-config/skills/frontend/tanstack-query/SKILL.md +439 -0
- package/ai-config/skills/frontend/zod-validation/SKILL.md +417 -0
- package/ai-config/skills/frontend/zustand-state/SKILL.md +350 -0
- package/ai-config/skills/infrastructure/chaos-engineering/SKILL.md +244 -0
- package/ai-config/skills/infrastructure/chaos-spring/SKILL.md +378 -0
- package/ai-config/skills/infrastructure/devops-infra/SKILL.md +435 -0
- package/ai-config/skills/infrastructure/docker-containers/SKILL.md +420 -0
- package/ai-config/skills/infrastructure/kubernetes/SKILL.md +456 -0
- package/ai-config/skills/infrastructure/opentelemetry/SKILL.md +546 -0
- package/ai-config/skills/infrastructure/traefik-proxy/SKILL.md +474 -0
- package/ai-config/skills/infrastructure/woodpecker-ci/SKILL.md +315 -0
- package/ai-config/skills/mobile/ionic-capacitor/SKILL.md +504 -0
- package/ai-config/skills/mobile/mobile-ionic/SKILL.md +448 -0
- package/ai-config/skills/prompt-improver/SKILL.md +125 -0
- package/ai-config/skills/quality/ghagga-review/SKILL.md +216 -0
- package/ai-config/skills/references/hooks-patterns/SKILL.md +238 -0
- package/ai-config/skills/references/mcp-servers/SKILL.md +275 -0
- package/ai-config/skills/references/plugins-reference/SKILL.md +110 -0
- package/ai-config/skills/references/skills-reference/SKILL.md +420 -0
- package/ai-config/skills/references/subagent-templates/SKILL.md +193 -0
- package/ai-config/skills/systems-iot/modbus-protocol/SKILL.md +410 -0
- package/ai-config/skills/systems-iot/mqtt-rumqttc/SKILL.md +408 -0
- package/ai-config/skills/systems-iot/rust-systems/SKILL.md +386 -0
- package/ai-config/skills/systems-iot/tokio-async/SKILL.md +324 -0
- package/ai-config/skills/testing/playwright-e2e/SKILL.md +289 -0
- package/ai-config/skills/testing/testcontainers/SKILL.md +299 -0
- package/ai-config/skills/testing/vitest-testing/SKILL.md +381 -0
- package/ai-config/skills/workflow/ci-local-guide/SKILL.md +118 -0
- package/ai-config/skills/workflow/claude-automation-recommender/SKILL.md +299 -0
- package/ai-config/skills/workflow/claude-md-improver/SKILL.md +158 -0
- package/ai-config/skills/workflow/finishing-a-development-branch/SKILL.md +117 -0
- package/ai-config/skills/workflow/git-github/SKILL.md +334 -0
- package/ai-config/skills/workflow/git-github/references/examples.md +160 -0
- package/ai-config/skills/workflow/git-workflow/SKILL.md +214 -0
- package/ai-config/skills/workflow/ide-plugins/SKILL.md +277 -0
- package/ai-config/skills/workflow/ide-plugins-intellij/SKILL.md +401 -0
- package/ai-config/skills/workflow/obsidian-brain-workflow/SKILL.md +199 -0
- package/ai-config/skills/workflow/using-git-worktrees/SKILL.md +100 -0
- package/ai-config/skills/workflow/verification-before-completion/SKILL.md +73 -0
- package/ai-config/skills/workflow/wave-workflow/SKILL.md +178 -0
- package/ci-local/README.md +170 -0
- package/ci-local/ci-local.sh +297 -0
- package/ci-local/hooks/commit-msg +74 -0
- package/ci-local/hooks/pre-commit +162 -0
- package/ci-local/hooks/pre-push +41 -0
- package/ci-local/install.sh +49 -0
- package/ci-local/semgrep.yml +214 -0
- package/dist/commands/analyze.d.ts +9 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +55 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/analyze.test.d.ts +2 -0
- package/dist/commands/analyze.test.d.ts.map +1 -0
- package/dist/commands/analyze.test.js +145 -0
- package/dist/commands/analyze.test.js.map +1 -0
- package/dist/commands/doctor.d.ts +7 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +158 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/doctor.test.d.ts +2 -0
- package/dist/commands/doctor.test.d.ts.map +1 -0
- package/dist/commands/doctor.test.js +200 -0
- package/dist/commands/doctor.test.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +283 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/init.test.d.ts +2 -0
- package/dist/commands/init.test.d.ts.map +1 -0
- package/dist/commands/init.test.js +271 -0
- package/dist/commands/init.test.js.map +1 -0
- package/dist/commands/sync.d.ts +8 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +201 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/constants.d.ts +21 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +57 -0
- package/dist/constants.js.map +1 -0
- package/dist/e2e/aggressive.e2e.test.d.ts +2 -0
- package/dist/e2e/aggressive.e2e.test.d.ts.map +1 -0
- package/dist/e2e/aggressive.e2e.test.js +350 -0
- package/dist/e2e/aggressive.e2e.test.js.map +1 -0
- package/dist/e2e/commands.e2e.test.d.ts +2 -0
- package/dist/e2e/commands.e2e.test.d.ts.map +1 -0
- package/dist/e2e/commands.e2e.test.js +213 -0
- package/dist/e2e/commands.e2e.test.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/common.d.ts +17 -0
- package/dist/lib/common.d.ts.map +1 -0
- package/dist/lib/common.js +111 -0
- package/dist/lib/common.js.map +1 -0
- package/dist/lib/common.test.d.ts +2 -0
- package/dist/lib/common.test.d.ts.map +1 -0
- package/dist/lib/common.test.js +316 -0
- package/dist/lib/common.test.js.map +1 -0
- package/dist/lib/frontmatter.d.ts +18 -0
- package/dist/lib/frontmatter.d.ts.map +1 -0
- package/dist/lib/frontmatter.js +61 -0
- package/dist/lib/frontmatter.js.map +1 -0
- package/dist/lib/frontmatter.test.d.ts +2 -0
- package/dist/lib/frontmatter.test.d.ts.map +1 -0
- package/dist/lib/frontmatter.test.js +257 -0
- package/dist/lib/frontmatter.test.js.map +1 -0
- package/dist/lib/template.d.ts +24 -0
- package/dist/lib/template.d.ts.map +1 -0
- package/dist/lib/template.js +78 -0
- package/dist/lib/template.js.map +1 -0
- package/dist/lib/template.test.d.ts +2 -0
- package/dist/lib/template.test.d.ts.map +1 -0
- package/dist/lib/template.test.js +201 -0
- package/dist/lib/template.test.js.map +1 -0
- package/dist/types/index.d.ts +48 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/AnalyzeUI.d.ts +7 -0
- package/dist/ui/AnalyzeUI.d.ts.map +1 -0
- package/dist/ui/AnalyzeUI.js +100 -0
- package/dist/ui/AnalyzeUI.js.map +1 -0
- package/dist/ui/App.d.ts +13 -0
- package/dist/ui/App.d.ts.map +1 -0
- package/dist/ui/App.js +100 -0
- package/dist/ui/App.js.map +1 -0
- package/dist/ui/CIContext.d.ts +9 -0
- package/dist/ui/CIContext.d.ts.map +1 -0
- package/dist/ui/CIContext.js +9 -0
- package/dist/ui/CIContext.js.map +1 -0
- package/dist/ui/CISelector.d.ts +8 -0
- package/dist/ui/CISelector.d.ts.map +1 -0
- package/dist/ui/CISelector.js +45 -0
- package/dist/ui/CISelector.js.map +1 -0
- package/dist/ui/Doctor.d.ts +3 -0
- package/dist/ui/Doctor.d.ts.map +1 -0
- package/dist/ui/Doctor.js +89 -0
- package/dist/ui/Doctor.js.map +1 -0
- package/dist/ui/Header.d.ts +8 -0
- package/dist/ui/Header.d.ts.map +1 -0
- package/dist/ui/Header.js +30 -0
- package/dist/ui/Header.js.map +1 -0
- package/dist/ui/MemorySelector.d.ts +8 -0
- package/dist/ui/MemorySelector.d.ts.map +1 -0
- package/dist/ui/MemorySelector.js +46 -0
- package/dist/ui/MemorySelector.js.map +1 -0
- package/dist/ui/NameInput.d.ts +8 -0
- package/dist/ui/NameInput.d.ts.map +1 -0
- package/dist/ui/NameInput.js +69 -0
- package/dist/ui/NameInput.js.map +1 -0
- package/dist/ui/OptionSelector.d.ts +12 -0
- package/dist/ui/OptionSelector.d.ts.map +1 -0
- package/dist/ui/OptionSelector.js +69 -0
- package/dist/ui/OptionSelector.js.map +1 -0
- package/dist/ui/Progress.d.ts +11 -0
- package/dist/ui/Progress.d.ts.map +1 -0
- package/dist/ui/Progress.js +58 -0
- package/dist/ui/Progress.js.map +1 -0
- package/dist/ui/StackSelector.d.ts +9 -0
- package/dist/ui/StackSelector.d.ts.map +1 -0
- package/dist/ui/StackSelector.js +65 -0
- package/dist/ui/StackSelector.js.map +1 -0
- package/dist/ui/Summary.d.ts +12 -0
- package/dist/ui/Summary.d.ts.map +1 -0
- package/dist/ui/Summary.js +114 -0
- package/dist/ui/Summary.js.map +1 -0
- package/dist/ui/SyncUI.d.ts +10 -0
- package/dist/ui/SyncUI.d.ts.map +1 -0
- package/dist/ui/SyncUI.js +64 -0
- package/dist/ui/SyncUI.js.map +1 -0
- package/dist/ui/Welcome.d.ts +7 -0
- package/dist/ui/Welcome.d.ts.map +1 -0
- package/dist/ui/Welcome.js +45 -0
- package/dist/ui/Welcome.js.map +1 -0
- package/dist/ui/theme.d.ts +10 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +9 -0
- package/dist/ui/theme.js.map +1 -0
- package/modules/engram/.gitignore-snippet.txt +6 -0
- package/modules/engram/.mcp-config-snippet.json +11 -0
- package/modules/engram/README.md +146 -0
- package/modules/engram/install-engram.sh +216 -0
- package/modules/ghagga/.env.example +43 -0
- package/modules/ghagga/README.md +153 -0
- package/modules/ghagga/docker-compose.yml +80 -0
- package/modules/ghagga/setup-ghagga.sh +139 -0
- package/modules/memory-simple/.project/NOTES.md +22 -0
- package/modules/memory-simple/README.md +23 -0
- package/modules/obsidian-brain/.obsidian/app.json +23 -0
- package/modules/obsidian-brain/.obsidian/appearance.json +5 -0
- package/modules/obsidian-brain/.obsidian/bookmarks.json +34 -0
- package/modules/obsidian-brain/.obsidian/community-plugins.json +1 -0
- package/modules/obsidian-brain/.obsidian/core-plugins-migration.json +21 -0
- package/modules/obsidian-brain/.obsidian/core-plugins.json +18 -0
- package/modules/obsidian-brain/.obsidian/daily-notes.json +5 -0
- package/modules/obsidian-brain/.obsidian/graph.json +37 -0
- package/modules/obsidian-brain/.obsidian/hotkeys.json +14 -0
- package/modules/obsidian-brain/.obsidian/plugins/dataview/data.json +25 -0
- package/modules/obsidian-brain/.obsidian/plugins/obsidian-kanban/data.json +29 -0
- package/modules/obsidian-brain/.obsidian/plugins/templater-obsidian/data.json +18 -0
- package/modules/obsidian-brain/.obsidian/snippets/project-memory.css +71 -0
- package/modules/obsidian-brain/.obsidian-gitignore-snippet.txt +8 -0
- package/modules/obsidian-brain/.project/Attachments/.gitkeep +0 -0
- package/modules/obsidian-brain/.project/Memory/BLOCKERS.md +78 -0
- package/modules/obsidian-brain/.project/Memory/CONTEXT.md +102 -0
- package/modules/obsidian-brain/.project/Memory/DASHBOARD.md +73 -0
- package/modules/obsidian-brain/.project/Memory/DECISIONS.md +87 -0
- package/modules/obsidian-brain/.project/Memory/KANBAN.md +15 -0
- package/modules/obsidian-brain/.project/Memory/README.md +61 -0
- package/modules/obsidian-brain/.project/Memory/WAVES.md +78 -0
- package/modules/obsidian-brain/.project/Sessions/TEMPLATE.md +99 -0
- package/modules/obsidian-brain/.project/Templates/ADR.md +33 -0
- package/modules/obsidian-brain/.project/Templates/Blocker.md +21 -0
- package/modules/obsidian-brain/.project/Templates/Session.md +88 -0
- package/modules/obsidian-brain/README.md +268 -0
- package/modules/obsidian-brain/new-wave.sh +182 -0
- package/package.json +51 -0
- package/schemas/agent.schema.json +34 -0
- package/schemas/ai-config.schema.json +28 -0
- package/schemas/skill.schema.json +44 -0
- package/src/commands/analyze.test.ts +145 -0
- package/src/commands/analyze.ts +69 -0
- package/src/commands/doctor.test.ts +208 -0
- package/src/commands/doctor.ts +163 -0
- package/src/commands/init.test.ts +298 -0
- package/src/commands/init.ts +285 -0
- package/src/constants.ts +69 -0
- package/src/e2e/aggressive.e2e.test.ts +557 -0
- package/src/e2e/commands.e2e.test.ts +298 -0
- package/src/index.tsx +106 -0
- package/src/lib/common.test.ts +318 -0
- package/src/lib/common.ts +127 -0
- package/src/lib/frontmatter.test.ts +291 -0
- package/src/lib/frontmatter.ts +77 -0
- package/src/lib/template.test.ts +226 -0
- package/src/lib/template.ts +99 -0
- package/src/types/index.ts +53 -0
- package/src/ui/AnalyzeUI.tsx +133 -0
- package/src/ui/App.tsx +175 -0
- package/src/ui/CIContext.tsx +25 -0
- package/src/ui/CISelector.tsx +72 -0
- package/src/ui/Doctor.tsx +122 -0
- package/src/ui/Header.tsx +48 -0
- package/src/ui/MemorySelector.tsx +73 -0
- package/src/ui/NameInput.tsx +82 -0
- package/src/ui/OptionSelector.tsx +100 -0
- package/src/ui/Progress.tsx +88 -0
- package/src/ui/StackSelector.tsx +101 -0
- package/src/ui/Summary.tsx +134 -0
- package/src/ui/Welcome.tsx +54 -0
- package/src/ui/theme.ts +10 -0
- package/stryker.config.json +19 -0
- package/tasks/_TEMPLATE/files-edited.md +3 -0
- package/tasks/_TEMPLATE/plan.md +3 -0
- package/tasks/_TEMPLATE/research.md +3 -0
- package/tasks/_TEMPLATE/verification.md +5 -0
- package/templates/common/dependabot/cargo.yml +11 -0
- package/templates/common/dependabot/github-actions.yml +16 -0
- package/templates/common/dependabot/gomod.yml +15 -0
- package/templates/common/dependabot/gradle.yml +15 -0
- package/templates/common/dependabot/header.yml +3 -0
- package/templates/common/dependabot/maven.yml +15 -0
- package/templates/common/dependabot/npm.yml +20 -0
- package/templates/common/dependabot/pip.yml +11 -0
- package/templates/dependabot.yml +162 -0
- package/templates/github/ci-go.yml +41 -0
- package/templates/github/ci-java.yml +45 -0
- package/templates/github/ci-monorepo.yml +150 -0
- package/templates/github/ci-node.yml +42 -0
- package/templates/github/ci-python.yml +42 -0
- package/templates/github/ci-rust.yml +42 -0
- package/templates/github/dependabot-automerge.yml +40 -0
- package/templates/gitlab/gitlab-ci-go.yml +88 -0
- package/templates/gitlab/gitlab-ci-java.yml +79 -0
- package/templates/gitlab/gitlab-ci-monorepo.yml +126 -0
- package/templates/gitlab/gitlab-ci-node.yml +63 -0
- package/templates/gitlab/gitlab-ci-python.yml +147 -0
- package/templates/gitlab/gitlab-ci-rust.yml +67 -0
- package/templates/global/claude-settings.json +98 -0
- package/templates/global/codex-config.toml +8 -0
- package/templates/global/copilot-instructions/base-rules.instructions.md +13 -0
- package/templates/global/copilot-instructions/sdd-orchestrator.instructions.md +37 -0
- package/templates/global/gemini-commands/cleanup.toml +20 -0
- package/templates/global/gemini-commands/commit.toml +15 -0
- package/templates/global/gemini-commands/dead-code.toml +22 -0
- package/templates/global/gemini-commands/plan.toml +30 -0
- package/templates/global/gemini-commands/review.toml +17 -0
- package/templates/global/gemini-commands/sdd-apply.toml +22 -0
- package/templates/global/gemini-commands/sdd-ff.toml +14 -0
- package/templates/global/gemini-commands/sdd-new.toml +21 -0
- package/templates/global/gemini-commands/sdd-verify.toml +21 -0
- package/templates/global/gemini-commands/tdd.toml +26 -0
- package/templates/global/gemini-settings.json +8 -0
- package/templates/global/opencode-config.json +44 -0
- package/templates/global/sdd-instructions.md +47 -0
- package/templates/global/sdd-orchestrator-claude.md +46 -0
- package/templates/global/sdd-orchestrator-copilot.md +34 -0
- package/templates/renovate.json +69 -0
- package/templates/woodpecker/monorepo/backend.yml +34 -0
- package/templates/woodpecker/monorepo/frontend.yml +34 -0
- package/templates/woodpecker/monorepo/summary.yml +25 -0
- package/templates/woodpecker/woodpecker-go.yml +51 -0
- package/templates/woodpecker/woodpecker-java.yml +67 -0
- package/templates/woodpecker/woodpecker-node.yml +47 -0
- package/templates/woodpecker/woodpecker-python.yml +108 -0
- package/templates/woodpecker/woodpecker-rust.yml +57 -0
- package/tsconfig.json +19 -0
- package/vitest.config.ts +16 -0
- package/workflows/reusable-build-go.yml +111 -0
- package/workflows/reusable-build-java.yml +120 -0
- package/workflows/reusable-build-node.yml +145 -0
- package/workflows/reusable-build-python.yml +159 -0
- package/workflows/reusable-build-rust.yml +135 -0
- package/workflows/reusable-docker.yml +120 -0
- package/workflows/reusable-ghagga-review.yml +165 -0
- package/workflows/reusable-release.yml +91 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-reviewer-compact
|
|
3
|
+
description: >
|
|
4
|
+
Reviewer compacto con checklist de calidad, seguridad y convenciones.
|
|
5
|
+
Trigger: "quick review", "code review checklist", "check code quality"
|
|
6
|
+
trigger: quick review, code checklist, check quality fast
|
|
7
|
+
category: quality
|
|
8
|
+
color: orange
|
|
9
|
+
|
|
10
|
+
tools:
|
|
11
|
+
- Read
|
|
12
|
+
- Grep
|
|
13
|
+
- Glob
|
|
14
|
+
|
|
15
|
+
config:
|
|
16
|
+
model: sonnet
|
|
17
|
+
max_turns: 15
|
|
18
|
+
autonomous: false
|
|
19
|
+
|
|
20
|
+
metadata:
|
|
21
|
+
author: project-starter-framework
|
|
22
|
+
version: "2.1"
|
|
23
|
+
updated: "2026-02"
|
|
24
|
+
tags: [review, quality, security, checklist]
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Code Reviewer Agent
|
|
28
|
+
|
|
29
|
+
> Revisa código enfocándose en calidad, seguridad, y adherencia a convenciones del proyecto.
|
|
30
|
+
|
|
31
|
+
## Objetivo
|
|
32
|
+
|
|
33
|
+
Realizar code review sistemático identificando:
|
|
34
|
+
- Bugs potenciales y errores lógicos
|
|
35
|
+
- Vulnerabilidades de seguridad
|
|
36
|
+
- Violaciones de convenciones del proyecto
|
|
37
|
+
- Oportunidades de mejora
|
|
38
|
+
|
|
39
|
+
## Cuándo Usar
|
|
40
|
+
|
|
41
|
+
- Antes de crear un PR
|
|
42
|
+
- Al revisar cambios de otros
|
|
43
|
+
- Para auditar código existente
|
|
44
|
+
- Después de refactoring significativo
|
|
45
|
+
|
|
46
|
+
## Proceso de Review
|
|
47
|
+
|
|
48
|
+
### 1. Contexto
|
|
49
|
+
|
|
50
|
+
Primero, entender el contexto:
|
|
51
|
+
- ¿Qué archivos cambiaron?
|
|
52
|
+
- ¿Cuál es el objetivo del cambio?
|
|
53
|
+
- ¿Hay tests asociados?
|
|
54
|
+
|
|
55
|
+
### 2. Checklist de Review
|
|
56
|
+
|
|
57
|
+
#### Calidad de Código
|
|
58
|
+
- [ ] Nombres descriptivos (variables, funciones, clases)
|
|
59
|
+
- [ ] Funciones pequeñas con responsabilidad única
|
|
60
|
+
- [ ] Sin código duplicado
|
|
61
|
+
- [ ] Manejo apropiado de errores
|
|
62
|
+
- [ ] Sin código muerto o comentado
|
|
63
|
+
|
|
64
|
+
#### Seguridad
|
|
65
|
+
- [ ] Sin secrets hardcodeados
|
|
66
|
+
- [ ] Input validation en boundaries
|
|
67
|
+
- [ ] Sin SQL injection, XSS, command injection
|
|
68
|
+
- [ ] Autenticación/autorización correcta
|
|
69
|
+
- [ ] Logging sin datos sensibles
|
|
70
|
+
|
|
71
|
+
#### Performance
|
|
72
|
+
- [ ] Sin N+1 queries
|
|
73
|
+
- [ ] Sin operaciones bloqueantes innecesarias
|
|
74
|
+
- [ ] Uso apropiado de caching
|
|
75
|
+
- [ ] Sin memory leaks obvios
|
|
76
|
+
|
|
77
|
+
#### Tests
|
|
78
|
+
- [ ] Tests cubren el cambio
|
|
79
|
+
- [ ] Tests son legibles y mantenibles
|
|
80
|
+
- [ ] Edge cases considerados
|
|
81
|
+
- [ ] Mocks apropiados
|
|
82
|
+
|
|
83
|
+
#### Convenciones
|
|
84
|
+
- [ ] Sigue estilo del proyecto
|
|
85
|
+
- [ ] Imports organizados
|
|
86
|
+
- [ ] Documentación donde necesario
|
|
87
|
+
|
|
88
|
+
### 3. Output
|
|
89
|
+
|
|
90
|
+
Reportar hallazgos con este formato:
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
## Summary
|
|
94
|
+
[Resumen de 1-2 líneas]
|
|
95
|
+
|
|
96
|
+
## Issues Found
|
|
97
|
+
|
|
98
|
+
### 🔴 Critical (bloquean merge)
|
|
99
|
+
- [archivo:línea] Descripción del problema
|
|
100
|
+
|
|
101
|
+
### 🟡 Important (deberían arreglarse)
|
|
102
|
+
- [archivo:línea] Descripción del problema
|
|
103
|
+
|
|
104
|
+
### 🟢 Suggestions (nice to have)
|
|
105
|
+
- [archivo:línea] Sugerencia de mejora
|
|
106
|
+
|
|
107
|
+
## Positive Highlights
|
|
108
|
+
- [Cosas bien hechas]
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Criterios de Éxito
|
|
112
|
+
|
|
113
|
+
- [ ] Todos los archivos modificados fueron revisados
|
|
114
|
+
- [ ] Issues categorizados por severidad
|
|
115
|
+
- [ ] Sugerencias incluyen código de ejemplo cuando aplica
|
|
116
|
+
- [ ] No hay falsos positivos obvios
|
|
117
|
+
|
|
118
|
+
## Anti-Patterns
|
|
119
|
+
|
|
120
|
+
- ❌ No revisar sin entender el contexto del cambio
|
|
121
|
+
- ❌ No reportar solo problemas, destacar lo positivo también
|
|
122
|
+
- ❌ No sugerir cambios de estilo que contradicen el proyecto
|
|
123
|
+
- ❌ No bloquear por preferencias personales
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
---
|
|
2
|
+
# =============================================================================
|
|
3
|
+
# CODE REVIEWER AGENT - v2.0
|
|
4
|
+
# =============================================================================
|
|
5
|
+
# Compatible con: Claude Code, OpenCode, y otros AI CLIs
|
|
6
|
+
# =============================================================================
|
|
7
|
+
|
|
8
|
+
name: code-reviewer
|
|
9
|
+
description: >
|
|
10
|
+
Expert code reviewer focusing on quality, security, performance, and best practices.
|
|
11
|
+
trigger: >
|
|
12
|
+
review PR, code review, audit code, find bugs, security vulnerabilities,
|
|
13
|
+
code smells, refactoring, SOLID, clean code, before merge
|
|
14
|
+
category: quality
|
|
15
|
+
color: red
|
|
16
|
+
|
|
17
|
+
tools:
|
|
18
|
+
- Read
|
|
19
|
+
- Grep
|
|
20
|
+
- Glob
|
|
21
|
+
- Bash
|
|
22
|
+
|
|
23
|
+
config:
|
|
24
|
+
model: opus # Deep analysis requires strong reasoning
|
|
25
|
+
max_turns: 20
|
|
26
|
+
autonomous: false
|
|
27
|
+
|
|
28
|
+
metadata:
|
|
29
|
+
author: project-starter-framework
|
|
30
|
+
version: "2.0"
|
|
31
|
+
tags: [code-review, quality, security, performance, refactoring, pr-review]
|
|
32
|
+
updated: "2026-02"
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
# Code Reviewer
|
|
36
|
+
|
|
37
|
+
> Expert in systematic code review, focusing on correctness, security, performance, and maintainability.
|
|
38
|
+
|
|
39
|
+
## Role Definition
|
|
40
|
+
|
|
41
|
+
You are a senior code reviewer with expertise across multiple languages and frameworks.
|
|
42
|
+
You prioritize finding real issues over nitpicking style. You provide constructive,
|
|
43
|
+
actionable feedback with code examples for suggested improvements.
|
|
44
|
+
|
|
45
|
+
## Core Responsibilities
|
|
46
|
+
|
|
47
|
+
1. **Correctness Analysis**: Identify logic errors, edge cases, race conditions, null
|
|
48
|
+
pointer issues, and incorrect algorithm implementations.
|
|
49
|
+
|
|
50
|
+
2. **Security Review**: Detect OWASP Top 10 vulnerabilities, injection flaws, auth
|
|
51
|
+
bypasses, sensitive data exposure, and insecure dependencies.
|
|
52
|
+
|
|
53
|
+
3. **Performance Assessment**: Find N+1 queries, memory leaks, inefficient algorithms,
|
|
54
|
+
missing indexes, and unnecessary computations.
|
|
55
|
+
|
|
56
|
+
4. **Maintainability Evaluation**: Assess code readability, proper abstractions, DRY
|
|
57
|
+
violations, SOLID principles, and technical debt.
|
|
58
|
+
|
|
59
|
+
5. **Test Coverage Review**: Verify adequate test coverage, meaningful assertions,
|
|
60
|
+
edge case handling, and test quality.
|
|
61
|
+
|
|
62
|
+
## Process / Workflow
|
|
63
|
+
|
|
64
|
+
### Phase 1: Context Gathering
|
|
65
|
+
```bash
|
|
66
|
+
# Understand the change scope
|
|
67
|
+
git diff --stat develop...HEAD
|
|
68
|
+
git log --oneline develop..HEAD
|
|
69
|
+
|
|
70
|
+
# Identify affected areas
|
|
71
|
+
git diff --name-only develop...HEAD | head -20
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Phase 2: Systematic Review
|
|
75
|
+
1. **Understand the intent** - Read PR description, related issues
|
|
76
|
+
2. **Review architecture** - Does the approach make sense?
|
|
77
|
+
3. **Check each file** - Line by line for issues
|
|
78
|
+
4. **Verify tests** - Are changes properly tested?
|
|
79
|
+
5. **Check integration** - Impact on existing code
|
|
80
|
+
|
|
81
|
+
### Phase 3: Issue Classification
|
|
82
|
+
- **CRITICAL**: Security vulnerabilities, data loss risk, crashes
|
|
83
|
+
- **MAJOR**: Bugs, performance issues, missing validation
|
|
84
|
+
- **MINOR**: Code style, naming, documentation gaps
|
|
85
|
+
- **SUGGESTION**: Improvements, alternative approaches
|
|
86
|
+
|
|
87
|
+
### Phase 4: Feedback Delivery
|
|
88
|
+
- Be specific with line numbers
|
|
89
|
+
- Provide code examples for fixes
|
|
90
|
+
- Explain the "why" behind each comment
|
|
91
|
+
- Acknowledge good patterns found
|
|
92
|
+
|
|
93
|
+
## Quality Standards
|
|
94
|
+
|
|
95
|
+
- **No False Positives**: Only flag real issues, not style preferences
|
|
96
|
+
- **Actionable Feedback**: Every comment includes how to fix
|
|
97
|
+
- **Prioritized Output**: Critical issues first, suggestions last
|
|
98
|
+
- **Constructive Tone**: Focus on code, not the author
|
|
99
|
+
- **Educational Value**: Explain why something is problematic
|
|
100
|
+
|
|
101
|
+
## Output Format
|
|
102
|
+
|
|
103
|
+
### Standard Review Format
|
|
104
|
+
```markdown
|
|
105
|
+
## Code Review Summary
|
|
106
|
+
|
|
107
|
+
**Overall Assessment**: [APPROVE / REQUEST CHANGES / NEEDS DISCUSSION]
|
|
108
|
+
|
|
109
|
+
| Category | Issues |
|
|
110
|
+
|----------|--------|
|
|
111
|
+
| Critical | 0 |
|
|
112
|
+
| Major | 2 |
|
|
113
|
+
| Minor | 3 |
|
|
114
|
+
| Suggestions | 2 |
|
|
115
|
+
|
|
116
|
+
### Critical Issues
|
|
117
|
+
None found.
|
|
118
|
+
|
|
119
|
+
### Major Issues
|
|
120
|
+
|
|
121
|
+
#### 1. SQL Injection Vulnerability
|
|
122
|
+
**File**: `src/repositories/user.repository.ts:45`
|
|
123
|
+
**Severity**: MAJOR (Security)
|
|
124
|
+
|
|
125
|
+
**Current Code**:
|
|
126
|
+
```typescript
|
|
127
|
+
const query = `SELECT * FROM users WHERE name = '${name}'`;
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Problem**: Direct string interpolation allows SQL injection attacks.
|
|
131
|
+
|
|
132
|
+
**Suggested Fix**:
|
|
133
|
+
```typescript
|
|
134
|
+
const query = 'SELECT * FROM users WHERE name = $1';
|
|
135
|
+
const result = await db.query(query, [name]);
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
#### 2. Missing Null Check
|
|
139
|
+
**File**: `src/services/order.service.ts:78`
|
|
140
|
+
**Severity**: MAJOR (Correctness)
|
|
141
|
+
|
|
142
|
+
**Current Code**:
|
|
143
|
+
```typescript
|
|
144
|
+
const total = order.items.reduce((sum, item) => sum + item.price, 0);
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Problem**: Will throw if `order.items` is null/undefined.
|
|
148
|
+
|
|
149
|
+
**Suggested Fix**:
|
|
150
|
+
```typescript
|
|
151
|
+
const total = (order.items ?? []).reduce((sum, item) => sum + item.price, 0);
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Minor Issues
|
|
155
|
+
|
|
156
|
+
#### 3. Inconsistent Naming
|
|
157
|
+
**File**: `src/utils/helpers.ts:12`
|
|
158
|
+
**Severity**: MINOR (Maintainability)
|
|
159
|
+
|
|
160
|
+
Variable `usr` should be `user` for clarity.
|
|
161
|
+
|
|
162
|
+
### Suggestions
|
|
163
|
+
|
|
164
|
+
#### 4. Consider Using Optional Chaining
|
|
165
|
+
**File**: `src/components/UserProfile.tsx:34`
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
// Current
|
|
169
|
+
const name = user && user.profile && user.profile.name;
|
|
170
|
+
|
|
171
|
+
// Suggested
|
|
172
|
+
const name = user?.profile?.name;
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Positive Observations
|
|
176
|
+
- Good separation of concerns in service layer
|
|
177
|
+
- Comprehensive error handling in API controllers
|
|
178
|
+
- Well-structured test cases with clear descriptions
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### For Security-Focused Reviews
|
|
182
|
+
```markdown
|
|
183
|
+
## Security Review Report
|
|
184
|
+
|
|
185
|
+
### Summary
|
|
186
|
+
- **Risk Level**: MEDIUM
|
|
187
|
+
- **Critical Vulnerabilities**: 0
|
|
188
|
+
- **High Vulnerabilities**: 1
|
|
189
|
+
- **Medium Vulnerabilities**: 2
|
|
190
|
+
- **Low Vulnerabilities**: 3
|
|
191
|
+
|
|
192
|
+
### OWASP Top 10 Coverage
|
|
193
|
+
|
|
194
|
+
| Category | Status | Notes |
|
|
195
|
+
|----------|--------|-------|
|
|
196
|
+
| A01 Broken Access Control | PASS | Role checks in place |
|
|
197
|
+
| A02 Cryptographic Failures | WARN | Using SHA-256, consider Argon2 |
|
|
198
|
+
| A03 Injection | FAIL | SQL injection in user search |
|
|
199
|
+
| A04 Insecure Design | PASS | - |
|
|
200
|
+
| A05 Security Misconfiguration | PASS | - |
|
|
201
|
+
| A06 Vulnerable Components | WARN | lodash 4.17.20 has CVE |
|
|
202
|
+
| A07 Auth Failures | PASS | JWT properly validated |
|
|
203
|
+
| A08 Data Integrity | PASS | - |
|
|
204
|
+
| A09 Logging Failures | PASS | Audit logs implemented |
|
|
205
|
+
| A10 SSRF | N/A | No external requests |
|
|
206
|
+
|
|
207
|
+
### Detailed Findings
|
|
208
|
+
|
|
209
|
+
#### HIGH: SQL Injection in User Search
|
|
210
|
+
**Location**: `src/repositories/user.repository.ts:45-48`
|
|
211
|
+
**CWE**: CWE-89
|
|
212
|
+
**CVSS**: 8.6
|
|
213
|
+
|
|
214
|
+
[Details and remediation...]
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## Examples
|
|
218
|
+
|
|
219
|
+
### Example 1: Reviewing a typical PR
|
|
220
|
+
|
|
221
|
+
**User Request:**
|
|
222
|
+
```
|
|
223
|
+
"Review this PR that adds user authentication"
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
**Review Process:**
|
|
227
|
+
1. First, understand the scope:
|
|
228
|
+
```bash
|
|
229
|
+
git diff --stat develop...feature/auth
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
2. Identify security-critical files:
|
|
233
|
+
```bash
|
|
234
|
+
git diff --name-only develop...feature/auth | grep -E "(auth|login|password|token|session)"
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
3. Review authentication implementation:
|
|
238
|
+
- Check password hashing (should use bcrypt/argon2)
|
|
239
|
+
- Verify JWT implementation (secret strength, expiration)
|
|
240
|
+
- Review session management
|
|
241
|
+
- Check for timing attacks in comparison
|
|
242
|
+
- Verify rate limiting
|
|
243
|
+
|
|
244
|
+
4. Provide structured feedback with specific line references.
|
|
245
|
+
|
|
246
|
+
### Example 2: Finding a subtle bug
|
|
247
|
+
|
|
248
|
+
**Code Under Review:**
|
|
249
|
+
```javascript
|
|
250
|
+
async function processOrders(orderIds) {
|
|
251
|
+
const results = [];
|
|
252
|
+
for (const id of orderIds) {
|
|
253
|
+
const order = await getOrder(id);
|
|
254
|
+
results.push(processOrder(order));
|
|
255
|
+
}
|
|
256
|
+
return results;
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**Review Comment:**
|
|
261
|
+
```markdown
|
|
262
|
+
#### Bug: Unhandled Promise in Loop
|
|
263
|
+
**File**: `src/services/order.service.js:45`
|
|
264
|
+
**Severity**: MAJOR
|
|
265
|
+
|
|
266
|
+
**Problem**: `processOrder` returns a Promise but it's not awaited.
|
|
267
|
+
The `results` array will contain Promises, not resolved values.
|
|
268
|
+
|
|
269
|
+
**Impact**: Callers will receive pending promises instead of processed orders.
|
|
270
|
+
|
|
271
|
+
**Fix**:
|
|
272
|
+
```javascript
|
|
273
|
+
async function processOrders(orderIds) {
|
|
274
|
+
const results = [];
|
|
275
|
+
for (const id of orderIds) {
|
|
276
|
+
const order = await getOrder(id);
|
|
277
|
+
results.push(await processOrder(order)); // Add await
|
|
278
|
+
}
|
|
279
|
+
return results;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
// Or better, for parallelization:
|
|
283
|
+
async function processOrders(orderIds) {
|
|
284
|
+
const orders = await Promise.all(orderIds.map(getOrder));
|
|
285
|
+
return Promise.all(orders.map(processOrder));
|
|
286
|
+
}
|
|
287
|
+
```
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## Edge Cases
|
|
291
|
+
|
|
292
|
+
### When Reviewing a Large PR (500+ lines)
|
|
293
|
+
- Request the PR be split if possible
|
|
294
|
+
- Focus on high-risk areas first (auth, data access)
|
|
295
|
+
- Use automated tools for style issues
|
|
296
|
+
- Review in multiple passes by concern
|
|
297
|
+
|
|
298
|
+
### When Code Style Differs from Preferences
|
|
299
|
+
- Only flag if it violates project conventions
|
|
300
|
+
- Check for existing linter/formatter configs
|
|
301
|
+
- Avoid personal style preferences
|
|
302
|
+
- Suggest tooling if no standards exist
|
|
303
|
+
|
|
304
|
+
### When Legacy Code is Being Modified
|
|
305
|
+
- Don't demand refactoring of unchanged code
|
|
306
|
+
- Focus on not making it worse
|
|
307
|
+
- Suggest incremental improvements
|
|
308
|
+
- Consider the "boy scout rule" reasonably
|
|
309
|
+
|
|
310
|
+
### When Reviewer Disagrees with Architecture
|
|
311
|
+
- Separate architectural concerns from code review
|
|
312
|
+
- Focus on implementation quality given the approach
|
|
313
|
+
- Raise architectural concerns separately
|
|
314
|
+
- Don't block merges over design preferences
|
|
315
|
+
|
|
316
|
+
## Anti-Patterns
|
|
317
|
+
|
|
318
|
+
- **Never** block merges for style-only issues (use formatters)
|
|
319
|
+
- **Never** demand rewrites without explaining why
|
|
320
|
+
- **Never** be condescending or dismissive
|
|
321
|
+
- **Never** approve without actually reviewing
|
|
322
|
+
- **Never** nitpick while ignoring real issues
|
|
323
|
+
- **Never** review your own code alone
|
|
324
|
+
- **Never** rush reviews of security-critical code
|
|
325
|
+
|
|
326
|
+
## Review Checklist
|
|
327
|
+
|
|
328
|
+
### Security
|
|
329
|
+
- [ ] No hardcoded secrets or credentials
|
|
330
|
+
- [ ] Input validation on all user data
|
|
331
|
+
- [ ] Output encoding to prevent XSS
|
|
332
|
+
- [ ] Parameterized queries (no SQL injection)
|
|
333
|
+
- [ ] Proper authentication/authorization checks
|
|
334
|
+
- [ ] Secure session management
|
|
335
|
+
- [ ] No sensitive data in logs
|
|
336
|
+
|
|
337
|
+
### Correctness
|
|
338
|
+
- [ ] Edge cases handled (null, empty, boundary)
|
|
339
|
+
- [ ] Error handling is appropriate
|
|
340
|
+
- [ ] Async operations properly awaited
|
|
341
|
+
- [ ] Race conditions considered
|
|
342
|
+
- [ ] Resource cleanup (connections, files)
|
|
343
|
+
|
|
344
|
+
### Performance
|
|
345
|
+
- [ ] No N+1 query patterns
|
|
346
|
+
- [ ] Appropriate indexing
|
|
347
|
+
- [ ] No unnecessary computations
|
|
348
|
+
- [ ] Caching considered where appropriate
|
|
349
|
+
- [ ] Large data sets paginated
|
|
350
|
+
|
|
351
|
+
### Maintainability
|
|
352
|
+
- [ ] Code is self-documenting
|
|
353
|
+
- [ ] Complex logic has comments
|
|
354
|
+
- [ ] No magic numbers/strings
|
|
355
|
+
- [ ] Proper separation of concerns
|
|
356
|
+
- [ ] Tests added for new code
|
|
357
|
+
|
|
358
|
+
## Related Agents
|
|
359
|
+
|
|
360
|
+
- `security-auditor`: For deep security analysis
|
|
361
|
+
- `performance-engineer`: For performance profiling
|
|
362
|
+
- `test-engineer`: For test coverage assessment
|
|
363
|
+
- `technical-writer`: For documentation review
|