Skip to content

feat(skill): bundled agent skills and growth programme corpus [roadmap:v0.10.5]#73

Merged
tcballard merged 22 commits into
mainfrom
claude/rac-growth-orchestration-obphpo
Jun 12, 2026
Merged

feat(skill): bundled agent skills and growth programme corpus [roadmap:v0.10.5]#73
tcballard merged 22 commits into
mainfrom
claude/rac-growth-orchestration-obphpo

Conversation

@tcballard

@tcballard tcballard commented Jun 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

Implements rac/roadmaps/v0.10.x-guide/v0.10.5-bundled-agent-skill.md, rac/roadmaps/v0.10.x-guide/v0.10.5-review-and-ingest-skills.md, and the growth programme umbrella rac/roadmaps/future/growth-programme.md.

Adds:

  • Three Claude Code skills bundled as package resources (rac-artifacts, rac-review, rac-ingest), installable into any project from the wheel alone
  • rac skill install [name] and rac skill list with pinned human and JSON output
  • The growth programme corpus: seven requirements, two designs, an umbrella roadmap, the README spec-driven-development comparison, docs/ecosystem.md, and the consolidated traceability gap report
  • 39 skill tests (1003 total after merging main), six golden files, CLI documentation, changelog entries for the v0.10.5 tag

Roadmap / ADR Trace

Roadmap:

  • rac/roadmaps/v0.10.x-guide/v0.10.5-bundled-agent-skill.md (originally numbered v0.10.4; renumbered when main assigned that release identity to Guide telemetry)
  • rac/roadmaps/v0.10.x-guide/v0.10.5-review-and-ingest-skills.md
  • rac/roadmaps/future/growth-programme.md

Relevant ADRs:

  • rac/decisions/adr-021-templates-product-contracts.md — skills ship exactly as canonical templates do: package resources via importlib.resources
  • rac/decisions/adr-003-structured-outputs-first.md, adr-007-json-contract-stability.md — new output contracts pinned by golden tests
  • rac/decisions/adr-036-lore-product-identity.md — governs the growth positioning; the README first screen is unchanged

Scope

Included

  • rac.skills subpackage carrying three SKILL.md resources, shipped via package-data; each kept byte-identical to its .claude/skills/ dogfood copy by test
  • rac skill install (no name): installs every bundled skill, all-or-nothing — every target path is checked before anything is written, refusal reports all existing paths and writes nothing
  • rac skill install rac-review (named): installs one; the documented recovery when some skills already exist
  • rac skill list: bundle enumeration, human and --json
  • Growth corpus: rac-growth-positioning, -adoption, -agent-skill, -contribution-policy, -essay-bridge, -extensibility, -ecosystem-list requirements; growth-demo-gif and growth-essay-mapping designs; README "How this relates to spec-driven development" section with every comparison cell cited to the named tool's own documentation
  • .agent-context/: programme brief/schema, per-agent gap records, GAPS_TRACEABILITY.md (eight consolidated schema gaps with corpus-cited instances), CHANGES_SUMMARY.md, cold-start timing log
  • A merge of main (v0.10.4 Guide telemetry, lore server rename); conflicts in cli.py, the output modules, docs/cli.md, and CHANGELOG.md were additive and resolved keeping both features

Excluded

  • Publishing or registry work; the release happens when the maintainer tags v0.10.5
  • The remaining v1.4 skills scope (workspace analysis); only review and ingest were pulled forward
  • Skill distribution to other agent platforms (Cursor, Copilot) — one deep integration, per the growth brief
  • The rac-growth-extensibility plugin mechanism — requirements only, no core code
  • GATE-1/GATE-2 items: the essay bridge and the contribution policy remain Blocked in their artifacts; CONTRIBUTING.md is untouched and docs/ecosystem.md contains no solicitation language
  • Kiro rows in the comparison table: its documentation returned HTTP 403 at verification time, so Kiro is named in prose only with the exclusion recorded at the table

Product / Architecture Decisions

  • Skills mirror templates, not a new mechanism: resource loading, the usage-error/operational-error split (SkillNotFound / SkillResourceMissing mirror TemplateNotFound / TemplateResourceMissing), and package-data shipping all reuse the ADR-021 pattern.
  • No-arg install is all-or-nothing rather than skip-existing: partial installs would blur the never-overwrite contract; the named install is the additive path.
  • The install JSON contract is a list ("skills": [...]) for both the no-arg and named forms — one shape instead of two. The earlier single-object shape was replaced before any tag existed, so this is a reviewed contract change, not a break.
  • The repository keeps its own .claude/skills/ copies (dogfooding — Claude Code discovers them in this repo) with byte-equality tests preventing drift against the packaged resources.
  • Growth positioning defers to ADR-036: the layer-above-SDD comparison lives below the README fold; the Lore lead is byte-identical to before.

User-Facing Contract

CLI

rac skill install                       # all bundled skills into ./
rac skill install rac-review            # one skill by name
rac skill install --dir ../app --json
rac skill list

