About skill-based-architecture
A skill for reorganizing oversized Skill files and scattered project rules into a routed, maintainable Skill structure. It adapts the structure to repository evidence and task complexity, helping teams preserve focused instructions and surface relevant procedures.
Key features
- 01Evidence-based Skill structure
- 02Progressive single-file to multi-file growth
- 03Separate rules from workflows
- 04Route-based loading and activation
- 05Migration and maintenance guidance
Use cases
- 01Breaking up an oversized SKILL.md
- 02Consolidating rules across project files
- 03Adding repeatable task procedures and checks
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ wojisama/ skill-based-architecture --skill skill-based-architectureAfter installing, type/skill-based-architecturein Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
.maintenance-log.yamlCLAUDE.mdAGENTS.md.gitignoreREFERENCE.mdGEMINI.mdLICENSECODEX.mdEXAMPLES.mdREADME.zh-CN.mdTEMPLATES-GUIDE.mdREADME.mdUPSTREAM-CHANGES-archive.mdWORKFLOW.mdUPSTREAM-CHANGES.md.claude-plugin/plugin.jsonmarketplace.json.claude/settings.json.claude/hooks/session-start.cursor/rules/workflow.mdcdocs/linuxdo-project-introduction.mddocs/diagrams/README.mddocs/plans/2026-05-12-thin-shells-generator.md2026-07-09-dynamic-rigor-assembly.md2026-05-20-subagent-surface-hints.mddocs/plans/2026-06-24-skeleton-flesh-axis/prd.mdplan.mddocs/plans/2026-07-16-business-global-model-and-load-reason/prd.mddocs/plans/2026-07-27-rule-ownership-and-change-fanout/prd.mddocs/plans/2026-07-27-user-confirmed-plan-mainline/prd.mdDetails
From the project READMESkill-Based Architecture
Restructure oversized single-file Skills or scattered project rules into a well-organized Skill directory. Builds on the official minimal Agent Skill contract (name + description) and kicks in when a single small SKILL.md is no longer enough.
When to Use
- A single
SKILL.mdexceeds ~150 lines, mixing rules, workflows, and background material; or project rules are scattered acrossAGENTS.md,CLAUDE.md,CODEX.md,.cursor/rules/,.claude/, etc. - Recurring tasks need procedures, fitted verification, or reliable completion checks; or the user explicitly requests Skill-based architecture or rule consolidation.
- Skip temporary repos with no durable routing need, teams with a working compact instruction system, and small projects; an explicit SBA request may still materialize a complete direct
SKILL.mdcarrier.
Progressive Rigor
Grow only under pressure. The materializer derives Single-file, Folder-light, or Full/broad internally from target evidence; users do not select a tier, profile, capability pack, or install mode. routing.yaml, Task Execution, Task Closure, maintenance checks, and each harness surface need their own routing/loading/ownership pressure. Split by abstraction (骨架/肉) when content tangles invariant design theory with current-code facts: abstract theory → architecture/, code maps → references/, house style → conventions/, per-module landmines → gotchas/ (methodology stays in rules/). Downgrade when content shrinks. Details: references/progressive-rigor.md.
Evidence-Selected Structure
# direct
skills/<name>/SKILL.md
# folder-light or broad: only admitted owners/directories
skills/<name>/{SKILL.md,rules/,workflows/,references/,scripts/}
routing.yaml appears only when route data has an independent owner; root/tool entry and registration surfaces appear only for proven readers. Existing root entries are preserved. Emitted routed entries use a generated routing.yaml bootstrap; direct entries point to the sole SKILL.md procedure. Cursor registration exists only when Cursor is detected, declared, currently used, or explicitly requested. See REFERENCE.md for sources.
Core Principles
- Single concise entry —
SKILL.mdkeeps a dual budget: description ≤ 25 lines (trigger phrases + activation) + body ≤ 90 lines (navigation); it navigates, not exhausts. ✓ Check: smoke-test reports both separately; over either → split intent clusters / move detail to sub-files. - One skill folder when a folder is admitted — folder-light and broad results keep formal docs under
skills/<name>/; a direct result may remain a complete singleSKILL.mdcarrier. ✓ Check: no emitted root entry becomes a second rule/workflow owner. - Rules ≠ Flows —
rules/for constraints,workflows/for procedures. ✓ Check: any numbered steps inrules/, or "always/never" inworkflows/, = mixing. - Routing.yaml as source when admitted — a direct carrier owns its sole route in
SKILL.md; multiple/shared routes live only inrouting.yaml, with routed shells generated from it. ✓ Check: is there an independent selector or consumer that justifies the manifest, and does its fitted sync check pass? - Harness surfaces follow readers — create/merge only entries and registrations supported by existing files/config, the current harness, repository/team declaration, or an explicit request. ✓ Check: can every emitted surface name its reader, and was every existing entry preserved?
- Progressive Rigor — three carriers (Single-file / Folder-light / Full) grow only under pressure and are not user package choices. ✓ Check: can you name the independent responsibility that forced every generated file?
- Description = coarse activation — domain boundary + real user trigger phrases; never enumerate workflow keywords nor summarize a workflow's steps. ✓ Check: can
routing.yamltask routes change without rewriting the description, and does no description/label carry HOW an agent could act on without opening the body? - Gotchas are highest-value — maintain costly pitfalls actively; keep them discoverable. ✓ Check: is each high-cost gotcha activated by the admitted route owner (
SKILL.mdorrouting.yaml), not only buried inreferences/? - Progressive disclosure — every loaded file needs an independent task-time reason; conditional content leaves the startup read set; files every real caller co-loads should merge unless ownership/generation requires separate storage. ✓ Check: for each route read, can you name a request that needs it now and a next action it changes? No → conditionally route, merge, or remove.
- Task Execution + Closure — only one clear read-only or fixed-contract maintenance action with no new desired behavior executes directly; anything that adds or changes user-visible behavior, a business flow/state, or an external contract follows
requirement-ready -> Task Anchor -> implementation-ready -> Native Plan -> mutation; Present alignment proportionally and run a compact Anchor Checkpoint before each main step. Workflow is the domain procedure; Native Plan is only this Session's runtime step owner, with no planning-file persistence. Full protocol: references/protocols.md § Task Execution Protocol. - Durable-record rule — generic records generalize across projects; business global models stay project-specific but must survive implementation replacement. ✓ Check: use the destination's test—cross-project pattern or cross-implementation business truth—without mixing code details into either (ref).
- Self-maintenance — line counts signal evaluation, not automatic action; split only for independently selected tasks; merge files universally co-loaded/co-changed unless ownership or generation explains the boundary. ✓ Check: can the before/after load matrix prove less irrelevant reading without losing definitions, conditions, boundaries, or reasons?
- Activation over storage — content in
references/alone is not "captured"; it must be on the task path and change what the agent does when read; reached-but-inert (correct, on-route, yet the agent would have proceeded identically) is a distinct failure no structural gate can see, only judgment can. ✓ Check: trace the normal route — does hitting the entry change the next action (a file read, a check run, a step skipped)? - Token efficiency — Always Read defaults to empty; every addition needs proof that all real tasks require it before workflow selection; domain and lifecycle knowledge loads only when evidence or a phase boundary can change the next action. ✓ Check: can any startup read be delayed without changing the first workflow decision? If yes, move it to that workflow checkpoint.
- Rationalizations Table — captures verbatim excuses from real pressure-test failures only. ✓ Check: every row traces to a real failure — no failure observed and unwilling to baseline it → imagined-pain, drop it (ref, Phase 9).
- Response discipline — output short, precise, direct answers; avoid process narration, self-congratulation, gratuitous confirmations, and requirement restatement. ✓ Check: does each sentence serve the explicit request? No → delete it.
- Proof claims stay separated — fitted structural checks, source-disposition migration evidence, and live Agent behavior prove different things; green structure cannot be promoted into semantic or behavioral correctness. ✓ Check: does the final claim name the exact layer actually run, and report unavailable live evidence as no verdict?
Common Pitfalls
- Missing admitted harness surface — a project proves a Cursor/Claude/etc. reader but its fitted registration/entry is absent → that harness never discovers the formal owner; the opposite error (emitting every harness without evidence) imposes permanent maintenance cost.
- Wrong routing carrier — a routed shell says only "go read SKILL.md" without the generated routing.yaml bootstrap, or a direct project gains an empty manifest merely for uniformity → either recovery breaks or false machinery appears.
- Vague / wrong-scope description — passive, wrong-language, too narrow ("fix bug" only), or bloated with every workflow keyword → misses natural requests or over-fires; keep it domain-level and route tasks in
SKILL.md. - Stored but not activated — or activated but inert — a costly pitfall recorded in
references/but not surfaced in an owning workflow checkpoint, or on-route yet written as a background fact, never changes the agent's next action; reachable ≠ useful. - Completion responsibility lost during materialization — the agent considers itself done after main work although the admitted workflow/Closure owner requires fitted verification or AAR; a simple workflow may own that inline; pure Q&A/read-only tasks remain exempt.
- Project-specific records — lessons written as project narratives ("in our product module, we found…") are useless outside current context; apply the generalization rule before recording.
- No SessionStart hook on long sessions —
/clearor/compactsilently drops SKILL.md from context without the user noticing → install a SessionStart hook if your harness supports it (references/thin-shells.md § SessionStart Hook). - Route skipping in multi-task sessions — the agent reuses the last task's route for a new task and works from stale memory, missing critical rules → re-match the route every task (tiered Session Discipline; all shells carry the trigger).
- Missing or performative Task Anchor / long-task drift — the agent starts a non-Simple task without a stable Goal/Done When or dumps a labeled block duplicating the native Plan → use
templates/skill/workflows/task-execution.md; keep the Anchor as runtime state and runreboot-check.mdbefore final validation/commit. - Imagined-pain engineering — before adding any mechanism (rule/script/file/template section), give a concrete scenario (file+line / commit / session) proving it really happened; none → don't add it. Historic: 5 ghost scripts (cut 2026-05-19), dossier schema (cut 2026-05-19), reflection-first mode shift (dropped 2026-05-20), observations log (rejected 2026-05-20).
Content Classification
| Content type — tier by abstraction: 骨架 (architecture/workflows/rules = invariant theory) vs 肉 (conventions/gotchas/references = current-code facts) · split playbook | Target | Kind |
|---|---|---|
| Abstract design theory — layering/contract/orchestration/transaction principles, the "why" (NOT the module map) | architecture/ | 骨架 |
| Code maps + background — module tree, dir layout, source index, build/env notes | references/ | 肉 |
| House style — naming, paths, commands, formats, must/never conventions | conventions/ | 肉 |
| Code-coupled landmines (symptom → cause → fix), split only by independently routed module | gotchas/ (selecting gotchas/index.md only after multi-file pressure) | 肉 |
| Step-by-step task procedures (process theory) | workflows/ | 骨架 |
| Prompts/reports/docs · editor config (thin shells) | docs/ · .cursor/ .claude/ | — |
Multi-Skill & Composition
Multi-skill repos — see references/multi-skill-routing.md (operating + fission + coexistence). For invoking other skills from your workflows (embedded / serial / subagent delegation), see references/skill-composition.md + starter templates/skill/workflows/invoke-skill.md.example.
Resources
- WORKFLOW.md — Migration procedure (Quick Start + 9 phases + Downstream Upgrade)
- REFERENCE.md + references/ — Templates, decision guides, anti-patterns, troubleshooting, self-hosting routing source
- TEMPLATES-GUIDE.md — Starter templates + meta-workflow templates; EXAMPLES.md + examples/ — behavior failures + before/after scenarios