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,17 @@
|
|
|
1
|
+
id: migration
|
|
2
|
+
name: Migration
|
|
3
|
+
description: Migration skill pack.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
enabledByDefault: false
|
|
6
|
+
|
|
7
|
+
depends: []
|
|
8
|
+
|
|
9
|
+
provides:
|
|
10
|
+
skills:
|
|
11
|
+
- id: agileflow-migration
|
|
12
|
+
dir: skills/agileflow-migration
|
|
13
|
+
agents:
|
|
14
|
+
- id: datamigration
|
|
15
|
+
path: agents/datamigration.md
|
|
16
|
+
hooks: []
|
|
17
|
+
templates: []
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agileflow-migration
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
category: agileflow/migration
|
|
5
|
+
description: |
|
|
6
|
+
Use when the user is migrating between frameworks, languages, library
|
|
7
|
+
versions, or data schemas. Plans zero-downtime migrations, generates
|
|
8
|
+
codemods, validates output, and produces rollback strategies.
|
|
9
|
+
triggers:
|
|
10
|
+
keywords:
|
|
11
|
+
- migrate
|
|
12
|
+
- migration
|
|
13
|
+
- upgrade
|
|
14
|
+
- upgrade version
|
|
15
|
+
- move from
|
|
16
|
+
- switch to
|
|
17
|
+
- refactor to
|
|
18
|
+
- data migration
|
|
19
|
+
- zero downtime
|
|
20
|
+
- codemod
|
|
21
|
+
- breaking changes
|
|
22
|
+
- upgrade path
|
|
23
|
+
priority: 55
|
|
24
|
+
provides:
|
|
25
|
+
agents: []
|
|
26
|
+
learns:
|
|
27
|
+
enabled: true
|
|
28
|
+
file: _learnings/migration.yaml
|
|
29
|
+
maxEntries: 20
|
|
30
|
+
depends:
|
|
31
|
+
skills: []
|
|
32
|
+
plugins: [migration]
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
# AgileFlow Migration
|
|
36
|
+
|
|
37
|
+
Migration planning and execution assistant. Handles framework upgrades,
|
|
38
|
+
library version bumps, data schema migrations, and language transitions
|
|
39
|
+
— with validation, rollback strategies, and automated codemods where
|
|
40
|
+
possible.
|
|
41
|
+
|
|
42
|
+
## When this skill activates
|
|
43
|
+
|
|
44
|
+
- User wants to upgrade a framework or library version
|
|
45
|
+
- User is moving between technologies (e.g. CJS → ESM, REST → GraphQL)
|
|
46
|
+
- User needs to migrate data between schemas or databases
|
|
47
|
+
- User asks about breaking changes or upgrade paths
|
|
48
|
+
- User mentions "zero downtime" or "rollback strategy"
|
|
49
|
+
|
|
50
|
+
## Migration workflow
|
|
51
|
+
|
|
52
|
+
| Step | Command | What it does |
|
|
53
|
+
| ----------- | ----------------------------- | ---------------------------------------- |
|
|
54
|
+
| 1. Scan | `/agileflow:migrate:scan` | Identify all affected files and patterns |
|
|
55
|
+
| 2. Plan | `/agileflow:migrate:plan` | Generate step-by-step migration plan |
|
|
56
|
+
| 3. Codemods | `/agileflow:migrate:codemods` | Auto-transform code where possible |
|
|
57
|
+
| 4. Validate | `/agileflow:migrate:validate` | Verify migration output is correct |
|
|
58
|
+
| Full | `/agileflow:migrate` | Run all steps |
|
|
59
|
+
|
|
60
|
+
## Data migrations
|
|
61
|
+
|
|
62
|
+
For database schema migrations, use `agileflow-datamigration` which covers:
|
|
63
|
+
|
|
64
|
+
- Zero-downtime strategies (expand/contract pattern)
|
|
65
|
+
- Backfill with concurrent write safety
|
|
66
|
+
- Validation queries before and after
|
|
67
|
+
- Rollback SQL generation
|
|
68
|
+
|
|
69
|
+
## Safety rules
|
|
70
|
+
|
|
71
|
+
- Always scan before planning — scope surprises are common
|
|
72
|
+
- For data migrations: test on a copy first, validate row counts
|
|
73
|
+
- For framework upgrades: check for behavioral changes, not just syntax
|
|
74
|
+
- Always generate a rollback plan before executing
|
|
75
|
+
|
|
76
|
+
## Integration
|
|
77
|
+
|
|
78
|
+
- **agileflow-research** — run before planning a migration to gather release notes, breaking change logs, and community-documented gotchas for the specific version jump
|
|
79
|
+
- **agileflow-adr** — document the migration decision (why this version, why this strategy, what was rejected) before executing; ADR is the runbook preface
|
|
80
|
+
- **agileflow-planning** — use for impact analysis to understand which files, tests, and APIs are affected before generating the migration plan
|
|
81
|
+
- **agileflow-database** — delegate schema-level migration steps (column renames, index changes, foreign key adjustments) to database expert
|
|
82
|
+
- **agileflow-test-writer** — generate pre/post migration tests and data validation scripts to confirm row counts and aggregate consistency
|
|
83
|
+
- **agileflow-audit** — run after migration completes to catch regressions introduced by the version change (API contracts, security headers, deprecated patterns)
|
|
84
|
+
- **agileflow-engineering** — delegate the actual codemods and file changes when the migration scope is large; migration plans, engineering executes
|
|
85
|
+
- **agileflow-delivery** — coordinate migration execution with deployment; zero-downtime migrations require delivery-level orchestration (feature flags, blue/green)
|
|
86
|
+
- **agileflow-docs** — update installation guides, API docs, and README after the migration changes public-facing interfaces or configuration
|
|
87
|
+
|
|
88
|
+
## References
|
|
89
|
+
|
|
90
|
+
Load these files when you need deeper context for the relevant task:
|
|
91
|
+
|
|
92
|
+
| File | When to load |
|
|
93
|
+
| -------------------------------------------- | ------------------------------------------------------------------------------------------------- |
|
|
94
|
+
| `references/migration-patterns.md` | Choosing a migration strategy — big bang vs strangler fig vs parallel run vs blue/green |
|
|
95
|
+
| `references/data-validation-checklist.md` | Validating a migration — pre/post row counts, financial aggregates, cutover criteria |
|
|
96
|
+
| `references/rollback-playbook.md` | Planning or executing a rollback — decision tree, communication templates, post-mortem structure |
|
|
97
|
+
| `references/version-compatibility-matrix.md` | Upgrading a library or framework — semver rules, breaking change detection, deprecation timelines |
|
|
98
|
+
|
|
99
|
+
## Workflows
|
|
100
|
+
|
|
101
|
+
Follow these step-by-step when the user initiates the matching action:
|
|
102
|
+
|
|
103
|
+
| File | When to follow |
|
|
104
|
+
| ----------------------- | ----------------------------------------------------------------------------------------- |
|
|
105
|
+
| `workflows/plan.md` | User wants a migration plan — scans affected files, generates step-by-step strategy |
|
|
106
|
+
| `workflows/validate.md` | User wants to validate a migration — runs pre/post checks, compares counts and aggregates |
|
package/content/plugins/migration/skills/agileflow-migration/references/data-validation-checklist.md
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Data Validation Checklist
|
|
2
|
+
|
|
3
|
+
**Load this when:** validating data after a migration, designing pre/post
|
|
4
|
+
migration checks, or building a data quality gate before cutover.
|
|
5
|
+
|
|
6
|
+
## Pre-migration baseline (capture before running)
|
|
7
|
+
|
|
8
|
+
Run these queries and save the output. Compare against post-migration results.
|
|
9
|
+
|
|
10
|
+
### Row counts
|
|
11
|
+
|
|
12
|
+
```sql
|
|
13
|
+
-- Total rows per table
|
|
14
|
+
SELECT table_name, n_live_tup AS row_count
|
|
15
|
+
FROM pg_stat_user_tables
|
|
16
|
+
ORDER BY n_live_tup DESC;
|
|
17
|
+
|
|
18
|
+
-- Or for key tables explicitly
|
|
19
|
+
SELECT
|
|
20
|
+
(SELECT COUNT(*) FROM users) AS users,
|
|
21
|
+
(SELECT COUNT(*) FROM orders) AS orders,
|
|
22
|
+
(SELECT COUNT(*) FROM transactions) AS transactions;
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Aggregate values (financial / critical)
|
|
26
|
+
|
|
27
|
+
```sql
|
|
28
|
+
-- Sum of money — must not change
|
|
29
|
+
SELECT
|
|
30
|
+
SUM(amount) AS total_amount,
|
|
31
|
+
SUM(refunded_amount) AS total_refunds,
|
|
32
|
+
COUNT(*) FILTER (WHERE status = 'completed') AS completed_orders
|
|
33
|
+
FROM orders;
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Status distributions
|
|
37
|
+
|
|
38
|
+
```sql
|
|
39
|
+
-- Status counts — proportions should be preserved
|
|
40
|
+
SELECT status, COUNT(*) FROM orders GROUP BY status ORDER BY status;
|
|
41
|
+
SELECT verified, COUNT(*) FROM users GROUP BY verified;
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Relationship integrity
|
|
45
|
+
|
|
46
|
+
```sql
|
|
47
|
+
-- Orphaned records (should be 0)
|
|
48
|
+
SELECT COUNT(*) FROM order_items oi
|
|
49
|
+
LEFT JOIN orders o ON oi.order_id = o.id
|
|
50
|
+
WHERE o.id IS NULL;
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Post-migration validation
|
|
54
|
+
|
|
55
|
+
Run the same queries. Compare:
|
|
56
|
+
|
|
57
|
+
| Check | Expected | Action if wrong |
|
|
58
|
+
| ------------------------------ | ------------- | ---------------------------------------- |
|
|
59
|
+
| Row counts | Match exactly | Investigate lost/duplicate rows |
|
|
60
|
+
| Financial sums | Match exactly | STOP — data loss, rollback |
|
|
61
|
+
| Status distributions | Match exactly | Check transformation logic |
|
|
62
|
+
| Orphaned records | 0 | Find FK violation, fix before proceeding |
|
|
63
|
+
| Null counts in required fields | 0 | Backfill missing values |
|
|
64
|
+
|
|
65
|
+
## Column-level validation
|
|
66
|
+
|
|
67
|
+
```sql
|
|
68
|
+
-- Check for unexpected nulls in columns that should be populated
|
|
69
|
+
SELECT
|
|
70
|
+
COUNT(*) FILTER (WHERE email IS NULL) AS null_email,
|
|
71
|
+
COUNT(*) FILTER (WHERE created_at IS NULL) AS null_created_at,
|
|
72
|
+
COUNT(*) FILTER (WHERE user_id IS NULL) AS null_user_id
|
|
73
|
+
FROM orders;
|
|
74
|
+
|
|
75
|
+
-- Check for values outside expected ranges
|
|
76
|
+
SELECT COUNT(*) FROM transactions
|
|
77
|
+
WHERE amount < 0 OR amount > 1000000;
|
|
78
|
+
|
|
79
|
+
-- Check for format violations
|
|
80
|
+
SELECT COUNT(*) FROM users
|
|
81
|
+
WHERE email NOT LIKE '%@%.%';
|
|
82
|
+
|
|
83
|
+
-- Check for duplicate unique values
|
|
84
|
+
SELECT email, COUNT(*) FROM users
|
|
85
|
+
GROUP BY email HAVING COUNT(*) > 1;
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Sampling validation
|
|
89
|
+
|
|
90
|
+
For large datasets where full comparison isn't practical:
|
|
91
|
+
|
|
92
|
+
```sql
|
|
93
|
+
-- Sample 100 random rows, verify they look correct
|
|
94
|
+
SELECT * FROM users ORDER BY RANDOM() LIMIT 100;
|
|
95
|
+
|
|
96
|
+
-- Sample from each status bucket
|
|
97
|
+
SELECT * FROM (
|
|
98
|
+
SELECT *, ROW_NUMBER() OVER (PARTITION BY status ORDER BY RANDOM()) AS rn
|
|
99
|
+
FROM orders
|
|
100
|
+
) t WHERE rn <= 10;
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Manual review of samples catches transformation bugs that aggregate checks miss.
|
|
104
|
+
|
|
105
|
+
## Application-level validation
|
|
106
|
+
|
|
107
|
+
After schema migration, verify application behavior:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
⬜ New writes succeed (create a test record, verify it persists)
|
|
111
|
+
⬜ Reads return expected data (fetch a known record, compare fields)
|
|
112
|
+
⬜ Indexes are being used (EXPLAIN ANALYZE on key queries)
|
|
113
|
+
⬜ Existing API endpoints return 200 (not 500 from schema mismatch)
|
|
114
|
+
⬜ Background jobs complete without errors
|
|
115
|
+
⬜ Reports/aggregations produce correct output
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Cutover decision criteria
|
|
119
|
+
|
|
120
|
+
Only proceed to final cutover when ALL of these are true:
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
⬜ Row counts match (tolerance: 0 for critical tables, < 0.01% for large tables)
|
|
124
|
+
⬜ All financial aggregates match exactly
|
|
125
|
+
⬜ Zero orphaned records
|
|
126
|
+
⬜ Zero unexpected nulls in required columns
|
|
127
|
+
⬜ Sample review passes (100+ records spot-checked)
|
|
128
|
+
⬜ Application smoke test passes
|
|
129
|
+
⬜ Rollback has been tested in staging
|
|
130
|
+
⬜ Team is available to monitor for 2 hours post-cutover
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Common migration data bugs
|
|
134
|
+
|
|
135
|
+
| Bug | Symptom | How to detect |
|
|
136
|
+
| ------------------------------ | ----------------------------- | --------------------------- |
|
|
137
|
+
| Off-by-one in batch processing | Last N rows missing | Row count check |
|
|
138
|
+
| Timezone conversion error | Timestamps shifted by hours | Sample date comparison |
|
|
139
|
+
| Character encoding issue | Garbled names/text | Spot check non-ASCII values |
|
|
140
|
+
| Duplicate row insertion | Inflated counts | Aggregate sum comparison |
|
|
141
|
+
| Null coalesce wrong default | All nulls → 0 instead of NULL | Null count check |
|
|
142
|
+
| FK constraint skipped | Orphaned records | Orphan count check |
|
|
143
|
+
| Truncated strings | Data cut off at 255 chars | Check max-length values |
|
|
144
|
+
|
|
145
|
+
## Post-cutover monitoring (first 24 hours)
|
|
146
|
+
|
|
147
|
+
Watch these metrics for anomalies:
|
|
148
|
+
|
|
149
|
+
- Error rates in application logs (spike = schema mismatch)
|
|
150
|
+
- Query latency (missing index = slow queries)
|
|
151
|
+
- Database CPU and lock waits (backfill still running?)
|
|
152
|
+
- Failed job counts (workers hitting migration-related errors)
|
|
153
|
+
|
|
154
|
+
Set alert thresholds before cutover, not after.
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# Migration Patterns
|
|
2
|
+
|
|
3
|
+
**Load this when:** planning a zero-downtime migration, choosing between
|
|
4
|
+
migration strategies, or designing a rollback plan.
|
|
5
|
+
|
|
6
|
+
## The four migration strategies
|
|
7
|
+
|
|
8
|
+
| Strategy | When to use | Risk | Complexity |
|
|
9
|
+
| ----------------- | ------------------------------------ | ------ | ---------- |
|
|
10
|
+
| **Big bang** | Small dataset, maintenance window OK | High | Low |
|
|
11
|
+
| **Strangler fig** | Live traffic, large codebase | Low | High |
|
|
12
|
+
| **Parallel run** | Data integrity critical | Low | High |
|
|
13
|
+
| **Blue/green** | Full deployment swap | Medium | Medium |
|
|
14
|
+
|
|
15
|
+
### Big bang
|
|
16
|
+
|
|
17
|
+
Stop everything. Migrate. Restart. Simple but requires downtime.
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Old system → [Maintenance window] → New system
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Use when:** Internal tools, staging environments, datasets < 10K rows, sub-1-hour migration.
|
|
24
|
+
|
|
25
|
+
**Never for:** User-facing production systems without a maintenance page + user communication.
|
|
26
|
+
|
|
27
|
+
### Strangler fig
|
|
28
|
+
|
|
29
|
+
Route traffic gradually from old to new. Old system "dies" as new handles more.
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
All traffic → Old system
|
|
33
|
+
↓ (add routing layer)
|
|
34
|
+
Traffic → Router → Old system (90%) + New system (10%)
|
|
35
|
+
↓ (shift gradually)
|
|
36
|
+
Traffic → Router → New system (100%)
|
|
37
|
+
↓ (remove old)
|
|
38
|
+
Traffic → New system
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Use when:** Migrating a monolith to microservices, rewriting a module that can't go down.
|
|
42
|
+
|
|
43
|
+
**Strangler fig checklist:**
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
⬜ Routing layer in place before migrating any traffic
|
|
47
|
+
⬜ Both systems can handle same requests (parity check)
|
|
48
|
+
⬜ Observability on both paths (latency, error rate)
|
|
49
|
+
⬜ Feature flags control traffic split
|
|
50
|
+
⬜ Rollback = flip flag back, not a deployment
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Parallel run
|
|
54
|
+
|
|
55
|
+
Both systems run simultaneously. Write to both, compare outputs, switch reads when confident.
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
Writes → Old + New (dual write)
|
|
59
|
+
Reads → Old (primary) + New (shadow — compare results)
|
|
60
|
+
Monitor divergence for N days
|
|
61
|
+
Switch reads to New
|
|
62
|
+
Stop writes to Old
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Use when:** Data integrity is critical, migrating billing, financial systems, healthcare records.
|
|
66
|
+
|
|
67
|
+
**Exit criteria:** Zero divergence for 7+ consecutive days across all operation types.
|
|
68
|
+
|
|
69
|
+
### Blue/green deployment
|
|
70
|
+
|
|
71
|
+
Two identical environments. Switch load balancer. Instant rollback.
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
LB → Blue (current production)
|
|
75
|
+
Green (new version, fully ready)
|
|
76
|
+
Switch: LB → Green
|
|
77
|
+
If issues: LB → Blue (rollback in <1 min)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Use when:** Application migrations, not data migrations. Great for infrastructure changes.
|
|
81
|
+
|
|
82
|
+
**Not ideal for:** Schema migrations — Blue and Green share the same DB, so schema must be backward compatible.
|
|
83
|
+
|
|
84
|
+
## Database migration patterns
|
|
85
|
+
|
|
86
|
+
### Expand-contract (zero downtime schema changes)
|
|
87
|
+
|
|
88
|
+
Never alter columns in production — always expand then contract:
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
Step 1: EXPAND — add the new structure alongside the old
|
|
92
|
+
ALTER TABLE users ADD COLUMN email_v2 VARCHAR(255);
|
|
93
|
+
|
|
94
|
+
Step 2: MIGRATE — dual write during deploy
|
|
95
|
+
App writes to both email and email_v2
|
|
96
|
+
|
|
97
|
+
Step 3: BACKFILL — populate the new column
|
|
98
|
+
UPDATE users SET email_v2 = email WHERE email_v2 IS NULL;
|
|
99
|
+
|
|
100
|
+
Step 4: SWITCH — read from new column
|
|
101
|
+
Deploy reads from email_v2
|
|
102
|
+
|
|
103
|
+
Step 5: CONTRACT — remove old column
|
|
104
|
+
ALTER TABLE users DROP COLUMN email;
|
|
105
|
+
|
|
106
|
+
Step 6: RENAME (if needed)
|
|
107
|
+
ALTER TABLE users RENAME COLUMN email_v2 TO email;
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Each step is a separate deployment. Steps 1-3 are backward compatible.
|
|
111
|
+
|
|
112
|
+
### Additive-only migrations
|
|
113
|
+
|
|
114
|
+
Never break existing code with a migration:
|
|
115
|
+
|
|
116
|
+
| Safe ✓ | Unsafe ✗ |
|
|
117
|
+
| --------------------- | -------------------------------------------- |
|
|
118
|
+
| Add nullable column | Drop column |
|
|
119
|
+
| Add new table | Rename column |
|
|
120
|
+
| Add index | Change column type (without expand-contract) |
|
|
121
|
+
| Add nullable FK | Add NOT NULL without default |
|
|
122
|
+
| Rename via new column | Remove FK that code depends on |
|
|
123
|
+
|
|
124
|
+
### Large table migrations
|
|
125
|
+
|
|
126
|
+
For tables > 1M rows, never run migrations in a transaction that locks the table:
|
|
127
|
+
|
|
128
|
+
```sql
|
|
129
|
+
-- BAD: locks table, causes downtime
|
|
130
|
+
ALTER TABLE orders ADD COLUMN processed_at TIMESTAMP;
|
|
131
|
+
|
|
132
|
+
-- GOOD: add nullable, backfill in batches, add NOT NULL constraint later
|
|
133
|
+
ALTER TABLE orders ADD COLUMN processed_at TIMESTAMP NULL;
|
|
134
|
+
|
|
135
|
+
-- Then backfill in batches:
|
|
136
|
+
UPDATE orders SET processed_at = created_at
|
|
137
|
+
WHERE id BETWEEN 1 AND 10000 AND processed_at IS NULL;
|
|
138
|
+
-- Repeat in 10k-row chunks with sleep between
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Tools: `pt-online-schema-change` (MySQL), `pg_repack` (PostgreSQL), `gh-ost` (GitHub's MySQL tool).
|
|
142
|
+
|
|
143
|
+
## Rollback strategies
|
|
144
|
+
|
|
145
|
+
Every migration needs a rollback plan written BEFORE the migration runs.
|
|
146
|
+
|
|
147
|
+
| Migration type | Rollback approach |
|
|
148
|
+
| ------------------------ | ----------------------------------- |
|
|
149
|
+
| Schema: added column | DROP COLUMN (if no data yet) |
|
|
150
|
+
| Schema: dropped column | Restore from backup (can't undo) |
|
|
151
|
+
| Data: transformed values | Restore from point-in-time snapshot |
|
|
152
|
+
| Code: strangler fig | Flip feature flag to 0% |
|
|
153
|
+
| Deployment: blue/green | Switch LB back to blue |
|
|
154
|
+
| Config: environment vars | Revert in secrets manager |
|
|
155
|
+
|
|
156
|
+
**Rule:** If a migration doesn't have a rollback plan, it's not ready to run.
|
|
157
|
+
|
|
158
|
+
## Migration runbook template
|
|
159
|
+
|
|
160
|
+
```markdown
|
|
161
|
+
## Migration: Add `user_timezone` to profiles table
|
|
162
|
+
|
|
163
|
+
**Date:** 2026-03-15 10:00 UTC
|
|
164
|
+
**Owner:** @engineer
|
|
165
|
+
**Estimated duration:** 25 minutes
|
|
166
|
+
**Rollback time:** < 5 minutes
|
|
167
|
+
|
|
168
|
+
### Pre-migration checks
|
|
169
|
+
|
|
170
|
+
- [ ] Full DB backup completed (verify at: <link>)
|
|
171
|
+
- [ ] Monitoring dashboards open
|
|
172
|
+
- [ ] Rollback script tested in staging
|
|
173
|
+
|
|
174
|
+
### Steps
|
|
175
|
+
|
|
176
|
+
1. `psql $DATABASE_URL -f migrations/0042_add_user_timezone.sql` (5 min)
|
|
177
|
+
2. Deploy app v2.4.1 — includes dual-write for timezone (10 min)
|
|
178
|
+
3. Verify: `SELECT COUNT(*) FROM profiles WHERE timezone IS NULL` — expect < 5%
|
|
179
|
+
4. Run backfill: `node scripts/backfill-timezone.js` (10 min)
|
|
180
|
+
5. Verify: `SELECT COUNT(*) FROM profiles WHERE timezone IS NULL` — expect 0
|
|
181
|
+
|
|
182
|
+
### Rollback
|
|
183
|
+
|
|
184
|
+
If any step fails:
|
|
185
|
+
|
|
186
|
+
1. `psql $DATABASE_URL -c "ALTER TABLE profiles DROP COLUMN timezone"`
|
|
187
|
+
2. Redeploy v2.4.0
|
|
188
|
+
3. Page on-call if data inconsistency detected
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Data integrity checks
|
|
192
|
+
|
|
193
|
+
Before and after every migration:
|
|
194
|
+
|
|
195
|
+
```sql
|
|
196
|
+
-- Row counts by status (should be preserved)
|
|
197
|
+
SELECT status, COUNT(*) FROM orders GROUP BY status;
|
|
198
|
+
|
|
199
|
+
-- Sum of financial values (must not change)
|
|
200
|
+
SELECT SUM(amount) FROM transactions;
|
|
201
|
+
|
|
202
|
+
-- Check for nulls in NOT NULL columns
|
|
203
|
+
SELECT COUNT(*) FROM users WHERE email IS NULL;
|
|
204
|
+
|
|
205
|
+
-- Spot check sample rows
|
|
206
|
+
SELECT * FROM users ORDER BY RANDOM() LIMIT 10;
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Save pre-migration counts. Verify post-migration counts match.
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Rollback Playbook
|
|
2
|
+
|
|
3
|
+
**Load this when:** Planning a migration rollback, responding to a failed migration, or writing a post-mortem.
|
|
4
|
+
|
|
5
|
+
## Rollback Decision Tree
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Is data corruption or data loss occurring?
|
|
9
|
+
YES → STOP migration immediately. Initiate rollback NOW. Skip all other checks.
|
|
10
|
+
NO ↓
|
|
11
|
+
|
|
12
|
+
Is a critical user-facing service down or severely degraded?
|
|
13
|
+
YES → Rollback within 15 minutes if no hotfix available.
|
|
14
|
+
NO ↓
|
|
15
|
+
|
|
16
|
+
Is the error rate >2x pre-migration baseline AND rising?
|
|
17
|
+
YES → Rollback if no fix identified within 30 minutes.
|
|
18
|
+
NO ↓
|
|
19
|
+
|
|
20
|
+
Is the migration >50% complete with no data integrity issues?
|
|
21
|
+
YES → Strongly prefer forward-fix over rollback (rollback cost exceeds benefit).
|
|
22
|
+
NO ↓
|
|
23
|
+
|
|
24
|
+
Rollback is an option — evaluate cost vs. benefit.
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Rollback Triggers by Migration Type
|
|
30
|
+
|
|
31
|
+
### Schema migration
|
|
32
|
+
|
|
33
|
+
| Trigger | Action |
|
|
34
|
+
| ------------------------------ | ---------------------------------------- |
|
|
35
|
+
| Query errors on new schema | Immediate rollback |
|
|
36
|
+
| Constraint violations in prod | Immediate rollback |
|
|
37
|
+
| Performance regression >5x | Rollback if not resolvable in 1h |
|
|
38
|
+
| Application errors post-deploy | Check if schema-related; rollback if yes |
|
|
39
|
+
|
|
40
|
+
### Data migration
|
|
41
|
+
|
|
42
|
+
| Trigger | Action |
|
|
43
|
+
| -------------------------------------- | ------------------------------------ |
|
|
44
|
+
| Row count mismatch vs. expected | STOP. Investigate before proceeding. |
|
|
45
|
+
| Checksum / hash validation fail | STOP. Do not proceed. |
|
|
46
|
+
| Referential integrity errors | Rollback source data changes |
|
|
47
|
+
| Business logic producing wrong outputs | Rollback and fix migration script |
|
|
48
|
+
|
|
49
|
+
### Dependency / library migration
|
|
50
|
+
|
|
51
|
+
| Trigger | Action |
|
|
52
|
+
| -------------------------------- | ------------------------------------ |
|
|
53
|
+
| Test suite failure rate >10% | Rollback package version |
|
|
54
|
+
| Runtime errors in new dependency | Rollback to previous version |
|
|
55
|
+
| Build failure | Rollback, investigate, fix in branch |
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Rollback Methods by Layer
|
|
60
|
+
|
|
61
|
+
| Layer | Rollback method | Speed | Data risk |
|
|
62
|
+
| ---------------------- | ---------------------------------------- | --------------- | -------------- |
|
|
63
|
+
| Feature flag | Toggle off | Instant | None |
|
|
64
|
+
| Application code | Revert deploy | 2–5 min | None |
|
|
65
|
+
| Schema (additive only) | Drop added columns/tables | Minutes | None |
|
|
66
|
+
| Schema (destructive) | Restore from pre-migration snapshot | 30 min – hours | Potential loss |
|
|
67
|
+
| Data migration | Restore from backup / run inverse script | Minutes – hours | Potential loss |
|
|
68
|
+
| Infrastructure | Terraform rollback / restore snapshot | Minutes | Low–medium |
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Pre-Migration Rollback Preparation Checklist
|
|
73
|
+
|
|
74
|
+
Complete before every significant migration:
|
|
75
|
+
|
|
76
|
+
- [ ] Full database backup taken and verified restorable
|
|
77
|
+
- [ ] Rollback script written and tested in staging
|
|
78
|
+
- [ ] Feature flag created to disable new behavior without code deploy
|
|
79
|
+
- [ ] Rollback decision owner named (who has authority to call it)
|
|
80
|
+
- [ ] Communication plan drafted (what to say, to whom, via which channel)
|
|
81
|
+
- [ ] Monitoring dashboards ready for key metrics
|
|
82
|
+
- [ ] Estimated rollback time documented
|
|
83
|
+
- [ ] All affected services identified (who else do we notify?)
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Communication Templates
|
|
88
|
+
|
|
89
|
+
### Migration incident (initial)
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
[MIGRATION INCIDENT] {migration name} — {severity}
|
|
93
|
+
|
|
94
|
+
Status: Rollback in progress / Investigating
|
|
95
|
+
Impact: {what's affected — service, users, data}
|
|
96
|
+
Started: {time}
|
|
97
|
+
Action: {what we're doing right now}
|
|
98
|
+
|
|
99
|
+
Updates every 15 minutes in #{incident-channel}.
|
|
100
|
+
DRI: {name}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Rollback complete
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
[RESOLVED] {migration name} — rollback complete
|
|
107
|
+
|
|
108
|
+
Rolled back to: v{version} / state as of {timestamp}
|
|
109
|
+
Impact duration: {start} → {end}
|
|
110
|
+
Affected: {scope}
|
|
111
|
+
Root cause (preliminary): {1 sentence}
|
|
112
|
+
|
|
113
|
+
Post-mortem scheduled: {date/time}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Post-Mortem Structure
|
|
119
|
+
|
|
120
|
+
```markdown
|
|
121
|
+
# Post-Mortem: {Migration Name}
|
|
122
|
+
|
|
123
|
+
**Date:** YYYY-MM-DD
|
|
124
|
+
**Severity:** P1 / P2 / P3
|
|
125
|
+
**Duration:** {start} → {resolved}
|
|
126
|
+
**Impact:** {affected users / data volume / downtime}
|
|
127
|
+
|
|
128
|
+
## Timeline
|
|
129
|
+
|
|
130
|
+
| Time | Event |
|
|
131
|
+
| ----- | ---------------------- |
|
|
132
|
+
| HH:MM | Migration started |
|
|
133
|
+
| HH:MM | First alert triggered |
|
|
134
|
+
| HH:MM | Rollback decision made |
|
|
135
|
+
| HH:MM | Rollback complete |
|
|
136
|
+
|
|
137
|
+
## Root Cause
|
|
138
|
+
|
|
139
|
+
[What actually went wrong]
|
|
140
|
+
|
|
141
|
+
## Contributing Factors
|
|
142
|
+
|
|
143
|
+
- [Factor 1]
|
|
144
|
+
- [Factor 2]
|
|
145
|
+
|
|
146
|
+
## What Went Well
|
|
147
|
+
|
|
148
|
+
- [Thing 1]
|
|
149
|
+
|
|
150
|
+
## Action Items
|
|
151
|
+
|
|
152
|
+
| Action | Owner | Due |
|
|
153
|
+
| ------ | ----- | --- |
|
|
154
|
+
| | | |
|
|
155
|
+
|
|
156
|
+
## Prevention
|
|
157
|
+
|
|
158
|
+
[How do we ensure this doesn't happen again?]
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Rollback Risk by Migration Completeness
|
|
164
|
+
|
|
165
|
+
| % Complete | Rollback recommendation |
|
|
166
|
+
| ---------- | --------------------------------------------------- |
|
|
167
|
+
| 0–20% | Easy — rollback preferred if issues found |
|
|
168
|
+
| 20–50% | Evaluate — rollback cost growing |
|
|
169
|
+
| 50–80% | Risky — forward-fix preferred unless data corrupted |
|
|
170
|
+
| 80–99% | Very risky — forward-fix strongly preferred |
|
|
171
|
+
| 100% | Rollback is a new migration — plan carefully |
|