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/profiling-guide.md
ADDED
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
# Profiling Guide
|
|
2
|
+
|
|
3
|
+
**Load this when:** choosing a profiling tool, reading a flame chart, taking heap snapshots, interpreting APM traces, or establishing a performance baseline for any layer of the stack.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Frontend profiling
|
|
8
|
+
|
|
9
|
+
### Chrome DevTools — Performance tab
|
|
10
|
+
|
|
11
|
+
The Performance tab is the primary tool for diagnosing runtime rendering problems: janky animations, slow interactions, layout thrashing, and long tasks.
|
|
12
|
+
|
|
13
|
+
**How to take a useful recording:**
|
|
14
|
+
|
|
15
|
+
1. Open DevTools → Performance tab
|
|
16
|
+
2. Tick "Screenshots" and "Web Vitals" in the capture bar
|
|
17
|
+
3. Click the record button, perform the interaction you are investigating, then stop
|
|
18
|
+
4. Use "CPU: 4x slowdown" in the throttle menu to simulate mid-range devices (where real users feel the pain)
|
|
19
|
+
|
|
20
|
+
**Reading the flame chart:**
|
|
21
|
+
|
|
22
|
+
- The x-axis is time; the y-axis is the call stack (callers above, callees below)
|
|
23
|
+
- Wide bars = long-running functions — these are your candidates
|
|
24
|
+
- Red triangles on frames signal "long tasks" (> 50 ms on the main thread)
|
|
25
|
+
- Look at the "Main" track; ignore "Worker" tracks unless you explicitly use web workers
|
|
26
|
+
- "Layout" and "Recalculate Style" bars indicate forced reflow — check if they are triggered by JavaScript reading layout properties mid-frame (getBoundingClientRect, offsetHeight)
|
|
27
|
+
|
|
28
|
+
**Long task threshold:** Any task > 50 ms is a long task and blocks user input. Tasks > 200 ms are serious; > 500 ms is a critical blocking problem.
|
|
29
|
+
|
|
30
|
+
**Identifying the culprit:**
|
|
31
|
+
|
|
32
|
+
1. Find the widest red bar in the Main thread
|
|
33
|
+
2. Click it — the Summary panel shows the function and file
|
|
34
|
+
3. Click the file link to jump to source
|
|
35
|
+
4. Look at "Bottom-Up" tab to find where total time is actually spent (vs. self time)
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
### Lighthouse CI
|
|
40
|
+
|
|
41
|
+
Lighthouse provides lab measurements for Core Web Vitals and a prioritized list of opportunities.
|
|
42
|
+
|
|
43
|
+
**Running Lighthouse:**
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# CLI (most reliable — eliminates browser extension interference)
|
|
47
|
+
npx lighthouse https://yoursite.com --output=html --output-path=./report.html --chrome-flags="--headless"
|
|
48
|
+
|
|
49
|
+
# Or via CI
|
|
50
|
+
npm install -D @lhci/cli
|
|
51
|
+
npx lhci autorun
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**What to look at first:**
|
|
55
|
+
|
|
56
|
+
1. Performance score — a weighted composite; useful directionally, not as a target
|
|
57
|
+
2. **Opportunities** — concrete fixes with estimated time savings
|
|
58
|
+
3. **Diagnostics** — structural issues (render-blocking resources, excessive DOM size, no image sizing)
|
|
59
|
+
4. **Core Web Vitals** — LCP, INP, CLS with attribution
|
|
60
|
+
|
|
61
|
+
**Key thresholds:**
|
|
62
|
+
|
|
63
|
+
| Metric | Good | Needs work | Poor |
|
|
64
|
+
| ------ | -------- | ------------- | -------- |
|
|
65
|
+
| LCP | < 2.5 s | 2.5 – 4.0 s | > 4.0 s |
|
|
66
|
+
| INP | < 200 ms | 200 – 500 ms | > 500 ms |
|
|
67
|
+
| CLS | < 0.1 | 0.1 – 0.25 | > 0.25 |
|
|
68
|
+
| FCP | < 1.8 s | 1.8 – 3.0 s | > 3.0 s |
|
|
69
|
+
| TTFB | < 800 ms | 800 ms – 1.8s | > 1.8 s |
|
|
70
|
+
|
|
71
|
+
**Important:** Lighthouse is a lab tool. Use Chrome User Experience Report (CrUX) or your RUM data for field measurements. Lab and field can diverge significantly due to device and network mix.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### Web Vitals attribution
|
|
76
|
+
|
|
77
|
+
The `web-vitals` library (v3+) provides attribution data telling you exactly which element caused the LCP, which interaction caused a slow INP, and which elements shifted for CLS.
|
|
78
|
+
|
|
79
|
+
```js
|
|
80
|
+
import { onLCP, onINP, onCLS } from "web-vitals/attribution";
|
|
81
|
+
|
|
82
|
+
onLCP(({ value, attribution }) => {
|
|
83
|
+
console.log("LCP element:", attribution.lcpEntry?.element);
|
|
84
|
+
console.log(
|
|
85
|
+
"LCP phases:",
|
|
86
|
+
attribution.timeToFirstByte,
|
|
87
|
+
attribution.resourceLoadDelay,
|
|
88
|
+
attribution.resourceLoadDuration,
|
|
89
|
+
attribution.elementRenderDelay,
|
|
90
|
+
);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
onINP(({ value, attribution }) => {
|
|
94
|
+
console.log("INP interaction target:", attribution.interactionTarget);
|
|
95
|
+
console.log(
|
|
96
|
+
"INP phases: input delay",
|
|
97
|
+
attribution.inputDelay,
|
|
98
|
+
"processing time",
|
|
99
|
+
attribution.processingDuration,
|
|
100
|
+
"presentation delay",
|
|
101
|
+
attribution.presentationDelay,
|
|
102
|
+
);
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
onCLS(({ value, attribution }) => {
|
|
106
|
+
attribution.largestShiftTarget &&
|
|
107
|
+
console.log("CLS culprit:", attribution.largestShiftTarget);
|
|
108
|
+
});
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Send these values to your analytics backend to build a real-user performance dashboard.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
### React DevTools Profiler
|
|
116
|
+
|
|
117
|
+
For React applications, the React DevTools Profiler reveals which components are rendering unnecessarily and how long each render takes.
|
|
118
|
+
|
|
119
|
+
**How to use:**
|
|
120
|
+
|
|
121
|
+
1. Install React DevTools browser extension
|
|
122
|
+
2. Open DevTools → Profiler tab
|
|
123
|
+
3. Enable "Record why each component rendered" in settings
|
|
124
|
+
4. Click record, perform the interaction, stop
|
|
125
|
+
5. Look for components with high "render duration" and "rendered by" showing a parent re-render that should have been prevented
|
|
126
|
+
|
|
127
|
+
**What to look for:**
|
|
128
|
+
|
|
129
|
+
- Components that render on every keystroke when they only depend on a debounced value
|
|
130
|
+
- Components that receive a new object reference on every render (breaks `React.memo`)
|
|
131
|
+
- Long render durations (> 16 ms) that push you past a frame budget
|
|
132
|
+
|
|
133
|
+
**why-did-you-render:**
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
npm install @welldone-software/why-did-you-render
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Add to your app entry point (development only) and it logs detailed reasons for unexpected re-renders.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
### Bundle analysis
|
|
144
|
+
|
|
145
|
+
Large JavaScript bundles are the leading cause of slow Time to Interactive, especially on mobile.
|
|
146
|
+
|
|
147
|
+
**webpack-bundle-analyzer:**
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
npm install -D webpack-bundle-analyzer
|
|
151
|
+
# Add to webpack config:
|
|
152
|
+
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
|
|
153
|
+
plugins: [new BundleAnalyzerPlugin()]
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Vite / Rollup:**
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
npm install -D rollup-plugin-visualizer
|
|
160
|
+
# vite.config.js:
|
|
161
|
+
import { visualizer } from 'rollup-plugin-visualizer';
|
|
162
|
+
plugins: [visualizer({ open: true, gzipSize: true })]
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**source-map-explorer** (framework-agnostic):
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
npm install -D source-map-explorer
|
|
169
|
+
npx source-map-explorer dist/static/js/*.js
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**What to look for in the bundle report:**
|
|
173
|
+
|
|
174
|
+
- Unexpectedly large packages (moment.js, lodash — often replaceable with smaller alternatives)
|
|
175
|
+
- Libraries included in multiple chunks (deduplication issue)
|
|
176
|
+
- Packages imported in full when only one function is needed (`import _ from 'lodash'` vs `import debounce from 'lodash/debounce'`)
|
|
177
|
+
- Code that should be lazy-loaded appearing in the initial bundle
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
### Network waterfall (DevTools Network tab)
|
|
182
|
+
|
|
183
|
+
**Key signals:**
|
|
184
|
+
|
|
185
|
+
- Render-blocking resources: `<script>` without `defer`/`async`, `<link rel="stylesheet">` in `<head>` — these delay first paint
|
|
186
|
+
- Long chains of sequential requests (A loads B loads C) — use `<link rel="preload">` to break chains
|
|
187
|
+
- Large uncompressed assets — check that gzip/brotli is enabled on your server
|
|
188
|
+
- Uncached resources that should be cached — check `Cache-Control` headers
|
|
189
|
+
- HTTP/1.1 with many requests — migrate to HTTP/2 for free multiplexing
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Backend profiling
|
|
194
|
+
|
|
195
|
+
### Node.js: built-in `--prof` flag
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
node --prof server.js
|
|
199
|
+
# ... generate load ...
|
|
200
|
+
node --prof-process isolate-*.log > processed.txt
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
The processed output shows a "ticks" breakdown: which functions consume what percentage of CPU time. Look for high percentages in your application code (not V8 internals).
|
|
204
|
+
|
|
205
|
+
### Node.js: clinic.js
|
|
206
|
+
|
|
207
|
+
clinic.js is the most developer-friendly Node.js profiling suite.
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
npm install -g clinic
|
|
211
|
+
|
|
212
|
+
# CPU flame graph — identify hot functions
|
|
213
|
+
clinic flame -- node server.js
|
|
214
|
+
|
|
215
|
+
# Async/event loop profiling — find event loop delays
|
|
216
|
+
clinic bubbleprof -- node server.js
|
|
217
|
+
|
|
218
|
+
# Memory profiling — heap allocation tracking
|
|
219
|
+
clinic heapprofiler -- node server.js
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
**Reading a clinic flame graph:**
|
|
223
|
+
|
|
224
|
+
- Width = time spent in that function (as % of total)
|
|
225
|
+
- Flat tops = "on-CPU" time; "frozen" or narrow functions = waiting (I/O)
|
|
226
|
+
- Look for wide plateaus in your application code
|
|
227
|
+
|
|
228
|
+
### Python: cProfile + py-spy
|
|
229
|
+
|
|
230
|
+
**cProfile** (built-in, zero dependencies):
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
python -m cProfile -o profile.out -s cumulative your_script.py
|
|
234
|
+
python -m pstats profile.out
|
|
235
|
+
# In pstats: sort cumtime, stats 20
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
**py-spy** (sampling profiler, zero overhead, attaches to running process):
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
pip install py-spy
|
|
242
|
+
py-spy record -o profile.svg --pid <PID> # flame graph
|
|
243
|
+
py-spy top --pid <PID> # live top-like view
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**memory_profiler** (line-by-line memory usage):
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
pip install memory_profiler
|
|
250
|
+
@profile # decorate the function
|
|
251
|
+
python -m memory_profiler your_script.py
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Go: pprof
|
|
255
|
+
|
|
256
|
+
```go
|
|
257
|
+
import _ "net/http/pprof"
|
|
258
|
+
// In main(): go http.ListenAndServe(":6060", nil)
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
# CPU profile (30 seconds of load)
|
|
263
|
+
go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30
|
|
264
|
+
|
|
265
|
+
# Heap profile
|
|
266
|
+
go tool pprof http://localhost:6060/debug/pprof/heap
|
|
267
|
+
|
|
268
|
+
# Goroutine profile (find goroutine leaks)
|
|
269
|
+
go tool pprof http://localhost:6060/debug/pprof/goroutine
|
|
270
|
+
|
|
271
|
+
# In pprof interactive mode:
|
|
272
|
+
top20 # top 20 functions by CPU/memory
|
|
273
|
+
web # open flame graph in browser (requires graphviz)
|
|
274
|
+
list funcName # source-level annotation
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Database: EXPLAIN ANALYZE
|
|
278
|
+
|
|
279
|
+
**PostgreSQL:**
|
|
280
|
+
|
|
281
|
+
```sql
|
|
282
|
+
EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT)
|
|
283
|
+
SELECT u.*, p.* FROM users u
|
|
284
|
+
JOIN posts p ON p.user_id = u.id
|
|
285
|
+
WHERE u.created_at > '2024-01-01'
|
|
286
|
+
ORDER BY u.created_at DESC
|
|
287
|
+
LIMIT 50;
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
**What to look for:**
|
|
291
|
+
|
|
292
|
+
- `Seq Scan` on a large table = missing index (check rows scanned vs rows returned ratio)
|
|
293
|
+
- `Sort` with `external merge` = sort spilled to disk; increase `work_mem` or add index
|
|
294
|
+
- `Hash Join` vs `Nested Loop` — nested loop is efficient with small inner sets and indexes; hash join is better for large sets
|
|
295
|
+
- `rows=X` vs `actual rows=Y` — large discrepancy means stale statistics; run `ANALYZE table_name`
|
|
296
|
+
- `Buffers: shared hit=X read=Y` — high `read` values mean data is not in buffer cache
|
|
297
|
+
|
|
298
|
+
**MySQL:**
|
|
299
|
+
|
|
300
|
+
```sql
|
|
301
|
+
EXPLAIN FORMAT=JSON
|
|
302
|
+
SELECT * FROM orders WHERE customer_id = 123 AND status = 'pending';
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
**Slow query log:**
|
|
306
|
+
|
|
307
|
+
```sql
|
|
308
|
+
-- PostgreSQL: enable in postgresql.conf
|
|
309
|
+
log_min_duration_statement = 100 -- log queries > 100ms
|
|
310
|
+
|
|
311
|
+
-- MySQL: enable in my.cnf
|
|
312
|
+
slow_query_log = 1
|
|
313
|
+
long_query_time = 0.1
|
|
314
|
+
log_queries_not_using_indexes = 1
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
**pg_stat_statements** (PostgreSQL extension — most useful for finding the globally slowest queries):
|
|
318
|
+
|
|
319
|
+
```sql
|
|
320
|
+
CREATE EXTENSION pg_stat_statements;
|
|
321
|
+
|
|
322
|
+
-- Top 10 slowest queries by total time
|
|
323
|
+
SELECT query, calls, total_exec_time, mean_exec_time, rows
|
|
324
|
+
FROM pg_stat_statements
|
|
325
|
+
ORDER BY total_exec_time DESC
|
|
326
|
+
LIMIT 10;
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### APM tools: Datadog, New Relic, Sentry Performance
|
|
330
|
+
|
|
331
|
+
APM tools provide distributed traces across service boundaries — invaluable for microservices where the slow part is not obvious.
|
|
332
|
+
|
|
333
|
+
**What to look for in APM traces:**
|
|
334
|
+
|
|
335
|
+
- Spans with high self-time (excluding children) — the code in that span is slow
|
|
336
|
+
- Long DB spans — check the query; correlate with EXPLAIN ANALYZE
|
|
337
|
+
- High span counts within one request — classic N+1 signature (many small DB spans)
|
|
338
|
+
- External HTTP spans with high latency — third-party API is the bottleneck, not your code
|
|
339
|
+
- Gaps between spans — time spent that isn't attributed (often serialization, middleware, or queue wait)
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## Memory profiling
|
|
344
|
+
|
|
345
|
+
### Heap snapshots (Chrome DevTools / Node.js)
|
|
346
|
+
|
|
347
|
+
**In Chrome DevTools (browser-side leaks):**
|
|
348
|
+
|
|
349
|
+
1. Open DevTools → Memory tab
|
|
350
|
+
2. Take Snapshot 1 (baseline)
|
|
351
|
+
3. Perform the action you suspect leaks memory (e.g. navigate to a page and back several times)
|
|
352
|
+
4. Force garbage collection (trash icon in Memory tab)
|
|
353
|
+
5. Take Snapshot 2
|
|
354
|
+
6. Select Snapshot 2, choose "Comparison" view to see what was allocated and not freed
|
|
355
|
+
|
|
356
|
+
**In Node.js:**
|
|
357
|
+
|
|
358
|
+
```js
|
|
359
|
+
const v8 = require("v8");
|
|
360
|
+
const fs = require("fs");
|
|
361
|
+
|
|
362
|
+
// Take a heap snapshot
|
|
363
|
+
const snapshotStream = v8.writeHeapSnapshot();
|
|
364
|
+
console.log("Snapshot written to:", snapshotStream);
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
Or use `--inspect` and connect Chrome DevTools to the Node.js process.
|
|
368
|
+
|
|
369
|
+
### Allocation timeline
|
|
370
|
+
|
|
371
|
+
DevTools Memory → "Allocation instrumentation on timeline": records every allocation in real time. Use this when you know a leak exists but not where — filter by constructor type to narrow down.
|
|
372
|
+
|
|
373
|
+
### Common memory leak patterns
|
|
374
|
+
|
|
375
|
+
| Pattern | Symptom | Fix |
|
|
376
|
+
| ---------------------------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------- |
|
|
377
|
+
| Event listener not removed | Memory grows after DOM element "removed" from view | `removeEventListener` in cleanup; use `AbortController` |
|
|
378
|
+
| Closure retaining large scope | Function keeps reference to large object in outer scope | Restructure to avoid capturing large objects in closures |
|
|
379
|
+
| Global array / map growth | `window.myCache` or module-level Map grows unbounded | Add eviction policy (LRU, TTL) or use `WeakMap` |
|
|
380
|
+
| `setInterval` / `setTimeout` not cleared | Timer fires after component is unmounted | Store the return value; call `clearInterval`/`clearTimeout` in cleanup |
|
|
381
|
+
| WeakMap vs Map for caches | Map keeps keys alive; WeakMap allows GC | Use `WeakMap` when keys are objects whose lifetime you don't control |
|
|
382
|
+
| React: missing `useEffect` cleanup | Subscription, listener, or timer set up but never torn down | Return a cleanup function from `useEffect` |
|
|
383
|
+
| Node.js: stream not consumed | Stream buffer grows because consumer is slow | Use backpressure; call `stream.resume()` if data is not needed |
|