Example
Skill Template Example
A practical starter template for packaging reusable agent expertise.
Recommended layout
my-skill/
βββ SKILL.md
βββ references/
β βββ domain-rules.md
β βββ examples.md
βββ scripts/
β βββ validate-output.js
βββ assets/
βββ report-template.mdSKILL.md starter
---
name: my-skill
description: Describe the exact user task this skill should handle, including verbs and expected artifacts.
compatibility:
runtimes:
- node >= 18
---
# My Skill
Use this skill when ...
Do not use this skill when ...
## Workflow
1. Inspect the input and identify missing information.
2. Apply the procedure below.
3. Use the output template if the user asks for a report.
4. Validate the result before responding.
## References
- Read `references/domain-rules.md` when the task involves domain-specific policy decisions.
- Read `references/examples.md` if the output format is unclear.
## Scripts
- Run `node scripts/validate-output.js --file PATH` before final delivery when producing a structured file.
## Output
Follow `assets/report-template.md` for final reports.Example reference file
Use references for domain rules that are useful but too detailed for the main instructions.
# references/domain-rules.md ## Severity levels - Critical: user data loss, security exposure, payment failure, or production outage. - High: broken core workflow with no easy workaround. - Medium: degraded workflow with a workaround. - Low: cosmetic issue, copy issue, or small usability problem. ## Escalation rule If severity is Critical or High, include an explicit owner and next action in the final report.
Example asset template
Assets are useful when the final answer must follow a stable structure.
# assets/report-template.md ## Summary ## Findings | Severity | Finding | Evidence | Recommendation | | --- | --- | --- | --- | ## Open questions ## Next actions
Example validation script
Scripts should be non-interactive and give clear machine-readable output when possible.
// scripts/validate-output.js
import fs from "node:fs"
const fileIndex = process.argv.indexOf("--file")
const file = fileIndex >= 0 ? process.argv[fileIndex + 1] : null
if (!file) {
console.error(JSON.stringify({ ok: false, error: "Missing --file PATH" }))
process.exit(1)
}
const text = fs.readFileSync(file, "utf8")
const required = ["## Summary", "## Findings", "## Open questions", "## Next actions"]
const missing = required.filter((section) => !text.includes(section))
console.log(JSON.stringify({ ok: missing.length === 0, missing }, null, 2))
process.exit(missing.length === 0 ? 0 : 1)Before publishing
ActivationTest several should-trigger and should-not-trigger prompts.
ContextMove long details out of
SKILL.md and reference them conditionally.ScriptsMake scripts non-interactive and give them helpful errors.
EvaluationRun the Skill on realistic examples and capture failures.