How to create new skills for an agent-native app. Use when adding a new skill, documenting a pattern the agent should follow, or creating reusable guidance for the agent.
64
77%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.agents/skills/create-skill/SKILL.mdCreate a new skill when:
Don't create a skill when:
AGENTS.md (for everyone) or memory/MEMORY.md
(personal, per-user). See capture-learnings.Before writing the skill, answer these:
navigation application-state key and
the view-screen action pattern. See the context-awareness skill.references/.For documenting how things should be done:
---
name: my-pattern
description: >-
[Under 40 words. What it covers AND when it should trigger.]
---
# [Pattern Name]
## Rule
[One sentence: what must be true]
## Why
[Why this rule exists]
## How
[How to follow it, with code examples]
## Don't
[Common violations]
## Related Skills
[Which skills compose with this one]For multi-step implementation tasks:
---
name: my-workflow
description: >-
[Under 40 words. What it covers AND when it should trigger.]
---
# [Workflow Name]
## Prerequisites
[What must be in place first]
## Steps
[Numbered steps with code examples]
## Verification
[How to confirm it worked]
## Troubleshooting
[Common issues and fixes]
## Related SkillsFor creating files from templates:
---
name: my-generator
description: >-
[Under 40 words. What it covers AND when it should trigger.]
---
# [Generator Name]
## Usage
[How to invoke — what args/inputs are needed]
## What Gets Created
[List of files and their purpose]
## Template
[The template content with placeholders]
## After Generation
[What to do next — wire up sync, add routes, register the action, etc.]
## Related Skills[a-z0-9-], max 64 characters.storing-data, delegate-to-agent).create-skill, capture-learnings).name in frontmatter.An optional scope frontmatter field controls which agent loads the skill:
both (default when omitted) — loaded by connected repo agents and the
in-app runtime agent. Use for any skill both audiences should follow.runtime — loaded only by the in-app runtime agent.dev — meant for the human's coding agent (e.g. Claude Code) only. Excluded
from the runtime agent everywhere: not in the system-prompt skills block and
not in docs-search results.Use scope: dev for internal-only skills that should guide connected repo
agents such as Codex or Claude Code, but should not affect the deployed
production agent. Do not use metadata.internal for runtime visibility; that
field is catalog/package metadata and is intentionally not treated as
production exclusion.
---
name: release-checklist
description: >-
Steps for cutting a release. Use when preparing or publishing a new version.
scope: dev
---Leave scope off for normal skills — the default (both) keeps them loading at
runtime, so this is fully backward compatible. To make a dev-only skill visible
to your coding agent but hidden from the runtime agent, mark it scope: dev and
optionally mirror it under .claude/skills/<name>/SKILL.md (Claude Code reads
.claude/skills/ independently of the runtime's .agents/skills/).
references/ files (progressive disclosure).useDbSync /
useActionQuery so the UI updates (see real-time-sync)..agents/skills/my-skill/
├── SKILL.md # Main skill (required)
└── references/ # Optional supporting context
└── detailed-guide.mdAGENTS.md or memory/MEMORY.md.c1ee18b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.