---
name: skill-creator
description: Create or update PicoBot skills. Use when the user wants a new skill, wants an existing skill revised, or needs a skill scaffold that follows PicoBot's workspace/skills mechanism.
---

# Skill Creator

Use this skill when building a new PicoBot skill or updating an existing one.

## About Skills

Skills are small, self-contained folders that give PicoBot procedural knowledge for a narrow task.
They are most useful when the same workflow, file format, or domain rule would otherwise be
re-explained over and over.

## PicoBot conventions

- Put `always: true` in the `SKILL.md` frontmatter when the skill should be injected on every turn.
- Prefer `{workspace}/skills/<skill-name>/` for skills created by the agent.
- `~/.picobot/skills/` is the built-in install location.
- `~/.agents/skills/` is the fallback shared location.
- Each skill must have a `SKILL.md` file.
- Add `agents/openai.yaml` when you want UI metadata or a default invocation prompt.
- Use `references/` for detailed docs and `assets/` for templates or bundled files.
- Keep `SKILL.md` concise; move long instructions into references.
- Use `always: true` only when the skill should be injected on every turn.

## Core Principles

### Keep It Concise

Only add information the model actually needs. Prefer short rules and concrete examples over
long explanations. If a rule can be implied from the task, leave it out.

### Set the Right Constraints

- Use high freedom when many approaches are valid.
- Use medium freedom when there is a preferred pattern but some variation is fine.
- Use low freedom when the workflow is fragile and should be followed closely.

### Protect Validation

When a skill changes, verify it against a realistic task path. Check that:

- the skill name is discoverable,
- the frontmatter is valid,
- any bundled references are actually reachable,
- and the instructions still lead to the intended output.

## Skill Anatomy

Every PicoBot skill should have:

- a required `SKILL.md`,
- optional `agents/openai.yaml` for UI metadata,
- optional `references/skill-template.md` as a starting scaffold,
- optional `references/` for longer docs,
- optional `assets/` for templates, icons, or sample files.

## Workflow

### 1) Capture Intent

Start by figuring out what the user actually wants the skill to do.

Check:

- what task the skill should enable,
- when it should trigger,
- what the expected output looks like,
- whether the task is objectively testable,
- whether the skill needs bundled references or assets.

If the request is vague, ask short, focused questions before writing files.

### 2) Draft the Skill

1. Choose a clear skill name and a narrow purpose.
2. Write `SKILL.md` with a trigger-focused `description` and a concise body.
3. Put `always: true` in the frontmatter only when the skill should be injected on every turn.
4. Add `agents/openai.yaml` for UI metadata if the skill should appear in a picker or chip list.
5. Add `references/` or `assets/` only when they reduce repetition.

### 3) Validate the Draft

Before treating the skill as done, check that:

- the frontmatter parses,
- the skill is discoverable through `get_skill`,
- the body is still concise,
- the references and assets are reachable,
- the instructions are specific enough to lead to the right output.

For objective workflows, also test the skill against a small set of representative prompts or files.

### 4) Iterate

Revise the skill based on what you learn.

- Tighten the description if the skill under-triggers.
- Narrow the instructions if the model wanders.
- Add examples if the output format keeps drifting.
- Move details into `references/` if `SKILL.md` starts to grow.

### 5) Optimize Triggering

The `description` is the main trigger surface.

- Make it specific.
- Include the contexts where the skill should be used.
- Prefer wording that helps the model notice the skill even when the user does not name it exactly.
- Keep it concise, but do not make it vague.

### 6) Re-open and Confirm

Use `get_skill action="get"` one more time to confirm the final shape if anything changed materially.

## Progressive Disclosure

Keep `SKILL.md` as the entry point and move detail into separate files when it starts to grow:

- Put setup steps, examples, and edge cases in `references/`.
- Put reusable templates or sample files in `assets/`.
- Link from `SKILL.md` to those files instead of duplicating content.
- Start new skills from `references/skill-template.md` when you want a consistent scaffold.

## What Not To Include

- Do not add general project docs that do not help create the skill.
- Do not dump every possible edge case into `SKILL.md`.
- Do not duplicate the same guidance in both `SKILL.md` and `references/`.
- Do not make the skill broad just because it can handle more cases.

## Skill scaffold

```md
---
name: example-skill
description: What this skill helps with and when to use it.
always: true
---

# Example Skill

Short, direct instructions for the agent.
```

## Good fit

- A reusable workflow with a clear trigger.
- A task that benefits from bundled references or templates.
- A skill that should be easy to discover and update inside PicoBot.

## Practical Rule of Thumb

If the skill is:

- **objective**: add test cases and validate output shape,
- **workflow-heavy**: spell out the sequence and the stop conditions,
- **content-heavy**: move examples and long references into `references/`,
- **trigger-sensitive**: spend more time on `description` than on the body.