Human Output

  • Install: one Installed ... skill: path line per installed skill, then the Claude Code discovery hint
  • Refusal: rac: ... already exists; rac skill install never overwrites on stderr, every conflicting path reported
  • List: name plus one-line description per bundled skill

JSON Output

{
  "schema_version": "1",
  "installed": true,
  "skills": [
    {"skill": "rac-artifacts", "path": ".claude/skills/rac-artifacts/SKILL.md"},
    {"skill": "rac-review", "path": ".claude/skills/rac-review/SKILL.md"},
    {"skill": "rac-ingest", "path": ".claude/skills/rac-ingest/SKILL.md"}
  ]
}

skill list --json returns {"schema_version": "1", "skills": [{"skill": ..., "description": ...}]}.

Exit Codes

  • 0: installed / listed
  • 1: a target skill file already exists (nothing written), or a packaged resource is missing (broken installation)
  • 2: --dir is not a directory, or an unknown skill name (available skills listed)

Verification

Ran

python -m pytest tests/            # 1003 passed (post-merge, telemetry + skills)
ruff check src/ tests/ && ruff format --check src/ tests/ && mypy src/
pip wheel . -w /tmp/wheel2 --no-deps   # wheel contains all three SKILL.md resources
rac validate rac/                      # 118 valid, 0 invalid
rac relationships rac/ --validate      # 310 checked, 0 issues
rac review rac/                        # no priority 1-2 findings

Covered

  • Per-skill byte-equality between packaged resource and dogfood copy (all three pairs)
  • No-arg install into a fresh directory writes three files; re-run exits 1 and writes nothing
  • All-or-nothing boundary: with exactly one pre-existing skill file, refusal writes none of the other two
  • Named install writes exactly one file; unknown name exits 2 and lists the bundle
  • Skill frontmatter name agrees with the registry entry for every bundled skill
  • skill list performs no writes; human and JSON shapes pinned by goldens
  • Competitor claims in the README comparison re-verified against the live spec-kit and OpenSpec documentation at integration review
  • Live discovery: Claude Code picked up all three skills from this repository's .claude/skills/ during development

