# SKILL-FORMAT · how every skill in this library is written

Every skill in this folder follows one fixed format. Same header, same
sections, same order. Your AI learns the shape once, then it can read any
skill here, including the ones you write yourself. That is the whole point:
the format is the contract, the library is just files that honor it.

A skill is a reusable job with a name. Not a chat you repeat, a file you
keep. You download it once, drop it into your second brain, and from then
on your AI runs the job the same way every time.

## The five rules

1. One file per skill. The file name is the skill name: `morning-brief.md`.
2. The header block has exactly five fields, in this order: Name, Trigger,
   Requires, Output, Safety. No extra fields, no missing fields.
3. Steps are numbered and written TO the AI. "Read my Focus file", not
   "the AI reads the Focus file". A skill is an instruction, not a description.
4. Safety says plainly whether the skill only READS or also ACTS. Any step
   that acts on something leaving your machine (send, post, delete, book)
   must contain the words "wait for OK". No exceptions.
5. Keep a skill under about 4,000 characters. If it wants more, it is two
   skills. Split it.

House voice rule, and a practical one: no em-dashes anywhere in a skill
file. Use a comma, a period, or "·". Skills get pasted into many models
and many channels; plain punctuation survives all of them.

## The three levels

Every skill declares the level it assumes, using the course levels:

- **Minimum** (you understand it): needs only your files. No connected tools.
- **Optimum** (it runs your week): needs at least one connected tool,
  calendar, email, a task manager.
- **Expert** (you build on it): needs APIs, your own code, or your own MCP.

Declare the lowest level that can actually run the skill.

## The format, annotated

    # Skill: {file-name}

    - **Name:** {Plain name, 2 to 4 words}
    - **Trigger:** {the exact words that invoke it, plus scheduled runs if any}
    - **Requires:** {tools, each marked read or act} · Level: {Minimum | Optimum | Expert}
    - **Output:** {what I get, one or two lines, concrete}
    - **Safety:** {READ ONLY, or READ + exactly which acts are gated behind OK}

    ## Steps
    1. {imperative, addressed to the AI}
    2. {one action per step, keep it under 10 steps}
    n. {any acting step says "wait for OK" in those words}

    ## Example run
    {a short exchange shaped like a real one: my trigger, the AI's output}

    ## Make it yours
    - {2 or 3 places to customize: a time, a list, a threshold}

## Writing your own

1. Notice a job you have explained to your AI more than twice.
2. Copy the skeleton above into `skills/your-skill-name.md` and fill it.
3. Add one line for it to `_INDEX.md`. A skill not listed there does not
   exist; the index is the only menu the AI reads every time.
4. Run it once. Whatever you correct in the output, fold back into the
   Steps. A skill that never gets edited is a skill you never use.

That is all. Five fields, three sections, one line in the index.
