A die set on two polished guide pillars with a flared inlet channel dipping through a stepped cavity under a formed part, cut so the right end of the lower die is drawn as hatched bone-grey section, with a cyan line running from the inlet through the cavity and up through a fork fixture into a ring outlet.
Development

CreateSkill

Mandatory orchestrator for all LifeOS skill work: scaffold, edit, validate, canonicalize, test, and improve any skill; handrolling skill files is forbidden

07
Workflows
03
Tools
00
References
20
Triggers

The Problem

Skills built without a system drift into inconsistent shapes fast. Wrong directory depth, missing Gotchas sections, public skills leaking private content, descriptions that either never trigger or fire on everything. A generic AI will scaffold something plausible-looking that fails the first time LifeOS tries to route through it — wrong naming convention, flat structure violated, no test to know if it actually helps.

How This Skill Approaches It

CreateSkill owns the full skill lifecycle across two tracks. The structure track scaffolds new skills with the correct TitleCase-vs-_ALLCAPS naming (the public-release boundary), enforces the flat two-level directory limit, validates SKILL.md frontmatter, and runs the pre-flight grep to catch identity content in public skills before it ships. The effectiveness track is drawn from Anthropic's own skill-creator methodology: TestSkill spawns with-skill and baseline agents in parallel and compares outputs; ImproveSkill diagnoses root causes and rewrites instructions so the explanation drives behavior rather than rigid constraints; OptimizeDescription generates 20 trigger queries and rewrites the description for accuracy. Every skill gets a mandatory Gotchas section — Thariq Shihipar's principle that gotchas carry the highest information density of any skill content — and a BPE check asking whether a smarter model would make the skill unnecessary.

Not for TypeScript CLI generation (CreateCLI)

In Action

What you say to your DA, and what the CreateSkill skill actually does.

  • You say "create a new skill for managing my recipes"
    Runs the CreateSkill workflow, reads SkillSystem.md for structure requirements, scaffolds the correct directory with TitleCase naming, creates SKILL.md with frontmatter and a Gotchas stub, adds Workflows/, runs the public-release decision test, and suggests TestSkill to verify it actually helps.
  • You say "the research skill isn't triggering when I ask about competitive analysis"
    Runs OptimizeDescription, generates 20 should/shouldn't-trigger queries, tests description accuracy via subagents, rewrites the description with more specific trigger phrases and NOT-FOR clauses, re-tests and reports the improvement.
  • You say "test the blogging skill to see if it actually improves output"
    Runs TestSkill, generates 3 realistic test prompts, spawns with-skill and baseline agents in parallel, compares transcripts, and presents a side-by-side so you can decide whether to iterate with ImproveSkill.

Inside the Skill

The thinking, frameworks, and architecture that distinguish this skill from a generic version of the same task.

Ideal State

  • Every skill CreateSkill touches opens with a purpose paragraph, a skill-level ## Ideal State and an ## Intent Routing section that reaches every intent and reference file in one hop, and every file over 100 lines with two or more H2s, outside directories routed as Dir/, carries its contents line.
  • Every intent it writes or edits states done as testable Ideal State and Anti-criteria bullets and keeps only the four kinds of how, so a smarter model loses nothing by reading it.
  • Nothing load-bearing is lost on the way: IntentLint, IntentPreserve, SkillHygieneGate and the skill's own tests pass, and the report shows each result.

Intent Routing

Structure

Intent Trigger File
CreateSkill "create a new skill" Intents/CreateSkill.md
ValidateSkill "validate skill", "check skill" Intents/ValidateSkill.md
UpdateSkill "update skill", "add intent" Intents/UpdateSkill.md
CanonicalizeSkill "canonicalize", "fix skill structure" Intents/CanonicalizeSkill.md
Retire "retire skill", "absorb skill", "delete a skill", "this skill is dead" Intents/Retire.md

Effectiveness

Intent Trigger File
TestSkill "test skill", "does this skill work", "skill not working" Intents/TestSkill.md
ImproveSkill "improve skill", "skill quality", "fix skill instructions" Intents/ImproveSkill.md
OptimizeDescription "optimize description", "skill not triggering", "trigger accuracy" Intents/OptimizeDescription.md

References

File Read when
References/Conventions.md naming, public/private boundary, folder structure, SKILL.md shape, skill types, writing guidance, evals contract, versioning
References/IntentTemplate.md the templates Tools/Scaffold.ts fills, and the standard bullets for common intent shapes

Data & Config

