Repository navigation
feat!: v2 single-source rebuild — Phase 0 + Phase 1 - #3
Merged
Merged
Conversation
tools/build.py compiles roles/**/role.md (YAML frontmatter + prompt body) into dist/prompts/<slug>.md and a generated index.yaml, merged with catalog.yaml (module metadata, category order, workflows). Output is deterministic and satisfies the existing resolve.sh awk contract. tools/migrate.py is the one-shot v1->v2 migration, kept for provenance. schemas/role.schema.json documents the frontmatter contract. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…legacy variants - Every role is now authored in roles/<category>/<slug>/role.md (frontmatter + prompt body); prompt bodies are byte-identical to v1. - index.yaml is generated by tools/build.py; consumable prompts build to dist/prompts/<slug>.md and both artifacts are committed. - SemantiCode variants (17) archived: prompt caching and large context windows removed the economics that justified a compressed twin. - S.C.R.I.B.E. retired with the notation; F.O.R.G.E. retired as a persona (harnesses run its workflow natively) with its policy extracted to snippets/engineering-discipline.md. - validate-index.sh / test-roles.sh updated for the dist/ layout. BREAKING CHANGE: files.semanticode/files.variant removed from index.yaml; files.prompt now points to dist/prompts/<slug>.md and files.source to the role.md source. Roster is 23 roles (forge and scribe archived). v1.x tags preserve the old layout. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
GitHub Actions workflow rebuilds dist/ and index.yaml from the role.md sources, fails if the committed artifacts are stale, then runs scripts/validate-index.sh and scripts/test-roles.sh. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- README: roster tables link to dist/prompts/, S.P.R.A.Y. row added, F.O.R.G.E./S.C.R.I.B.E. removed (archive note kept), SemantiCode badge/row dropped, repo URLs fixed to jvanheerikhuize/Agent-Roles, single-source build section, updated structure tree and resolver examples. - AGENTS.md: discovery via generated index.yaml -> files.prompt in dist/, files.source for frontmatter; build workflow for in-repo agents; targets/interaction fields documented. - CONTRIBUTING.md: author role.md, run tools/build.py, commit the generated artifacts; semanticode sync guidance removed. - VERSIONING.md: version source is catalog.yaml, 2.0.0-alpha status, v1->v2 MAJOR rationale, pinning examples on the new paths. - REBUILD_PLAN.md: Phase 0 and Phase 1 marked done with deltas. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
jvanheerikhuize
marked this pull request as ready for review
July 25, 2026 05:36
This was referenced Jul 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Executes Phase 0 and Phase 1 of docs/REBUILD_PLAN.md (the plan merged in #2).
What changed
Build pipeline (Phase 0)
tools/build.pycompilesroles/**/role.md→dist/prompts/<slug>.md+ generatedindex.yaml(merged with the new hand-editedcatalog.yaml). Deterministic output; satisfies the existingresolve.shawk contract.schemas/role.schema.jsondocuments the frontmatter contract..github/workflows/validate.yml): rebuild, fail on stale committed artifacts, thenvalidate-index.sh+test-roles.sh.Single source of truth (Phase 1)
roles/<category>/<slug>/role.md(frontmatter + prompt body; bodies byte-identical to v1).tools/migrate.pykept for provenance.index.yamlis now generated. New per-role fields:targets([system-prompt]for now) andinteraction(conversational / single-shot / pipeline).files.prompt→dist/prompts/<slug>.md,files.source→ therole.md.archive/README.md): 17 SemantiCode variants, S.C.R.I.B.E. (retired with the notation), F.O.R.G.E. (persona superseded by harnesses; policy extracted tosnippets/engineering-discipline.md).Breaking (v2.0.0-alpha.1)
files.semanticode/files.variantremoved fromindex.yaml; roster is 23 roles.v1.xtag (Verified
python3 tools/build.pydeterministic; clean tree after rebuild.scripts/validate-index.sh --check-crisis— all checks passed.scripts/test-roles.sh— all 23 pass (4 pre-existing crisis-number WARNs).resolve.shsmoke:--list(23),--id,--path,--chain,--group,--companions,--workflows,--category,--tagall correct;--semanticodeerrors gracefully.Phases 2–4 (prompt modernization, harness-native targets, evals/MCP) are deferred to follow-up PRs.
🤖 Generated with Claude Code