Repository navigation
Split SKILL.md into a short router with on-demand flows, tidy prompts/ - #209
Merged
Merged
Conversation
The entrypoint test pinned ~35 phrases to SKILL.md, so any reshaping of the instructions broke it. It now checks the contract instead: the frontmatter name and invocations, that every bundled path the instructions mention exists, that every prompt is loaded by something, and that the documented research floors are metrics merge_research.py actually reports. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017tXoVWiktX2vSUJzrrdBLJ
The colleague prompts sat in the prompts/ root, so prompts/intake.md read like a generic intake when it is the colleague one. Colleague prompts now live in prompts/colleague/ and the three family-agnostic ones in prompts/shared/. references/ only held the two budget-unfriendly celebrity files, which move next to the prompts that read them. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017tXoVWiktX2vSUJzrrdBLJ
Hosts load SKILL.md in full on every trigger, so an owner's first run read 782 lines to use about 80. SKILL.md is now a 41-line router: the skill-root contract, which flow to read for each request, and the rules every flow shares. The flows live in prompts/flows/ (owner, create, sources, celebrity_research, evolve, manage) and each names the prompts it needs. While moving the text, the router and flows stop restating the prompts: the intake questions, the per-family persona builder list and the research taste rules now live only in the prompt that owns them. That also drops the wrong claim that the celebrity intake has four questions (it has five). Import options are in A-E order, and the list, rollback and delete commands are one template instead of three copies. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017tXoVWiktX2vSUJzrrdBLJ
prompts/celebrity/research.md and budget_unfriendly/research.md shared the taste principles, source hierarchy, blacklist, tooling and the six dimension briefs, with small drift between the copies. One prompt now holds the shared part once (taking the fuller wording of each section) and ends with a budget-friendly and a budget-unfriendly output contract, each keeping its own files, quality floor and checkpoint. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017tXoVWiktX2vSUJzrrdBLJ
- Point each celebrity research profile at its own output contract in the
merged research prompt, so the budget-friendly pass does not also follow
the six-file contract.
- Evolve reads prompts/{character}/merger.md directly instead of loading
the whole create flow for its matrix.
- Drop a duplicated sentence and a doubled persona-builder line in the
create flow, restore the Whisper backend list and the 'long copied
dialogue' copyright rule, and keep the Grok Bot caveat self-contained
(INSTALL_EN.md has no Grok Bot section).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017tXoVWiktX2vSUJzrrdBLJ
titanwings
force-pushed
the
skill/router-and-flows
branch
from
October 12, 2026 08:56
abaa22e to
1c59330
Compare
titanwings
changed the base branch from
cleanup/unused-files-and-installers
to
dot-skill
October 12, 2026 08:56
titanwings
marked this pull request as ready for review
October 12, 2026 08:56
This was referenced Oct 13, 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.
Requested by Tianyi · project thread
Summary
Before: hosts loaded all 782 lines of SKILL.md on every trigger, so an owner's first run read about 700 lines it never used. Colleague prompts sat in the
prompts/root (soprompts/intake.mdlooked generic), and the two celebrity research prompts were near-copies.After: SKILL.md is a 41-line router. On first run the owner path reads the router plus a 19-line
prompts/flows/owner.md. Every prompt has a folder named after who uses it, and there is one research prompt.Stacked on #206. It should be retargeted to
dot-skillonce #206 merges.Changes
tests/test_skill_entrypoint_docs.pyno longer pins ~35 phrases to SKILL.md. It now checks the contract: the frontmatter name and invocations, that every bundled path the instructions mention exists, that every prompt is loaded by something, that the router stays under 80 lines and reaches every flow, and that the documented research floors are metricsmerge_research.pyactually reports. The other tests in that file are unchanged.skill_writer.py, credentials). Flows live inprompts/flows/:owner,create,sources,celebrity_research,evolve,manage.{character}template.prompts/colleague/holds the colleague intake, analyzer, builder and merger.prompts/shared/holds the work analyzer, work builder and correction handler.references/is folded intoprompts/celebrity/budget_unfriendly/(framework.md,template.md) and dropped frompackage.json/bin/distilly.mjs.prompts/celebrity/research.mdholds the shared principles, hierarchy, blacklist, tooling and six dimension briefs once. Where the two copies differed it uses the fuller wording. It ends with a separate output contract per budget, and each keeps its own files, floor and checkpoint.Motivation
The project goal is a light first-run install for personal agents, and the user asked what in the repo was redundant or inelegant.
Testing
python -m unittest discover -s tests -p 'test_*.py'passed (114 tests)python -m compileall tools/passedinstall_distilly.py --host codexand--host openclawinto a temp HOME. Every flow and owner prompt the router names exists in the installed copy, and there is noreferences/.owner_sources.py discover, thenowner_profile.py save,link --dry-runandlinkfor Claude Code and OpenClaw (dry run), thenunlink.skill_writer.py. Itsmeta.jsonnow recordsprompts/colleague/*andprompts/shared/*.node bin/distilly.mjs --check-packageandnpm pack --dry-runincludeprompts/flows/.Checklist
Note: skills generated before this change keep the old prompt paths in their
meta.json. Nothing reads those paths back, so they still work.🤖 Generated with Claude Code
https://claude.ai/code/session_017tXoVWiktX2vSUJzrrdBLJ
Generated by Claude Code