Skip to main content
skill CX Codex

my-skill — Claude Code skill: features and installation

my-skill outlines a skill’s structure, from metadata and arguments to injected command output and supporting files. Use it as a guide when shaping a custom skill.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add LukeRenton/explore-claude-code --skill my-skill -a claude-code
Open on GitHub

What my-skill does

This is a skill structure guide, not a set of instructions for a particular task. A SKILL.md file holds the name and description, followed by the instructions the agent receives. Optional settings can control argument hints, tool access, or whether the skill runs in an isolated subagent.

The guide covers positional argument substitutions and shell commands whose output is inserted before the skill content reaches Claude. Longer references, templates, and scripts can live in separate files linked by relative paths. Keep SKILL.md under 500 lines, with reference links no more than one level deep.

Install it in Claude Code with npx skills add LukeRenton/explore-claude-code --skill my-skill -a claude-code. The installed file is at ~/.claude/skills/my-skill/SKILL.md. One detail matters when passing arguments: if the content has no $ARGUMENTS placeholder, the supplied value is appended as ARGUMENTS: <value>.

What it helps with

  • define instructions in a SKILL.md file
  • address arguments by their position
  • insert shell command output when the skill loads
  • keep reference material and scripts in separate files

Example prompts for the agent

  • Explain how to structure a SKILL.md for my project.
  • Show me how to pass two arguments to a skill and refer to each one.
  • Set up a substitution that inserts the changed-file list from git diff --name-only.

How to install my-skill

1Skills CLI (Vercel)

npx skills add LukeRenton/explore-claude-code --skill my-skill -a claude-code

2Manually: put the files in place

~/.claude/skills/my-skill/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/my-skill/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about my-skill

How do I install my-skill in Claude Code?

Run npx skills add LukeRenton/explore-claude-code --skill my-skill -a claude-code. The skill file is placed at ~/.claude/skills/my-skill/SKILL.md.

What does my-skill do?

It explains how to lay out a skill: its metadata, instruction body, argument substitutions, and supporting files. Use the guidance when creating or editing a skill.

What happens if a skill omits $ARGUMENTS?

The supplied value is added at the end of the skill content as ARGUMENTS: <value>. Positional values can instead be referenced with $ARGUMENTS[N] or $N.

Source text

SKILL.md · MIT
---
name: my-skill
description: What this skill does and when to use it. Claude reads this to decide relevance. Include keywords users would naturally say.
---

These two fields are the only ones required. `name` must be lowercase with hyphens, max 64 characters, and match the parent directory name. `description` is what Claude reads at startup to decide when the skill is relevant (max 1024 characters).

## Optional Frontmatter Fields

Add any of these to the `---` block above to customise behaviour:

| Field | Example | Purpose |
|---|---|---|
| `argument-hint` | `[issue-number]` | Hint shown during autocomplete to indicate expected arguments |
| `disable-model-invocation` | `true` | Prevent Claude from auto-loading. User must type `/name` explicitly. Use for deploys, sends, destructive ops |
| `user-invocable` | `false` | Hide from the `/` menu. Claude can still load it automatically. Use for background knowledge |
| `allowed-tools` | `Read, Grep, Bash(npm *)` | Tools Claude can use without asking permission. Space-delimited, supports patterns |
| `model` | `claude-sonnet-4-6` | Override the model when this skill is active. Useful for cost control |
| `context` | `fork` | Run in an [isolated subagent](^A separate Claude instance with its own context. The skill content becomes the subagent's system prompt). Skill content becomes the subagent's prompt |
| `agent` | `Explore` | Which subagent runs when `context: fork`. Built-in: `Explore`, `Plan`, `general-purpose`, or custom from `.claude/agents/` |
| `license` | `Apache-2.0` | License name or reference to a bundled LICENSE file |
| `compatibility` | `Requires git, docker` | Environment requirements (max 500 chars) |
| `metadata` | key-value pairs | Arbitrary metadata (author, version, etc.) |

---

# Body Content

Everything below the frontmatter is the instruction body. Claude reads this when the skill is activated. Write whatever helps Claude perform the task. There are no format restrictions.

Good body content includes:

- Step-by-step instructions for the task
- Examples of inputs and expected outputs
- Common edge cases and how to handle them
- References to supporting files in this skill folder

## String Substitutions

[Placeholders](^Variables in your SKILL.md that get replaced with real values before Claude sees the content) are replaced with real values before Claude sees the content:

| Placeholder | Resolves To |
|---|---|
| `$ARGUMENTS` | Everything the user typed after the skill name |
| `$ARGUMENTS[N]` or `$N` | A specific argument by index (0-based) |
| `${CLAUDE_SESSION_ID}` | The current session ID |
| `${CLAUDE_SKILL_DIR}` | Path to this skill's directory |

Example: `/my-skill SearchBar React Vue` gives `$0` = "SearchBar", `$1` = "React", `$2` = "Vue".

If `$ARGUMENTS` is not present in the content, arguments are appended as `ARGUMENTS: <value>`.

## Dynamic Context Injection

The `!` backtick syntax runs shell commands before the content reaches Claude. Output replaces the placeholder:

- PR diff: `` !`gh pr diff` ``
- Dependencies: `` !`cat package.json | jq .dependencies` ``
- Changed files: `` !`git diff --name-only` ``

This is [preprocessing](^The commands run at skill load time, not during conversation. Claude only sees the final output, not the commands themselves). Claude only sees the final output, not the commands.

---

# Supporting Files

Keep SKILL.md under 500 lines. Move detailed material to separate files and reference them from the body:

- [references/REFERENCE.md](references/REFERENCE.md): Detailed documentation loaded on demand
- [assets/template.md](assets/template.md): Templates and static resources
- [scripts/helper.sh](scripts/helper.sh): Executable code Claude can run

Use relative paths from SKILL.md. Keep references one level deep. Navigate into these folders to learn more about each.

© LukeRenton · MIT · LukeRenton/explore-claude-code

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set2

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor