# Turn a repeated task into a skill

Describe a workflow you repeat and have Claude Code save it as a skill, so you or your team can run it later as a slash command.

Paste into: **Claude Code**, started in your project folder

## Prompt template

How the builder on the page fills in this template, so you can do the same:

- `{{key}}` becomes the text entered for that field, exactly as typed. Empty text, or text that is only whitespace (spaces, tabs or line breaks), counts as empty: a required field then becomes `[fill in: <label>]` with its label, and an optional field becomes nothing.
- For a choice field, `{{key}}` becomes the text of the chosen option, or of the default when none is chosen.
- Text between `{{#key}}` and `{{/key}}` stays only when that field is not empty; a choice field always counts as filled. The markers themselves are removed, and a marker that stands alone on its line takes its line break with it.
- Each value is inserted once, as it is: `{{…}}` inside a value stays as typed.

```text
Create a Claude Code skill named {{name}} that does the following:
{{steps}}

Save it as {{location}}.
Who can start it: {{invocation}}.

Requirements:
- Create a folder named {{name}} with a SKILL.md file inside it. Start the file with frontmatter that has the name and a description saying what the skill does and when to use it.
- Write the steps as clear instructions. Use the commands this project actually uses; look them up in the package files, scripts or README instead of guessing.
- Keep SKILL.md short. Put long reference material in separate files next to it and link to them.

When it is done, show me the file. Do not run the skill if any step changes files, data or anything outside this repository; tell me how to try it safely instead.
```

## Fields

- `{{name}}` (required): Skill name. Lowercase letters, numbers and hyphens. It becomes the command, for example /release-check.
- `{{steps}}` (required): What the skill should do. List the steps the way you would explain them to a new teammate.
- `{{location}}`: Where to save it. Choose one:
  - a project skill in .claude/skills/, which the team gets once it is committed to the repository (default)
  - a personal skill in ~/.claude/skills/, available in all my projects on this machine
- `{{invocation}}`: Who can start it. Choose one:
  - only me, by typing the command; add disable-model-invocation: true to the frontmatter (default)
  - me, or Claude on its own when the description matches the task

This site doesn't run Claude or show model output. Results depend on your input and the model you use.

## When to use this template

- You keep typing the same multi-step instructions into Claude Code, such as a pre-release check, a review checklist or a data export.
- A workflow lives in one person's head, and you want the team to run it the same way with one command.
- You have just finished a task in a session and want to keep the steps that worked, while the details are still fresh.

## When not to use it

- The thing you want is a standing rule rather than a workflow, such as "use named exports". Put it in CLAUDE.md instead.
- The action must happen every time without exception, such as formatting after every edit. A hook runs deterministically; a skill depends on being invoked.
- You have only done the task once. Wait until the steps have settled, or the skill will record a process you are still changing.

## Why this structure

- The name field becomes the slash command, so the prompt states it once and reuses it for the folder name, matching how Claude Code finds skills: a folder per skill with a SKILL.md inside.
- The location choice decides who gets the skill. A project skill in `.claude/skills/` travels with the repository; a personal skill in `~/.claude/skills/` stays on your machine.
- The invocation choice matters for workflows with side effects. `disable-model-invocation: true` means Claude does not start the skill on its own, only when you type the command.
- Asking for a description of what the skill does and when to use it matters because Claude reads that description to decide when a skill is relevant.
- Telling Claude to look up the project's real commands keeps the skill from recording guessed commands that fail the first time someone runs it.
- The closing rule shows you the file before anything runs, and keeps a skill that deploys, deletes or sends something from being tried out on the spot.

## Example input (fictional)

Skill name:

```
release-check
```

What the skill should do:

```
Run the linter and the full test suite. If both pass, list the commits since the last tag and draft a commit message for the staged changes. Stop and report if anything fails.
```

Where to save it:

```
a project skill in .claude/skills/, which the team gets once it is committed to the repository
```

Who can start it:

```
only me, by typing the command; add disable-model-invocation: true to the frontmatter
```

## Follow-ups to send Claude

- Run /release-check now. The steps only read files and run tests, so it is safe here.
- Add a step that stops if there are uncommitted changes outside the staged files.
- Look through this repository's scripts, Makefile and README. Which other multi-step tasks are repeated often enough to become skills?

## Common mistakes

- Writing a vague description, such as "helps with releases". Claude uses it to decide when the skill applies, and you will not recognize it in a list later.
- Letting Claude start a skill with side effects on its own. Keep deploys, data changes and messages to manual invocation.
- Packing every detail into SKILL.md. A long file is harder to maintain; move reference material into separate files next to it.

## Related templates

- [Draft release notes from git history](https://awesomeclaudeprompts.com/prompts/release-notes-from-git/): Have Claude Code compare two git tags or branches and draft release notes grouped into breaking changes, features and improvements for your readers.
- [Build something new from an existing pattern](https://awesomeclaudeprompts.com/prompts/follow-code-pattern/): Point Claude Code at code that already works the way you want, so the new feature matches its structure, naming, tests and error handling.
- [Turn meeting notes into action items](https://awesomeclaudeprompts.com/prompts/meeting-notes-to-action-items/): Turn rough meeting notes into a clear list of action items with owners and due dates, plus decisions made and questions left open.

## Sources

- [Claude Code docs: Prompt library](https://code.claude.com/docs/en/prompt-library) (Anthropic documentation)
- [Claude Code docs: Extend Claude with skills](https://code.claude.com/docs/en/skills) (Anthropic documentation)
- [Claude Code docs: Control who invokes a skill](https://code.claude.com/docs/en/skills#control-who-invokes-a-skill) (Anthropic documentation)

---

Awesome Claude Prompts is an independent project. It is not affiliated with, endorsed by, or sponsored by Anthropic. Claude is a trademark of Anthropic, PBC.