Review Path

  1. rac/roadmaps/v0.10.x-guide/v0.10.5-bundled-agent-skill.md, v0.10.5-review-and-ingest-skills.md — the accepted contracts
  2. src/rac/core/skills.py, src/rac/services/skill.py — registry and install semantics
  3. src/rac/cli.py, src/rac/output/human.py, src/rac/output/json.py — surface wiring (also carries the additive merge with mcp-stats)
  4. .claude/skills/*/SKILL.md — the skill content agents will actually follow
  5. tests/test_skill.py, tests/golden/skill_* — contract evidence
  6. rac/requirements/rac-growth-*.md, README.md, docs/ecosystem.md, .agent-context/ — the growth corpus and programme records
  7. docs/cli.md, CHANGELOG.md

Notes For Reviewer

  • .agent-context/GAPS_TRACEABILITY.md is the substantive read in the growth half: eight schema gaps with real corpus instances, each with a minimal addition and the future work it motivates. The v0.10.4 version-identity collision this branch just hit is a live instance of its supersession gap.
  • The README diff is a pure 36-line insertion below "Who it's for"; the first screen is unchanged per ADR-036.
  • Known limitation: sync tests catch drift between the two copies of each skill but cannot catch skill prose drifting from CLI behaviour; that risk is recorded in the v0.10.5 roadmap.
  • Deferred follow-ups live as Proposed requirements (rac-growth-extensibility, adoption REQ-005) and the gate-blocked artifacts.

Implementation Process

Implemented with AI assistance under the roadmap contract.

Final scope, review, and acceptance decisions were made by the maintainer.

tcballard added 22 commits June 12, 2026 16:40
…map:growth-programme]

Implements the orchestration groundwork for the growth programme:
- rac/roadmaps/future/growth-programme.md — umbrella roadmap artifact
- .agent-context/SCHEMA.md — schema extract from the live codebase
- .agent-context/BRIEF.md — shared constraints and adapted positioning
  (ADR-036 Lore identity remains primary; layer-above-SDD framing is
  comparison-only, below the fold)
…h-programme]

Implements rac/roadmaps/future/growth-programme.md (positioning
initiative). Specifies the below-the-fold README comparison with
spec-driven development tools: layer-above thesis, named tools,
verified-only table rows, recorded sources, complementary framing.
Records traceability gaps met during authoring in
.agent-context/gaps/agent1.md.
…rowth-programme]

Satisfies rac/requirements/rac-growth-positioning.md REQ-001..005.
Adds one section below the fold comparing Lore/RAC with GitHub Spec
Kit and OpenSpec on verified dimensions; sources recorded adjacent to
the table. Kiro is named in prose only — its docs returned HTTP 403
at verification time. First screen unchanged.
… [roadmap:growth-programme]

Implements rac/roadmaps/future/growth-programme.md (adoption initiative).
Adds rac-growth-adoption (pipx/uv zero-config install, sub-five-minute
cold start with timing evidence in .agent-context/cold-start-timing.md,
demo GIF contract) and rac-growth-agent-skill (Claude Code skill
behaviour and write boundaries), plus the demo shot list design
artifact and recorded traceability gaps.
…ap:growth-programme]

Satisfies rac/requirements/rac-growth-agent-skill.md. Ships at the
project discovery path (.claude/skills/rac-artifacts/SKILL.md) and
covers create, read, validate, update, and linking via the published
rac CLI, constrained to the host project's RAC directory.
…[roadmap:growth-programme]

Implements rac/roadmaps/future/growth-programme.md (gap audit
initiative). Proposal-gated substantial changes modelled on OpenSpec's
verified contribution flow; draft CONTRIBUTING.md text embedded, marked
Blocked: GATE-2 (CLA). CONTRIBUTING.md itself untouched. Records the
seven-gap traceability audit in .agent-context/gaps/agent3.md.
…dmap:growth-programme]

Implements rac/roadmaps/future/growth-programme.md (essay bridge
initiative). rac-growth-essay-bridge governs how published articles map
to corpus capabilities without reading as marketing; the
growth-essay-mapping design records Article 1 claim-to-capability rows
and five dogfood article slots. All publication-dependent items marked
Blocked: GATE-1. No prose written in the maintainer's voice.
… [roadmap:growth-programme]

Implements rac/roadmaps/future/growth-programme.md (ecosystem
initiative). rac-growth-extensibility specifies entry-point discovery
of third-party artifact schemas/templates within recorded constraints
(ADR-012, ADR-015, ADR-021, ADR-024); its bundle convention draft is
marked Blocked: GATE-2. rac-growth-ecosystem-list governs
docs/ecosystem.md, seeded with exactly three verified entries.
…admap:growth-programme]

Implements rac/roadmaps/future/growth-programme.md (integration).
Links the umbrella roadmap to all seven growth requirements and both
designs; consolidates twenty agent gap records into eight schema gaps
and two authoring-friction findings (.agent-context/GAPS_TRACEABILITY.md);
records the per-agent change summary for single-sitting review
(.agent-context/CHANGES_SUMMARY.md).
…0.10.4]

Implements rac/roadmaps/v0.10.x-guide/v0.10.4-bundled-agent-skill.md.
Ships the rac-artifacts skill as a package resource mirroring the
template packaging (ADR-021), adds the rac skill install command
contract, and extends rac-growth-agent-skill with REQ-005..007
(packaged resource, install command, repo/package sync).
…admap:v0.10.4]

Implements rac/roadmaps/v0.10.x-guide/v0.10.4-bundled-agent-skill.md.

Adds:
- rac.skills package resource carrying the skill, mirroring the
  template packaging (ADR-021), loaded via importlib.resources
- rac skill install [--dir PATH] [--json]: writes the skill to the
  project's .claude/skills/ discovery path, creates parent
  directories, never overwrites; exit codes 0/1/2
- SkillResourceMissing as the operational-error twin of
  TemplateResourceMissing
- skill CI battery in the tests workflow
…admap:v0.10.4]

Registry and resource loading, the dogfood/packaged byte-equality
sync test (REQ-007), install into a fresh directory, never-overwrite
refusal leaving the file untouched, exit codes 0/1/2, and golden
files pinning human and JSON output.
…map:v0.10.5]

Implements rac/roadmaps/v0.10.x-guide/v0.10.5-review-and-ingest-skills.md.
Bundles rac-review and rac-ingest skills alongside rac-artifacts,
extends the install surface (no-arg installs all, all-or-nothing;
named install; rac skill list), unifies the install JSON contract on
a list shape, and adds REQ-008 to rac-growth-agent-skill.
…map:v0.10.5]

Implements rac/roadmaps/v0.10.x-guide/v0.10.5-review-and-ingest-skills.md.

Adds:
- rac-review skill: corpus review and triage, worst-first
- rac-ingest skill: legacy document conversion to linked artifacts
- rac skill install [name]: no name installs all bundled skills
  all-or-nothing; named install for one; unknown name is a usage
  error listing the bundle
- rac skill list: enumerate bundled skills
- unified list-shaped install JSON contract
…roadmap:v0.10.5]

Per-skill dogfood/packaged sync for all three pairs, all-or-nothing
refusal writing nothing with partial pre-existing targets, named
install, unknown-name usage error, skill list, and six golden files
pinning the new output shapes.
Main assigned the v0.10.4 release identity to Guide telemetry while
this branch was in flight; the bundled-skill roadmap moves to the
v0.10.5 identity it ships under, with references updated in the
review-and-ingest contract, rac-growth-agent-skill, and code
docstrings. Behaviour unchanged.
…p:v0.10.5]

The telemetry section merged from a branch cut before ADR-039; its
config example was the last rac-guide occurrence in the repository.
@tcballard
tcballard merged commit eae894a into main Jun 12, 2026
2 checks passed
@tcballard
tcballard deleted the claude/rac-growth-orchestration-obphpo branch June 15, 2026 18:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant