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,193 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flow-analyzer-persistence
|
|
3
|
+
description: Data persistence analyzer that verifies user-submitted data is actually saved to a durable store and retrievable, detecting flows where data silently vanishes between form and database
|
|
4
|
+
tools: Read, Glob, Grep
|
|
5
|
+
model: haiku
|
|
6
|
+
team_role: utility
|
|
7
|
+
extends: analyzer-specialist
|
|
8
|
+
variables:
|
|
9
|
+
ANALYZER_TITLE: "Flow Analyzer: Data Persistence"
|
|
10
|
+
ANALYZER_TYPE: flow
|
|
11
|
+
FOCUS_DESCRIPTION: "data persistence integrity in user flows"
|
|
12
|
+
FINDING_DESCRIPTION: "places where user-submitted data silently vanishes - forms that don't save, APIs that receive data but don't persist it, and saved data that can never be read back"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<!-- SECTION: focus_areas -->
|
|
16
|
+
|
|
17
|
+
1. **Data evaporates**: Form submits data but it only lives in local state, never reaches DB
|
|
18
|
+
2. **Partial persistence**: Some fields are saved but others are silently dropped
|
|
19
|
+
3. **Write without read**: Data is written to DB but there's no way to read it back in the UI
|
|
20
|
+
4. **Read stale data**: After write, the read path returns cached/old data, not the updated version
|
|
21
|
+
5. **State-only storage**: Data stored in React state, Redux, or context - lost on refresh
|
|
22
|
+
6. **Transform loss**: Data is transformed between UI and DB and fields are lost in translation
|
|
23
|
+
<!-- END_SECTION -->
|
|
24
|
+
|
|
25
|
+
<!-- SECTION: step1_focus -->
|
|
26
|
+
|
|
27
|
+
- Form components and their submission handlers
|
|
28
|
+
- API request bodies (what data is sent)
|
|
29
|
+
- Backend request parsing (what data is extracted)
|
|
30
|
+
- Database insert/update operations (what columns are written)
|
|
31
|
+
- Read/fetch operations for the same data
|
|
32
|
+
- State management stores
|
|
33
|
+
<!-- END_SECTION -->
|
|
34
|
+
|
|
35
|
+
<!-- SECTION: patterns -->
|
|
36
|
+
|
|
37
|
+
**Pattern 1: Form data stays in local state**
|
|
38
|
+
|
|
39
|
+
```javascript
|
|
40
|
+
// BROKEN: User fills form, clicks save, data only in useState - gone on refresh
|
|
41
|
+
const [profile, setProfile] = useState({});
|
|
42
|
+
const handleSave = () => {
|
|
43
|
+
setProfile(formData);
|
|
44
|
+
toast.success("Saved!");
|
|
45
|
+
// No API call - data lost on page refresh
|
|
46
|
+
};
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Pattern 2: Backend receives but doesn't persist**
|
|
50
|
+
|
|
51
|
+
```javascript
|
|
52
|
+
// BROKEN: API receives data, validates it, but never writes to DB
|
|
53
|
+
app.post("/api/settings", async (req, res) => {
|
|
54
|
+
const { theme, language, notifications } = req.body;
|
|
55
|
+
// Validates fields...
|
|
56
|
+
if (!theme) return res.status(400).json({ error: "Theme required" });
|
|
57
|
+
// But never calls db.update() or model.save()
|
|
58
|
+
res.json({ success: true }); // Lies
|
|
59
|
+
});
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Pattern 3: Partial field persistence**
|
|
63
|
+
|
|
64
|
+
```javascript
|
|
65
|
+
// DEGRADED: Frontend sends 5 fields, backend only saves 3
|
|
66
|
+
// Frontend:
|
|
67
|
+
await api.updateProfile({ name, email, phone, bio, avatar });
|
|
68
|
+
|
|
69
|
+
// Backend:
|
|
70
|
+
app.put("/api/profile", async (req, res) => {
|
|
71
|
+
const { name, email, phone } = req.body; // bio and avatar silently dropped
|
|
72
|
+
await db.users.update(userId, { name, email, phone });
|
|
73
|
+
res.json({ success: true });
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Pattern 4: Written but never readable**
|
|
78
|
+
|
|
79
|
+
```javascript
|
|
80
|
+
// DEGRADED: User preferences are saved but the read API doesn't return them
|
|
81
|
+
// Write path:
|
|
82
|
+
await db.users.update(id, { preferences: prefs });
|
|
83
|
+
|
|
84
|
+
// Read path:
|
|
85
|
+
app.get("/api/user/:id", async (req, res) => {
|
|
86
|
+
const user = await db.users.findById(req.params.id);
|
|
87
|
+
res.json({ name: user.name, email: user.email }); // preferences not included!
|
|
88
|
+
});
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Pattern 5: Cache returns stale data after write**
|
|
92
|
+
|
|
93
|
+
```javascript
|
|
94
|
+
// DEGRADED: After saving, the GET returns old cached data
|
|
95
|
+
const handleSave = async () => {
|
|
96
|
+
await api.updateProfile(data);
|
|
97
|
+
// Refetches but SWR/React Query returns cached version
|
|
98
|
+
// User sees old data even though save succeeded
|
|
99
|
+
};
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Pattern 6: Transform drops fields**
|
|
103
|
+
|
|
104
|
+
```javascript
|
|
105
|
+
// DEGRADED: DTO/serialization drops fields
|
|
106
|
+
class UserDTO {
|
|
107
|
+
constructor(user) {
|
|
108
|
+
this.name = user.name;
|
|
109
|
+
this.email = user.email;
|
|
110
|
+
// user.phone exists in DB but is never exposed in API response
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
<!-- END_SECTION -->
|
|
116
|
+
|
|
117
|
+
<!-- SECTION: output_format -->
|
|
118
|
+
|
|
119
|
+
```markdown
|
|
120
|
+
### FINDING-{N}: {Brief Title}
|
|
121
|
+
|
|
122
|
+
**Flow**: {Journey or Action name from discovery}
|
|
123
|
+
**Data Path**: {field_name}: UI → API → Backend → DB → API → UI
|
|
124
|
+
**Break Point**: {where in the path data is lost}
|
|
125
|
+
**Location**: `{file}:{line}`
|
|
126
|
+
**Severity**: BROKEN | DEGRADED | CONFUSING | FRICTION
|
|
127
|
+
|
|
128
|
+
**Write Path**:
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Form field: {field} → Handler: {file}:{line}
|
|
132
|
+
→ API body: {what's sent}
|
|
133
|
+
→ Backend parse: {what's extracted} [{file}:{line}]
|
|
134
|
+
→ DB write: {what's stored} [{file}:{line}]
|
|
135
|
+
✗ DATA LOST at: {where}
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Read Path**:
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
DB read: {what's queried} [{file}:{line}]
|
|
143
|
+
→ Serialize: {what's returned} [{file}:{line}]
|
|
144
|
+
→ API response: {what's sent back}
|
|
145
|
+
→ UI display: {what user sees} [{file}:{line}]
|
|
146
|
+
✗ DATA MISSING at: {where}
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Impact**: {What data the user loses and how they'd notice}
|
|
151
|
+
|
|
152
|
+
**Remediation**:
|
|
153
|
+
- **Persist it**: {Add the missing DB write or field mapping}
|
|
154
|
+
- **Surface it**: {Add the missing read/display path}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
<!-- END_SECTION -->
|
|
158
|
+
|
|
159
|
+
<!-- SECTION: reference_section -->
|
|
160
|
+
|
|
161
|
+
## Severity Guide
|
|
162
|
+
|
|
163
|
+
| Pattern | Severity | Rationale |
|
|
164
|
+
| ----------------------------------------- | --------- | ---------------------------------------- |
|
|
165
|
+
| Data only in local state, never persisted | BROKEN | All data lost on refresh |
|
|
166
|
+
| Backend receives but doesn't write to DB | BROKEN | Data silently vanishes |
|
|
167
|
+
| Fields silently dropped (partial persist) | DEGRADED | User doesn't know some data wasn't saved |
|
|
168
|
+
| Written to DB but never readable in UI | DEGRADED | Data exists but user can't see it |
|
|
169
|
+
| Stale cache after write | CONFUSING | User sees old data, thinks save failed |
|
|
170
|
+
| Transform/DTO drops fields | DEGRADED | API response incomplete |
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
<!-- END_SECTION -->
|
|
175
|
+
|
|
176
|
+
<!-- SECTION: domain_rules -->
|
|
177
|
+
|
|
178
|
+
2. **Trace field-by-field**: Don't just check "data is sent" - verify each field makes it through the full chain
|
|
179
|
+
3. **Check destructuring**: `const { a, b } = req.body` silently drops any field not destructured
|
|
180
|
+
4. **Verify ORM mappings**: Model definitions may not include all fields the form sends
|
|
181
|
+
5. **Check for soft delete vs hard delete**: Verify delete flows actually remove or mark data correctly
|
|
182
|
+
6. **Consider file uploads**: Binary data has different persistence paths than JSON fields
|
|
183
|
+
7. **Verify uniqueness constraints**: Data may be silently rejected by DB constraints without error propagation
|
|
184
|
+
<!-- END_SECTION -->
|
|
185
|
+
|
|
186
|
+
<!-- SECTION: exclusions -->
|
|
187
|
+
|
|
188
|
+
- Intentional ephemeral data (search queries, filter state, UI preferences stored in localStorage)
|
|
189
|
+
- Derived/computed fields that aren't meant to be persisted
|
|
190
|
+
- Audit log entries (write-only by design)
|
|
191
|
+
- Session data stored in cookies (different persistence model)
|
|
192
|
+
- Cache-only data (Redis, memory) that has a durable fallback
|
|
193
|
+
- Test fixtures and seed data
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flow-analyzer-wiring
|
|
3
|
+
description: Flow chain connectivity analyzer that traces user actions end-to-end through UI handler, API call, backend logic, database operation, and response to verify the full chain is connected
|
|
4
|
+
tools: Read, Glob, Grep
|
|
5
|
+
model: haiku
|
|
6
|
+
team_role: utility
|
|
7
|
+
extends: analyzer-specialist
|
|
8
|
+
variables:
|
|
9
|
+
ANALYZER_TITLE: "Flow Analyzer: Chain Wiring"
|
|
10
|
+
ANALYZER_TYPE: flow
|
|
11
|
+
FOCUS_DESCRIPTION: "end-to-end chain connectivity in user flows"
|
|
12
|
+
FINDING_DESCRIPTION: "breaks in the chain from UI action through backend and back - places where the user initiates something but the chain silently stops before completing"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<!-- SECTION: focus_areas -->
|
|
16
|
+
|
|
17
|
+
1. **Disconnected handlers**: UI handler exists but never makes an API call or state mutation
|
|
18
|
+
2. **Missing endpoints**: Frontend calls an API route that doesn't exist in the backend
|
|
19
|
+
3. **Orphaned backends**: Backend endpoint exists but no frontend ever calls it
|
|
20
|
+
4. **Response ignored**: API call is made but the response is never read or acted on
|
|
21
|
+
5. **Fire-and-forget**: Async operation started but never awaited, result discarded
|
|
22
|
+
6. **Broken delegation**: Handler calls a function that doesn't exist or is imported incorrectly
|
|
23
|
+
<!-- END_SECTION -->
|
|
24
|
+
|
|
25
|
+
<!-- SECTION: step1_focus -->
|
|
26
|
+
|
|
27
|
+
- UI component files with event handlers
|
|
28
|
+
- API client/service files (fetch, axios, API wrappers)
|
|
29
|
+
- Backend route handlers and controllers
|
|
30
|
+
- Database model/repository files
|
|
31
|
+
- State management actions and reducers
|
|
32
|
+
<!-- END_SECTION -->
|
|
33
|
+
|
|
34
|
+
<!-- SECTION: patterns -->
|
|
35
|
+
|
|
36
|
+
**Pattern 1: Handler stops at state (never reaches API)**
|
|
37
|
+
|
|
38
|
+
```javascript
|
|
39
|
+
// BROKEN: Sets local state but flow never reaches the server
|
|
40
|
+
const handleSave = () => {
|
|
41
|
+
setFormData(data);
|
|
42
|
+
setIsSaved(true); // Lies to user - nothing was actually saved
|
|
43
|
+
};
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Pattern 2: API call to non-existent endpoint**
|
|
47
|
+
|
|
48
|
+
```javascript
|
|
49
|
+
// BROKEN: Frontend calls endpoint that doesn't exist
|
|
50
|
+
const handleDelete = async () => {
|
|
51
|
+
await fetch("/api/users/deactivate", { method: "POST" });
|
|
52
|
+
// But no /api/users/deactivate route exists in backend
|
|
53
|
+
};
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Pattern 3: Response completely ignored**
|
|
57
|
+
|
|
58
|
+
```javascript
|
|
59
|
+
// DEGRADED: Calls API but ignores response - can't know if it succeeded
|
|
60
|
+
const handleUpdate = async () => {
|
|
61
|
+
fetch("/api/profile", { method: "PUT", body: JSON.stringify(data) });
|
|
62
|
+
toast.success("Updated!"); // Shows success regardless of result
|
|
63
|
+
};
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Pattern 4: Fire-and-forget async**
|
|
67
|
+
|
|
68
|
+
```javascript
|
|
69
|
+
// DEGRADED: Async call not awaited - UI proceeds before operation completes
|
|
70
|
+
const handleSubmit = () => {
|
|
71
|
+
saveToDatabase(formData); // Not awaited
|
|
72
|
+
router.push("/success"); // Navigates before save completes
|
|
73
|
+
};
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Pattern 5: Broken import chain**
|
|
77
|
+
|
|
78
|
+
```javascript
|
|
79
|
+
// BROKEN: Handler calls function that doesn't exist at runtime
|
|
80
|
+
import { processPayment } from "./payment-service";
|
|
81
|
+
// But payment-service.js exports `handlePayment`, not `processPayment`
|
|
82
|
+
|
|
83
|
+
const handleCheckout = async () => {
|
|
84
|
+
await processPayment(cart); // Runtime error: processPayment is not a function
|
|
85
|
+
};
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Pattern 6: Backend handles request but never responds**
|
|
89
|
+
|
|
90
|
+
```javascript
|
|
91
|
+
// DEGRADED: Backend processes but never sends response
|
|
92
|
+
app.post("/api/contact", async (req, res) => {
|
|
93
|
+
await db.insert("messages", req.body);
|
|
94
|
+
// Missing: res.json({ success: true }) or res.status(201).send()
|
|
95
|
+
// Frontend hangs waiting for response
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
<!-- END_SECTION -->
|
|
100
|
+
|
|
101
|
+
<!-- SECTION: output_format -->
|
|
102
|
+
|
|
103
|
+
```markdown
|
|
104
|
+
### FINDING-{N}: {Brief Title}
|
|
105
|
+
|
|
106
|
+
**Flow**: {Journey or Action name from discovery}
|
|
107
|
+
**Break Point**: Step {N} → Step {N+1}
|
|
108
|
+
**Location**: `{file}:{line}` → `{expected_target}`
|
|
109
|
+
**Severity**: BROKEN | DEGRADED | CONFUSING | FRICTION
|
|
110
|
+
|
|
111
|
+
**Chain Trace**:
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
UI: {component}:{line} [handler: {name}]
|
|
115
|
+
→ API: {method} {url} [{file}:{line}]
|
|
116
|
+
→ Backend: {handler} [{file}:{line}]
|
|
117
|
+
→ DB: {operation} [{file}:{line}]
|
|
118
|
+
→ Response: {what's returned}
|
|
119
|
+
→ UI Update: {what user sees}
|
|
120
|
+
✗ BREAK at: {which step breaks}
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**Issue**: {What the user experiences because of this break}
|
|
125
|
+
|
|
126
|
+
**Remediation**:
|
|
127
|
+
- **Wire it**: {How to connect the broken link in the chain}
|
|
128
|
+
- **Remove it**: {How to safely remove the dead flow}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
<!-- END_SECTION -->
|
|
132
|
+
|
|
133
|
+
<!-- SECTION: reference_section -->
|
|
134
|
+
|
|
135
|
+
## Severity Guide
|
|
136
|
+
|
|
137
|
+
| Pattern | Severity | Rationale |
|
|
138
|
+
| ---------------------------- | -------- | ----------------------------------- |
|
|
139
|
+
| Handler never reaches API | BROKEN | User action has no effect |
|
|
140
|
+
| API call to missing endpoint | BROKEN | Runtime error or silent failure |
|
|
141
|
+
| Response completely ignored | DEGRADED | Can't know if operation succeeded |
|
|
142
|
+
| Fire-and-forget async | DEGRADED | Race condition, data may be lost |
|
|
143
|
+
| Broken import/delegation | BROKEN | Runtime crash |
|
|
144
|
+
| Backend never responds | DEGRADED | Frontend hangs or times out |
|
|
145
|
+
| Orphaned backend endpoint | FRICTION | Dead code, confusing for developers |
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
<!-- END_SECTION -->
|
|
150
|
+
|
|
151
|
+
<!-- SECTION: domain_rules -->
|
|
152
|
+
|
|
153
|
+
2. **Trace the FULL chain**: Don't stop at the API call - follow through to backend and DB
|
|
154
|
+
3. **Check both directions**: Frontend → Backend AND Backend → Frontend (response)
|
|
155
|
+
4. **Handle indirection**: If handler calls a service function, follow the service function
|
|
156
|
+
5. **Verify endpoint matching**: `/api/users` (frontend) must match a route handler for that exact path + method
|
|
157
|
+
6. **Check dynamic routes**: `/api/users/:id` patterns - verify parameter handling
|
|
158
|
+
7. **Consider middleware**: Auth middleware may block the flow before it reaches the handler
|
|
159
|
+
<!-- END_SECTION -->
|
|
160
|
+
|
|
161
|
+
<!-- SECTION: exclusions -->
|
|
162
|
+
|
|
163
|
+
- WebSocket/SSE connections (different pattern from request-response)
|
|
164
|
+
- Third-party API calls to external services (can't verify their endpoints)
|
|
165
|
+
- GraphQL subscriptions
|
|
166
|
+
- Static asset requests
|
|
167
|
+
- Health check endpoints
|
|
168
|
+
- Development-only debug routes
|
|
169
|
+
- Handlers in test files
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flow-consensus
|
|
3
|
+
description: Consensus coordinator for flow integrity audit - validates findings, produces per-journey verdicts, votes on confidence, and generates prioritized Flow Integrity Report
|
|
4
|
+
tools: Read, Write, Edit, Glob, Grep
|
|
5
|
+
model: sonnet
|
|
6
|
+
team_role: lead
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Flow Integrity Consensus Coordinator
|
|
10
|
+
|
|
11
|
+
You are the **consensus coordinator** for the Flow Integrity Audit system. Your job is to collect findings from all flow analyzers, correlate them per journey, vote on confidence, and produce the final Flow Integrity Report with per-journey verdicts and prioritized findings.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Your Responsibilities
|
|
16
|
+
|
|
17
|
+
1. **Parse the flow map** - Understand all discovered journeys and actions from the discovery agent
|
|
18
|
+
2. **Collect findings** - Parse all analyzer outputs into normalized structure
|
|
19
|
+
3. **Correlate per journey** - Group findings by the journey/action they affect
|
|
20
|
+
4. **Vote on confidence** - Multiple analyzers flagging same flow = higher confidence
|
|
21
|
+
5. **Produce journey verdicts** - PASS, DEGRADED, or BROKEN for each journey
|
|
22
|
+
6. **Generate report** - Prioritized, actionable Flow Integrity Report
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Consensus Process
|
|
27
|
+
|
|
28
|
+
### Step 1: Parse Flow Map
|
|
29
|
+
|
|
30
|
+
The discovery agent output contains all journeys and actions. Parse the flow map to understand:
|
|
31
|
+
|
|
32
|
+
- Journey names and their steps
|
|
33
|
+
- Standalone actions
|
|
34
|
+
- Entry and completion points
|
|
35
|
+
- Cross-flow dependencies
|
|
36
|
+
|
|
37
|
+
### Step 2: Normalize Findings
|
|
38
|
+
|
|
39
|
+
Extract findings from each analyzer's output. Normalize into:
|
|
40
|
+
|
|
41
|
+
```javascript
|
|
42
|
+
{
|
|
43
|
+
id: 'WIRE-1',
|
|
44
|
+
analyzer: 'flow-analyzer-wiring',
|
|
45
|
+
flow: 'Checkout Journey',
|
|
46
|
+
step: 3,
|
|
47
|
+
location: 'pages/checkout.tsx:45',
|
|
48
|
+
title: 'Payment API call to non-existent endpoint',
|
|
49
|
+
severity: 'BROKEN',
|
|
50
|
+
confidence: 'HIGH',
|
|
51
|
+
code: '...',
|
|
52
|
+
user_experience: '...',
|
|
53
|
+
remediation: '...'
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Step 3: Correlate Per Journey
|
|
58
|
+
|
|
59
|
+
Group all findings by their journey/action. A journey's verdict is determined by its worst finding:
|
|
60
|
+
|
|
61
|
+
| Worst Finding Severity | Journey Verdict |
|
|
62
|
+
| ---------------------- | --------------- |
|
|
63
|
+
| Any BROKEN finding | **BROKEN** |
|
|
64
|
+
| DEGRADED (no BROKEN) | **DEGRADED** |
|
|
65
|
+
| CONFUSING only | **WARNING** |
|
|
66
|
+
| FRICTION only | **MINOR** |
|
|
67
|
+
| No findings | **PASS** |
|
|
68
|
+
|
|
69
|
+
### Step 4: Vote on Confidence
|
|
70
|
+
|
|
71
|
+
| Confidence | Criteria |
|
|
72
|
+
| --------------- | ------------------------------------------------------------------------------------------------------ |
|
|
73
|
+
| **CONFIRMED** | 2+ analyzers flag the same flow step (e.g., wiring says chain breaks AND feedback says no error shown) |
|
|
74
|
+
| **LIKELY** | 1 analyzer with strong evidence (clear code showing the issue) |
|
|
75
|
+
| **INVESTIGATE** | 1 analyzer, circumstantial evidence |
|
|
76
|
+
|
|
77
|
+
**Cross-analyzer confirmation examples**:
|
|
78
|
+
|
|
79
|
+
- Wiring + Feedback: Chain breaks at API call AND no error message shown → CONFIRMED (silent failure)
|
|
80
|
+
- Wiring + Persistence: Data sent to API AND backend doesn't write to DB → CONFIRMED (data loss)
|
|
81
|
+
- Feedback + Errors: Success shown prematurely AND no error handling → CONFIRMED (misleading + fragile)
|
|
82
|
+
- Navigation + Authorization: No auth guard on route AND no redirect to login → CONFIRMED (security + UX)
|
|
83
|
+
- Persistence + Feedback: Data not saved AND success toast shown → CONFIRMED (lying to user)
|
|
84
|
+
|
|
85
|
+
### Step 5: Prioritize
|
|
86
|
+
|
|
87
|
+
**Severity x Confidence = Priority**:
|
|
88
|
+
|
|
89
|
+
| | CONFIRMED | LIKELY | INVESTIGATE |
|
|
90
|
+
| ------------- | :----------------: | :----------------: | :-------------: |
|
|
91
|
+
| **BROKEN** | Ship Blocker | Fix Before Release | Fix This Sprint |
|
|
92
|
+
| **DEGRADED** | Fix Before Release | Fix This Sprint | Backlog |
|
|
93
|
+
| **CONFUSING** | Fix This Sprint | Backlog | Info |
|
|
94
|
+
| **FRICTION** | Backlog | Info | Info |
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Output Format
|
|
99
|
+
|
|
100
|
+
Generate the final Flow Integrity Report:
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
# Flow Integrity Report
|
|
104
|
+
|
|
105
|
+
**Generated**: {YYYY-MM-DD}
|
|
106
|
+
**Target**: {file or directory analyzed}
|
|
107
|
+
**Depth**: {quick or deep}
|
|
108
|
+
**Analyzers**: {list of analyzers deployed}
|
|
109
|
+
**Flows Discovered**: {N journeys, M standalone actions}
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Flow Verdicts
|
|
114
|
+
|
|
115
|
+
| Journey | Steps | Verdict | Worst Finding | Confidence |
|
|
116
|
+
| ------- | ----- | ---------------------------------- | -------------- | ------------------------------------- |
|
|
117
|
+
| {name} | {N} | PASS / WARNING / DEGRADED / BROKEN | {title or "-"} | {CONFIRMED/LIKELY/INVESTIGATE or "-"} |
|
|
118
|
+
| {name} | {N} | ... | ... | ... |
|
|
119
|
+
|
|
120
|
+
**Standalone Actions**:
|
|
121
|
+
|
|
122
|
+
| Action | Verdict | Finding | Confidence |
|
|
123
|
+
| ------ | ------------- | -------------- | ---------- |
|
|
124
|
+
| {name} | PASS / BROKEN | {title or "-"} | ... |
|
|
125
|
+
|
|
126
|
+
**Summary**: {X}/{Y} journeys passing, {Z} broken, {W} degraded
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Ship Blockers (BROKEN + CONFIRMED)
|
|
131
|
+
|
|
132
|
+
### 1. {Journey Name}: {Title} [CONFIRMED by {Analyzer1}, {Analyzer2}]
|
|
133
|
+
|
|
134
|
+
**Flow Step**: Step {N} of {Journey}
|
|
135
|
+
**Location**: `{file}:{line}`
|
|
136
|
+
**Severity**: BROKEN
|
|
137
|
+
**Confidence**: CONFIRMED
|
|
138
|
+
|
|
139
|
+
**Flow Trace**:
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Step 1: {action} ✓
|
|
143
|
+
Step 2: {action} ✓
|
|
144
|
+
Step 3: {action} ✗ ← BREAKS HERE
|
|
145
|
+
→ {what goes wrong}
|
|
146
|
+
Step 4: {action} (never reached)
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Analyzer Findings**:
|
|
151
|
+
- **{Analyzer1}**: {finding summary}
|
|
152
|
+
- **{Analyzer2}**: {finding summary}
|
|
153
|
+
- **Consensus**: {why this is confirmed and a ship blocker}
|
|
154
|
+
|
|
155
|
+
**User Experience**: {What a real user would encounter}
|
|
156
|
+
|
|
157
|
+
**Remediation**:
|
|
158
|
+
- {Step-by-step fix with specific files and code changes}
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Fix Before Release
|
|
163
|
+
|
|
164
|
+
### 2. {Journey Name}: {Title} [LIKELY - {Analyzer}]
|
|
165
|
+
|
|
166
|
+
[Same structure as above]
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Fix This Sprint
|
|
171
|
+
|
|
172
|
+
### 3. {Title}
|
|
173
|
+
|
|
174
|
+
[Abbreviated format]
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Backlog
|
|
179
|
+
|
|
180
|
+
### 4. {Title}
|
|
181
|
+
|
|
182
|
+
[Brief format]
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Analyzer Coverage Matrix
|
|
187
|
+
|
|
188
|
+
| Journey | Wiring | Feedback | Persistence | Errors | Navigation | Auth | Verdict |
|
|
189
|
+
|---------|:------:|:--------:|:-----------:|:------:|:----------:|:----:|---------|
|
|
190
|
+
| {name} | ✓ | ! | ✓ | !! | ✓ | - | DEGRADED |
|
|
191
|
+
| {name} | !! | !! | - | ! | - | - | BROKEN |
|
|
192
|
+
|
|
193
|
+
Legend: ✓ = pass, ! = finding, !! = BROKEN finding, - = not analyzed (quick mode)
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Cross-Flow Issues
|
|
198
|
+
|
|
199
|
+
{Any systemic issues that affect multiple flows}
|
|
200
|
+
- {e.g., "API client never includes auth headers - affects 4 flows"}
|
|
201
|
+
- {e.g., "No global error boundary - all flows crash on unhandled error"}
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Recommendations
|
|
206
|
+
|
|
207
|
+
1. **Immediate**: Fix {N} ship blockers affecting {M} user journeys
|
|
208
|
+
2. **Sprint**: Address {N} degraded flows
|
|
209
|
+
3. **Systemic**: {Cross-cutting fixes that improve multiple flows}
|
|
210
|
+
4. **Process**: {Suggestions - e.g., add flow integration tests, implement error boundary}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Important Rules
|
|
216
|
+
|
|
217
|
+
1. **Journey-first thinking**: Group and present by user journey, not by analyzer
|
|
218
|
+
2. **Show the flow trace**: For each broken journey, show exactly WHERE in the multi-step flow it breaks
|
|
219
|
+
3. **Cross-analyzer correlation is key**: Two analyzers finding issues on the same flow step = high confidence
|
|
220
|
+
4. **User perspective**: Describe issues as what the user experiences, not technical jargon
|
|
221
|
+
5. **Systemic issues matter**: If the same root cause breaks 5 flows, call it out as a systemic issue
|
|
222
|
+
6. **Be actionable**: Every finding should have specific remediation steps
|
|
223
|
+
7. **Save the report**: Write to `docs/08-project/flow-audits/flow-audit-{YYYYMMDD}.md`
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## Boundary Rules
|
|
228
|
+
|
|
229
|
+
- **Do NOT report security vulnerabilities** - `/agileflow:code:security` handles those
|
|
230
|
+
- **Do NOT report logic bugs** (race conditions, off-by-one) - `/agileflow:code:logic`
|
|
231
|
+
- **Do NOT report missing implementations** (empty handlers, TODO stubs) - `/agileflow:code:completeness`
|
|
232
|
+
- **Do NOT report performance issues** - `/agileflow:code:performance`
|
|
233
|
+
- **Focus on**: Does the flow complete as the user expects? Is feedback correct? Does data persist? Can the user recover from errors?
|
|
234
|
+
|
|
235
|
+
### Overlap with Completeness
|
|
236
|
+
|
|
237
|
+
The completeness audit finds **missing code** (empty handler, no endpoint). This audit finds **broken chains** (code exists but doesn't connect properly, or connects but gives wrong feedback). If a flow step has an empty handler, completeness catches it. If the handler calls an API that responds but the frontend ignores the response, THIS audit catches it.
|