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
package/content/plugins/performance/skills/agileflow-performance/references/web-vitals-guide.md
ADDED
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
# Core Web Vitals Guide
|
|
2
|
+
|
|
3
|
+
**Load this when:** a Lighthouse report, CrUX dashboard, or monitoring alert flags a failing Core Web Vitals score, or you need to understand what each metric measures and how to fix it.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
Core Web Vitals are Google's user-centric performance signals. They measure real-world experience, not synthetic benchmarks. Since May 2021 they influence Google Search ranking.
|
|
10
|
+
|
|
11
|
+
**The three Core Web Vitals (as of 2024):**
|
|
12
|
+
|
|
13
|
+
| Metric | What it measures | Good | Needs work | Poor |
|
|
14
|
+
| ------ | ------------------------------------------ | -------- | ------------ | -------- |
|
|
15
|
+
| LCP | Loading performance (largest element) | < 2.5 s | 2.5 – 4.0 s | > 4.0 s |
|
|
16
|
+
| INP | Responsiveness to all interactions | < 200 ms | 200 – 500 ms | > 500 ms |
|
|
17
|
+
| CLS | Visual stability (unexpected layout shift) | < 0.1 | 0.1 – 0.25 | > 0.25 |
|
|
18
|
+
|
|
19
|
+
**Additional metrics (not Core, but important):**
|
|
20
|
+
|
|
21
|
+
| Metric | What it measures | Good | Needs work | Poor |
|
|
22
|
+
| ------ | ------------------------------------------ | -------- | -------------- | -------- |
|
|
23
|
+
| TTFB | Time to First Byte (server response speed) | < 800 ms | 800 ms – 1.8 s | > 1.8 s |
|
|
24
|
+
| FCP | First Contentful Paint | < 1.8 s | 1.8 – 3.0 s | > 3.0 s |
|
|
25
|
+
| TBT | Total Blocking Time (lab proxy for INP) | < 200 ms | 200 – 600 ms | > 600 ms |
|
|
26
|
+
|
|
27
|
+
**Field data vs lab data:**
|
|
28
|
+
|
|
29
|
+
- **Lab (Lighthouse, WebPageTest):** controlled, reproducible, good for debugging. Does not reflect real user experience.
|
|
30
|
+
- **Field (CrUX, RUM):** real users, real devices, real networks. This is what Google measures for ranking. A passing Lighthouse score does not guarantee passing field CWV.
|
|
31
|
+
|
|
32
|
+
Always verify fixes in field data. The Chrome UX Report (CrUX) dashboard updates monthly. For faster feedback, use your own RUM pipeline with the `web-vitals` library.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## LCP — Largest Contentful Paint
|
|
37
|
+
|
|
38
|
+
### What it measures
|
|
39
|
+
|
|
40
|
+
LCP measures when the largest visible element in the viewport finishes rendering. This is the perceived "main content loaded" moment.
|
|
41
|
+
|
|
42
|
+
**Elements that qualify as LCP candidates:**
|
|
43
|
+
|
|
44
|
+
- `<img>` elements
|
|
45
|
+
- `<image>` inside an SVG
|
|
46
|
+
- `<video>` poster images
|
|
47
|
+
- Block-level elements with a background image (`background-image: url(...)`)
|
|
48
|
+
- Block-level elements containing text (`<h1>`, `<p>`, `<div>`)
|
|
49
|
+
|
|
50
|
+
The browser continuously updates the LCP candidate as the page loads. The final LCP value is reported when the user first interacts with the page.
|
|
51
|
+
|
|
52
|
+
### Common causes of slow LCP
|
|
53
|
+
|
|
54
|
+
| Cause | What happens |
|
|
55
|
+
| ------------------------------------ | ----------------------------------------------------------------------------- |
|
|
56
|
+
| Slow TTFB | Everything is delayed; server is the bottleneck |
|
|
57
|
+
| Render-blocking resource | CSS or synchronous script delays the browser reaching the LCP element |
|
|
58
|
+
| LCP image discovered late | The `<img>` is not in the initial HTML (set by JavaScript or lazy-loaded) |
|
|
59
|
+
| LCP image is lazy-loaded | `loading="lazy"` prevents preload; browser waits until element is in viewport |
|
|
60
|
+
| Large unoptimized LCP image | Image too large; download takes too long |
|
|
61
|
+
| LCP element rendered from JavaScript | Browser cannot fetch the resource during preload scan |
|
|
62
|
+
|
|
63
|
+
### Fixes for LCP
|
|
64
|
+
|
|
65
|
+
**1. Improve TTFB (if TTFB > 600 ms is contributing):**
|
|
66
|
+
|
|
67
|
+
- Use a CDN to serve HTML from an edge node close to the user
|
|
68
|
+
- Enable server-side rendering or static generation
|
|
69
|
+
- Add edge caching for your HTML (with appropriate cache-control)
|
|
70
|
+
- Profile the server-side rendering path (see `references/profiling-guide.md`)
|
|
71
|
+
|
|
72
|
+
**2. Preload the LCP image:**
|
|
73
|
+
|
|
74
|
+
```html
|
|
75
|
+
<!-- Add to <head> — this is the highest-impact LCP fix for image-heavy pages -->
|
|
76
|
+
<link rel="preload" as="image" href="/hero.webp" fetchpriority="high" />
|
|
77
|
+
|
|
78
|
+
<!-- For responsive images, use imagesrcset -->
|
|
79
|
+
<link
|
|
80
|
+
rel="preload"
|
|
81
|
+
as="image"
|
|
82
|
+
imagesrcset="hero-400.webp 400w, hero-800.webp 800w, hero-1200.webp 1200w"
|
|
83
|
+
imagesrcset="(max-width: 600px) 100vw, 800px"
|
|
84
|
+
fetchpriority="high"
|
|
85
|
+
/>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**3. Never lazy-load the LCP image:**
|
|
89
|
+
|
|
90
|
+
```html
|
|
91
|
+
<!-- Bad — delays the most important image -->
|
|
92
|
+
<img src="hero.webp" loading="lazy" ... />
|
|
93
|
+
|
|
94
|
+
<!-- Good — no lazy loading for above-the-fold images -->
|
|
95
|
+
<img src="hero.webp" fetchpriority="high" ... />
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**4. Optimize the image itself:**
|
|
99
|
+
|
|
100
|
+
- Convert to WebP or AVIF (30–50% smaller than JPEG at equivalent quality)
|
|
101
|
+
- Resize to the display dimensions (no larger)
|
|
102
|
+
- Enable lossless or lossy compression at 80–85% quality
|
|
103
|
+
|
|
104
|
+
**5. Eliminate render-blocking resources:**
|
|
105
|
+
|
|
106
|
+
```html
|
|
107
|
+
<!-- Move CSS to be non-blocking for non-critical styles -->
|
|
108
|
+
<link
|
|
109
|
+
rel="preload"
|
|
110
|
+
href="non-critical.css"
|
|
111
|
+
as="style"
|
|
112
|
+
onload="this.rel='stylesheet'"
|
|
113
|
+
/>
|
|
114
|
+
<!-- Inline only the critical CSS needed to render the LCP element -->
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**6. Use SSR or SSG to put the LCP element in the initial HTML:**
|
|
118
|
+
|
|
119
|
+
- If your LCP element is rendered by JavaScript (e.g. a React component that fetches data), the browser cannot preload the image during the preload scan
|
|
120
|
+
- Move to SSR or static generation so the `<img>` tag is in the HTML payload
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## INP — Interaction to Next Paint
|
|
125
|
+
|
|
126
|
+
### What it measures
|
|
127
|
+
|
|
128
|
+
INP measures the latency of all user interactions (clicks, keyboard presses, taps) throughout the page lifecycle. It reports the worst interaction (above the 98th percentile for long sessions).
|
|
129
|
+
|
|
130
|
+
INP replaced FID (First Input Delay) in March 2024. FID only measured the delay before the first interaction was processed. INP measures the full duration — from interaction to the next visual update — for every interaction.
|
|
131
|
+
|
|
132
|
+
**INP phases:**
|
|
133
|
+
|
|
134
|
+
1. **Input delay** — time from user action to when the event handler starts running (caused by other tasks on the main thread)
|
|
135
|
+
2. **Processing duration** — time the event handler itself takes to run
|
|
136
|
+
3. **Presentation delay** — time from handler completion to the next frame being painted
|
|
137
|
+
|
|
138
|
+
A good INP means all three phases are fast.
|
|
139
|
+
|
|
140
|
+
### Common causes of high INP
|
|
141
|
+
|
|
142
|
+
| Cause | Phase affected |
|
|
143
|
+
| ---------------------------------------------------------------------- | ------------------- |
|
|
144
|
+
| Long task running when user interacts | Input delay |
|
|
145
|
+
| Heavy event handler (synchronous work) | Processing duration |
|
|
146
|
+
| Forced synchronous layout (reading layout properties after DOM change) | Processing duration |
|
|
147
|
+
| Too many DOM nodes (slow style recalculation) | Presentation delay |
|
|
148
|
+
| Rendering framework doing too much work | All phases |
|
|
149
|
+
|
|
150
|
+
### Fixes for INP
|
|
151
|
+
|
|
152
|
+
**1. Break up long tasks with `scheduler.yield()`:**
|
|
153
|
+
|
|
154
|
+
```js
|
|
155
|
+
// Long tasks block input. Break them up to yield to user input.
|
|
156
|
+
async function processLargeDataset(items) {
|
|
157
|
+
for (let i = 0; i < items.length; i++) {
|
|
158
|
+
processItem(items[i]);
|
|
159
|
+
|
|
160
|
+
// Yield every 50 items to allow input events to be processed
|
|
161
|
+
if (i % 50 === 0) {
|
|
162
|
+
await scheduler.yield(); // Chrome 115+; polyfill: await new Promise(r => setTimeout(r, 0))
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**2. Use web workers for CPU-intensive work:**
|
|
169
|
+
|
|
170
|
+
```js
|
|
171
|
+
// Main thread — send work to a worker
|
|
172
|
+
const worker = new Worker("./compute-worker.js");
|
|
173
|
+
worker.postMessage({ data: largeDataset });
|
|
174
|
+
worker.onmessage = (e) => updateUI(e.data);
|
|
175
|
+
|
|
176
|
+
// compute-worker.js — runs off the main thread
|
|
177
|
+
self.onmessage = (e) => {
|
|
178
|
+
const result = heavyComputation(e.data.data);
|
|
179
|
+
self.postMessage(result);
|
|
180
|
+
};
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**3. Avoid forced synchronous layout:**
|
|
184
|
+
|
|
185
|
+
```js
|
|
186
|
+
// Bad — read layout property after DOM change forces synchronous reflow
|
|
187
|
+
element.style.height = "100px";
|
|
188
|
+
const width = element.offsetWidth; // forces reflow!
|
|
189
|
+
|
|
190
|
+
// Good — batch reads before writes
|
|
191
|
+
const width = element.offsetWidth; // read first
|
|
192
|
+
element.style.height = `${width / 2}px`; // write after
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**4. Debounce high-frequency event handlers:**
|
|
196
|
+
|
|
197
|
+
```js
|
|
198
|
+
import debounce from "lodash/debounce";
|
|
199
|
+
|
|
200
|
+
// Don't run expensive work on every keypress
|
|
201
|
+
const handleSearch = debounce(async (query) => {
|
|
202
|
+
const results = await fetchSearchResults(query);
|
|
203
|
+
setResults(results);
|
|
204
|
+
}, 300);
|
|
205
|
+
|
|
206
|
+
input.addEventListener("input", (e) => handleSearch(e.target.value));
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## CLS — Cumulative Layout Shift
|
|
212
|
+
|
|
213
|
+
### What it measures
|
|
214
|
+
|
|
215
|
+
CLS measures unexpected layout shifts — when visible elements move position during page load or interaction without user initiation. A high CLS means content jumps around as the page loads, causing mis-clicks and a disorienting experience.
|
|
216
|
+
|
|
217
|
+
CLS is a cumulative score, not a single event. It sums all shift scores across the page lifetime (with a session window algorithm for long-lived pages).
|
|
218
|
+
|
|
219
|
+
**Shift score calculation:** `shift score = impact fraction × distance fraction`
|
|
220
|
+
|
|
221
|
+
- Impact fraction: fraction of viewport area affected by the shift
|
|
222
|
+
- Distance fraction: fraction of viewport the element moved
|
|
223
|
+
|
|
224
|
+
### Common causes of CLS
|
|
225
|
+
|
|
226
|
+
| Cause | Example |
|
|
227
|
+
| ----------------------------------------------- | ------------------------------------------------------------------------------ |
|
|
228
|
+
| Images without `width` and `height` | Browser reserves no space; image pushes content down when it loads |
|
|
229
|
+
| Ads, embeds, iframes without reserved space | Ad network injects content that pushes page layout down |
|
|
230
|
+
| Dynamic content injected above existing content | Cookie banner, notification bar, "you may also like" injected above the fold |
|
|
231
|
+
| Web fonts causing FOUT/FOIT | Font swap causes text to reflow at different size |
|
|
232
|
+
| Animations using layout-triggering properties | `margin`, `padding`, `width`, `height` trigger layout; use `transform` instead |
|
|
233
|
+
|
|
234
|
+
### Fixes for CLS
|
|
235
|
+
|
|
236
|
+
**1. Always specify `width` and `height` on images:**
|
|
237
|
+
|
|
238
|
+
```html
|
|
239
|
+
<!-- Bad — browser doesn't know image dimensions until it loads -->
|
|
240
|
+
<img src="product.jpg" alt="..." />
|
|
241
|
+
|
|
242
|
+
<!-- Good — browser reserves the correct space immediately -->
|
|
243
|
+
<img src="product.jpg" alt="..." width="800" height="600" />
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
CSS `aspect-ratio` as an alternative:
|
|
247
|
+
|
|
248
|
+
```css
|
|
249
|
+
img {
|
|
250
|
+
aspect-ratio: 4 / 3;
|
|
251
|
+
width: 100%;
|
|
252
|
+
height: auto;
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
**2. Reserve space for ads and embeds:**
|
|
257
|
+
|
|
258
|
+
```css
|
|
259
|
+
/* Ad slot — reserve space so layout doesn't shift when ad loads */
|
|
260
|
+
.ad-slot {
|
|
261
|
+
min-height: 250px; /* minimum expected ad height */
|
|
262
|
+
background: #f5f5f5; /* visual placeholder */
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**3. Avoid injecting content above existing content:**
|
|
267
|
+
|
|
268
|
+
```js
|
|
269
|
+
// Bad — notification pushes everything down
|
|
270
|
+
document.body.prepend(cookieBanner);
|
|
271
|
+
|
|
272
|
+
// Good — animate in from bottom or corner; don't push content
|
|
273
|
+
cookieBanner.style.position = "fixed";
|
|
274
|
+
cookieBanner.style.bottom = "0";
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
**4. Control font loading to prevent reflow:**
|
|
278
|
+
|
|
279
|
+
```css
|
|
280
|
+
/* font-display: optional — if font isn't ready in 100ms, use fallback indefinitely */
|
|
281
|
+
/* Best for CLS; may show fallback font on first visit */
|
|
282
|
+
@font-face {
|
|
283
|
+
font-family: "MyFont";
|
|
284
|
+
src: url("/fonts/myfont.woff2") format("woff2");
|
|
285
|
+
font-display: optional;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/* font-display: swap — shows fallback, then swaps when font loads */
|
|
289
|
+
/* Can cause CLS if font metrics differ significantly from fallback */
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**5. Use `transform` for animations, not layout properties:**
|
|
293
|
+
|
|
294
|
+
```css
|
|
295
|
+
/* Bad — triggers layout recalculation on every frame */
|
|
296
|
+
.animate-in {
|
|
297
|
+
animation: slideIn 0.3s ease;
|
|
298
|
+
}
|
|
299
|
+
@keyframes slideIn {
|
|
300
|
+
from {
|
|
301
|
+
margin-top: -100px;
|
|
302
|
+
}
|
|
303
|
+
to {
|
|
304
|
+
margin-top: 0;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/* Good — transform is composited; never triggers layout */
|
|
309
|
+
.animate-in {
|
|
310
|
+
animation: slideIn 0.3s ease;
|
|
311
|
+
}
|
|
312
|
+
@keyframes slideIn {
|
|
313
|
+
from {
|
|
314
|
+
transform: translateY(-100px);
|
|
315
|
+
}
|
|
316
|
+
to {
|
|
317
|
+
transform: translateY(0);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## TTFB — Time to First Byte
|
|
325
|
+
|
|
326
|
+
TTFB is not a Core Web Vital but it is the foundation of all other metrics. A slow TTFB adds directly to LCP.
|
|
327
|
+
|
|
328
|
+
**TTFB decomposition:**
|
|
329
|
+
|
|
330
|
+
```
|
|
331
|
+
TTFB = DNS lookup + TCP connection + TLS handshake + Server processing + First byte transferred
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
**Fixes:**
|
|
335
|
+
|
|
336
|
+
- Use a CDN — reduces DNS, TCP, TLS time by moving the server closer to the user
|
|
337
|
+
- Enable HTTP/2 or HTTP/3 on your origin
|
|
338
|
+
- Use edge caching for HTML responses (with `stale-while-revalidate`)
|
|
339
|
+
- Optimize server-side rendering time (profile the render path)
|
|
340
|
+
- Use `103 Early Hints` to let the browser start fetching sub-resources before the HTML arrives
|
|
341
|
+
|
|
342
|
+
**Good TTFB target:** < 600 ms for the server processing time component; < 800 ms total including network.
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
## Verifying improvements
|
|
347
|
+
|
|
348
|
+
**Lab verification (fast feedback loop):**
|
|
349
|
+
|
|
350
|
+
```bash
|
|
351
|
+
npx lighthouse https://yoursite.com --output=json | jq '.categories.performance.score'
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
**Field data verification (takes weeks — plan ahead):**
|
|
355
|
+
|
|
356
|
+
1. Chrome UX Report (CrUX) — updates monthly; available in PageSpeed Insights and Search Console
|
|
357
|
+
2. Google Search Console → Core Web Vitals report — shows field pass/fail by URL group
|
|
358
|
+
3. Your own RUM (Real User Monitoring) — immediate feedback; use `web-vitals` library to collect and send metrics
|
|
359
|
+
|
|
360
|
+
**Do not declare victory until field data confirms the improvement.** Lab and field can diverge by 50% or more on sites with a large mobile or slow-network user base.
|