Skip to content
Development
Skill

/skill-creator

Scaffold, author, and validate an Agent Skill. Use when the user wants to create a new skill, turn a repeatable workflow into a reusable SKILL.md, or fix a skill that fails to load.

BOOST
From plugin
code-assistant
1831 skill
Install
$ npx -y skills add stippi/code-assistant --skill skill-creator --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/skill-creator

Context preview

The summary Claude sees to decide when to auto-load this skill.

Scaffold, author, and validate an Agent Skill. Use when the user wants to create a new skill, turn a repeatable workflow into a reusable SKILL.md, or fix a skill that fails to load.

SKILL.md

skill-creator.SKILL.md
name: skill-creator
description: Scaffold, author, and validate an Agent Skill. Use when the user wants to create a new skill, turn a repeatable workflow into a reusable SKILL.md, or fix a skill that fails to load.

Skill Creator

A *skill* is a reusable, task-specific playbook stored as a `SKILL.md` file in a directory named after the skill. Skills are advertised in the system prompt by name + description (progressive disclosure); their full instructions are loaded on demand with the `read_skill` tool.

Use this skill whenever the user asks to create, author, or improve a skill.

1. Choose a scope

A skill lives in one of three scopes. Pick based on how widely it should apply:

  • **project** — `<project_root>/.agents/skills/<name>/` — specific to one repo.

Load with `read_skill(project="<project-name>", name="<name>")`; read its resources with `read_files(project="<project-name>", ...)`.

  • **user** — `~/.agents/skills/<name>/` — your personal skills, available in

every project (and shared with other agent harnesses). Addressed by the scope token `:config:`; load with `read_skill(project=":config:", ...)`.

  • **system** — token `:system:` — bundled skills (like this one). Usually

read-only.

On a name collision, project wins over user wins over system.

2. Write `SKILL.md`

The file MUST start with a YAML frontmatter block delimited by `---` lines, followed by a free-form Markdown body:

---
name: my-skill
description: One-paragraph routing description the model uses to decide when to load this skill.
---

# My Skill

...instructions...

Frontmatter rules (enforced by the loader):

  • `name` is required, must be **lowercase letters, digits, and hyphens** only,

at most 64 characters, and must **equal the directory name**.

  • `description` is required, at most 1024 characters. Write it as a routing

signal: say *when* to use the skill, not just what it does.

  • `disable-model-invocation` (optional, default `false`): when `true`, the

skill is hidden from the model-facing catalog and the `list_skills` tool so the model never auto-invokes it. It stays loadable via `read_skill` (e.g. when a user explicitly activates it) and visible in the settings UI. Use this for skills that should only run on explicit user request.

  • Other keys (license, allowed-tools, metadata, etc.) are allowed and ignored

for now.

3. Add resources (optional)

Bundle supporting files under the skill directory and reference them from the body with paths relative to the skill directory:

  • `scripts/` — runnable helpers. Prefer running them with `execute_command`

rather than reading them into context.

  • `references/` — longer docs to read on demand with `read_files`.
  • `assets/` — templates or output skeletons.

Keep `SKILL.md` itself short: it should orchestrate, pointing at the right resource for each sub-task instead of inlining everything.

4. Validate

  • The directory name equals `name`.
  • Frontmatter parses and `name`/`description` satisfy the rules above.
  • Referenced resource paths exist and are relative to the skill directory.
  • Load it once with `read_skill` to confirm the body renders as expected.

Template

---
name: <kebab-case-name>
description: Use this skill when <trigger>. It <what it does>.
---

# <Human Title>

## When to use
<one or two sentences>

## Workflow
1. <step>
2. <step>

## Resources
- `references/<doc>.md` — <what it contains>
- `scripts/<tool>` — <what it does> (run with execute_command)

Quality checklist

  • Single responsibility: one skill, one job.
  • The description is a strong routing signal (the model only sees this until it

loads the skill).

  • Progressive disclosure: short body, details in `references/`.
  • Deterministic work lives in `scripts/`, not in prose.
Read more
Ships withcode-assistant

An open-source AI coding agent, written in Rust, with a native GUI, a terminal mode, and integrations for editors and MCP clients.

Get the whole plugin
Stats
183
Stars
34
Forks
Active
Maintenance
Rust
Language
MIT
License
14h ago
Last commit
1y ago
Created
4h ago
Added

Repo: stippi/code-assistant