bmad-plus 0.7.4 → 0.8.0
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 +450 -407
- package/LICENSE +21 -0
- package/README.md +555 -446
- package/osint-agent-package/README.md +88 -88
- package/osint-agent-package/SETUP_KEYS.md +108 -108
- package/osint-agent-package/agents/osint-investigator.md +80 -80
- package/osint-agent-package/install.ps1 +87 -87
- package/osint-agent-package/install.sh +76 -76
- package/osint-agent-package/skills/bmad-osint-investigate/SKILL.md +147 -147
- package/osint-agent-package/skills/bmad-osint-investigate/osint/SKILL.md +452 -452
- package/osint-agent-package/skills/bmad-osint-investigate/osint/assets/dossier-template.md +116 -116
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/content-extraction.md +100 -100
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/enrichment-databases-fr.md +148 -148
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/platforms.md +130 -130
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/psychoprofile.md +69 -69
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/tools.md +281 -281
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/_http.py +101 -101
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/apify.py +266 -260
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/brightdata.py +101 -101
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/diagnose.py +141 -141
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/exa.py +79 -79
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/jina.py +71 -71
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/mcp-client.py +136 -136
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/parallel.py +85 -85
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/perplexity.py +102 -102
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/tavily.py +72 -72
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/volley.py +208 -208
- package/osint-agent-package/skills/bmad-osint-investigator/SKILL.md +15 -15
- package/package.json +62 -57
- package/readme-international/README.de.md +576 -426
- package/readme-international/README.es.md +578 -518
- package/readme-international/README.fr.md +576 -516
- package/src/bmad-plus/agents/agent-architect-dev/SKILL.md +96 -96
- package/src/bmad-plus/agents/agent-architect-dev/bmad-skill-manifest.yaml +13 -13
- package/src/bmad-plus/agents/agent-maker/SKILL.md +201 -201
- package/src/bmad-plus/agents/agent-maker/bmad-skill-manifest.yaml +13 -13
- package/src/bmad-plus/agents/agent-orchestrator/SKILL.md +137 -137
- package/src/bmad-plus/agents/agent-orchestrator/bmad-skill-manifest.yaml +13 -13
- package/src/bmad-plus/agents/agent-quality/SKILL.md +83 -83
- package/src/bmad-plus/agents/agent-quality/bmad-skill-manifest.yaml +13 -13
- package/src/bmad-plus/agents/agent-shadow/SKILL.md +71 -71
- package/src/bmad-plus/agents/agent-shadow/bmad-skill-manifest.yaml +13 -13
- package/src/bmad-plus/agents/agent-strategist/SKILL.md +80 -80
- package/src/bmad-plus/agents/agent-strategist/bmad-skill-manifest.yaml +13 -13
- package/src/bmad-plus/agents/pack-animated/animated-website-agent.md +325 -325
- package/src/bmad-plus/agents/pack-animated/templates/animated-website-workflow.md +55 -55
- package/src/bmad-plus/agents/pack-backup/backup-agent.md +71 -71
- package/src/bmad-plus/agents/pack-backup/templates/backup-workflow.md +51 -51
- package/src/bmad-plus/agents/pack-seo/SKILL.md +171 -171
- package/src/bmad-plus/agents/pack-seo/checklist.md +140 -140
- package/src/bmad-plus/agents/pack-seo/pagespeed-playbook.md +320 -320
- package/src/bmad-plus/agents/pack-seo/ref/audit-schema.json +187 -187
- package/src/bmad-plus/agents/pack-seo/ref/cwv-thresholds.md +87 -87
- package/src/bmad-plus/agents/pack-seo/ref/eeat-criteria.md +123 -123
- package/src/bmad-plus/agents/pack-seo/ref/geo-signals.md +167 -167
- package/src/bmad-plus/agents/pack-seo/ref/hreflang-rules.md +153 -153
- package/src/bmad-plus/agents/pack-seo/ref/quality-gates.md +133 -133
- package/src/bmad-plus/agents/pack-seo/ref/schema-catalog.md +91 -91
- package/src/bmad-plus/agents/pack-seo/ref/schema-templates.json +356 -356
- package/src/bmad-plus/agents/pack-seo/seo-chief.md +294 -294
- package/src/bmad-plus/agents/pack-seo/seo-judge.md +241 -241
- package/src/bmad-plus/agents/pack-seo/seo-scout.md +171 -171
- package/src/bmad-plus/agents/pack-seo/templates/seo-audit-workflow.md +241 -241
- package/src/bmad-plus/data/role-triggers.yaml +209 -209
- package/src/bmad-plus/module-help.csv +10 -10
- package/src/bmad-plus/module.yaml +283 -280
- package/src/bmad-plus/packs/pack-animated/animated-website-agent.md +325 -0
- package/src/bmad-plus/packs/pack-animated/templates/animated-website-workflow.md +55 -0
- package/src/bmad-plus/packs/pack-backup/backup-agent.md +71 -0
- package/src/bmad-plus/packs/pack-backup/templates/backup-workflow.md +51 -0
- package/src/bmad-plus/packs/pack-dev-studio/README.md +162 -162
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/analyst-agent.md +73 -73
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/document-project.md +61 -61
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/domain-research.md +95 -95
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/market-research.md +95 -95
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/prfaq.md +134 -134
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/product-brief.md +80 -80
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/tech-writer-agent.md +73 -73
- package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/technical-research.md +95 -95
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/architect-agent.md +73 -73
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-architecture.md +73 -73
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-epics-stories.md +92 -92
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/generate-project-context.md +80 -80
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/implementation-readiness.md +90 -90
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01-init.md +153 -153
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01b-continue.md +173 -173
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-02-context.md +224 -224
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-03-starter.md +329 -329
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-04-decisions.md +318 -318
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-05-patterns.md +359 -359
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-06-structure.md +379 -379
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-07-validation.md +361 -361
- package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-08-complete.md +81 -81
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/checkpoint-preview.md +67 -67
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-01-gather-context.md +85 -85
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-02-review.md +35 -35
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-03-triage.md +49 -49
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-04-present.md +131 -131
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review.md +89 -89
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/correct-course.md +300 -300
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/create-story.md +428 -428
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-agent.md +73 -73
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story-checklist.md +80 -80
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story.md +484 -484
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/investigate.md +193 -193
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/qa-e2e-tests.md +175 -175
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/quick-dev.md +110 -110
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/retrospective.md +1511 -1511
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-planning.md +298 -298
- package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-status.md +296 -296
- package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-prd.md +29 -29
- package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-ux-design.md +74 -74
- package/src/bmad-plus/packs/pack-dev-studio/categories/planning/edit-prd.md +29 -29
- package/src/bmad-plus/packs/pack-dev-studio/categories/planning/pm-agent.md +73 -73
- package/src/bmad-plus/packs/pack-dev-studio/categories/planning/prd.md +89 -89
- package/src/bmad-plus/packs/pack-dev-studio/categories/planning/ux-designer-agent.md +73 -73
- package/src/bmad-plus/packs/pack-dev-studio/categories/planning/validate-prd.md +29 -29
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/advanced-elicitation.md +141 -141
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/adversarial-review.md +37 -37
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/bmad-help.md +75 -75
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/brainstorming.md +6 -6
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/customize.md +110 -110
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/distillator.md +176 -176
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/edge-case-hunter.md +67 -67
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-prose.md +86 -86
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-structure.md +179 -179
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/index-docs.md +66 -66
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/party-mode.md +127 -127
- package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/shard-doc.md +105 -105
- package/src/bmad-plus/packs/pack-dev-studio/dev-studio-orchestrator.md +120 -120
- package/src/bmad-plus/packs/pack-dev-studio/shared/architecture-decision-template.md +12 -12
- package/src/bmad-plus/packs/pack-dev-studio/shared/bwml-spec.md +328 -328
- package/src/bmad-plus/packs/pack-dev-studio/shared/module-help.csv +32 -32
- package/src/bmad-plus/packs/pack-dev-studio/upstream-sync.yaml +81 -81
- package/src/bmad-plus/packs/pack-memory/README.md +106 -106
- package/src/bmad-plus/packs/pack-memory/memory-orchestrator.md +79 -79
- package/src/bmad-plus/packs/pack-memory/shared/karpathy-guardrails.md +86 -86
- package/src/bmad-plus/packs/pack-memory/shared/memory-protocol.md +143 -143
- package/src/bmad-plus/packs/pack-memory/templates/context.md +39 -39
- package/src/bmad-plus/packs/pack-memory/templates/decisions.md +25 -25
- package/src/bmad-plus/packs/pack-memory/templates/identity.yaml +39 -39
- package/src/bmad-plus/packs/pack-memory/templates/lessons.md +31 -31
- package/src/bmad-plus/packs/pack-memory/templates/patterns.md +24 -24
- package/src/bmad-plus/packs/pack-memory/templates/session-handoff.md +25 -25
- package/src/bmad-plus/packs/pack-memory/zecher-agent.md +157 -157
- package/src/bmad-plus/packs/pack-seo/SKILL.md +171 -0
- package/src/bmad-plus/packs/pack-seo/checklist.md +140 -0
- package/src/bmad-plus/packs/pack-seo/pagespeed-playbook.md +320 -0
- package/src/bmad-plus/packs/pack-seo/ref/audit-schema.json +187 -0
- package/src/bmad-plus/packs/pack-seo/ref/cwv-thresholds.md +87 -0
- package/src/bmad-plus/packs/pack-seo/ref/eeat-criteria.md +123 -0
- package/src/bmad-plus/packs/pack-seo/ref/geo-signals.md +167 -0
- package/src/bmad-plus/packs/pack-seo/ref/hreflang-rules.md +153 -0
- package/src/bmad-plus/packs/pack-seo/ref/quality-gates.md +133 -0
- package/src/bmad-plus/packs/pack-seo/ref/schema-catalog.md +91 -0
- package/src/bmad-plus/packs/pack-seo/ref/schema-templates.json +356 -0
- package/src/bmad-plus/packs/pack-seo/seo-chief.md +294 -0
- package/src/bmad-plus/packs/pack-seo/seo-judge.md +241 -0
- package/src/bmad-plus/packs/pack-seo/seo-scout.md +171 -0
- package/src/bmad-plus/packs/pack-seo/templates/seo-audit-workflow.md +241 -0
- package/src/bmad-plus/packs/pack-shield/README.md +110 -110
- package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/csrd-agent.md +262 -262
- package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/section508-agent.md +179 -179
- package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/wcag-agent.md +201 -201
- package/src/bmad-plus/packs/pack-shield/categories/ai-governance/eu-ai-act-agent.md +97 -97
- package/src/bmad-plus/packs/pack-shield/categories/ai-governance/iso42001-agent.md +251 -251
- package/src/bmad-plus/packs/pack-shield/categories/ai-governance/nist-ai-rmf-agent.md +133 -133
- package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/cis-controls-agent.md +221 -221
- package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/ism-agent.md +150 -150
- package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/iso27001-agent.md +167 -167
- package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nis2-agent.md +83 -83
- package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nist-800-53-agent.md +250 -250
- package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nist-csf-agent.md +218 -218
- package/src/bmad-plus/packs/pack-shield/categories/data-privacy/ccpa-agent.md +94 -94
- package/src/bmad-plus/packs/pack-shield/categories/data-privacy/dpdpa-agent.md +136 -136
- package/src/bmad-plus/packs/pack-shield/categories/data-privacy/gdpr-agent.md +296 -296
- package/src/bmad-plus/packs/pack-shield/categories/data-privacy/iso27701-agent.md +134 -134
- package/src/bmad-plus/packs/pack-shield/categories/data-privacy/lgpd-agent.md +129 -129
- package/src/bmad-plus/packs/pack-shield/categories/defense-export/cmmc-agent.md +127 -127
- package/src/bmad-plus/packs/pack-shield/categories/defense-export/ear-agent.md +272 -272
- package/src/bmad-plus/packs/pack-shield/categories/defense-export/itar-agent.md +202 -202
- package/src/bmad-plus/packs/pack-shield/categories/defense-export/tsa-agent.md +367 -367
- package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/dora-agent.md +510 -510
- package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/fedramp-agent.md +247 -247
- package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/hipaa-agent.md +173 -173
- package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/pci-dss-agent.md +239 -239
- package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/soc2-agent.md +266 -266
- package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/swift-csp-agent.md +164 -164
- package/src/bmad-plus/packs/pack-shield/categories/workflows/ai-act-classifier.md +131 -131
- package/src/bmad-plus/packs/pack-shield/categories/workflows/ai-act-fria.md +155 -155
- package/src/bmad-plus/packs/pack-shield/categories/workflows/ai-act-incidents.md +187 -187
- package/src/bmad-plus/packs/pack-shield/categories/workflows/ai-act-roles.md +113 -113
- package/src/bmad-plus/packs/pack-shield/categories/workflows/breach-sentinel.md +197 -197
- package/src/bmad-plus/packs/pack-shield/categories/workflows/cookie-policy-gen.md +180 -180
- package/src/bmad-plus/packs/pack-shield/categories/workflows/dpia-sentinel.md +235 -235
- package/src/bmad-plus/packs/pack-shield/categories/workflows/legitimate-interest.md +159 -159
- package/src/bmad-plus/packs/pack-shield/categories/workflows/privacy-advisor.md +133 -133
- package/src/bmad-plus/packs/pack-shield/categories/workflows/privacy-notice-gen.md +160 -160
- package/src/bmad-plus/packs/pack-shield/categories/workflows/privacy-policy-gen.md +135 -135
- package/src/bmad-plus/packs/pack-shield/references/ccpa/ccpa-gdpr-comparison.md +117 -117
- package/src/bmad-plus/packs/pack-shield/references/ccpa/consumer-rights-workflows.md +177 -177
- package/src/bmad-plus/packs/pack-shield/references/cis-controls/framework-mappings.md +162 -162
- package/src/bmad-plus/packs/pack-shield/references/cis-controls/implementation-guidance.md +235 -235
- package/src/bmad-plus/packs/pack-shield/references/cis-controls/safeguards-detail.md +252 -252
- package/src/bmad-plus/packs/pack-shield/references/cmmc/cmmc-assessment.md +170 -170
- package/src/bmad-plus/packs/pack-shield/references/cmmc/cmmc-levels.md +113 -113
- package/src/bmad-plus/packs/pack-shield/references/cmmc/cmmc-practices.md +211 -211
- package/src/bmad-plus/packs/pack-shield/references/csrd/compliance-program.md +281 -281
- package/src/bmad-plus/packs/pack-shield/references/csrd/double-materiality.md +253 -253
- package/src/bmad-plus/packs/pack-shield/references/csrd/esrs-standards.md +401 -401
- package/src/bmad-plus/packs/pack-shield/references/dora/article-reference.md +441 -441
- package/src/bmad-plus/packs/pack-shield/references/dora/incident-classification.md +297 -297
- package/src/bmad-plus/packs/pack-shield/references/dora/rts-its-guide.md +306 -306
- package/src/bmad-plus/packs/pack-shield/references/dora/third-party-risk.md +349 -349
- package/src/bmad-plus/packs/pack-shield/references/dpdpa/gdpr-comparison.md +173 -173
- package/src/bmad-plus/packs/pack-shield/references/dpdpa/rights-and-obligations.md +426 -426
- package/src/bmad-plus/packs/pack-shield/references/dpdpa/rules-2025.md +599 -599
- package/src/bmad-plus/packs/pack-shield/references/dpdpa/sections-reference.md +319 -319
- package/src/bmad-plus/packs/pack-shield/references/ear/ccl-eccn-guide.md +250 -250
- package/src/bmad-plus/packs/pack-shield/references/ear/compliance-program.md +280 -280
- package/src/bmad-plus/packs/pack-shield/references/ear/license-exceptions.md +207 -207
- package/src/bmad-plus/packs/pack-shield/references/eu-ai-act/gpai-governance.md +267 -267
- package/src/bmad-plus/packs/pack-shield/references/eu-ai-act/obligations-high-risk.md +287 -287
- package/src/bmad-plus/packs/pack-shield/references/eu-ai-act/risk-classification.md +182 -182
- package/src/bmad-plus/packs/pack-shield/references/fedramp/appendices-guide.md +209 -209
- package/src/bmad-plus/packs/pack-shield/references/fedramp/control-families.md +281 -281
- package/src/bmad-plus/packs/pack-shield/references/fedramp/poam-guide.md +93 -93
- package/src/bmad-plus/packs/pack-shield/references/fedramp/readiness-checklist.md +134 -134
- package/src/bmad-plus/packs/pack-shield/references/fedramp/sap-sar-guide.md +86 -86
- package/src/bmad-plus/packs/pack-shield/references/fedramp/ssp-guide.md +129 -129
- package/src/bmad-plus/packs/pack-shield/references/gdpr-compliance/documents.md +192 -192
- package/src/bmad-plus/packs/pack-shield/references/gdpr-compliance/dpa-template.md +121 -121
- package/src/bmad-plus/packs/pack-shield/references/gdpr-compliance/privacy-notice.md +87 -87
- package/src/bmad-plus/packs/pack-shield/references/hipaa-compliance/breach-notification.md +293 -293
- package/src/bmad-plus/packs/pack-shield/references/hipaa-compliance/privacy-rule.md +276 -276
- package/src/bmad-plus/packs/pack-shield/references/hipaa-compliance/security-rule.md +299 -299
- package/src/bmad-plus/packs/pack-shield/references/hipaa-compliance/templates.md +568 -568
- package/src/bmad-plus/packs/pack-shield/references/ism/control-applicability.md +181 -181
- package/src/bmad-plus/packs/pack-shield/references/ism/guidelines-overview.md +183 -183
- package/src/bmad-plus/packs/pack-shield/references/iso27001/annex-a-2013.md +203 -203
- package/src/bmad-plus/packs/pack-shield/references/iso27001/annex-a-2022.md +132 -132
- package/src/bmad-plus/packs/pack-shield/references/iso27001/control-mapping.md +153 -153
- package/src/bmad-plus/packs/pack-shield/references/iso27701/annex-a-controls.md +195 -195
- package/src/bmad-plus/packs/pack-shield/references/iso27701/regulatory-mapping.md +229 -229
- package/src/bmad-plus/packs/pack-shield/references/iso27701/transition-guide.md +219 -219
- package/src/bmad-plus/packs/pack-shield/references/iso42001/iso42001-ai-risk-assessment.md +258 -258
- package/src/bmad-plus/packs/pack-shield/references/iso42001/iso42001-clauses-requirements.md +279 -279
- package/src/bmad-plus/packs/pack-shield/references/iso42001/iso42001-controls-annex-a.md +155 -155
- package/src/bmad-plus/packs/pack-shield/references/itar/compliance-program.md +174 -174
- package/src/bmad-plus/packs/pack-shield/references/itar/licensing-guide.md +146 -146
- package/src/bmad-plus/packs/pack-shield/references/itar/usml-categories.md +93 -93
- package/src/bmad-plus/packs/pack-shield/references/lgpd/anpd-enforcement.md +147 -147
- package/src/bmad-plus/packs/pack-shield/references/lgpd/compliance-program.md +272 -272
- package/src/bmad-plus/packs/pack-shield/references/lgpd/lgpd-articles.md +271 -271
- package/src/bmad-plus/packs/pack-shield/references/nis2/article-21-measures.md +153 -153
- package/src/bmad-plus/packs/pack-shield/references/nis2/iso27001-nis2-mapping.md +68 -68
- package/src/bmad-plus/packs/pack-shield/references/nist-800-53/assessment-rmf.md +349 -349
- package/src/bmad-plus/packs/pack-shield/references/nist-800-53/baselines-tailoring.md +277 -277
- package/src/bmad-plus/packs/pack-shield/references/nist-800-53/control-families.md +450 -450
- package/src/bmad-plus/packs/pack-shield/references/nist-ai-rmf/rmf-core.md +361 -361
- package/src/bmad-plus/packs/pack-shield/references/nist-ai-rmf/rmf-profiles.md +192 -192
- package/src/bmad-plus/packs/pack-shield/references/nist-csf/csf-10-to-20-mapping.md +143 -143
- package/src/bmad-plus/packs/pack-shield/references/nist-csf/csf-20-functions-categories.md +278 -278
- package/src/bmad-plus/packs/pack-shield/references/nist-csf/csf-implementation-tiers.md +135 -135
- package/src/bmad-plus/packs/pack-shield/references/pci-compliance/pci-dss-requirements.md +366 -366
- package/src/bmad-plus/packs/pack-shield/references/pci-compliance/pci-dss-saq-guide.md +217 -217
- package/src/bmad-plus/packs/pack-shield/references/pci-compliance/pci-dss-v4-changes.md +190 -190
- package/src/bmad-plus/packs/pack-shield/references/section-508/wcag-mapping.md +160 -160
- package/src/bmad-plus/packs/pack-shield/references/soc2/controls.md +241 -241
- package/src/bmad-plus/packs/pack-shield/references/soc2/evidence.md +236 -236
- package/src/bmad-plus/packs/pack-shield/references/soc2/policies.md +254 -254
- package/src/bmad-plus/packs/pack-shield/references/soc2/vendor.md +276 -276
- package/src/bmad-plus/packs/pack-shield/references/swift-csp/swift-assessment.md +202 -202
- package/src/bmad-plus/packs/pack-shield/references/swift-csp/swift-controls.md +545 -545
- package/src/bmad-plus/packs/pack-shield/references/tsa-compliance/tsa-crmp-requirements.md +359 -359
- package/src/bmad-plus/packs/pack-shield/references/tsa-compliance/tsa-directives-overview.md +187 -187
- package/src/bmad-plus/packs/pack-shield/references/tsa-compliance/tsa-incident-reporting.md +187 -187
- package/src/bmad-plus/packs/pack-shield/references/wcag/criteria-detail.md +510 -510
- package/src/bmad-plus/packs/pack-shield/shared/audit-report-template.md +103 -103
- package/src/bmad-plus/packs/pack-shield/shared/cross-framework-mapper.md +103 -103
- package/src/bmad-plus/packs/pack-shield/shared/gap-analysis-template.md +83 -83
- package/src/bmad-plus/packs/pack-shield/shield-orchestrator.md +229 -229
- package/src/bmad-plus/packs/pack-shield/upstream-sync.yaml +68 -68
- package/src/bmad-plus/skills/bmad-plus-autopilot/SKILL.md +99 -99
- package/src/bmad-plus/skills/bmad-plus-parallel/SKILL.md +93 -93
- package/src/bmad-plus/skills/bmad-plus-sync/SKILL.md +69 -69
- package/tools/cli/commands/autoconfig.js +498 -489
- package/tools/cli/commands/doctor.js +222 -175
- package/tools/cli/commands/install.js +739 -739
- package/tools/cli/commands/memory.js +194 -194
- package/tools/cli/commands/scan.js +360 -350
- package/tools/cli/commands/uninstall.js +96 -96
- package/tools/cli/commands/update.js +174 -174
- package/tools/cli/i18n.js +763 -763
|
@@ -1,153 +1,153 @@
|
|
|
1
|
-
# Hreflang — Audit Rules & Best Practices (March 2026)
|
|
2
|
-
|
|
3
|
-
> Author: Laurent Rochetta | BMAD+ SEO Engine v2.0
|
|
4
|
-
|
|
5
|
-
## What is Hreflang?
|
|
6
|
-
|
|
7
|
-
`hreflang` tells search engines which language/region version of a page to serve.
|
|
8
|
-
Errors cause wrong language indexing, duplicate content penalties, and lost organic traffic.
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Implementation Methods
|
|
13
|
-
|
|
14
|
-
| Method | Best For | Max Pages |
|
|
15
|
-
|--------|----------|-----------|
|
|
16
|
-
| `<link>` in `<head>` | Small sites (<50 pages) | ~50 |
|
|
17
|
-
| HTTP header `Link:` | Non-HTML files (PDFs) | ~50 |
|
|
18
|
-
| Sitemap `<xhtml:link>` | Large sites (50+) | Unlimited |
|
|
19
|
-
|
|
20
|
-
> **Recommendation**: Use sitemap for sites with 50+ pages. HTTP headers for non-HTML resources.
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## Validation Rules
|
|
25
|
-
|
|
26
|
-
### Rule 1: Valid Language Codes
|
|
27
|
-
- Use **ISO 639-1** (2-letter): `en`, `fr`, `de`, `es`, `ja`, `zh`
|
|
28
|
-
- Optional **ISO 3166-1 Alpha-2** for region: `en-US`, `en-GB`, `fr-FR`, `fr-CA`, `pt-BR`
|
|
29
|
-
- **Case insensitive** but convention is lowercase lang, uppercase country
|
|
30
|
-
|
|
31
|
-
| ✅ Valid | ❌ Invalid | Why |
|
|
32
|
-
|---------|-----------|-----|
|
|
33
|
-
| `en` | `english` | Must be ISO 639-1 |
|
|
34
|
-
| `fr-FR` | `fr-FRA` | Country must be 2-letter |
|
|
35
|
-
| `zh-Hans` | `cn` | `cn` is not a valid language code |
|
|
36
|
-
| `x-default` | `default` | Must use exact `x-default` |
|
|
37
|
-
|
|
38
|
-
### Rule 2: Self-Referencing (MANDATORY)
|
|
39
|
-
Every page MUST include a hreflang tag pointing to itself.
|
|
40
|
-
|
|
41
|
-
```html
|
|
42
|
-
<!-- On the English page (example.com/en/) -->
|
|
43
|
-
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
|
|
44
|
-
<link rel="alternate" hreflang="fr" href="https://example.com/fr/" />
|
|
45
|
-
<link rel="alternate" hreflang="x-default" href="https://example.com/en/" />
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
**Error if missing**: Google may ignore all hreflang tags on that page.
|
|
49
|
-
|
|
50
|
-
### Rule 3: Return Tags (MANDATORY)
|
|
51
|
-
If page A links to page B with hreflang, page B MUST link back to page A.
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
Page A (en) → hreflang="fr" → Page B (fr)
|
|
55
|
-
Page B (fr) → hreflang="en" → Page A (en) ← MANDATORY
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
**Error if missing**: Called "orphan hreflang" — Google ignores the one-way tag.
|
|
59
|
-
|
|
60
|
-
### Rule 4: x-default (STRONGLY RECOMMENDED)
|
|
61
|
-
Designate a fallback page for users whose language/region doesn't match any variant.
|
|
62
|
-
|
|
63
|
-
```html
|
|
64
|
-
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Common choices for x-default:
|
|
68
|
-
- Language selector/redirect page
|
|
69
|
-
- English version (most common)
|
|
70
|
-
- Homepage of the main domain
|
|
71
|
-
|
|
72
|
-
### Rule 5: Canonical + Hreflang Consistency
|
|
73
|
-
- Each hreflang URL **must be the canonical version** (not a redirect, not a URL with parameters)
|
|
74
|
-
- If a page has `rel="canonical"` pointing elsewhere, hreflang tags on that page are **ignored**
|
|
75
|
-
- Canonical and hreflang must agree: don't have hreflang point to a URL that canonicalizes to a different URL
|
|
76
|
-
|
|
77
|
-
### Rule 6: Absolute URLs Only
|
|
78
|
-
```html
|
|
79
|
-
<!-- ✅ Correct -->
|
|
80
|
-
<link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
|
|
81
|
-
|
|
82
|
-
<!-- ❌ Wrong -->
|
|
83
|
-
<link rel="alternate" hreflang="fr" href="/fr/page" />
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Rule 7: No Hreflang on Non-200 Pages
|
|
87
|
-
- Don't include hreflang tags on pages that return 3xx, 4xx, or 5xx
|
|
88
|
-
- Don't point hreflang to pages that redirect
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## Common Error Patterns
|
|
93
|
-
|
|
94
|
-
### Error 1: Missing Return Tags
|
|
95
|
-
**Symptom**: hreflang is configured on the main language but not on alternate versions.
|
|
96
|
-
**Fix**: Add reciprocal hreflang tags on ALL language variants.
|
|
97
|
-
|
|
98
|
-
### Error 2: Wrong Canonical + Hreflang
|
|
99
|
-
**Symptom**: Page A hreflang → Page B, but Page B canonical → Page C.
|
|
100
|
-
**Fix**: Align canonical and hreflang targets.
|
|
101
|
-
|
|
102
|
-
### Error 3: Missing Self-Reference
|
|
103
|
-
**Symptom**: Page lists other language versions but not itself.
|
|
104
|
-
**Fix**: Add `hreflang` tag with the current page's own language/URL.
|
|
105
|
-
|
|
106
|
-
### Error 4: Inconsistent URLs
|
|
107
|
-
**Symptom**: hreflang uses `http://` but site is on `https://`, or trailing slash mismatch.
|
|
108
|
-
**Fix**: Use exact canonical URL (protocol, www/non-www, trailing slash).
|
|
109
|
-
|
|
110
|
-
### Error 5: Language vs Region Confusion
|
|
111
|
-
**Symptom**: Using `hreflang="fr"` for France and `hreflang="fr"` for Canada.
|
|
112
|
-
**Fix**: Use `hreflang="fr-FR"` and `hreflang="fr-CA"` to differentiate.
|
|
113
|
-
|
|
114
|
-
### Error 6: Missing x-default
|
|
115
|
-
**Symptom**: Users in unsupported regions see random language version.
|
|
116
|
-
**Fix**: Add `x-default` pointing to language selector or English version.
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
## Sitemap Implementation (Recommended for 50+ pages)
|
|
121
|
-
|
|
122
|
-
```xml
|
|
123
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
124
|
-
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
|
125
|
-
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
|
126
|
-
<url>
|
|
127
|
-
<loc>https://example.com/en/page</loc>
|
|
128
|
-
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/page"/>
|
|
129
|
-
<xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page"/>
|
|
130
|
-
<xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/page"/>
|
|
131
|
-
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/en/page"/>
|
|
132
|
-
</url>
|
|
133
|
-
</urlset>
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## Audit Checklist
|
|
139
|
-
|
|
140
|
-
| # | Check | Priority |
|
|
141
|
-
|---|-------|----------|
|
|
142
|
-
| 1 | All hreflang language codes are valid ISO 639-1 | 🔴 Critical |
|
|
143
|
-
| 2 | All hreflang country codes are valid ISO 3166-1 | 🔴 Critical |
|
|
144
|
-
| 3 | Every page has self-referencing hreflang | 🔴 Critical |
|
|
145
|
-
| 4 | All hreflang tags have return tags | 🔴 Critical |
|
|
146
|
-
| 5 | All hreflang URLs are absolute | 🔴 Critical |
|
|
147
|
-
| 6 | x-default is specified | 🟠 High |
|
|
148
|
-
| 7 | Hreflang URLs match canonical URLs | 🟠 High |
|
|
149
|
-
| 8 | No hreflang on non-200 pages | 🟠 High |
|
|
150
|
-
| 9 | No hreflang pointing to redirecting URLs | 🟠 High |
|
|
151
|
-
| 10 | Consistent protocol (https) and www/non-www | 🟡 Medium |
|
|
152
|
-
| 11 | Language/region differentiation correct | 🟡 Medium |
|
|
153
|
-
| 12 | Sitemap implementation for 50+ pages | 🟡 Medium |
|
|
1
|
+
# Hreflang — Audit Rules & Best Practices (March 2026)
|
|
2
|
+
|
|
3
|
+
> Author: Laurent Rochetta | BMAD+ SEO Engine v2.0
|
|
4
|
+
|
|
5
|
+
## What is Hreflang?
|
|
6
|
+
|
|
7
|
+
`hreflang` tells search engines which language/region version of a page to serve.
|
|
8
|
+
Errors cause wrong language indexing, duplicate content penalties, and lost organic traffic.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Implementation Methods
|
|
13
|
+
|
|
14
|
+
| Method | Best For | Max Pages |
|
|
15
|
+
|--------|----------|-----------|
|
|
16
|
+
| `<link>` in `<head>` | Small sites (<50 pages) | ~50 |
|
|
17
|
+
| HTTP header `Link:` | Non-HTML files (PDFs) | ~50 |
|
|
18
|
+
| Sitemap `<xhtml:link>` | Large sites (50+) | Unlimited |
|
|
19
|
+
|
|
20
|
+
> **Recommendation**: Use sitemap for sites with 50+ pages. HTTP headers for non-HTML resources.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Validation Rules
|
|
25
|
+
|
|
26
|
+
### Rule 1: Valid Language Codes
|
|
27
|
+
- Use **ISO 639-1** (2-letter): `en`, `fr`, `de`, `es`, `ja`, `zh`
|
|
28
|
+
- Optional **ISO 3166-1 Alpha-2** for region: `en-US`, `en-GB`, `fr-FR`, `fr-CA`, `pt-BR`
|
|
29
|
+
- **Case insensitive** but convention is lowercase lang, uppercase country
|
|
30
|
+
|
|
31
|
+
| ✅ Valid | ❌ Invalid | Why |
|
|
32
|
+
|---------|-----------|-----|
|
|
33
|
+
| `en` | `english` | Must be ISO 639-1 |
|
|
34
|
+
| `fr-FR` | `fr-FRA` | Country must be 2-letter |
|
|
35
|
+
| `zh-Hans` | `cn` | `cn` is not a valid language code |
|
|
36
|
+
| `x-default` | `default` | Must use exact `x-default` |
|
|
37
|
+
|
|
38
|
+
### Rule 2: Self-Referencing (MANDATORY)
|
|
39
|
+
Every page MUST include a hreflang tag pointing to itself.
|
|
40
|
+
|
|
41
|
+
```html
|
|
42
|
+
<!-- On the English page (example.com/en/) -->
|
|
43
|
+
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
|
|
44
|
+
<link rel="alternate" hreflang="fr" href="https://example.com/fr/" />
|
|
45
|
+
<link rel="alternate" hreflang="x-default" href="https://example.com/en/" />
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Error if missing**: Google may ignore all hreflang tags on that page.
|
|
49
|
+
|
|
50
|
+
### Rule 3: Return Tags (MANDATORY)
|
|
51
|
+
If page A links to page B with hreflang, page B MUST link back to page A.
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
Page A (en) → hreflang="fr" → Page B (fr)
|
|
55
|
+
Page B (fr) → hreflang="en" → Page A (en) ← MANDATORY
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Error if missing**: Called "orphan hreflang" — Google ignores the one-way tag.
|
|
59
|
+
|
|
60
|
+
### Rule 4: x-default (STRONGLY RECOMMENDED)
|
|
61
|
+
Designate a fallback page for users whose language/region doesn't match any variant.
|
|
62
|
+
|
|
63
|
+
```html
|
|
64
|
+
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Common choices for x-default:
|
|
68
|
+
- Language selector/redirect page
|
|
69
|
+
- English version (most common)
|
|
70
|
+
- Homepage of the main domain
|
|
71
|
+
|
|
72
|
+
### Rule 5: Canonical + Hreflang Consistency
|
|
73
|
+
- Each hreflang URL **must be the canonical version** (not a redirect, not a URL with parameters)
|
|
74
|
+
- If a page has `rel="canonical"` pointing elsewhere, hreflang tags on that page are **ignored**
|
|
75
|
+
- Canonical and hreflang must agree: don't have hreflang point to a URL that canonicalizes to a different URL
|
|
76
|
+
|
|
77
|
+
### Rule 6: Absolute URLs Only
|
|
78
|
+
```html
|
|
79
|
+
<!-- ✅ Correct -->
|
|
80
|
+
<link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
|
|
81
|
+
|
|
82
|
+
<!-- ❌ Wrong -->
|
|
83
|
+
<link rel="alternate" hreflang="fr" href="/fr/page" />
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Rule 7: No Hreflang on Non-200 Pages
|
|
87
|
+
- Don't include hreflang tags on pages that return 3xx, 4xx, or 5xx
|
|
88
|
+
- Don't point hreflang to pages that redirect
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Common Error Patterns
|
|
93
|
+
|
|
94
|
+
### Error 1: Missing Return Tags
|
|
95
|
+
**Symptom**: hreflang is configured on the main language but not on alternate versions.
|
|
96
|
+
**Fix**: Add reciprocal hreflang tags on ALL language variants.
|
|
97
|
+
|
|
98
|
+
### Error 2: Wrong Canonical + Hreflang
|
|
99
|
+
**Symptom**: Page A hreflang → Page B, but Page B canonical → Page C.
|
|
100
|
+
**Fix**: Align canonical and hreflang targets.
|
|
101
|
+
|
|
102
|
+
### Error 3: Missing Self-Reference
|
|
103
|
+
**Symptom**: Page lists other language versions but not itself.
|
|
104
|
+
**Fix**: Add `hreflang` tag with the current page's own language/URL.
|
|
105
|
+
|
|
106
|
+
### Error 4: Inconsistent URLs
|
|
107
|
+
**Symptom**: hreflang uses `http://` but site is on `https://`, or trailing slash mismatch.
|
|
108
|
+
**Fix**: Use exact canonical URL (protocol, www/non-www, trailing slash).
|
|
109
|
+
|
|
110
|
+
### Error 5: Language vs Region Confusion
|
|
111
|
+
**Symptom**: Using `hreflang="fr"` for France and `hreflang="fr"` for Canada.
|
|
112
|
+
**Fix**: Use `hreflang="fr-FR"` and `hreflang="fr-CA"` to differentiate.
|
|
113
|
+
|
|
114
|
+
### Error 6: Missing x-default
|
|
115
|
+
**Symptom**: Users in unsupported regions see random language version.
|
|
116
|
+
**Fix**: Add `x-default` pointing to language selector or English version.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Sitemap Implementation (Recommended for 50+ pages)
|
|
121
|
+
|
|
122
|
+
```xml
|
|
123
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
124
|
+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
|
125
|
+
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
|
126
|
+
<url>
|
|
127
|
+
<loc>https://example.com/en/page</loc>
|
|
128
|
+
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/page"/>
|
|
129
|
+
<xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page"/>
|
|
130
|
+
<xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/page"/>
|
|
131
|
+
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/en/page"/>
|
|
132
|
+
</url>
|
|
133
|
+
</urlset>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Audit Checklist
|
|
139
|
+
|
|
140
|
+
| # | Check | Priority |
|
|
141
|
+
|---|-------|----------|
|
|
142
|
+
| 1 | All hreflang language codes are valid ISO 639-1 | 🔴 Critical |
|
|
143
|
+
| 2 | All hreflang country codes are valid ISO 3166-1 | 🔴 Critical |
|
|
144
|
+
| 3 | Every page has self-referencing hreflang | 🔴 Critical |
|
|
145
|
+
| 4 | All hreflang tags have return tags | 🔴 Critical |
|
|
146
|
+
| 5 | All hreflang URLs are absolute | 🔴 Critical |
|
|
147
|
+
| 6 | x-default is specified | 🟠 High |
|
|
148
|
+
| 7 | Hreflang URLs match canonical URLs | 🟠 High |
|
|
149
|
+
| 8 | No hreflang on non-200 pages | 🟠 High |
|
|
150
|
+
| 9 | No hreflang pointing to redirecting URLs | 🟠 High |
|
|
151
|
+
| 10 | Consistent protocol (https) and www/non-www | 🟡 Medium |
|
|
152
|
+
| 11 | Language/region differentiation correct | 🟡 Medium |
|
|
153
|
+
| 12 | Sitemap implementation for 50+ pages | 🟡 Medium |
|
|
@@ -1,133 +1,133 @@
|
|
|
1
|
-
# Quality Gates — Content Thresholds (March 2026)
|
|
2
|
-
|
|
3
|
-
> Author: Laurent Rochetta | BMAD+ SEO Engine v2.0
|
|
4
|
-
|
|
5
|
-
## Word Count Minimums by Page Type
|
|
6
|
-
|
|
7
|
-
| Page Type | Minimum | Notes |
|
|
8
|
-
|-----------|---------|-------|
|
|
9
|
-
| Homepage | 500 | Brand clarity + key offerings |
|
|
10
|
-
| Service page | 800 | Comprehensive service description |
|
|
11
|
-
| Blog / article | 1,500 | Deep topical coverage |
|
|
12
|
-
| Product page | 300+ (400+ complex) | Depends on product complexity |
|
|
13
|
-
| Category page | 200 | Plus product listings |
|
|
14
|
-
| Location page | 500–600 | Must be 60%+ unique per location |
|
|
15
|
-
| Comparison page | 1,200 | Feature matrix + analysis |
|
|
16
|
-
| Landing page | 400 | Conversion-focused |
|
|
17
|
-
| About page | 500 | Company story + credentials |
|
|
18
|
-
| FAQ page | 1,000 | Comprehensive Q&A coverage |
|
|
19
|
-
|
|
20
|
-
> **Word count is NOT a ranking factor.** These are topical coverage floors. A thorough 500-word page beats a padded 2,000-word one.
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## Location Page Quality Gates
|
|
25
|
-
|
|
26
|
-
| Threshold | Action |
|
|
27
|
-
|-----------|--------|
|
|
28
|
-
| 1–29 location pages | ✅ Normal — ensure 60%+ unique content per page |
|
|
29
|
-
| 30+ location pages | ⚠️ WARNING — enforce 60%+ unique content, audit for thin/duplicate |
|
|
30
|
-
| 50+ location pages | 🛑 HARD STOP — require user justification before proceeding |
|
|
31
|
-
|
|
32
|
-
### Unique Content Requirements per Location
|
|
33
|
-
- Unique local testimonials or case studies
|
|
34
|
-
- Location-specific service details
|
|
35
|
-
- Local area information and context
|
|
36
|
-
- Original photos (not stock)
|
|
37
|
-
- Unique meta title and description
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## Programmatic Page Quality Gates
|
|
42
|
-
|
|
43
|
-
| Threshold | Action |
|
|
44
|
-
|-----------|--------|
|
|
45
|
-
| 1–99 programmatic pages | ✅ Normal — verify template quality |
|
|
46
|
-
| 100+ pages | ⚠️ WARNING — audit for thin content and cannibalization |
|
|
47
|
-
| 500+ pages | 🛑 HARD STOP — full audit required before generating more |
|
|
48
|
-
|
|
49
|
-
### Programmatic Content Requirements
|
|
50
|
-
- Each page must provide unique value (not just data swap)
|
|
51
|
-
- Internal linking automation between related pages
|
|
52
|
-
- Canonical strategy to prevent index bloat
|
|
53
|
-
- Minimum 200 words of unique contextual content per page
|
|
54
|
-
- Quality varies by template — audit samples before scale
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
## Title Tag Guidelines
|
|
59
|
-
|
|
60
|
-
| Criterion | Requirement |
|
|
61
|
-
|-----------|-------------|
|
|
62
|
-
| Length | 50–60 characters (display limit ~600px) |
|
|
63
|
-
| Primary keyword | Include near the beginning |
|
|
64
|
-
| Brand name | Append with " | Brand" or " — Brand" |
|
|
65
|
-
| Uniqueness | Every page must have a unique title |
|
|
66
|
-
| Accuracy | Must reflect actual page content |
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Meta Description Guidelines
|
|
71
|
-
|
|
72
|
-
| Criterion | Requirement |
|
|
73
|
-
|-----------|-------------|
|
|
74
|
-
| Length | 150–160 characters |
|
|
75
|
-
| Call to action | Include when appropriate |
|
|
76
|
-
| Primary keyword | Include naturally |
|
|
77
|
-
| Uniqueness | Every page must have a unique description |
|
|
78
|
-
| Accuracy | Must match page content (Google may rewrite if not) |
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## Heading Hierarchy Rules
|
|
83
|
-
|
|
84
|
-
| Rule | Requirement |
|
|
85
|
-
|------|-------------|
|
|
86
|
-
| H1 count | Exactly 1 per page |
|
|
87
|
-
| H1 content | Should contain primary keyword, be descriptive |
|
|
88
|
-
| Hierarchy | H1 → H2 → H3 (no skipping levels) |
|
|
89
|
-
| Heading frequency | One heading every 200–300 words |
|
|
90
|
-
| Heading style | Descriptive, not generic ("Our Services" → "Professional SEO Audit Services") |
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## Image Optimization Standards
|
|
95
|
-
|
|
96
|
-
| Criterion | Standard | Priority |
|
|
97
|
-
|-----------|----------|----------|
|
|
98
|
-
| Alt text | Descriptive, meaningful, includes keywords naturally | High |
|
|
99
|
-
| Dimensions | Width and height attributes specified | High (CLS) |
|
|
100
|
-
| Format | WebP or AVIF preferred, JPEG/PNG acceptable | Medium |
|
|
101
|
-
| File size | <200KB for standard, <500KB for hero images | Medium |
|
|
102
|
-
| Lazy loading | `loading="lazy"` for below-fold images | Medium |
|
|
103
|
-
| Preload | `<link rel="preload">` for hero/LCP images | High |
|
|
104
|
-
| Srcset | Responsive sizes for different viewports | Medium |
|
|
105
|
-
|
|
106
|
-
---
|
|
107
|
-
|
|
108
|
-
## Internal Linking Standards
|
|
109
|
-
|
|
110
|
-
| Metric | Target |
|
|
111
|
-
|--------|--------|
|
|
112
|
-
| Links per 1,000 words | 3–5 relevant internal links |
|
|
113
|
-
| Anchor text | Descriptive (not "click here") |
|
|
114
|
-
| Orphan pages | 0 (every page linked from at least one other) |
|
|
115
|
-
| Click depth | Important pages within 3 clicks of homepage |
|
|
116
|
-
| Broken links | 0 internal 404s |
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
## Thin Content Detection
|
|
121
|
-
|
|
122
|
-
A page is flagged as "thin content" when:
|
|
123
|
-
1. Word count is below the minimum for its page type
|
|
124
|
-
2. Content is predominantly duplicate or near-duplicate of another page
|
|
125
|
-
3. Content is auto-generated without unique value-add
|
|
126
|
-
4. Page provides no actionable information
|
|
127
|
-
|
|
128
|
-
### Doorway Page Prevention
|
|
129
|
-
Never recommend creating pages that:
|
|
130
|
-
- Exist solely to funnel users to another page
|
|
131
|
-
- Have nearly identical content with only location/keyword swaps
|
|
132
|
-
- Provide no standalone value
|
|
133
|
-
- Target many similar keyword variations with minimal differences
|
|
1
|
+
# Quality Gates — Content Thresholds (March 2026)
|
|
2
|
+
|
|
3
|
+
> Author: Laurent Rochetta | BMAD+ SEO Engine v2.0
|
|
4
|
+
|
|
5
|
+
## Word Count Minimums by Page Type
|
|
6
|
+
|
|
7
|
+
| Page Type | Minimum | Notes |
|
|
8
|
+
|-----------|---------|-------|
|
|
9
|
+
| Homepage | 500 | Brand clarity + key offerings |
|
|
10
|
+
| Service page | 800 | Comprehensive service description |
|
|
11
|
+
| Blog / article | 1,500 | Deep topical coverage |
|
|
12
|
+
| Product page | 300+ (400+ complex) | Depends on product complexity |
|
|
13
|
+
| Category page | 200 | Plus product listings |
|
|
14
|
+
| Location page | 500–600 | Must be 60%+ unique per location |
|
|
15
|
+
| Comparison page | 1,200 | Feature matrix + analysis |
|
|
16
|
+
| Landing page | 400 | Conversion-focused |
|
|
17
|
+
| About page | 500 | Company story + credentials |
|
|
18
|
+
| FAQ page | 1,000 | Comprehensive Q&A coverage |
|
|
19
|
+
|
|
20
|
+
> **Word count is NOT a ranking factor.** These are topical coverage floors. A thorough 500-word page beats a padded 2,000-word one.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Location Page Quality Gates
|
|
25
|
+
|
|
26
|
+
| Threshold | Action |
|
|
27
|
+
|-----------|--------|
|
|
28
|
+
| 1–29 location pages | ✅ Normal — ensure 60%+ unique content per page |
|
|
29
|
+
| 30+ location pages | ⚠️ WARNING — enforce 60%+ unique content, audit for thin/duplicate |
|
|
30
|
+
| 50+ location pages | 🛑 HARD STOP — require user justification before proceeding |
|
|
31
|
+
|
|
32
|
+
### Unique Content Requirements per Location
|
|
33
|
+
- Unique local testimonials or case studies
|
|
34
|
+
- Location-specific service details
|
|
35
|
+
- Local area information and context
|
|
36
|
+
- Original photos (not stock)
|
|
37
|
+
- Unique meta title and description
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Programmatic Page Quality Gates
|
|
42
|
+
|
|
43
|
+
| Threshold | Action |
|
|
44
|
+
|-----------|--------|
|
|
45
|
+
| 1–99 programmatic pages | ✅ Normal — verify template quality |
|
|
46
|
+
| 100+ pages | ⚠️ WARNING — audit for thin content and cannibalization |
|
|
47
|
+
| 500+ pages | 🛑 HARD STOP — full audit required before generating more |
|
|
48
|
+
|
|
49
|
+
### Programmatic Content Requirements
|
|
50
|
+
- Each page must provide unique value (not just data swap)
|
|
51
|
+
- Internal linking automation between related pages
|
|
52
|
+
- Canonical strategy to prevent index bloat
|
|
53
|
+
- Minimum 200 words of unique contextual content per page
|
|
54
|
+
- Quality varies by template — audit samples before scale
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Title Tag Guidelines
|
|
59
|
+
|
|
60
|
+
| Criterion | Requirement |
|
|
61
|
+
|-----------|-------------|
|
|
62
|
+
| Length | 50–60 characters (display limit ~600px) |
|
|
63
|
+
| Primary keyword | Include near the beginning |
|
|
64
|
+
| Brand name | Append with " | Brand" or " — Brand" |
|
|
65
|
+
| Uniqueness | Every page must have a unique title |
|
|
66
|
+
| Accuracy | Must reflect actual page content |
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Meta Description Guidelines
|
|
71
|
+
|
|
72
|
+
| Criterion | Requirement |
|
|
73
|
+
|-----------|-------------|
|
|
74
|
+
| Length | 150–160 characters |
|
|
75
|
+
| Call to action | Include when appropriate |
|
|
76
|
+
| Primary keyword | Include naturally |
|
|
77
|
+
| Uniqueness | Every page must have a unique description |
|
|
78
|
+
| Accuracy | Must match page content (Google may rewrite if not) |
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Heading Hierarchy Rules
|
|
83
|
+
|
|
84
|
+
| Rule | Requirement |
|
|
85
|
+
|------|-------------|
|
|
86
|
+
| H1 count | Exactly 1 per page |
|
|
87
|
+
| H1 content | Should contain primary keyword, be descriptive |
|
|
88
|
+
| Hierarchy | H1 → H2 → H3 (no skipping levels) |
|
|
89
|
+
| Heading frequency | One heading every 200–300 words |
|
|
90
|
+
| Heading style | Descriptive, not generic ("Our Services" → "Professional SEO Audit Services") |
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Image Optimization Standards
|
|
95
|
+
|
|
96
|
+
| Criterion | Standard | Priority |
|
|
97
|
+
|-----------|----------|----------|
|
|
98
|
+
| Alt text | Descriptive, meaningful, includes keywords naturally | High |
|
|
99
|
+
| Dimensions | Width and height attributes specified | High (CLS) |
|
|
100
|
+
| Format | WebP or AVIF preferred, JPEG/PNG acceptable | Medium |
|
|
101
|
+
| File size | <200KB for standard, <500KB for hero images | Medium |
|
|
102
|
+
| Lazy loading | `loading="lazy"` for below-fold images | Medium |
|
|
103
|
+
| Preload | `<link rel="preload">` for hero/LCP images | High |
|
|
104
|
+
| Srcset | Responsive sizes for different viewports | Medium |
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Internal Linking Standards
|
|
109
|
+
|
|
110
|
+
| Metric | Target |
|
|
111
|
+
|--------|--------|
|
|
112
|
+
| Links per 1,000 words | 3–5 relevant internal links |
|
|
113
|
+
| Anchor text | Descriptive (not "click here") |
|
|
114
|
+
| Orphan pages | 0 (every page linked from at least one other) |
|
|
115
|
+
| Click depth | Important pages within 3 clicks of homepage |
|
|
116
|
+
| Broken links | 0 internal 404s |
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Thin Content Detection
|
|
121
|
+
|
|
122
|
+
A page is flagged as "thin content" when:
|
|
123
|
+
1. Word count is below the minimum for its page type
|
|
124
|
+
2. Content is predominantly duplicate or near-duplicate of another page
|
|
125
|
+
3. Content is auto-generated without unique value-add
|
|
126
|
+
4. Page provides no actionable information
|
|
127
|
+
|
|
128
|
+
### Doorway Page Prevention
|
|
129
|
+
Never recommend creating pages that:
|
|
130
|
+
- Exist solely to funnel users to another page
|
|
131
|
+
- Have nearly identical content with only location/keyword swaps
|
|
132
|
+
- Provide no standalone value
|
|
133
|
+
- Target many similar keyword variations with minimal differences
|