---
name: skillify
disable-model-invocation: true
description: >-
  Capture a repeatable process from the current session into a reusable Amplifier SKILL.md
  skill file. Use when the user wants to create a skill, save a workflow as a skill, turn
  a process into a reusable skill, or mentions "skillify", "create skill", "make a skill",
  "save as skill", "capture workflow", "turn this into a skill", "new skill", or wants to
  automate a repeatable process they just performed.
user-invocable: true
allowed-tools:
  - read_file
  - write_file
  - glob
  - grep
  - bash
model_role: general
---

# Skillify

Create a well-structured, reusable Amplifier SKILL.md skill file that captures
a repeatable process from the current session so it can be invoked again later
via `/skill-name`. The skill must conform to the Agent Skills specification
with Amplifier extensions.

## Inputs

- `$ARGUMENTS`: (Optional) Description of the process to capture as a skill.

## Steps

### 1. Consult Skills-Assist

Before writing any skill content, load the authoritative skills reference:

```
load_skill("skills-assist")
```

Ask skills-assist about:
- Current frontmatter field reference and best practices
- Fork vs inline decision criteria
- Step annotation conventions
- Testing patterns for the type of skill being created

skills-assist is the source of truth for Amplifier skill conventions. The
examples in this skill are illustrative samples — consult skills-assist
for the complete and up-to-date specification.

**Success criteria**: You have loaded and consulted skills-assist for the
latest skill authoring conventions.

### 2. Analyze the Session

Before asking the user anything, analyze the conversation history to identify:
- What repeatable process was performed
- What the inputs and parameters were
- The distinct steps in order
- The success criteria and artifacts for each step (not just "writing code" but
  "an open PR with CI passing")
- Where the user corrected or steered you — these are important design signals
- What tools were used (read_file, write_file, bash, glob, grep, delegate, etc.)
- What agents were delegated to
- What the goals and measurable outcomes were

**Success criteria**: You have a clear mental model of the process, its steps,
inputs, outputs, and success criteria.

### 3. Interview the User

**Output density rule:** Group related decisions into natural clusters — not
one question per turn (tedious) and not everything at once (overwhelming).
Present your analysis first, let the user absorb it, then ask related
questions together. For example, present identity/routing decisions as one
cluster, execution model decisions as another.

Calibrate interview depth to the complexity of the process. A simple 2-step
workflow needs 1-2 rounds. A complex multi-step workflow with parallel tasks
and irreversible actions needs the full treatment.

#### Round 1: High-level confirmation
- Suggest a name and description for the skill based on your analysis.
  Ask the user to confirm or rename.
- Suggest high-level goals and specific success criteria.
- Present the high-level steps you identified as a numbered list.

#### Round 2: Details and arguments
- If the skill needs arguments, suggest them based on what you observed.
- Ask whether this skill should run inline (in the current conversation) or
  forked (`context: fork`) as an isolated subagent. Forked is better for
  self-contained tasks that don't need mid-process user input; inline is
  better when the user wants to steer mid-process.
- Ask where the skill should be saved:
  - **This project** (`.amplifier/skills/<name>/SKILL.md`) — project-specific
  - **Personal** (`~/.amplifier/skills/<name>/SKILL.md`) — follows you across projects
  - **The skills bundle** (`amplifier-bundle-skills/skills/<name>/SKILL.md`) — if
    contributing to the curated collection

#### Round 3: Per-step breakdown (complex processes only)
Skip this round for simple skills with obvious steps. For complex skills:
- What does each step produce that later steps need?
- What proves each step succeeded?
- Should the user confirm before irreversible actions?
- Are any steps independent and could run in parallel?
- How should each step be executed? (direct, delegate to an agent, user action)
- What are hard constraints or preferences?

Pay special attention to places where the user corrected you during the session.
These corrections are the most valuable design signals.

#### Round 4: Final confirmation
- Confirm when this skill should be invoked and review trigger phrases
  for the description field.
- Ask for gotchas or edge cases, if still unclear.

Stop interviewing once you have enough information. Don't over-ask for simple
processes.

**Success criteria**: You have all the information needed to write the SKILL.md
and the user has confirmed the design.

### 4. Write the SKILL.md

