Skip to content

[Bug] site/ marketing copy has stale framework counts (48 skills → 51, 28 hooks → 29) + add drift prevention #325

@atlas-apex

Description

@atlas-apex

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:

  1. Counts actual skills/hooks/roles via find (use the commands above)
  2. Greps site/*.html for the count patterns
  3. Updates them in place
  4. 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

  • All stale skill/hook/role/slash-command counts in site/*.html updated to current actual values
  • Verification grep returns ZERO outdated matches
  • Automated refresh mechanism in place (release-cut script OR CI step OR SessionStart advisory)
  • AgDR documents the drift-prevention pattern (which mechanism was chosen, why)
  • Smoke test (or release-cut step) verifies the counts match on every framework PR that adds a skill/hook

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/)

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium — plan-worthy, not urgentbugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions