Extend an existing Pack with a new workflow
New Skill work in DOS means adding a workflow to a Pack the team already ships. Same frontmatter, same routing table, contributor flow.
Adding a "Skill" in DOS almost always means adding one workflow to a Pack that already exists. Packs are platform-curated — the DOS team owns them, evolves them, and keeps them interoperable. Your job as a contributor is to land the workflow inside the right Pack.
Skills live inside Packs
A Skill is the public invocation surface of a Pack. When Claude calls Skill("Sentinel", "scan"), it's calling the Sentinel Pack with an argument that selects a workflow.
- Pack — the directory. Distribution unit curated by the DOS team.
- SKILL.md — the Pack's entry point and router. One per Pack.
- Workflow — one concrete task. Many per Pack.
Why not a whole new Pack?
Packs carry interop, routing, rating contracts, and upgrade compatibility. Spinning up a new Pack is a platform decision. If you've hit the three-asks rule and no existing Pack fits, file a Feature Request.
Required SKILL.md frontmatter
Every Pack's src/SKILL.md opens with this. The Skill tool reads it to decide when to invoke the Pack:
--- name: Sentinel description: Architecture guardian that analyzes codebases, discovers conventions, populates knowledge systems, and enforces patterns. The DOS initialization protocol — makes every feature immediately valuable when dropped into any repo. icon: Shield colorVar: --dos-sentinel tier: core category: code-quality keywords: [sentinel, scan, guard, conventions, architecture, code quality, review, patterns, onboard, initialize] ---
name— matches the directory and the first argument toSkill("...").description— one paragraph packed with trigger phrases a real user would type. Claude reads this to route.tier—corefor shipped-with-DOS,communityfor contributed.keywords— secondary matching signal.
status is NOT in Pack SKILL.md. That field only lives in docs frontmatter.
The workflow routing table
After the frontmatter and header, SKILL.md holds the router:
## Workflow Routing | Request Pattern | Route To | |---|---| | sentinel scan, analyze repo, discover conventions, initialize | `Workflows/Scan.md` | | sentinel guard, check conventions, convention check, check my code | `Workflows/Guard.md` | | sentinel review, review PR, review branch, architecture review | `Workflows/Review.md` | | sentinel evolve, update convention, new pattern | `Workflows/Evolve.md` | | sentinel status, convention health, show conventions | `Workflows/Status.md` |
Claude reads SKILL.md, matches the arg against the routing table, and loads only the matching workflow file. Every new workflow must get a row here, or Claude can't find it.
Anatomy of a workflow file
Workflows live under src/Workflows/. Read ~/Durante/Packs/Sentinel/src/Workflows/Scan.md as your reference. Six sections:
- Title and one-line purpose.
- Preconditions.
- Inputs.
- Steps — numbered, concrete, executable.
- Outputs.
- Failure modes.
Workflows can call tools, run bash, read files, invoke other Skills.
Step-by-step
Add a workflow to an existing Pack
From idea to merged PR.
- Name the workflow. One verb, maybe a noun.
Scan,Guard,DeepReview. Title case, no spaces. - Write
src/Workflows/YourWorkflow.md. Follow the anatomy. Start from a sibling workflow as a template. - Add a routing row in
src/SKILL.md. List every phrase a user would say to trigger it. - Propagate via the three-copy rule. Copy into
~/.claude/skills/{Pack}/(live) andReleases/v0.0.3/.claude/skills/{Pack}/(submodule). See Contributing to DOS. - Test. In a fresh session, ask for the outcome in your own words. Claude should route without you naming the Pack.
Troubleshoot
- Claude can't find the workflow. Routing row missing, or trigger phrases don't match real language. Add more phrases.
- Claude routes to the wrong workflow. Two rows overlap. Tighten both so they don't share trigger words.
- Workflow runs but feels disconnected. Steps are prose instead of concrete numbered instructions. Rewrite.
- Updates don't take effect. Three-copy rule — you edited one location. The live install is what runs.
Next
Contribute to DOS
Three-copy rule, submodule workflow, PR conventions.
File a Feature Request
When no existing Pack fits, the team wants to know.
Was this page helpful?