agileflow 4.0.0-alpha.2 → 4.0.0-alpha.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/CHANGELOG.md +51 -0
- package/content/plugins/accessibility/plugin.yaml +14 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/SKILL.md +392 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/references/aria-patterns.md +528 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/references/testing-checklist.md +457 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/references/wcag-guide.md +683 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/workflows/audit-page.md +310 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/workflows/implement-accessible-component.md +479 -0
- package/content/plugins/ads/agents/ads-audit-budget.md +185 -0
- package/content/plugins/ads/agents/ads-audit-compliance.md +171 -0
- package/content/plugins/ads/agents/ads-audit-creative.md +168 -0
- package/content/plugins/ads/agents/ads-audit-google.md +227 -0
- package/content/plugins/ads/agents/ads-audit-meta.md +184 -0
- package/content/plugins/ads/agents/ads-audit-tracking.md +205 -0
- package/content/plugins/ads/agents/ads-consensus.md +410 -0
- package/content/plugins/ads/agents/ads-generate.md +152 -0
- package/content/plugins/ads/agents/ads-performance-tracker.md +212 -0
- package/content/plugins/ads/plugin.yaml +23 -4
- package/content/plugins/ads/skills/agileflow-ads/SKILL.md +218 -0
- package/content/plugins/ads/skills/agileflow-ads/references/ad-copy-formula-guide.md +131 -0
- package/content/plugins/ads/skills/agileflow-ads/references/audience-targeting-guide.md +137 -0
- package/content/plugins/ads/skills/agileflow-ads/references/bid-strategy-guide.md +115 -0
- package/content/plugins/ads/skills/agileflow-ads/references/platform-benchmarks.md +100 -0
- package/content/plugins/ads/skills/agileflow-ads/workflows/audit.md +118 -0
- package/content/plugins/ads/skills/agileflow-ads/workflows/generate.md +84 -0
- package/content/plugins/audit/agents/a11y-analyzer-aria.md +173 -0
- package/content/plugins/audit/agents/a11y-analyzer-forms.md +173 -0
- package/content/plugins/audit/agents/a11y-analyzer-keyboard.md +183 -0
- package/content/plugins/audit/agents/a11y-analyzer-semantic.md +169 -0
- package/content/plugins/audit/agents/a11y-analyzer-visual.md +172 -0
- package/content/plugins/audit/agents/a11y-consensus.md +249 -0
- package/content/plugins/audit/agents/accessibility.md +558 -0
- package/content/plugins/audit/agents/api-quality-analyzer-conventions.md +156 -0
- package/content/plugins/audit/agents/api-quality-analyzer-docs.md +184 -0
- package/content/plugins/audit/agents/api-quality-analyzer-errors.md +191 -0
- package/content/plugins/audit/agents/api-quality-analyzer-pagination.md +179 -0
- package/content/plugins/audit/agents/api-quality-analyzer-versioning.md +150 -0
- package/content/plugins/audit/agents/api-quality-consensus.md +217 -0
- package/content/plugins/audit/agents/api-validator.md +191 -0
- package/content/plugins/audit/agents/arch-analyzer-circular.md +156 -0
- package/content/plugins/audit/agents/arch-analyzer-complexity.md +193 -0
- package/content/plugins/audit/agents/arch-analyzer-coupling.md +152 -0
- package/content/plugins/audit/agents/arch-analyzer-layering.md +160 -0
- package/content/plugins/audit/agents/arch-analyzer-patterns.md +210 -0
- package/content/plugins/audit/agents/arch-consensus.md +228 -0
- package/content/plugins/audit/agents/browser-qa.md +342 -0
- package/content/plugins/audit/agents/code-reviewer.md +298 -0
- package/content/plugins/audit/agents/completeness-analyzer-api.md +199 -0
- package/content/plugins/audit/agents/completeness-analyzer-conditional.md +211 -0
- package/content/plugins/audit/agents/completeness-analyzer-handlers.md +166 -0
- package/content/plugins/audit/agents/completeness-analyzer-imports.md +165 -0
- package/content/plugins/audit/agents/completeness-analyzer-routes.md +190 -0
- package/content/plugins/audit/agents/completeness-analyzer-state.md +196 -0
- package/content/plugins/audit/agents/completeness-analyzer-stubs.md +206 -0
- package/content/plugins/audit/agents/completeness-consensus.md +295 -0
- package/content/plugins/audit/agents/error-analyzer.md +213 -0
- package/content/plugins/audit/agents/flow-analyzer-authorization.md +182 -0
- package/content/plugins/audit/agents/flow-analyzer-discovery.md +174 -0
- package/content/plugins/audit/agents/flow-analyzer-errors.md +186 -0
- package/content/plugins/audit/agents/flow-analyzer-feedback.md +185 -0
- package/content/plugins/audit/agents/flow-analyzer-navigation.md +177 -0
- package/content/plugins/audit/agents/flow-analyzer-persistence.md +193 -0
- package/content/plugins/audit/agents/flow-analyzer-wiring.md +169 -0
- package/content/plugins/audit/agents/flow-consensus.md +237 -0
- package/content/plugins/audit/agents/legal-analyzer-a11y.md +114 -0
- package/content/plugins/audit/agents/legal-analyzer-ai.md +121 -0
- package/content/plugins/audit/agents/legal-analyzer-consumer.md +114 -0
- package/content/plugins/audit/agents/legal-analyzer-content.md +117 -0
- package/content/plugins/audit/agents/legal-analyzer-international.md +119 -0
- package/content/plugins/audit/agents/legal-analyzer-licensing.md +119 -0
- package/content/plugins/audit/agents/legal-analyzer-privacy.md +112 -0
- package/content/plugins/audit/agents/legal-analyzer-security.md +116 -0
- package/content/plugins/audit/agents/legal-analyzer-terms.md +115 -0
- package/content/plugins/audit/agents/legal-consensus.md +250 -0
- package/content/plugins/audit/agents/logic-analyzer-edge.md +179 -0
- package/content/plugins/audit/agents/logic-analyzer-flow.md +264 -0
- package/content/plugins/audit/agents/logic-analyzer-invariant.md +215 -0
- package/content/plugins/audit/agents/logic-analyzer-race.md +280 -0
- package/content/plugins/audit/agents/logic-analyzer-type.md +227 -0
- package/content/plugins/audit/agents/logic-consensus.md +259 -0
- package/content/plugins/audit/agents/perf-analyzer-assets.md +182 -0
- package/content/plugins/audit/agents/perf-analyzer-bundle.md +173 -0
- package/content/plugins/audit/agents/perf-analyzer-caching.md +170 -0
- package/content/plugins/audit/agents/perf-analyzer-compute.md +173 -0
- package/content/plugins/audit/agents/perf-analyzer-memory.md +193 -0
- package/content/plugins/audit/agents/perf-analyzer-network.md +165 -0
- package/content/plugins/audit/agents/perf-analyzer-queries.md +162 -0
- package/content/plugins/audit/agents/perf-analyzer-rendering.md +168 -0
- package/content/plugins/audit/agents/perf-consensus.md +287 -0
- package/content/plugins/audit/agents/qa.md +820 -0
- package/content/plugins/audit/agents/quality-analyzer-comments.md +159 -0
- package/content/plugins/audit/agents/quality-analyzer-duplication.md +184 -0
- package/content/plugins/audit/agents/quality-analyzer-naming.md +160 -0
- package/content/plugins/audit/agents/quality-consensus.md +241 -0
- package/content/plugins/audit/agents/schema-validator.md +473 -0
- package/content/plugins/audit/agents/security-analyzer-api.md +210 -0
- package/content/plugins/audit/agents/security-analyzer-auth.md +169 -0
- package/content/plugins/audit/agents/security-analyzer-authz.md +180 -0
- package/content/plugins/audit/agents/security-analyzer-deps.md +153 -0
- package/content/plugins/audit/agents/security-analyzer-infra.md +184 -0
- package/content/plugins/audit/agents/security-analyzer-injection.md +155 -0
- package/content/plugins/audit/agents/security-analyzer-input.md +201 -0
- package/content/plugins/audit/agents/security-analyzer-secrets.md +183 -0
- package/content/plugins/audit/agents/security-consensus.md +283 -0
- package/content/plugins/audit/agents/test-analyzer-assertions.md +188 -0
- package/content/plugins/audit/agents/test-analyzer-coverage.md +189 -0
- package/content/plugins/audit/agents/test-analyzer-fragility.md +193 -0
- package/content/plugins/audit/agents/test-analyzer-integration.md +161 -0
- package/content/plugins/audit/agents/test-analyzer-maintenance.md +180 -0
- package/content/plugins/audit/agents/test-analyzer-mocking.md +188 -0
- package/content/plugins/audit/agents/test-analyzer-patterns.md +196 -0
- package/content/plugins/audit/agents/test-analyzer-structure.md +184 -0
- package/content/plugins/audit/agents/test-consensus.md +301 -0
- package/content/plugins/audit/agents/testing.md +561 -0
- package/content/plugins/audit/agents/ui-validator.md +344 -0
- package/content/plugins/audit/plugin.yaml +186 -5
- package/content/plugins/audit/skills/agileflow-audit/SKILL.md +113 -0
- package/content/plugins/audit/skills/agileflow-audit/references/audit-depth-guide.md +151 -0
- package/content/plugins/audit/skills/agileflow-audit/references/dependency-risk-guide.md +139 -0
- package/content/plugins/audit/skills/agileflow-audit/references/owasp-top10.md +120 -0
- package/content/plugins/audit/skills/agileflow-audit/references/performance-budget-guide.md +143 -0
- package/content/plugins/audit/skills/agileflow-audit/references/wcag-criteria.md +117 -0
- package/content/plugins/audit/skills/agileflow-audit/workflows/run-audit.md +52 -0
- package/content/plugins/audit/skills/agileflow-audit/workflows/tdd.md +66 -0
- package/content/plugins/core/agents/adr-writer.md +521 -0
- package/content/plugins/core/agents/epic-planner.md +520 -0
- package/content/plugins/core/agents/mentor.md +709 -0
- package/content/plugins/core/agents/orchestrator.md +776 -0
- package/content/plugins/core/agents/team-coordinator.md +334 -0
- package/content/plugins/core/agents/team-lead.md +181 -0
- package/content/plugins/core/agents/workspace-orchestrator.md +146 -0
- package/content/plugins/core/hooks/context-loader.js +31 -4
- package/content/plugins/core/hooks/damage-control-bash.js +10 -2
- package/content/plugins/core/hooks/damage-control-edit.js +4 -1
- package/content/plugins/core/hooks/damage-control-patterns.yaml +1 -1
- package/content/plugins/core/hooks/damage-control-write.js +4 -1
- package/content/plugins/core/hooks/{pre-compact-state.js → post-compact-state.js} +25 -8
- package/content/plugins/core/hooks/preferences-injector.js +352 -0
- package/content/plugins/core/plugin.yaml +24 -28
- package/content/plugins/core/skills/agileflow-adr/SKILL.md +34 -8
- package/content/plugins/core/skills/agileflow-adr/references/madr-format-guide.md +86 -0
- package/content/plugins/core/skills/agileflow-adr/workflows/write-adr.md +57 -0
- package/content/plugins/core/skills/agileflow-babysit-mentor/SKILL.md +94 -27
- package/content/plugins/core/skills/agileflow-babysit-mentor/references/mentor-decision-guide.md +81 -0
- package/content/plugins/core/skills/agileflow-babysit-mentor/workflows/mentor-session.md +79 -0
- package/content/plugins/core/skills/agileflow-epic-planner/SKILL.md +37 -7
- package/content/plugins/core/skills/agileflow-epic-planner/references/epic-sizing-guide.md +81 -0
- package/content/plugins/core/skills/agileflow-epic-planner/workflows/plan-epic.md +55 -0
- package/content/plugins/core/skills/agileflow-status-updater/SKILL.md +36 -20
- package/content/plugins/core/skills/agileflow-status-updater/references/status-transitions.md +89 -0
- package/content/plugins/core/skills/agileflow-status-updater/workflows/update-status.md +56 -0
- package/content/plugins/core/skills/agileflow-story-writer/SKILL.md +39 -114
- package/content/plugins/core/skills/agileflow-story-writer/references/estimation-reference.md +36 -0
- package/content/plugins/core/skills/agileflow-story-writer/references/story-template.md +92 -0
- package/content/plugins/core/skills/agileflow-story-writer/workflows/write-story.md +138 -0
- package/content/plugins/council/agents/council-advocate.md +223 -0
- package/content/plugins/council/agents/council-analyst.md +278 -0
- package/content/plugins/council/agents/council-compounder.md +204 -0
- package/content/plugins/council/agents/council-contrarian.md +217 -0
- package/content/plugins/council/agents/council-moonshot.md +217 -0
- package/content/plugins/council/agents/council-optimist.md +185 -0
- package/content/plugins/council/agents/council-revenue.md +200 -0
- package/content/plugins/council/agents/council-technical.md +218 -0
- package/content/plugins/council/agents/multi-expert.md +334 -0
- package/content/plugins/council/plugin.yaml +23 -4
- package/content/plugins/council/skills/agileflow-council/SKILL.md +102 -0
- package/content/plugins/council/skills/agileflow-council/references/decision-log-template.md +109 -0
- package/content/plugins/council/skills/agileflow-council/references/perspective-guide.md +104 -0
- package/content/plugins/council/skills/agileflow-council/references/when-to-convene-guide.md +112 -0
- package/content/plugins/council/skills/agileflow-council/workflows/convene.md +73 -0
- package/content/plugins/council/skills/agileflow-council/workflows/multi-expert.md +75 -0
- package/content/plugins/database/plugin.yaml +14 -0
- package/content/plugins/database/skills/agileflow-database/SKILL.md +284 -0
- package/content/plugins/database/skills/agileflow-database/references/indexing-guide.md +313 -0
- package/content/plugins/database/skills/agileflow-database/references/migration-guide.md +328 -0
- package/content/plugins/database/skills/agileflow-database/references/schema-design-guide.md +467 -0
- package/content/plugins/database/skills/agileflow-database/workflows/design-schema.md +213 -0
- package/content/plugins/database/skills/agileflow-database/workflows/optimize-query.md +253 -0
- package/content/plugins/debugging/plugin.yaml +14 -0
- package/content/plugins/debugging/skills/agileflow-debug/SKILL.md +236 -0
- package/content/plugins/debugging/skills/agileflow-debug/references/common-patterns.md +350 -0
- package/content/plugins/debugging/skills/agileflow-debug/references/debugging-strategies.md +328 -0
- package/content/plugins/debugging/skills/agileflow-debug/workflows/debug-issue.md +187 -0
- package/content/plugins/debugging/skills/agileflow-debug/workflows/reproduce-bug.md +194 -0
- package/content/plugins/delivery/agents/ci.md +547 -0
- package/content/plugins/delivery/agents/devops.md +789 -0
- package/content/plugins/delivery/plugin.yaml +19 -0
- package/content/plugins/delivery/skills/agileflow-delivery/SKILL.md +111 -0
- package/content/plugins/delivery/skills/agileflow-delivery/references/changelog-format-guide.md +133 -0
- package/content/plugins/delivery/skills/agileflow-delivery/references/ci-pipeline-guide.md +158 -0
- package/content/plugins/delivery/skills/agileflow-delivery/references/pr-checklist-guide.md +133 -0
- package/content/plugins/delivery/skills/agileflow-delivery/references/release-checklist.md +142 -0
- package/content/plugins/delivery/skills/agileflow-delivery/workflows/changelog.md +72 -0
- package/content/plugins/delivery/skills/agileflow-delivery/workflows/deploy.md +74 -0
- package/content/plugins/delivery/skills/agileflow-delivery/workflows/pr.md +75 -0
- package/content/plugins/docs/agents/documentation.md +544 -0
- package/content/plugins/docs/agents/readme-updater.md +640 -0
- package/content/plugins/docs/plugin.yaml +19 -0
- package/content/plugins/docs/skills/agileflow-docs/SKILL.md +106 -0
- package/content/plugins/docs/skills/agileflow-docs/references/api-doc-template.md +167 -0
- package/content/plugins/docs/skills/agileflow-docs/references/doc-types-guide.md +141 -0
- package/content/plugins/docs/skills/agileflow-docs/references/readme-template.md +156 -0
- package/content/plugins/docs/skills/agileflow-docs/workflows/readme-sync.md +57 -0
- package/content/plugins/docs/skills/agileflow-docs/workflows/sync.md +64 -0
- package/content/plugins/engineering/agents/api.md +718 -0
- package/content/plugins/engineering/agents/codebase-query.md +285 -0
- package/content/plugins/engineering/agents/compliance.md +559 -0
- package/content/plugins/engineering/agents/database.md +644 -0
- package/content/plugins/engineering/agents/integrations.md +644 -0
- package/content/plugins/engineering/agents/mobile.md +552 -0
- package/content/plugins/engineering/agents/monitoring.md +585 -0
- package/content/plugins/engineering/agents/performance.md +529 -0
- package/content/plugins/engineering/agents/refactor.md +592 -0
- package/content/plugins/engineering/agents/security.md +524 -0
- package/content/plugins/engineering/agents/ui.md +1336 -0
- package/content/plugins/engineering/plugin.yaml +37 -0
- package/content/plugins/engineering/skills/agileflow-engineering/SKILL.md +127 -0
- package/content/plugins/engineering/skills/agileflow-engineering/references/code-review-guide.md +126 -0
- package/content/plugins/engineering/skills/agileflow-engineering/references/domain-routing-guide.md +89 -0
- package/content/plugins/engineering/skills/agileflow-engineering/references/refactoring-guide.md +136 -0
- package/content/plugins/engineering/skills/agileflow-engineering/workflows/diagnose.md +63 -0
- package/content/plugins/engineering/skills/agileflow-engineering/workflows/impact.md +60 -0
- package/content/plugins/ideation/agents/brainstorm-analyzer-features.md +179 -0
- package/content/plugins/ideation/agents/brainstorm-analyzer-growth.md +169 -0
- package/content/plugins/ideation/agents/brainstorm-analyzer-integration.md +181 -0
- package/content/plugins/ideation/agents/brainstorm-analyzer-market.md +150 -0
- package/content/plugins/ideation/agents/brainstorm-analyzer-ux.md +180 -0
- package/content/plugins/ideation/agents/brainstorm-consensus.md +245 -0
- package/content/plugins/ideation/agents/design.md +568 -0
- package/content/plugins/ideation/agents/product.md +582 -0
- package/content/plugins/ideation/plugin.yaml +31 -0
- package/content/plugins/ideation/skills/agileflow-ideation/SKILL.md +109 -0
- package/content/plugins/ideation/skills/agileflow-ideation/references/brainstorm-techniques.md +138 -0
- package/content/plugins/ideation/skills/agileflow-ideation/references/competitive-analysis-template.md +148 -0
- package/content/plugins/ideation/skills/agileflow-ideation/references/feature-prioritization-guide.md +147 -0
- package/content/plugins/ideation/skills/agileflow-ideation/references/user-story-patterns.md +152 -0
- package/content/plugins/ideation/skills/agileflow-ideation/workflows/features.md +65 -0
- package/content/plugins/ideation/skills/agileflow-ideation/workflows/ideate.md +54 -0
- package/content/plugins/migration/agents/datamigration.md +757 -0
- package/content/plugins/migration/plugin.yaml +17 -0
- package/content/plugins/migration/skills/agileflow-migration/SKILL.md +106 -0
- package/content/plugins/migration/skills/agileflow-migration/references/data-validation-checklist.md +154 -0
- package/content/plugins/migration/skills/agileflow-migration/references/migration-patterns.md +209 -0
- package/content/plugins/migration/skills/agileflow-migration/references/rollback-playbook.md +171 -0
- package/content/plugins/migration/skills/agileflow-migration/references/version-compatibility-matrix.md +155 -0
- package/content/plugins/migration/skills/agileflow-migration/workflows/plan.md +73 -0
- package/content/plugins/migration/skills/agileflow-migration/workflows/validate.md +71 -0
- package/content/plugins/performance/plugin.yaml +14 -0
- package/content/plugins/performance/skills/agileflow-performance/SKILL.md +224 -0
- package/content/plugins/performance/skills/agileflow-performance/references/optimization-patterns.md +554 -0
- package/content/plugins/performance/skills/agileflow-performance/references/profiling-guide.md +383 -0
- package/content/plugins/performance/skills/agileflow-performance/references/web-vitals-guide.md +360 -0
- package/content/plugins/performance/skills/agileflow-performance/workflows/improve-web-vitals.md +344 -0
- package/content/plugins/performance/skills/agileflow-performance/workflows/profile-and-fix.md +254 -0
- package/content/plugins/planning/agents/analytics.md +670 -0
- package/content/plugins/planning/agents/rlm-subcore.md +215 -0
- package/content/plugins/planning/plugin.yaml +19 -0
- package/content/plugins/planning/skills/agileflow-planning/SKILL.md +111 -0
- package/content/plugins/planning/skills/agileflow-planning/references/estimation-guide.md +114 -0
- package/content/plugins/planning/skills/agileflow-planning/references/rpi-workflow.md +119 -0
- package/content/plugins/planning/skills/agileflow-planning/references/sprint-planning-guide.md +145 -0
- package/content/plugins/planning/skills/agileflow-planning/workflows/impact.md +63 -0
- package/content/plugins/planning/skills/agileflow-planning/workflows/rpi.md +104 -0
- package/content/plugins/psychology/plugin.yaml +14 -0
- package/content/plugins/psychology/skills/agileflow-retention/SKILL.md +252 -0
- package/content/plugins/psychology/skills/agileflow-retention/references/competitor-analysis.md +240 -0
- package/content/plugins/psychology/skills/agileflow-retention/references/psychology-models.md +349 -0
- package/content/plugins/psychology/skills/agileflow-retention/references/retention-patterns.md +279 -0
- package/content/plugins/psychology/skills/agileflow-retention/workflows/design-retention-feature.md +287 -0
- package/content/plugins/psychology/skills/agileflow-retention/workflows/retention-audit.md +259 -0
- package/content/plugins/refactoring/plugin.yaml +14 -0
- package/content/plugins/refactoring/skills/agileflow-refactor/SKILL.md +235 -0
- package/content/plugins/refactoring/skills/agileflow-refactor/references/refactoring-patterns.md +405 -0
- package/content/plugins/refactoring/skills/agileflow-refactor/references/safety-checks.md +177 -0
- package/content/plugins/refactoring/skills/agileflow-refactor/workflows/extract-module.md +226 -0
- package/content/plugins/refactoring/skills/agileflow-refactor/workflows/safe-refactor.md +169 -0
- package/content/plugins/research/agents/research.md +503 -0
- package/content/plugins/research/plugin.yaml +17 -0
- package/content/plugins/research/skills/agileflow-research/SKILL.md +110 -0
- package/content/plugins/research/skills/agileflow-research/references/knowledge-decay-guide.md +121 -0
- package/content/plugins/research/skills/agileflow-research/references/research-prompt-guide.md +141 -0
- package/content/plugins/research/skills/agileflow-research/references/synthesis-template.md +154 -0
- package/content/plugins/research/skills/agileflow-research/workflows/analyze.md +60 -0
- package/content/plugins/research/skills/agileflow-research/workflows/ask.md +64 -0
- package/content/plugins/research/skills/agileflow-research/workflows/import.md +66 -0
- package/content/plugins/research/skills/agileflow-research/workflows/synthesize.md +66 -0
- package/content/plugins/reviews/plugin.yaml +14 -0
- package/content/plugins/reviews/skills/agileflow-pr-reviewer/SKILL.md +241 -0
- package/content/plugins/reviews/skills/agileflow-pr-reviewer/references/review-checklist.md +200 -0
- package/content/plugins/reviews/skills/agileflow-pr-reviewer/references/security-patterns.md +328 -0
- package/content/plugins/reviews/skills/agileflow-pr-reviewer/workflows/review-pr.md +153 -0
- package/content/plugins/reviews/skills/agileflow-pr-reviewer/workflows/security-review.md +177 -0
- package/content/plugins/seo/agents/seo-analyzer-content.md +169 -0
- package/content/plugins/seo/agents/seo-analyzer-images.md +198 -0
- package/content/plugins/seo/agents/seo-analyzer-performance.md +217 -0
- package/content/plugins/seo/agents/seo-analyzer-schema.md +184 -0
- package/content/plugins/seo/agents/seo-analyzer-sitemap.md +177 -0
- package/content/plugins/seo/agents/seo-analyzer-technical.md +151 -0
- package/content/plugins/seo/agents/seo-consensus.md +304 -0
- package/content/plugins/seo/plugin.yaml +19 -4
- package/content/plugins/seo/skills/agileflow-seo/SKILL.md +188 -0
- package/content/plugins/seo/skills/agileflow-seo/references/cwv-thresholds.md +110 -0
- package/content/plugins/seo/skills/agileflow-seo/references/eeat-framework.md +144 -0
- package/content/plugins/seo/skills/agileflow-seo/references/keyword-research-guide.md +125 -0
- package/content/plugins/seo/skills/agileflow-seo/references/schema-types.md +139 -0
- package/content/plugins/seo/skills/agileflow-seo/references/technical-seo-checklist.md +139 -0
- package/content/plugins/seo/skills/agileflow-seo/workflows/audit.md +98 -0
- package/content/plugins/seo/skills/agileflow-seo/workflows/page.md +118 -0
- package/content/plugins/testing/plugin.yaml +16 -0
- package/content/plugins/testing/skills/agileflow-test-writer/SKILL.md +260 -0
- package/content/plugins/testing/skills/agileflow-test-writer/references/coverage-targets.md +239 -0
- package/content/plugins/testing/skills/agileflow-test-writer/references/test-patterns.md +420 -0
- package/content/plugins/testing/skills/agileflow-test-writer/workflows/add-coverage.md +154 -0
- package/content/plugins/testing/skills/agileflow-test-writer/workflows/write-tests-from-ac.md +225 -0
- package/package.json +2 -2
- package/src/cli/commands/doctor.js +818 -30
- package/src/cli/commands/hook.js +17 -14
- package/src/cli/commands/launch.js +1454 -0
- package/src/cli/commands/learn.js +149 -0
- package/src/cli/commands/plugins.js +113 -0
- package/src/cli/commands/setup.js +455 -110
- package/src/cli/commands/skills.js +324 -0
- package/src/cli/commands/status.js +8 -10
- package/src/cli/commands/update.js +76 -15
- package/src/cli/index.js +90 -26
- package/src/cli/wizard/babysit-mode-picker.js +192 -0
- package/src/cli/wizard/behaviors-picker.js +208 -54
- package/src/cli/wizard/ide-picker.js +40 -28
- package/src/cli/wizard/install-scope-picker.js +57 -0
- package/src/cli/wizard/launch-alias-picker.js +50 -0
- package/src/cli/wizard/launch-cli-picker.js +129 -0
- package/src/cli/wizard/launch-tmux-picker.js +133 -0
- package/src/cli/wizard/learnings-picker.js +40 -0
- package/src/cli/wizard/plugin-picker.js +47 -16
- package/src/lib/brand.js +116 -0
- package/src/lib/errors.js +120 -0
- package/src/lib/path-check.js +39 -0
- package/src/runtime/config/defaults.js +22 -17
- package/src/runtime/config/loader.js +77 -8
- package/src/runtime/config/schema.json +43 -16
- package/src/runtime/config/writer.js +3 -1
- package/src/runtime/ide/babysit-skill.js +202 -0
- package/src/runtime/ide/capabilities.js +84 -29
- package/src/runtime/ide/claude-code-content.js +177 -0
- package/src/runtime/ide/claude-code-settings.js +67 -29
- package/src/runtime/ide/claude-code-skills.js +47 -32
- package/src/runtime/ide/codex-config.js +295 -0
- package/src/runtime/installer/install.js +252 -24
- package/src/runtime/launch/alias-installer.js +191 -0
- package/src/runtime/launch/cli-resume.js +244 -0
- package/src/runtime/launch/closed-windows.js +338 -0
- package/src/runtime/launch/defaults.js +66 -0
- package/src/runtime/launch/detect-clis.js +69 -0
- package/src/runtime/launch/doctor.js +464 -0
- package/src/runtime/launch/exec-wrapper.js +114 -0
- package/src/runtime/launch/parallel-session.js +247 -0
- package/src/runtime/launch/prefs.js +211 -0
- package/src/runtime/launch/project-prefs.js +234 -0
- package/src/runtime/launch/resolve-cli.js +56 -0
- package/src/runtime/launch/restore.js +152 -0
- package/src/runtime/launch/schema.json +75 -0
- package/src/runtime/launch/session-lifecycle.js +313 -0
- package/src/runtime/launch/session-registry.js +401 -0
- package/src/runtime/launch/spawn.js +103 -0
- package/src/runtime/launch/tabs.js +350 -0
- package/src/runtime/launch/tmux.js +764 -0
- package/src/runtime/launch/worktree.js +260 -0
- package/src/runtime/plugins/registry.js +16 -11
- package/src/runtime/plugins/validator.js +57 -43
- package/src/runtime/skills/learnings.js +308 -0
- package/content/plugins/core/hooks/babysit-mentor-injector.js +0 -55
- package/src/cli/wizard/personalization.js +0 -64
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
id: reviews
|
|
2
|
+
name: PR Reviews
|
|
3
|
+
description: Structured pull request review covering security, logic, tests, and style.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
enabledByDefault: false
|
|
6
|
+
cannotDisable: false
|
|
7
|
+
depends: []
|
|
8
|
+
provides:
|
|
9
|
+
skills:
|
|
10
|
+
- id: agileflow-pr-reviewer
|
|
11
|
+
dir: skills/agileflow-pr-reviewer
|
|
12
|
+
agents: []
|
|
13
|
+
hooks: []
|
|
14
|
+
templates: []
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agileflow-pr-reviewer
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
category: agileflow/reviews
|
|
5
|
+
description: |
|
|
6
|
+
Use when the user wants a structured review of a pull request, diff,
|
|
7
|
+
or code change. Covers security vulnerabilities, logic correctness,
|
|
8
|
+
test coverage gaps, API contract changes, breaking changes, and
|
|
9
|
+
code style. Produces a prioritised findings list and a final
|
|
10
|
+
recommendation: Approve, Request Changes, or Needs Discussion.
|
|
11
|
+
triggers:
|
|
12
|
+
keywords:
|
|
13
|
+
- review this pr
|
|
14
|
+
- review my changes
|
|
15
|
+
- code review
|
|
16
|
+
- pr review
|
|
17
|
+
- check my code
|
|
18
|
+
- review this diff
|
|
19
|
+
- look at my code
|
|
20
|
+
- review before merge
|
|
21
|
+
- review this branch
|
|
22
|
+
- give me feedback on
|
|
23
|
+
priority: 50
|
|
24
|
+
exclude:
|
|
25
|
+
- review this document (not a code review)
|
|
26
|
+
- performance review (HR context)
|
|
27
|
+
- design review
|
|
28
|
+
provides:
|
|
29
|
+
agents: []
|
|
30
|
+
learns:
|
|
31
|
+
enabled: true
|
|
32
|
+
file: _learnings/pr-reviewer.yaml
|
|
33
|
+
maxEntries: 50
|
|
34
|
+
depends:
|
|
35
|
+
skills: []
|
|
36
|
+
plugins: [core]
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
# AgileFlow PR Reviewer
|
|
40
|
+
|
|
41
|
+
Systematic pull request review covering security, correctness, test coverage, API contracts, and style — with a prioritised findings list and a clear merge recommendation.
|
|
42
|
+
|
|
43
|
+
## When this skill activates
|
|
44
|
+
|
|
45
|
+
- User shares a diff, PR URL, branch name, or pastes code and asks for review
|
|
46
|
+
- User says "review before I merge", "check this", or "give me feedback"
|
|
47
|
+
- User wants a structured second opinion on their changes
|
|
48
|
+
- User is implementing security-sensitive changes (auth, payment, file upload, SQL queries)
|
|
49
|
+
|
|
50
|
+
## Opening discovery flow
|
|
51
|
+
|
|
52
|
+
**When invoked without a diff, ask once to gather what's needed.**
|
|
53
|
+
|
|
54
|
+
```xml
|
|
55
|
+
<invoke name="AskUserQuestion">
|
|
56
|
+
<parameter name="questions">[
|
|
57
|
+
{
|
|
58
|
+
"question": "What would you like me to review?",
|
|
59
|
+
"header": "Review source",
|
|
60
|
+
"multiSelect": false,
|
|
61
|
+
"options": [
|
|
62
|
+
{"label": "Paste the diff or changed files here (Recommended)", "description": "Copy from 'git diff' or paste the files you changed — I'll read them directly"},
|
|
63
|
+
{"label": "I'll give you the file paths — read them from disk", "description": "Tell me which files changed and I'll read them and the originals"},
|
|
64
|
+
{"label": "GitHub PR URL", "description": "Paste the PR URL and I'll fetch the diff via gh CLI"},
|
|
65
|
+
{"label": "Current staged changes", "description": "I'll run 'git diff --staged' to see what's about to be committed"}
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"question": "What kind of review do you need?",
|
|
70
|
+
"header": "Review focus",
|
|
71
|
+
"multiSelect": true,
|
|
72
|
+
"options": [
|
|
73
|
+
{"label": "Full review — security + logic + tests + style (Recommended)", "description": "Comprehensive check across all dimensions"},
|
|
74
|
+
{"label": "Security focus — OWASP top 10, injection, auth", "description": "Use for auth changes, API endpoints, file uploads, queries"},
|
|
75
|
+
{"label": "Logic and correctness", "description": "Race conditions, null handling, off-by-one errors, incorrect assumptions"},
|
|
76
|
+
{"label": "Test coverage", "description": "Are the right paths tested? Are assertions meaningful?"},
|
|
77
|
+
{"label": "API contract / breaking changes", "description": "Will this break existing consumers? Is the contract preserved?"}
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
]</parameter>
|
|
81
|
+
</invoke>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Review dimensions
|
|
85
|
+
|
|
86
|
+
Run all dimensions for a full review, or the selected subset for a focused review.
|
|
87
|
+
|
|
88
|
+
### 1. Security
|
|
89
|
+
|
|
90
|
+
See `references/security-patterns.md` for the full checklist. Quick scan:
|
|
91
|
+
|
|
92
|
+
- [ ] SQL injection / NoSQL injection (raw queries with user input)
|
|
93
|
+
- [ ] Command injection (`exec`, `shell`, `subprocess` with user input)
|
|
94
|
+
- [ ] Path traversal (`../../../etc/passwd`)
|
|
95
|
+
- [ ] XSS (unsanitised user input rendered to HTML)
|
|
96
|
+
- [ ] Insecure direct object reference (access control by user-controlled ID)
|
|
97
|
+
- [ ] Authentication bypass (auth checks that can be skipped)
|
|
98
|
+
- [ ] Sensitive data in logs, errors, or URLs
|
|
99
|
+
- [ ] Hardcoded secrets or credentials
|
|
100
|
+
- [ ] Cryptography: weak algorithms (MD5, SHA1 for passwords), improper key handling
|
|
101
|
+
- [ ] CSRF on state-changing endpoints
|
|
102
|
+
- [ ] Mass assignment (binding user input directly to DB models)
|
|
103
|
+
|
|
104
|
+
### 2. Logic and correctness
|
|
105
|
+
|
|
106
|
+
- [ ] Off-by-one errors in loops and index access
|
|
107
|
+
- [ ] Null / undefined handling — does the code assume a value exists?
|
|
108
|
+
- [ ] Race conditions — shared mutable state accessed concurrently
|
|
109
|
+
- [ ] Error handling — are errors caught, logged, and propagated correctly?
|
|
110
|
+
- [ ] Edge cases — empty collections, zero values, max values, unicode strings
|
|
111
|
+
- [ ] Assumptions about data types — implicit type coercion, integer overflow
|
|
112
|
+
- [ ] Conditional logic coverage — are all branches reachable and correct?
|
|
113
|
+
- [ ] Async correctness — missing await, fire-and-forget, unhandled rejections
|
|
114
|
+
|
|
115
|
+
### 3. Test coverage
|
|
116
|
+
|
|
117
|
+
- [ ] Do the tests cover the new code paths?
|
|
118
|
+
- [ ] Are there tests for the sad paths and edge cases?
|
|
119
|
+
- [ ] Are assertions meaningful (not just `toBeTruthy`)?
|
|
120
|
+
- [ ] Are mocks correct — do they mock at the boundary?
|
|
121
|
+
- [ ] Would these tests catch a realistic regression?
|
|
122
|
+
|
|
123
|
+
### 4. API contract and breaking changes
|
|
124
|
+
|
|
125
|
+
- [ ] Does this change any public API endpoint signatures?
|
|
126
|
+
- [ ] Are new required fields added to existing responses?
|
|
127
|
+
- [ ] Are existing fields removed or renamed?
|
|
128
|
+
- [ ] Is backward compatibility maintained for API consumers?
|
|
129
|
+
- [ ] Are database migrations backward compatible (additive, not destructive)?
|
|
130
|
+
- [ ] Are event schemas or message formats preserved?
|
|
131
|
+
|
|
132
|
+
### 5. Code quality and style
|
|
133
|
+
|
|
134
|
+
- [ ] Is the code readable and self-documenting?
|
|
135
|
+
- [ ] Are variable and function names clear and consistent?
|
|
136
|
+
- [ ] Is there duplication that should be extracted?
|
|
137
|
+
- [ ] Are there comments explaining why (not what)?
|
|
138
|
+
- [ ] Is the change within a reasonable size (< 400 LOC diff; flag if larger)?
|
|
139
|
+
- [ ] Does it follow the project's established patterns?
|
|
140
|
+
|
|
141
|
+
## Findings format
|
|
142
|
+
|
|
143
|
+
Report each finding with a severity and actionable recommendation:
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
[P0] SECURITY — SQL Injection risk in user search
|
|
147
|
+
File: src/repositories/user-repo.js, line 47
|
|
148
|
+
Issue: User input interpolated directly into SQL query string
|
|
149
|
+
Fix: Use parameterised query: db.query('SELECT * FROM users WHERE email = $1', [email])
|
|
150
|
+
Reference: OWASP A03:2021 - Injection
|
|
151
|
+
|
|
152
|
+
[P1] LOGIC — Missing null check before property access
|
|
153
|
+
File: src/services/order-service.js, line 112
|
|
154
|
+
Issue: order.customer.email accessed without checking if customer is null
|
|
155
|
+
Fix: Add guard: if (!order.customer) throw new OrderError('Customer not found')
|
|
156
|
+
|
|
157
|
+
[P2] TESTS — No test for the refund failure path
|
|
158
|
+
File: tests/order.test.js
|
|
159
|
+
Issue: The error branch on line 89 of order-service.js has no test
|
|
160
|
+
Fix: Add test: 'throws RefundError when payment gateway returns 402'
|
|
161
|
+
|
|
162
|
+
[P3] STYLE — Magic number should be a named constant
|
|
163
|
+
File: src/pricing/calculator.js, line 23
|
|
164
|
+
Issue: 0.15 used directly — unclear if this is a tax rate or discount
|
|
165
|
+
Fix: const DEFAULT_TAX_RATE = 0.15;
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Severity levels
|
|
169
|
+
|
|
170
|
+
| Level | Meaning | Action required before merge |
|
|
171
|
+
| -------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------ |
|
|
172
|
+
| **P0** | Security vulnerability or data corruption risk | Block merge — must fix |
|
|
173
|
+
| **P1** | Logic error that will cause incorrect behaviour or crashes | Strong recommendation to fix before merge |
|
|
174
|
+
| **P2** | Missing test coverage for important path | Fix before merge on critical features; acceptable on minor changes |
|
|
175
|
+
| **P3** | Code quality / style — won't cause a bug but makes code harder to maintain | Fix at author's discretion |
|
|
176
|
+
| **NOTE** | Observation, question, or suggestion with no required action | Informational only |
|
|
177
|
+
|
|
178
|
+
## Final recommendation
|
|
179
|
+
|
|
180
|
+
End every review with one of:
|
|
181
|
+
|
|
182
|
+
- **APPROVE** — No P0/P1 issues; P2/P3 are optional
|
|
183
|
+
- **REQUEST CHANGES** — One or more P0 or P1 issues must be addressed
|
|
184
|
+
- **NEEDS DISCUSSION** — Design concern that requires a conversation before code changes make sense
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
─────────────────────────────────────
|
|
188
|
+
REVIEW SUMMARY
|
|
189
|
+
─────────────────────────────────────
|
|
190
|
+
Files reviewed: 8 | Lines changed: +247 / -89
|
|
191
|
+
Findings: 1 P0, 2 P1, 3 P2, 1 P3
|
|
192
|
+
|
|
193
|
+
VERDICT: REQUEST CHANGES
|
|
194
|
+
|
|
195
|
+
Must fix before merge:
|
|
196
|
+
1. [P0] SQL injection in user-repo.js:47
|
|
197
|
+
2. [P1] Null dereference in order-service.js:112
|
|
198
|
+
3. [P1] Auth check missing on DELETE /api/users/:id
|
|
199
|
+
|
|
200
|
+
Nice to have:
|
|
201
|
+
4. [P2] No test for refund failure path
|
|
202
|
+
5. [P3] Magic numbers should be constants
|
|
203
|
+
|
|
204
|
+
After addressing P0 and P1, this is ready to merge.
|
|
205
|
+
─────────────────────────────────────
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Self-improving learnings
|
|
209
|
+
|
|
210
|
+
`_learnings/pr-reviewer.yaml` records:
|
|
211
|
+
|
|
212
|
+
- Team's severity thresholds (e.g. P2 test coverage is a blocker on this team)
|
|
213
|
+
- Recurring patterns to watch for in this codebase
|
|
214
|
+
- Preferred fix patterns when issues are found
|
|
215
|
+
- Merge criteria the team has established
|
|
216
|
+
|
|
217
|
+
## Integration
|
|
218
|
+
|
|
219
|
+
- **agileflow-audit** — use audit for pre-release sweeps or milestone quality gates; use pr-reviewer for individual PR merge gates; they're complementary not duplicates
|
|
220
|
+
- **agileflow-debug** — when the reviewer finds a bug, hand off to debug for root cause analysis rather than patching inline
|
|
221
|
+
- **agileflow-refactor** — when the review surfaces structural problems (long files, poor naming, deep coupling), route a follow-up story to refactor
|
|
222
|
+
- **agileflow-test-writer** — when review finds missing test coverage, spawn test-writer to fill the gaps before approving the merge
|
|
223
|
+
- **agileflow-accessibility** — when review touches UI components or interactive elements, accessibility check is part of the review criteria
|
|
224
|
+
- **agileflow-performance** — when review touches query paths, rendering logic, or data processing, flag for performance review alongside the code review
|
|
225
|
+
- **agileflow-docs** — if the PR changes public APIs or exports, verify docs were updated; pr-reviewer flags the gap, docs fills it
|
|
226
|
+
- **agileflow-delivery** — pr-reviewer is a delivery gate; delivery orchestrates the overall release, pr-reviewer is one of its quality checkpoints
|
|
227
|
+
- **agileflow-security** — invoke agileflow-audit with security dimension for auth changes, permission logic, or data handling code that warrants deeper security review
|
|
228
|
+
|
|
229
|
+
## References
|
|
230
|
+
|
|
231
|
+
| File | When to load |
|
|
232
|
+
| --------------------------------- | ---------------------------------------------------------------------------- |
|
|
233
|
+
| `references/review-checklist.md` | Full review — comprehensive checklist across all dimensions |
|
|
234
|
+
| `references/security-patterns.md` | Security-focused review — OWASP patterns, injection, auth issues to scan for |
|
|
235
|
+
|
|
236
|
+
## Workflows
|
|
237
|
+
|
|
238
|
+
| File | When to follow |
|
|
239
|
+
| ------------------------------ | ----------------------------------------------------------------------- |
|
|
240
|
+
| `workflows/review-pr.md` | Standard PR review — all dimensions, produces findings + recommendation |
|
|
241
|
+
| `workflows/security-review.md` | Security-focused review for auth changes, API endpoints, data handling |
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
# PR Review Checklist
|
|
2
|
+
|
|
3
|
+
**Load this when:** running a full review across all dimensions. Work through each section that is applicable to the change.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Before you start: scope the review
|
|
8
|
+
|
|
9
|
+
Read the PR description (or ask for it). Understand:
|
|
10
|
+
|
|
11
|
+
1. **What is this change trying to do?** (feature, bugfix, refactor, chore)
|
|
12
|
+
2. **What is the blast radius?** (one file, one service, cross-service, database schema)
|
|
13
|
+
3. **What is the risk level?** (new endpoint, auth change, data migration, trivial copy change)
|
|
14
|
+
|
|
15
|
+
Higher blast radius and risk = more thorough review needed.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Section 1: Security
|
|
20
|
+
|
|
21
|
+
Work through these for any change that handles user input, auth, database queries, or file operations.
|
|
22
|
+
|
|
23
|
+
### Input handling
|
|
24
|
+
|
|
25
|
+
- [ ] All user input is validated before use (type, length, format, range)
|
|
26
|
+
- [ ] No raw SQL constructed by concatenating user input
|
|
27
|
+
- [ ] No shell commands built from user input (`exec`, `spawn`, `subprocess`)
|
|
28
|
+
- [ ] File paths from user input are sanitised (no `..` traversal)
|
|
29
|
+
- [ ] HTML output is escaped (no raw `innerHTML = userInput`)
|
|
30
|
+
- [ ] JSON parsed safely (no `eval()` on untrusted input)
|
|
31
|
+
|
|
32
|
+
### Authentication and authorisation
|
|
33
|
+
|
|
34
|
+
- [ ] Every state-changing endpoint has an auth check
|
|
35
|
+
- [ ] Auth checks happen before expensive operations (not just before the response)
|
|
36
|
+
- [ ] User can only access their own resources (no IDOR — Insecure Direct Object Reference)
|
|
37
|
+
- [ ] Role checks are server-side (not just hidden in the UI)
|
|
38
|
+
- [ ] Session tokens are invalidated on logout
|
|
39
|
+
- [ ] Password reset tokens are single-use and time-limited
|
|
40
|
+
|
|
41
|
+
### Data handling
|
|
42
|
+
|
|
43
|
+
- [ ] No sensitive data (passwords, tokens, PII) logged to application logs
|
|
44
|
+
- [ ] No sensitive data returned in error messages
|
|
45
|
+
- [ ] No hardcoded credentials, API keys, or secrets in source code
|
|
46
|
+
- [ ] Passwords hashed with bcrypt/argon2 (not MD5, SHA1, or SHA256 alone)
|
|
47
|
+
- [ ] Tokens generated with cryptographically secure randomness
|
|
48
|
+
|
|
49
|
+
### Transport and headers
|
|
50
|
+
|
|
51
|
+
- [ ] HTTPS enforced (no plain HTTP fallback for sensitive operations)
|
|
52
|
+
- [ ] CSRF protection on state-changing form submissions
|
|
53
|
+
- [ ] Sensitive cookies have `HttpOnly`, `Secure`, and `SameSite` attributes
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Section 2: Logic and correctness
|
|
58
|
+
|
|
59
|
+
### Null and undefined handling
|
|
60
|
+
|
|
61
|
+
- [ ] No property access on a value that could be null/undefined
|
|
62
|
+
- [ ] All function return values checked when they can return null/undefined/error
|
|
63
|
+
- [ ] Optional chaining (`?.`) or explicit null checks before deep access
|
|
64
|
+
- [ ] Array access guarded when index might be out of bounds
|
|
65
|
+
|
|
66
|
+
### Async and concurrency
|
|
67
|
+
|
|
68
|
+
- [ ] All Promises are awaited or properly handled with `.catch()`
|
|
69
|
+
- [ ] No fire-and-forget async calls that silently fail
|
|
70
|
+
- [ ] No shared mutable state modified concurrently without locks
|
|
71
|
+
- [ ] No race condition between a read and a subsequent write
|
|
72
|
+
- [ ] Database transactions used when multiple writes must be atomic
|
|
73
|
+
|
|
74
|
+
### Error handling
|
|
75
|
+
|
|
76
|
+
- [ ] All error paths handled explicitly (not just the happy path)
|
|
77
|
+
- [ ] Errors are logged with enough context to diagnose (not just `console.error(err)`)
|
|
78
|
+
- [ ] User-facing errors are generic (not leaking stack traces or internal details)
|
|
79
|
+
- [ ] Errors propagate to the caller or are handled — not silently swallowed
|
|
80
|
+
- [ ] Retry logic present for transient failures (network, DB connection)
|
|
81
|
+
|
|
82
|
+
### Edge cases
|
|
83
|
+
|
|
84
|
+
- [ ] Behaviour with empty input (empty string, empty array, zero) is correct
|
|
85
|
+
- [ ] Behaviour at boundaries is correct (first/last item, min/max value, midnight)
|
|
86
|
+
- [ ] Unicode strings handled correctly (emojis, RTL text, special characters)
|
|
87
|
+
- [ ] Large inputs don't cause OOM or performance collapse
|
|
88
|
+
- [ ] Pagination / cursors work correctly on empty result sets
|
|
89
|
+
|
|
90
|
+
### Business logic
|
|
91
|
+
|
|
92
|
+
- [ ] The change matches the acceptance criteria / ticket requirements
|
|
93
|
+
- [ ] No "off-by-one" errors in loops, date calculations, or index slicing
|
|
94
|
+
- [ ] No implicit assumptions about data ordering (unless ordering is guaranteed)
|
|
95
|
+
- [ ] State transitions are valid (e.g. can't move from COMPLETED back to PENDING)
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Section 3: Test coverage
|
|
100
|
+
|
|
101
|
+
### Coverage
|
|
102
|
+
|
|
103
|
+
- [ ] New code paths have corresponding tests
|
|
104
|
+
- [ ] Tests cover both the happy path and at least one sad path
|
|
105
|
+
- [ ] Edge cases (null, empty, boundary values) have tests
|
|
106
|
+
- [ ] Security-sensitive paths have explicit tests for unauthorised access
|
|
107
|
+
|
|
108
|
+
### Test quality
|
|
109
|
+
|
|
110
|
+
- [ ] Each test has at least one meaningful assertion (not just `toBeDefined()`)
|
|
111
|
+
- [ ] Assertions are specific: `toBe(200)` not `toBeTruthy()`
|
|
112
|
+
- [ ] Mocks are placed at the correct boundary (external deps only)
|
|
113
|
+
- [ ] Tests don't depend on each other's state
|
|
114
|
+
- [ ] Tests use descriptive names: `'returns 404 when user not found'` not `'test2'`
|
|
115
|
+
|
|
116
|
+
### Test fragility
|
|
117
|
+
|
|
118
|
+
- [ ] No fixed dates or time-sensitive assertions without fake timers
|
|
119
|
+
- [ ] No hardcoded IDs or database sequences
|
|
120
|
+
- [ ] No tests that rely on test execution order
|
|
121
|
+
- [ ] No tests with `setTimeout` / `sleep` — use fake timers
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Section 4: API contracts and breaking changes
|
|
126
|
+
|
|
127
|
+
### HTTP API
|
|
128
|
+
|
|
129
|
+
- [ ] No required fields removed from request or response schemas
|
|
130
|
+
- [ ] No fields renamed without a deprecation path
|
|
131
|
+
- [ ] No HTTP status codes changed (e.g. 200 → 204 can break consumers)
|
|
132
|
+
- [ ] New required request fields have defaults or a migration path for callers
|
|
133
|
+
- [ ] Error response format consistent with existing endpoints
|
|
134
|
+
|
|
135
|
+
### Database schema
|
|
136
|
+
|
|
137
|
+
- [ ] Migrations are additive (add column, add table) — not destructive
|
|
138
|
+
- [ ] `NOT NULL` columns have defaults or are added to empty tables
|
|
139
|
+
- [ ] No column renames without code + data migration
|
|
140
|
+
- [ ] Indexes added for new query patterns
|
|
141
|
+
- [ ] Down migration exists (or impossibility noted)
|
|
142
|
+
|
|
143
|
+
### Events / messages
|
|
144
|
+
|
|
145
|
+
- [ ] Event/message schema changes are backward compatible
|
|
146
|
+
- [ ] Consumers won't break if a new field is added
|
|
147
|
+
- [ ] No event type renames without a transition period
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Section 5: Performance
|
|
152
|
+
|
|
153
|
+
- [ ] No N+1 queries (loop that issues a DB query per iteration)
|
|
154
|
+
- [ ] Large result sets are paginated — no `SELECT *` without `LIMIT`
|
|
155
|
+
- [ ] Expensive operations aren't synchronous on the request thread (use queues)
|
|
156
|
+
- [ ] Caches are invalidated correctly when underlying data changes
|
|
157
|
+
- [ ] No unnecessary database round-trips (can be combined into one query)
|
|
158
|
+
- [ ] Indexes exist for new filtering/sorting patterns
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Section 6: Code quality
|
|
163
|
+
|
|
164
|
+
### Readability
|
|
165
|
+
|
|
166
|
+
- [ ] Variable and function names clearly express intent
|
|
167
|
+
- [ ] Functions do one thing (single responsibility)
|
|
168
|
+
- [ ] Complex logic has a comment explaining _why_ (not _what_)
|
|
169
|
+
- [ ] No dead code (commented-out blocks, unused variables, unreachable branches)
|
|
170
|
+
|
|
171
|
+
### Duplication
|
|
172
|
+
|
|
173
|
+
- [ ] No copy-paste of code that already exists elsewhere
|
|
174
|
+
- [ ] New utility functions placed in a shared location if used in >1 place
|
|
175
|
+
- [ ] Constants defined once, not repeated as magic numbers/strings
|
|
176
|
+
|
|
177
|
+
### Change size
|
|
178
|
+
|
|
179
|
+
- [ ] PR is reviewable (< 400 LOC diff as a guideline)
|
|
180
|
+
- [ ] If larger: is it a mechanical change (rename, format)? Is it justified?
|
|
181
|
+
- [ ] Each PR does one thing (not a feature + refactor + chore bundled together)
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Section 7: Documentation
|
|
186
|
+
|
|
187
|
+
- [ ] New public functions/methods have JSDoc / docstrings
|
|
188
|
+
- [ ] README updated if setup instructions changed
|
|
189
|
+
- [ ] API documentation updated if endpoint signatures changed
|
|
190
|
+
- [ ] Migration guide added if there are breaking changes
|
|
191
|
+
- [ ] `CHANGELOG.md` entry added if this is a user-facing change
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Checklist usage
|
|
196
|
+
|
|
197
|
+
For a standard review: work through Sections 1–4 for every PR.
|
|
198
|
+
For a security review: focus on Section 1, run `workflows/security-review.md`.
|
|
199
|
+
For a performance review: focus on Section 5.
|
|
200
|
+
For a refactor-only PR: focus on Sections 2, 3, 4, 6.
|