Create the skill directory and file at the location the user chose in Round 2.

Use this template as a starting point. Consult skills-assist for the full set of available frontmatter fields and current conventions:

    ---
    name: {{skill-name}}
    description: >
      {{What this skill does. Front-load the key use case. Include trigger
      phrases and "Use when..." guidance — this is what the model sees in the
      skills visibility list to decide whether to auto-invoke.
      Keep under 250 characters for the first sentence; can be longer overall.}}
    user-invocable: true
    allowed-tools:
      {{list of Amplifier tool names observed during the session, e.g.:}}
      {{- read_file}}
      {{- write_file}}
      {{- edit_file}}
      {{- bash}}
      {{- glob}}
      {{- grep}}
      {{- delegate}}
    model_role: {{general | coding | reasoning | critique | writing | fast}}
    {{Only include if forked:}}
    {{context: fork}}
    {{disable-model-invocation: true}}
    ---

    # {{Skill Title}}

    {{Brief statement of what the skill does and its goal. Define concrete
    success artifacts — not just "writing code" but "a passing test suite
    and a committed implementation."}}

    ## Inputs

    - `$ARGUMENTS`: {{Description of expected arguments, or "(Optional) ..."}}

    ## Steps

    ### 1. {{Step Name}}

    {{Specific, actionable instructions. Include commands when appropriate.}}

    **Success criteria**: {{REQUIRED on every step. What proves this step
    is done and we can move on.}}

#### Step annotations (key examples — consult skills-assist for complete conventions):

- **Success criteria** is REQUIRED on every step
- **Execution**: `Direct` (default — omit if direct), `Delegate to [agent]`
  (e.g., "Delegate to foundation:explorer"), or `[human]` (user does it)
- **Artifacts**: Data this step produces that later steps need (PR number,
  commit SHA, file path). Only include if later steps depend on it.
- **Human checkpoint**: Pause and ask before irreversible actions (merging,
  deploying, sending messages, destructive operations)
- **Rules**: Hard constraints. User corrections during the original session
  are especially useful here.

#### Structural conventions:

- Steps that can run concurrently use sub-numbers: 3a, 3b
- Steps requiring the user to act get `[human]` in the title
- Keep simple skills simple — a 2-step skill doesn't need annotations
  on every step

#### Frontmatter rules (key examples — consult skills-assist for complete reference):

- `description` must carry all routing weight — trigger phrases, "Use when..."
  guidance, and example user messages belong here since this is what the
  visibility hook shows to the model
- `allowed-tools` should be the minimum set needed
- `context: fork` only for self-contained skills that don't need user steering
- If forked, usually pair with `disable-model-invocation: true`
- `model_role` should match the skill's primary cognitive task
- `user-invocable: true` registers the skill as a `/name` slash command
- Names must be kebab-case, max 64 characters

**Success criteria**: The complete SKILL.md content has been drafted.

### 5. Test the Skill

Before committing, verify the skill works:

1. Save the skill to `.amplifier/skills/<name>/SKILL.md` (immediately
   discoverable, no config changes needed).

2. In the same session, call `load_skill("<name>")` and verify:
   - The skill loads without errors
   - The description is clear enough for routing
   - The body instructions are actionable

3. Optionally, spawn a test session via `delegate(agent="self",
   context_depth="none")` that loads the skill and follows its
   instructions against a synthesized test input.

4. If issues are found, fix and re-test.

**Success criteria**: The skill loads correctly and its instructions are
actionable.

### 6. Review and Save

Before writing the file, present the complete SKILL.md content in a yaml code
block so the user can review it with proper syntax highlighting.

Ask the user: "Does this look good to save?"

After confirmation:

1. Create the skill directory:
   ```
   mkdir -p <chosen-path>/<skill-name>
   ```

2. Write the SKILL.md file to `<chosen-path>/<skill-name>/SKILL.md`

3. If the skill references companion files (templates, examples, scripts),
   create those as well.

4. Tell the user:
   - Where the skill was saved
   - How to invoke it: `/skill-name [arguments]`
   - That they can edit the SKILL.md directly to refine it
   - If saved to a project or personal directory, the skill will be
     auto-discovered on next session start

**Success criteria**: The file is written to disk and the user knows how to
use it.
