- CHANGELOG.md gains the [2.12.0] entry (first tagged release since v2.9.0):
consolidates the previously documented but untagged v2.10.0-v2.11.2 work,
all post-2.11.2 merges, and the full 17-issue triage sweep; the ten stacked
[Unreleased] sections are demoted into the 2.12.0 body so the Release
workflow tags and publishes the whole span. Verified parseable with
scripts/extract_release_notes.py (version 2.12.0, 554-line body).
- Version markers bumped to 2.12.0: marketplace.json metadata,
CLAUDE.md current-version header + footer.
- Counters trued to the derived values (380 skills / 96 plugins / 20 domains /
706 tools / 823 refs / 114 agents / 138 commands) in README badges + prose,
CLAUDE.md, marketplace.json, and the long-stale mkdocs.yml/docs/index.md
site description (was still claiming 345/78/17).
- Docs site regenerated via scripts/generate-docs.py (568 generated pages;
new pages for the recently merged plugins); codex/gemini mirrors resynced;
mkdocs build verified locally with the same plugin set static.yml uses
(670 HTML pages, no errors).
- Fix: the three hivemind worker personas (assets/agents/{coder,scout,tester}.md,
merged via #979 while Actions was not triggering) lacked the frontmatter
`name:` field and hard-failed the blocking G10 gate — named
hive-coder/hive-scout/hive-tester; 645 files now scan with 0 errors.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qgc6RYXWJPr5oW9DHU7zR4
Round-2 sweep after re-auditing all 15 reported issues against the merged dev:
- #885 generalized: the original fix only renamed self-improving-agent's
status/review, but three more plugins shipped skills whose bare names
shadow Claude Code built-ins. Renamed with the same convention:
playwright-pro init/review -> pw-init/pw-review, agenthub init/status ->
hub-init/hub-status, autoresearch-agent status/resume -> ar-status/
ar-resume. All command references (/pw: /hub: /ar:), docs, audit records,
harness manifests, and mirror trees/indexes updated; the flat mirror
namespace no longer collides on 'status'. New scripts/check_skill_names.py
gate (wired into ci-quality-gate.yml as blocking) fails CI on any future
bare reserved name; rule added to SKILL-AUTHORING-STANDARD.md.
- #969 follow-through: five more scripts print box-drawing characters that
cannot exist in cp1252 (api_scorecard, api_linter,
breaking_change_detector, humanizer_scorer, content_scorer) — same
guarded UTF-8 reconfigure applied; all smoke-tested under a forced
legacy encoding.
Verified: check_skill_names (incl. negative test), check_plugin_json,
check_paths, derive_counters, check_dual_publish, smoke_scripts (634/634),
0 broken mirror symlinks.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qgc6RYXWJPr5oW9DHU7zR4
Review follow-up on PR #972: docs/plugins/index.md still described the old
"two approved extension fields in plugin.json" policy reversed by #954 —
rewritten to point at .claude-plugin/authoring-notes.json and the CI
hard-fail. 32 generated docs pages still linked the gitignored megaprompts/
tree via absolute GitHub URLs (404s); converted to the same annotated
plain-text form used in the source files.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qgc6RYXWJPr5oW9DHU7zR4
- #954: strip non-spec source/attribution keys from all 39 plugin.json
manifests so Claude Code's validator accepts them; metadata preserved in
new .claude-plugin/authoring-notes.json sidecars; check_plugin_json.py now
hard-fails manifests carrying those keys and sanity-checks the sidecar;
CLAUDE.md ClawHub schema section updated to the new rule.
- #949: move the c-level-agents plugin out of c-level-advisor/ to a
top-level directory so the two marketplace sources no longer overlap;
updated marketplace.json source, homepage, descriptions, all
cross-references, docs, harness manifest, mirror-tree symlinks/indexes,
and rebased the moved files' relative links; domain counters trued up
(18 -> 19 domains).
- #933: replace dead links to the gitignored maintainer-local megaprompts/
tree with annotated plain-text references (44 files: SKILL.md, READMEs,
agents, commands).
- #931: DynamoDB on-demand pricing updated to post-Nov-2024 rates
($0.625/M writes, $0.125/M strongly consistent reads).
- #969: skill_security_auditor.py and the three dossier scripts reconfigure
stdout/stderr to UTF-8 (errors=replace) so legacy Windows codepages no
longer crash at print time; PYTHONUTF8=1 documented.
- #968: Windows Notes section in INSTALLATION.md + README pointer for the
core.symlinks mirror-tree checkout caveat.
- #924/#885 residuals: hook commands quote "${CLAUDE_PLUGIN_ROOT}" paths in
all plugin hooks.json/settings.json (space-safe roots); removed the stale
pre-rename status/review mirror symlinks and index entries left over from
the memory-status/memory-review rename.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qgc6RYXWJPr5oW9DHU7zR4
Follow-up to the llms.txt footer links (PR #879). The automated review noted
the URL join assumed site_url ends in "/". Compute the base once with
trim('/') so the links stay correct whether or not site_url has a trailing
slash; trim only strips '/' from the ends, leaving "https://" intact.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sy9WFFurEjL8gjCp9fs7bp
Add machine-readable repository descriptions following the llmstxt.org
convention so AI agents and crawlers can discover a structured overview
of the entire skills library.
- docs/llms.txt: concise curated index (site sections + 18 domains)
- docs/llms-full.txt: comprehensive self-contained repo description
(scale, design principles, skill package pattern, per-domain detail,
plugin/git rules, and how an agent should use the library)
- Override partials/copyright.html to surface both files as footer links
on every page; add matching styles to stylesheets/extra.css
Both files build to the site root (verified: /llms.txt, /llms-full.txt)
and the footer links resolve to absolute site URLs.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sy9WFFurEjL8gjCp9fs7bp
mcp-server-builder, performance-profiler, ci-cd-pipeline-builder, and four
ra-qm-team skill sources changed after the last docs regeneration; refresh
their generated pages so the published site matches the SKILL.md sources.
https://claude.ai/code/session_015bYZ97nV4oRb3LbxCRFVcP
- Rewrite docs/stylesheets/extra.css with a warm clay/coral design system:
aurora hero with eyebrow badge and stats strip, gradient card hairlines,
pill tool badges, numbered steps component, reduced-motion support
- Rewrite homepage copy: plain-language 'What is an Agent Skill?' section,
3-step how-it-works, all 17 domain cards, guides section, accurate stats
(337 skills / 17 domains / 66 plugins)
- Add missing markdown-html domain to generate-docs.py (17th domain) and
regenerate catalog: +12 new pages (md-document/md-review/md-slides skills,
cs-markdown-html-orchestrator + cs-scraping-architect agents, 7 commands)
- Fix skill-internal link rewriting in the generator (./SIBLING.md and
ALL-CAPS companion files now resolve to GitHub URLs) — mkdocs --strict
now passes with zero warnings
- Refresh stale counters site-wide (177/192/204/311/338 → 337) in skills
index, plugins index, getting-started, integrations, custom-gpts, guides
- Rebuild plugins page from live marketplace.json: 13 domain bundles + 53
standalone plugins, accurate bundle table and full 66-plugin listing
- Add Guides section to nav (5 existing SEO guide pages, URLs unchanged),
point homepage tool badges at tool-specific guides and real anchors
- Tighten site_description and JSON-LD keywords for 'agent skills' /
'agent plugins' queries; update announce bar to the markdown-html launch
- No existing slugs or URLs changed — all edits are additive or in-place
https://claude.ai/code/session_015bYZ97nV4oRb3LbxCRFVcP
Adds cs-webinar-marketer agent + /cs:webinar command wiring the webinar-marketing skill (SKILL.md, stdlib funnel scorer, references, templates, evals) under marketing-skill/skills/. Includes a Windows cross-platform fix to scripts/generate-docs.py (normalizes os.sep to forward slashes — verified no-op on Linux) and regenerated docs. Verified: scorer runs (89/100 sample), frontmatter valid, clean merge into dev with no conflicts.
Phase 2 / Tier 1 of the post-#769 audit. Until now, the deterministic
analyzer (scripts/code_quality_checker.py) had language-specific smell
detectors only for C# and Java; C / C++ / Rust / Ruby / PHP / Dart all
fell through to generic checks. This PR brings C onto the same footing
as C# and Java -- the security delta is largest for memory-unsafe
languages, so C goes first per the audit ranking.
What's detected (CERT C + CWE catalogue patterns)
- Banned functions: gets, strcpy, strcat, sprintf, vsprintf
(CWE-242 / CWE-120 family -- no bounds check on any of them)
- Format-string vulnerability: printf(var) / syslog(var) where the
first arg is a bare identifier instead of a literal (CWE-134).
Suppressed when the first arg is a literal string.
- Unbounded scanf: %s without a width specifier (CWE-120).
Suppressed when a width is present (e.g. %31s).
- malloc/calloc/realloc result not NULL-checked within 5 lines
(CWE-690). Recognises if (p == NULL), if (NULL == p), if (!p),
if (p != NULL).
- free(p) without setting p = NULL on the next real line
(CWE-416 use-after-free guardrail). Low severity since some
style guides skip the zeroing convention.
- system() with a non-literal argument (CWE-78 command injection).
Suppressed when the argument is a string literal or NULL.
Implementation
- New function check_c_specific_smells() in code_quality_checker.py,
placed after check_java_specific_smells(). Reuses the existing
_strip_csharp_comments helper -- C, C#, and Java share // and /* */
comment syntax.
- Wired into analyze_file() via the existing dispatcher pattern:
`if language == "c": smells.extend(check_c_specific_smells(content))`.
Fixtures (regression-detection harness)
- assets/sample_c_smells.c -- 67 lines, every detector pattern
labelled inline with its CWE. Smells fixture produces 10 C-specific
detector hits (strcpy fires twice intentionally, once in each
function). Score: 4/100 (F).
- assets/sample_c_clean.c -- same surface area refactored per
rules/universal.md + languages/c.md. Zero C-specific hits.
Score: 100/100 (A).
- expected_outputs/sample_c_smells_quality.json and
expected_outputs/sample_c_clean_quality.json -- committed JSON
output mirrors the existing C# / Java regression-guard pattern.
Documentation
- engineering-team/skills/code-reviewer/README.md
- "Language-specific smell packs" line extended to enumerate the
6 C-pack patterns alongside the existing C# and Java packs.
- Bundled-fixtures table adds the 2 new C fixture rows.
- engineering-team/skills/code-reviewer/SKILL.md
- "Adding a New Language" step 5 reference: C# and Java -> C#,
Java, and C.
- "Regression Fixtures" paragraph reference: C# and Java -> C#,
Java, and C.
- docs/skills/engineering-team/code-reviewer.md mirrors the same
SKILL.md updates.
- CHANGELOG.md gets a new [Unreleased] section above the existing
code-reviewer entry, documenting the detector + fixtures.
Regression
- All 6 fixtures (C# / Java / C x smells / clean) pass byte-for-byte
against expected_outputs/*.json. No drift introduced in C# or Java
behaviour.
Not in this PR (Phase 2 audit, subsequent PRs)
- check_<name>_specific_smells for C++, Rust, Python, Kotlin, PHP,
Ruby, Dart, Go, Swift, TypeScript, JavaScript. C++ and Rust are
the next-highest-leverage targets (smart-pointer ownership,
unsafe block discipline). Same fixture + expected_outputs pattern
will apply to each.
https://claude.ai/code/session_01SnXMhpyuAwrws26Wy4fizz
Follow-up to PR #769 (6 new language files) and PR #772 (analyzer
wiring). Both PRs updated SKILL.md but left every derivative doc
surface stale. This PR closes the doc-sync gap.
Changed
- engineering-team/skills/code-reviewer/README.md
- Line 3 (one-liner): 9 -> 15 named languages, matching SKILL.md
- Line 90 (per-language guide list): 7 -> 13 file slugs
- docs/skills/engineering-team/code-reviewer.md (MkDocs page)
- Frontmatter description: 9 -> 15 languages
- File-tree block: 6 new languages/*.md rows
- Dispatch table: 6 new extension -> file rows
- --language valid-values comment: 8 -> 14 choices
Cross-platform mirrors
- .gemini/skills-index.json: regenerated via sync-gemini-skills.py
(diff is the single code-reviewer description; gemini script
discovered no other drift)
- .vibe/skills/claude-skills/skills-index.json: regenerated via
sync-vibe-skills.py with --target .vibe/skills (1 unrelated new
entry: workflow-builder; full regen was the path of least friction
for vibe)
- .hermes/skills/claude-skills/skills-index.json: hand-patched only
the code-reviewer entry. Full sync-hermes regeneration would have
bundled 33 new-skill entries (305 -> 338) accumulated from prior
PRs that never re-ran the script. That mirror-drift cleanup is a
separate concern -- left for its own PR.
- .codex/skills-index.json: was already current (the recurring
automated "chore: sync codex skills symlinks [automated]" commit
keeps it fresh between PRs).
CHANGELOG.md
- New [Unreleased] section above the existing Mistral Vibe block
documenting PR #769 (language coverage 7 -> 13), PR #772
(deterministic analyzer wiring), and this PR (doc sync).
Why hand-patched hermes (instead of script regen): the script
regenerates the entire index from current repo state, which surfaces
accumulated drift unrelated to code-reviewer (workflow-builder,
claude-coach, andreessen, handoff, business-operations, commercial,
compliance-os, research-ops -- 33 entries total). Bundling that with
a code-reviewer doc-sync PR would have muddied scope. Hand-patching
keeps this PR focused; a follow-up PR can sync-hermes properly.
https://claude.ai/code/session_01SnXMhpyuAwrws26Wy4fizz
Generate GitHub Pages for the workflow-builder skill, its cs-workflow-architect
agent, and the /cs:workflow-build command (via generate-docs.py), and wire all
three into mkdocs.yml nav (Engineering - POWERFUL, Agents, Commands sections).
Updated section index pages. Build verified clean (551 pages).
Aggregate skill counts unchanged — workflow-builder was already included in
dev's 338-skill / engineering-advanced-78 header.
https://claude.ai/code/session_01Q1kXbgMRodzhdTpgbCqVgx
Ran the /update-docs post-creation pipeline across the whole repo.
Docs site (MkDocs):
- generate-docs.py now covers 16 domains (added research-ops at order 15
and compliance-os at order 16 + its embedded-agent mapping). Regenerated
500 pages (328 skills + 89 agents + 83 commands); build passes.
- mkdocs.yml: site_description refreshed to 338/16/51+/87+ + v2.9.0; added
the Research Operations and Compliance OS skills nav sections, the
cs-research-ops-orchestrator + 8 compliance-os agents, and the 6
research-ops command entries.
- docs/index.md: title, description, hero, the five "What's Inside" cards
(338 skills, 51+ agents, 533 tools, 62 plugins, 87+ commands), corrected
six domain-card counts, and added a Research Operations domain card.
- docs/getting-started.md: description, Vibe count, FAQ, bundles table
(six corrected counts) + a research-ops bundle row.
Cross-platform sync (all four scripts gained a compliance-os entry):
- Codex: compliance-os 9 skills symlinked + index; unrelated run/status/
review symlink churn reverted to keep the diff focused.
- Gemini: 9 compliance-os SKILL.md mirrors + index.
- Vibe (repo target): 9 compliance-os symlinks + index.
- Hermes/Vibe domain lists updated for future syncs.
compliance-os was a tracked 9-skill domain previously absent from the docs
site and the codex/gemini/vibe indices; it is now fully wired in.
The MkDocs `site/` build output is gitignored and excluded.
https://claude.ai/code/session_01PUNmQVE4WYvcrzpq2anC3D
v2.8.1 was already taken by the engineering role-skill upgrade
(senior-fullstack / senior-frontend / senior-backend with karpathy-coder
+ Matt Pocock decision engines), released 2026-05-20 — before the
handoff PRs even merged. The auto-release workflow created the v2.8.1
tag from that work via CHANGELOG.md parsing.
The productivity/handoff skill is the next minor on top of v2.8.1:
v2.8.2.
Changes:
- CHANGELOG.md: prepend a new [2.8.2] entry documenting the handoff
skill (PRs #724, #728, #729). The auto-release workflow
(.github/workflows/release.yml) will pick up this entry and create
the v2.8.2 git tag + GitHub Release on the next push to main.
- productivity/handoff/.claude-plugin/plugin.json: 2.8.1 -> 2.8.2
- .claude-plugin/marketplace.json (handoff entry): 2.8.1 -> 2.8.2
- CLAUDE.md: 4 spots bumped to v2.8.2; v2.8.1 references kept where
they correctly point to the engineering role-skill release
- README.md: Productivity table row ✨v2.8.1 -> ✨v2.8.2
- docs/index.md: description, hero subtitle, "329 Skills" card text
- docs/getting-started.md: description meta + FAQ count text
- mkdocs.yml: site_description
The narrative across all top-level docs now reads correctly:
v2.8.0 (bizops + commercial) -> v2.8.1 (engineering role-skills) ->
v2.8.2 (productivity/handoff).
Verified:
- 0 v2.7.5 references remain (earlier typo)
- All v2.8.1 references that remain point to engineering role-skills
- CHANGELOG topmost entry: [2.8.2] - 2026-05-23
- plugin.json + marketplace.json both at 2.8.2
- mkdocs build clean (will re-verify in CI)
https://claude.ai/code/session_01KLhHBAfEDXdQMeRe6G8sRa
The user flagged that nowhere in the documentation do we guide users
through installing and configuring Hermes Agent itself with our skills.
PR #678 covered the technical integration but missed this user-facing
step.
Additions to docs/integrations.md Hermes Agent section:
**Step 1 — Install Hermes Agent itself (NEW)**
- macOS/Linux: 5-step setup (clone → venv → deps → .env → first run)
- Windows: WSL2 guidance
- Docker: one-liner with $HOME/.hermes volume mount
- Provider note: works with Nous, OpenAI, Anthropic, or any
OpenAI-compatible endpoint (no Nous account required)
**Step 3 — First-run walkthrough (NEW)**
- Complete dry-run from cold install to first skill invocation
- Examples: /skills, /research <query>, /skill_view, /skills search
- Shows how our orchestrator routing surfaces in Hermes UX
**Configuration tips (NEW)**
- Sample ~/.hermes/config.yaml block with our skill paths
- auto_load recommendations (karpathy-coder always-on, grill-me sparingly)
- display: show_category for grouping by claude-skills/<domain>/
**Troubleshooting (NEW — 6 Q&A entries)**
1. /skills shows 0 results after sync (target path + permissions)
2. Symlinks point to wrong path (cross-machine portability — relative
symlinks per v2.7.2+)
3. Slash command collisions (Hermes built-ins vs claude-skills)
4. ModuleNotFoundError on Python tools (3.10+ requirement)
5. SKILL.md not found despite file existing (nested-plugin flatten via
sync script)
6. How to unsync (rm -rf ~/.hermes/skills/claude-skills/)
Also bumped verify count: 198+ → 303 (v2.7.2+) so the post-sync
sanity check now expects accurate numbers.
https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
The user flagged that we advertise Hermes Agent as a tier-1 supported
platform in the "Works with:" list, but the actual integration was
significantly thinner than Codex/Gemini/OpenClaw:
- No committed .hermes/ tree (other platforms ship pre-generated trees)
- sync-hermes-skills.py DOMAIN_DIRS missing the 3 v2.7.0 top-level
domains (productivity, marketing, research) — running it today would
silently skip all 13 v2.7.0 skills
- Discover function only handled the flat `<domain>/<skill>/` pattern,
missing the nested-plugin pattern `<domain>/<plugin>/skills/<skill>/`
used by all v2.7.0 skills + many older plugins
- Doc count stale at "198+ skills" / "246 skills"
- 35 Hermes mentions vs Codex 1010 / Gemini 622 / OpenClaw 572 —
under-documented relative to the marketing claim
This commit upgrades Hermes to first-class technical support while
labeling it BYO-sync in marketing (honest about the workflow:
pre-generated tree shipped, but user runs sync into ~/.hermes/ once).
**scripts/sync-hermes-skills.py changes:**
1. DOMAIN_DIRS extended with `productivity`, `marketing`, `research`
(the 3 v2.7.0 top-level domains)
2. `discover_skills()` rewritten to handle all 3 SKILL.md location
patterns (same logic as sync-codex-skills.py):
- Pattern 1: `<domain>/<skill>/SKILL.md` (flat legacy)
- Pattern 2: `<domain>/skills/<skill>/SKILL.md` (flat with skills/)
- Pattern 3: `<domain>/<plugin>/skills/<skill>/SKILL.md` (nested plugin)
Dedupes by SKILL.md path.
3. `sync_skill()` now creates RELATIVE symlinks (via os.path.relpath)
instead of absolute. Critical for committed .hermes/ tree to work
across machines. Falls back to absolute if cross-device.
**.hermes/skills/claude-skills/ tree committed:**
- 289 relative symlinks across 12 domains
- skills-index.json (303 skills documented with descriptions)
- All v2.7.0 skills present: productivity (4), marketing (1),
research (8)
**Documentation refresh:**
- docs/integrations.md:
- Header count: 246 → 311 skills
- Hermes section: NEW "Tier: BYO-sync" tip box explaining the
pre-generated tree + the one-line install step
- Install table: "198+ skills" → "303 skills (12 domains)"
- README.md:
- Hermes Agent entry in "Works with:" line now flagged with [^hermes]
footnote explicitly labeling it BYO-sync tier with link to the
sync script
Verification:
- Script smoke-test: `python3 sync-hermes-skills.py --target .hermes/skills --verbose`
→ 303 skills discovered, 289 new symlinks, 14 skipped (pre-existing)
- All v2.7.0 symlinks resolve correctly:
`.hermes/skills/claude-skills/research/research → ../../../../research/research/skills/research`
- 12 domains present in tree (was 9 before)
Per CLAUDE.md ClawHub rules: this PR does NOT update marketplace.json
(Hermes is not on ClawHub). The .hermes/ tree is repo-side
infrastructure only.
https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
The docs/plugins/index.md page was severely outdated, still showing
v2.1.x-era counts: 28 plugins, 9 domains, 177 skills, with a hardcoded
list of 10 standalone plugins. Missed entirely during PR #675's v2.7.0
docs sweep because it wasn't on the 7-step pipeline checklist.
Refreshed all numbers + content to current marketplace.json reality:
- 28 → 55 plugins
- 9 → 12 domains (added Productivity, Marketing top-level, Research)
- 177 → 311 skills
- v2.1.2 → v2.7.0 (Plugin Structure example + FAQ)
Plugin Architecture mermaid:
- Updated total to 55 plugins
- Added "v2.7.0 New Plugins" subgraph (12 standalone: 3 productivity,
1 marketing, 8 research incl. orchestrator)
- Renamed "Standalone (10)" → "Other Standalone (46 total)"
Content additions:
- New section: "v2.7.0 Standalone Plugins ✨" with 3 sub-tables
(Productivity / Marketing / Research) — all 12 new plugins with
install commands and one-line descriptions
- "Other Standalone Plugins" — now a programmatically-generated table
of 34 non-v2.7.0 standalones grouped by category (was hardcoded list
of 10 — many obsolete: content-creator, demand-gen, fullstack-engineer,
aws-architect, product-manager were never in marketplace.json)
- "All 55 Plugins at a Glance" — full table from marketplace.json data,
marks v2.7.0 entries with ✨
Domain Bundles section:
- Skill counts refreshed (engineering-skills 24→32, marketing-skills
43→44, ra-qm-skills 12→14, product-skills 12→13, pm-skills 6→9,
business-growth-skills 4→5, finance-skills 2→3)
- Engineering POWERFUL bundle now mentions 4 Matt Pocock skills
- C-Level Advisory bundle now mentions all 14 C-suite roles (was 9)
- RA/QM bundle now mentions EU AI Act + ISO 42001
FAQ additions:
- "What are the v2.7.0 plugins?" — explains the 12 new plugin scope
- "What is the research orchestrator?" — explains hybrid router pattern
+ distinct_from autoresearch-agent disambiguation
Plugin Structure section:
- Added documentation of the two approved extension fields per
CLAUDE.md ClawHub rule #5: `source` (Path-B provenance) and
`attribution` (MIT external derivatives)
Verification:
- MkDocs build PASSES (no plugins-related errors or warnings)
- 0 stale references remaining (28 plugins, 9 Domains, 177 Skills,
v2.1.2 all cleaned)
- 464 lines, 22 sections, all 55 plugins now represented
https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
generate-docs.py re-created these dual-publish duplicates that PR #644
removed. The v2.5.7 dedup logic in generate-docs.py covers the engineering/
domain but doesn't catch the ra-qm-team pattern. Tracked as separate
generator improvement (v2.6.x candidate).
https://claude.ai/code/session_01VFreMf7XLBqMgjsrG4wSYe
Ran the /update-docs pipeline post-v2.6.1 release. Most of the work was
verification (docs already in sync from prior PRs #644, #649). Two real
issues surfaced and fixed:
1. Codex sync bug (the headline fix)
- scripts/sync-codex-skills.py used iterdir() which is single-level only
- Missed the engineering/<plugin>/skills/<name>/SKILL.md pattern used by
4 Pocock plugins + many other standalone plugins restructured since
PR #593
- Added Pattern 3 discovery: when <domain>/<plugin>/ contains a skills/
subdir with <name>/SKILL.md, recurse one level
- Impact: Codex index 195 → 289 skills (+94 previously-hidden skills)
- Gemini sync was already correct (uses recursive rglob)
- OpenClaw was already correct (uses recursive find)
2. Stale skill counts in 2 user-facing docs
- README.md: 268 → 272 (3 occurrences: tagline + badge + skills overview)
- docs/getting-started.md: 246 → 272 (2 occurrences: meta description + FAQ)
- All other files (CLAUDE.md, docs/index.md, mkdocs.yml site_description,
marketplace.json) were already at 272 (refreshed in PRs #644 + #649)
Other regenerations (no source changes — auto-updated from latest content):
- docs/skills/engineering/*.md regenerated (picks up v2.6.1 description fixes)
- docs/agents/*.md regenerated (no agent changes)
- docs/commands/*.md regenerated (no command changes)
- .codex/skills-index.json + 94 new symlinks (mostly Pocock + plugin-pattern
skills that should have been there since PR #593)
Verification:
- All 5 user-facing docs (CLAUDE.md, README.md, docs/index.md,
docs/getting-started.md, mkdocs.yml) show "272 skills" consistently
- marketplace.json: v2.6.1, 43 plugins, 0 broken source paths
- mkdocs build: 371 pages (280 skills + 58 agents + 33 commands), clean
in 17.31s, no errors or new warnings
- audit_skills.py: runs cleanly against 298 real skills
No production code changes outside the Codex sync fix. This is a docs +
tooling sweep, not a feature release.
https://claude.ai/code/session_01VFreMf7XLBqMgjsrG4wSYe
Two small polish tasks ahead of any future Pages deploy.
1. Add /cs:* command nav entries (22 new entries)
The 21 c-level-agents-* sub-skill pages now exist (since #632) but weren't
surfaced in mkdocs.yml sidebar nav. Added a "Founder-Mode Commands" nested
section under C-Level Advisory with:
- c-level-agents index
- 10 forcing-question reviews (/cs:cfo-review through /cs:vpe-review)
- 5 strategic sprint pipeline commands (brief/boardroom/decide/execute/post-mortem)
- 4 meta+safety commands (founder-mode/onboard/cross-eval/freeze)
- /cs:office-hours
2. Clear 33 mkdocs INFO warnings
mkdocs build was emitting 33 INFO-level warnings during the docs deploy.
Pre-existing noise; not regressions. Three categories:
a) 27 unrecognized-link warnings: relative links like `[Skills](skills/)`
that mkdocs flags because the path doesn't end in .md. Fix: added
explicit `index.md` suffix in 3 manual doc files.
- docs/index.md: 15 links
- docs/skills/index.md: 11 links
- docs/custom-gpts.md: 1 link
b) 2 anchor warnings in scrum-master TOC: links pointed to
`#analysis-tools--usage` and `#key-metrics--targets` (double hyphen
from ampersand) but mkdocs Material's slugify produces single-hyphen
slugs. Fix: changed to `#analysis-tools-usage` and `#key-metrics-targets`.
c) 4 anchor warnings in senior-computer-vision + senior-data-engineer TOCs:
links pointed to non-existent sections.
- senior-computer-vision: `#common-commands` TOC entry — no such heading
anywhere; removed the entry.
- senior-data-engineer: 3 sub-bullets pointing to `#workflow-1-...`,
`#workflow-2-...`, `#workflow-3-...` — no such headings (only a
parent `## Workflows`); removed the sub-bullets.
Verification:
- mkdocs build now emits 0 INFO warnings
- karpathy diff_surgeon: 0 findings on staged diff
- All 22 new nav entries verified to point to existing HTML pages
- generate-docs.py re-run picked up the upstream SKILL.md fixes; docs/skills/
now matches sources
10 files changed, +54/-39. After the next dev->main release, the Pages
deploy will have:
- Cleaner build output (no INFO noise)
- Fully discoverable /cs:* command pages in the sidebar nav
https://claude.ai/code/session_012WtZMm5NJHqkYoRqA9fHMN
generate-docs.py had a longstanding bug: the rendering loop only iterated
top-level skills and only rendered their direct children. Sub-skills whose
parent is a plugin folder (not a top-level skill at <domain>/skills/<name>/)
were silently dropped.
Affected plugins (standalone-only, no bundled mirror at <domain>/skills/):
- executive-mentor (1 index + 5 sub-skills)
- agenthub (1 index + 7 sub-skills)
- autoresearch-agent (1 index + 5 sub-skills)
- playwright-pro (1 index + 9 sub-skills)
- self-improving-agent (1 index + 5 sub-skills)
- c-level-agents (1 index + 17 sub-skills — the new /cs:* commands)
- llm-wiki (1 index + sub-skills)
- behuman, code-tour, demo-video, helm-chart-builder, karpathy-coder,
llm-cost-optimizer, prompt-governance, statistical-analyst, terraform-patterns,
data-quality-auditor, docker-development (single-skill plugins)
Total: 79 sub-skills + 12 plugin-index skills = 91 pages were being dropped.
(Some plugins like behuman are single-skill so only their index is dropped.)
The bug: rendering loop at line 414 only handled `for skill in top_level`,
then for each top-level found `children = [s for s in sub_skills if
s["parent"] == skill["name"]]`. Plugins where the SKILL.md lives only at
<plugin>/skills/<plugin>/SKILL.md don't appear in top_level (their detection
puts them in sub_skills with parent=themselves), so their children were
orphaned.
The fix: after the existing top-level loop, render orphan sub-skills grouped
by their plugin parent. Index sub-skill (named same as parent) renders as
<parent>.md; other children render as <parent>-<child>.md. This matches the
URL convention already in use (e.g., executive-mentor-challenge.md), so
existing SEO equity is preserved.
Result: skill pages generated 193 → 272 (+79 recovered). Total docs pages
280 → 359. mkdocs build succeeds.
Verified:
- All 12 previously-dropped plugins render their index page
- All 79 previously-dropped sub-skills render their detail pages
- URL convention preserved (executive-mentor-challenge.md, agenthub-board.md,
playwright-pro-coverage.md, etc.)
- karpathy diff_surgeon: 0 findings
After dev → main release: GitHub Pages redeploys with the recovered 79 pages.
The docs site finally has 1:1 correspondence between SKILL.md files in the
repo and pages on the site.
https://claude.ai/code/session_012WtZMm5NJHqkYoRqA9fHMN
PR #628 added 13 new cs-* agent nav entries to mkdocs.yml (cs-cfo-advisor,
cs-cmo-advisor, cs-cro-advisor, cs-cpo-advisor, cs-coo-advisor, cs-chro-advisor,
cs-ciso-advisor, cs-chief-of-staff, cs-general-counsel-advisor, cs-cdo-advisor,
cs-caio-advisor, cs-cco-advisor, cs-vpe-advisor) — but the agent pages they
pointed to didn't exist because generate-docs.py only walked /agents/, not
plugin-internal <domain>/<plugin>/agents/ folders.
Without this fix, those 13 nav links would 404 in production.
Extended generate-docs.py:
Pass 1 (existing): walk /agents/<domain>/*.md (28 canonical agents)
Pass 2 (new): walk <domain>/<plugin>/agents/*.md for each known DOMAINS root
Pass 2 dedupes against pass 1 by slug. Uses a SKILL_TO_AGENT_DOMAIN mapping
(c-level-advisor -> c-level, marketing-skill -> marketing, etc.) since skill
DOMAINS keys differ from AGENT_DOMAINS keys.
Result: 29 → 54 agent pages (+25 plugin-internal agents recovered):
c-level-advisor/c-level-agents/agents/ → 13 new cs-* agents (this session)
c-level-advisor/executive-mentor/agents/ → devils-advocate
engineering/llm-wiki/agents/ → wiki-linter, wiki-ingestor, wiki-librarian
engineering/agenthub/agents/ → hub-coordinator
engineering/autoresearch-agent/agents/ → experiment-runner
engineering-team/self-improving-agent/agents/ → memory-analyst, skill-extractor,
migration-planner, test-architect,
test-debugger
Verified:
- mkdocs build succeeds (357 → 380+ HTML pages)
- All 13 cs-* nav entries from PR #628 now resolve to valid HTML pages
- karpathy diff_surgeon: 0 findings
- Existing /agents/ canonical pass unaffected (dedupe by slug)
After dev → main release: GitHub Pages deploy will surface the recovered
25 agent pages. The 13 cs-* nav entries from the v2.5.7 release will no
longer 404.
https://claude.ai/code/session_012WtZMm5NJHqkYoRqA9fHMN
PR #607 shipped '188 skills, 30 agents, 3 personas, 30 marketplace plugins'
based on a stale codex-sync output that I trusted without verifying. The
actual file-system counts are:
Skills: 246 (250 SKILL.md files; 4 deduped because chaos-engineering,
feature-flags-architect, kubernetes-operator and
slo-architect each ship as both an umbrella entry and
a standalone plugin)
Tools: 359 .py files under */scripts/* (unchanged, was correct)
Refs: 485 .md files under */references/* (unchanged, was correct)
Agents: 27 (20 canonical cs-*-prefixed + 7 personas; excludes
agents/CLAUDE.md, personas/README.md, personas/TEMPLATE.md)
Commands: 33 .md files under commands/ (unchanged, was correct)
Plugins: 33 in .claude-plugin/marketplace.json (was '30' in the
Status line and README badge area)
Every number now reproduces from a single deterministic command:
find . -name SKILL.md -not -path './.gemini/*' -not -path './.codex/*' \
-not -path './site/*' -not -path './docs/*' \
-not -path './.git/*' | wc -l # -> 250 raw
find agents -name 'cs-*.md' | wc -l # -> 20 cs-* agents
ls agents/personas/*.md | grep -v -E 'README|TEMPLATE' | wc -l # -> 7
python3 -c "import json; print(len(json.load(open('.claude-plugin/marketplace.json'))['plugins']))" # -> 33
Surgical edits only: changed the number, left every other word in place.
Files touched: CLAUDE.md (7 lines), README.md (5 lines), docs/index.md
(4 lines), docs/getting-started.md (2 lines), mkdocs.yml (1 line).
Auto-regenerated by scripts/generate-docs.py after the post-restructure
fix. Covers slo-architect, ship-gate, chaos-engineering, kubernetes-operator,
feature-flags-architect, llm-wiki, tc-tracker, and 185 other skills now
properly surfaced under their domain index pages.