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 to Skill("...").
  • description — one paragraph packed with trigger phrases a real user would type. Claude reads this to route.
  • tiercore for shipped-with-DOS, community for 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:

  1. Title and one-line purpose.
  2. Preconditions.
  3. Inputs.
  4. Steps — numbered, concrete, executable.
  5. Outputs.
  6. 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.

  1. Name the workflow. One verb, maybe a noun. Scan, Guard, DeepReview. Title case, no spaces.
  2. Write src/Workflows/YourWorkflow.md. Follow the anatomy. Start from a sibling workflow as a template.
  3. Add a routing row in src/SKILL.md. List every phrase a user would say to trigger it.
  4. Propagate via the three-copy rule. Copy into ~/.claude/skills/{Pack}/ (live) and Releases/v0.0.3/.claude/skills/{Pack}/ (submodule). See Contributing to DOS.
  5. 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

Was this page helpful?