# Create Skill

> Bootstrap a new Gemini CLI skill or command for the project. Use when creating a new skill from scratch — setting up the directory, frontmatter, required sections, and initial SKILL.md content. For evaluating, benchmarking, or iteratively improving an existing skill, use the skill-iterate skill instead. Use when this capability is needed.

- Skill: `tomevault-io/create-skill-18` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/create-skill-18`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/create-skill-18/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/create-skill-18

---


# Create a Skill

Skills live in `skills/<name>/SKILL.md` (model-invoked) or `commands/<name>/SKILL.md` (user-invoked).

## Filesystem Scope

> **IMPORTANT:** See the **Filesystem Scope** section in `CLAUDE.md`.

## Frontmatter quick reference

All supported frontmatter fields:

| Field | Required | Description |
|-------|----------|-------------|
| `name` | Yes | Kebab-case name — must match the directory name |
| `description` | Yes | When/why to invoke this skill; drives auto-invocation matching |
| `user-invokable` | No | `true` to allow `/plugin:name` slash command invocation (default: `false`) |
| `tools` | No | Comma-separated tool allowlist for agent definitions (omit to inherit defaults) |
| `model` | No | Model override: `opus`, `sonnet`, or `haiku` (omit to inherit from parent) |
| `disable-model-invocation` | No | `true` to prevent Claude from auto-invoking; use for user-only commands with side effects |

**Notes:**
- `tools` and `model` are primarily used in agent files (`agents/*.md`), not skill files
- `disable-model-invocation: true` is appropriate for commands like `/lead` and `/create-ticket` that should only run when explicitly invoked
- Skills in `skills/` that are also user-invokable should set `user-invokable: true`; commands in `commands/` are always user-invokable and do not need this field

## Choosing commands/ vs skills/

| Type | Directory | Invocation |
|------|-----------|------------|
| User-invoked slash command (side effects) | `commands/` | `/plugin:name` only |
| Model-invoked background knowledge | `skills/` | Claude auto-invokes based on context |
| Both user and model | `skills/` | Either can invoke |

## Required sections

New SKILL.md files must include a `## Filesystem Scope` section with the single-line reference:

```markdown
## Filesystem Scope

> **IMPORTANT:** See the **Filesystem Scope** section in `CLAUDE.md`.
```

## Example SKILL.md

A realistic mini-skill showing all frontmatter fields and required sections:

```markdown
---
name: run-checks
description: Run linting and tests for the project. Use before committing or creating a PR.
user-invokable: true
tools: read_file, run_shell_command, glob, Grep
model: sonnet
---

# Run Checks

Runs the project's verification suite. Always run before opening a PR.

## Filesystem Scope

> **IMPORTANT:** See the **Filesystem Scope** section in `CLAUDE.md`.

## Commands

Run from the project root:

- Lint: `shellcheck scripts/**/*.sh`
- Test: `npm test`

## What to check

- All shellcheck warnings are errors — fix them before proceeding
- Test failures block the PR; flaky tests should be marked or fixed, not ignored

## Scripts

Helper scripts live in `skills/run-checks/scripts/`:
- `scripts/check-and-report.sh` — runs checks and formats output for issue comments
```

## Writing the content

- Use imperative/verb-first language ("Create the file" not "You should create")
- Keep SKILL.md under ~100 lines; move large references to separate files in the same directory
- Include concrete values (constants, commands) — save Claude a file lookup
- No prose padding; every line should earn its place in context
- Co-locate scripts in a `scripts/` subdirectory **within** the skill/command directory (e.g., `skills/my-skill/scripts/`), not at the project root

## After creating

Commit the new skill and push to its open PR.

## Next step: evaluate and iterate

Once the first draft is committed, hand off to the `skill-iterate` skill if the user wants to:
- Measure how reliably the skill triggers (description accuracy)
- Run quantitative evals on skill output quality
- Iteratively improve the skill through a test/evaluate/rewrite loop

Cadence's `create-skill` handles bootstrap conventions (directory layout, frontmatter, required sections). The `skill-iterate` skill handles the eval/iterate/optimize loop using Anthropic's upstream skill-creator tooling.

---
> Source: [dokipen/claude-cadence](https://github.com/dokipen/claude-cadence) — distributed by [TomeVault](https://tomevault.io).
<!-- tomevault:4.0:skill_md:2026-05-23 -->

