Given / When / Then
Given ApexYard's marketing site copy mentions specific framework counts ("48 skills", "28 hooks", "33 slash commands")
When a visitor reads any page (site/index.html, site/architecture.html, site/skills.html)
Then they see outdated numbers — the framework is currently at 51 skills, 29 hooks (52 skills once PR #311 / /generative-engine-audit lands).
Verified by SEO audit at origin/dev 9170ed2 — finding S13. Stale numbers in marketing copy are a credibility hit: visitors who count the actual skills in the table or read CLAUDE.md will see the mismatch immediately. This is also a recurring drift — every time we add a skill, the marketing copy drifts further out of sync.
Repro
Run this from the ops fork root:
grep -oE "[0-9]+ skills|[0-9]+ hooks|[0-9]+ roles|[0-9]+ slash" site/*.html | sort -u
Currently returns:
index.html:48 skills (should be 51)
index.html:28 hooks (should be 29)
architecture.html:48 slash (should be 51)
skills.html:48 skills (should be 51)
skills.html:48 slash (should be 51)
- Plus various rules/role counts to double-check
Then count actual:
find .claude/skills -name SKILL.md | wc -l # actual skill count
ls .claude/hooks/*.sh | grep -v "_lib\|/tests/" | wc -l # actual hook count
find roles -name "*.md" -not -name "README*" | wc -l # actual role count
Expected behaviour
All numbers in site/*.html reflect the actual current framework state. AND the release-cut process refreshes these numbers automatically so they don't drift again.
Suggested implementation
Immediate fix
- Update site/index.html: "48 skills, 28 hooks, 19 roles" → "51 skills, 29 hooks, 19 roles"
- Update site/architecture.html: same — "48 slash commands" → "51 slash commands"
- Update site/skills.html: same — "48 skills" / "48 slash commands" → "51"
- Audit any other stale framework-state mentions
Make it self-healing (the real fix)
Add a release-cut step (or a CI workflow) that:
- Counts actual skills/hooks/roles via
find (use the commands above)
- Greps site/*.html for the count patterns
- Updates them in place
- Fails the release if a count drift is detected and not auto-fixed
This makes the drift a release-cut concern, not an ad-hoc "fix when noticed" thing.
Could also be a SessionStart hook (advisory banner: "site/ copy claims 48 skills but actual is 51 — refresh before next release").
Acceptance Criteria
Out of scope
- Re-writing the marketing copy entirely (just the counts)
- Adding new content that mentions framework state (focus on existing drift)
Refs SEO-audit 2026-05-20T07-00-36Z finding S13 (persisted at projects/apexyard/audits/seo-audit/)
Given / When / Then
Given ApexYard's marketing site copy mentions specific framework counts ("48 skills", "28 hooks", "33 slash commands")
When a visitor reads any page (
site/index.html,site/architecture.html,site/skills.html)Then they see outdated numbers — the framework is currently at 51 skills, 29 hooks (52 skills once PR #311 /
/generative-engine-auditlands).Verified by SEO audit at origin/dev
9170ed2— finding S13. Stale numbers in marketing copy are a credibility hit: visitors who count the actual skills in the table or read CLAUDE.md will see the mismatch immediately. This is also a recurring drift — every time we add a skill, the marketing copy drifts further out of sync.Repro
Run this from the ops fork root:
Currently returns:
index.html:48 skills(should be 51)index.html:28 hooks(should be 29)architecture.html:48 slash(should be 51)skills.html:48 skills(should be 51)skills.html:48 slash(should be 51)Then count actual:
Expected behaviour
All numbers in
site/*.htmlreflect the actual current framework state. AND the release-cut process refreshes these numbers automatically so they don't drift again.Suggested implementation
Immediate fix
Make it self-healing (the real fix)
Add a release-cut step (or a CI workflow) that:
find(use the commands above)This makes the drift a release-cut concern, not an ad-hoc "fix when noticed" thing.
Could also be a SessionStart hook (advisory banner: "site/ copy claims 48 skills but actual is 51 — refresh before next release").
Acceptance Criteria
site/*.htmlupdated to current actual valuesOut of scope
Refs SEO-audit
2026-05-20T07-00-36Zfinding S13 (persisted atprojects/apexyard/audits/seo-audit/)