User customizations live at <configRoot>/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/CreateSkill/ (configRoot is $CLAUDE_CONFIG_DIR when set, else ~/.claude). When that directory exists, its PREFERENCES.md, configurations and resources apply and override the defaults here, including install-specific commands and paths for versioning; when it is absent, the defaults stand.

Gotchas

  • No hook enforces "no handrolling" any more. SkillCreationGuard (retired 2026-10-24) used to block a Write that created a new skills/<Name>/SKILL.md without a CreateSkill call in the session transcript, and it never saw Edit, MultiEdit, Bash creation (cat >, heredoc, tee), or new intents and tools. Today /ic catches a hand-rolled skill after the fact, and the rest is on you.
  • Reading these intents and working from them without the Skill("CreateSkill") call is handrolling. skills/CLAUDE.md requires invoking the skill. The skill that mandates Gotchas sections went without one until 2026-06-13; the standard applies to this skill too.
  • A new SKILL.md reaches the AlgorithmNudge skill index without a writer bump. The hook's fallback (checkAndBumpSkillGenerationIfChanged in hooks/AlgorithmNudge.hook.ts) walks skills/*/SKILL.md mtimes on each run and bumps the generation itself, so nothing here calls bumpSkillGeneration() (read 2026-10-09; this replaces the old note asking for the call to be wired).
  • bun test <bare relative path> drops every child process's stdout and stderr (Bun 1.3.6). Always prefix: bun test ./skills/<Skill>.
  • Parallel rewrites inside one skill break its cross-file pointers. In a skill-quality pilot, parallel rewrite units in one skill broke each other's cross-file § pointers and left sibling templates inconsistent. Rewrite SKILL.md first, then the intents, then make one pass over the whole skill for cross-file consistency.

Examples

Example 1: Create a new skill from scratch

User: "Create a skill for managing my recipes"
→ CreateSkill intent
→ SkillCoverage record (ROUTE / ABSORB / NET-NEW), then Scaffold.ts writes SKILL.md and intents from the template
→ Intents filled with Ideal State and Anti-criteria; IntentLint --strict and SkillHygieneGate both exit 0
→ Announcement offers TestSkill against a no-skill baseline

Example 2: Fix an existing skill that's not routing properly

User: "The research skill isn't triggering - validate it"
→ ValidateSkill intent
→ IntentLint, SkillHygieneGate and the structural checks report exit codes; judgment covers only what they cannot decide
→ COMPLIANT / NON-COMPLIANT verdict with file:line evidence, OptimizeDescription suggested for the trigger

Example 3: Bring a legacy step-by-step skill to the standard

User: "Canonicalize my legacy Recipes skill"
→ CanonicalizeSkill intent
→ Each Step 1..N intent becomes Ideal State + Anti-criteria + keep-class sections, voice block removed
→ IntentLint zero errors, IntentPreserve zero missing tokens, skill tests pass as before

Workflows & Routing · 7

Each workflow is one job the skill runs. The trigger phrases route your request to the right one — this is the skill's routing table.

  1. 01
    CreateSkill Intents/CreateSkill.md

    create a new skill

  2. 02
    ValidateSkill Intents/ValidateSkill.md

    validate skill, check skill

  3. 03
    UpdateSkill Intents/UpdateSkill.md

    update skill, add intent

  4. 04
    CanonicalizeSkill Intents/CanonicalizeSkill.md

    canonicalize, fix skill structure

  5. 05
    Retire Intents/Retire.md

    retire skill, absorb skill, delete a skill, this skill is dead

  6. 06
    TestSkill Intents/TestSkill.md

    test skill, does this skill work, skill not working

  7. 07
    ImproveSkill Intents/ImproveSkill.md

    improve skill, skill quality, fix skill instructions

Tools · 3

Deterministic executables the workflows call — the code that does the real work, not prompt scaffolding.

  • ApplyIntentPlan.ts
  • Codemod.ts
  • Scaffold.ts

How to Invoke

Say any of these to your DA and LifeOS activates the CreateSkill skill automatically:

  • "create skill"
  • "new skill"
  • "make a skill"
  • "build a skill"
  • "set up a skill"
  • "private skill"
  • "make a X skill"
  • "add an intent"
  • "add a tool"
  • "edit/change/update/rename a skill"
  • "skill frontmatter"
  • "validate skill"
  • "check skill"
  • "canonicalize"

Or invoke explicitly:

Skill("CreateSkill")

References & Credits

The thinkers, books, frameworks, and research this skill is built on. The ideas belong to them — the integration belongs to LifeOS.

Want LifeOS to do this for you?

Install LifeOS on your machine — your DA gets the CreateSkill skill plus 96 others, all hooked into one Life OS.