Custom Skills
Skills are the primary extension point in Trellis 0.5. Most of the shipped workflow (brainstorm, before-dev, check, update-spec, break-loop) is delivered as auto-trigger skills. This chapter explains how to add your own.Commands vs. sub-agents vs. skills
| Command | Sub-agent | Skill | |
|---|---|---|---|
| Purpose | Explicit user entry point | Isolated sub-process for a role | Reusable workflow module |
| Trigger | /trellis:xxx | Spawned via Task tool | Platform auto-matches on user intent |
| Granularity | Session boundary | Role-level | Capability or phase level |
| Cross-platform | One file per platform | One file per platform | One folder per platform (same structure) |
Skill file format
A skill is a folder containingSKILL.md:
SKILL.md uses YAML frontmatter that the platform matches against:
| Platform | Location |
|---|---|
| Claude Code | .claude/skills/{name}/SKILL.md |
| Cursor | .cursor/skills/{name}/SKILL.md |
| OpenCode | .opencode/skills/{name}/SKILL.md |
| Codex | .codex/skills/{name}/SKILL.md (plus a copy into .agents/skills/ for the cross-platform ecosystem) |
| Kiro | .kiro/skills/{name}/SKILL.md |
| Gemini CLI | .gemini/skills/{name}/SKILL.md |
| Qoder | .qoder/skills/{name}/SKILL.md |
| CodeBuddy | .codebuddy/skills/{name}/SKILL.md |
| Copilot | .github/skills/{name}/SKILL.md |
| Droid | .factory/skills/{name}/SKILL.md |
| Kilo | .kilocode/skills/{name}/SKILL.md |
| Antigravity | .agent/skills/{name}/SKILL.md |
| Windsurf | .windsurf/skills/{name}/SKILL.md |
.agents/skills/{name}/SKILL.md (the agentskills.io cross-platform shared layer) is written by the Codex configurator and is directly usable by Amp, Cline, Deep Agents, Firebender, Kimi Code CLI, Warp, and other agents that read the standard.
Writing a skill that triggers reliably
Thedescription field is what platforms match on. Write it as a description of the condition that should cause this skill to fire, not a description of the skill’s name.
Examples:
- State the trigger condition again, in the skill’s own voice, so the AI can double-check that the match was correct.
- Tell the AI exactly which files to read before acting.
- Give a fixed output format so the result is consistent across invocations.
Example: an api-doc skill
.claude/skills/api-doc/SKILL.md:
Sharing skills
To distribute a skill across projects:- Put the canonical
SKILL.mdunderpackages/cli/src/templates/common/skills/{name}/SKILL.md(if contributing upstream) or publish it as its own npm package. - Add a configurator step per platform that copies or adapts the skill into that platform’s layout.
- Version the skill alongside the Trellis release so migrations stay consistent.