Create Skill
Purpose
Guides agents through authoring a new Syncolab skill in a cloned skills repository: a reusable operational capability with clear routing, metadata, and validation—not a one-off prompt.
Assume syncolab-skills is cloned locally and the agent has shell access to edit files under skills/.
When to Use
- User asks to create, add, scaffold, or improve a Syncolab skill.
- User wants a new directory under
skills/<skill-label>/. - User needs help with
SKILL.md,meta.yaml, structure, or validation errors. - A skill exists locally but fails validation or lacks required sections.
When NOT to Use
- User only wants to open a GitHub PR or merge to
main→ use publish-skill. - User wants a personal Cursor skill under
~/.cursor/skills/(different product; not this repo). - Task is unrelated to skill authoring (general coding, unrelated repo work).
Expected Outcome
- New or updated
skills/<skill-label>/withSKILL.mdandmeta.yaml. <skill-label>is lowercase kebab-case and matchesnameinSKILL.mdfrontmatter.SKILL.mdandmeta.yamlconform toskills/skill.instruction.md,skills/meta.instructions.md, andskills/meta.schema.json(errors fixed; warnings reviewed).- Metadata aligns with the skill body; procedural detail lives in
SKILL.md, not duplicated inmeta.yaml.
Inputs to Gather
Before writing files, collect:
- Skill label — stable kebab-case id (directory name), e.g.
code-review. - Purpose — what operational capability the skill provides.
- Triggers — when routers/agents should select it (synonyms, situations).
- Boundaries — what it must not do.
- Type — one value from
meta.instructions.md(methodical,operational, etc.). - Relationships — related skills or tool sets (
github, etc.) if any. - Optional assets — whether
references/,assets/, orscripts/are needed.
Read these repo sources (do not guess conventions):
skills/skill.instruction.md— SKILL.md standards and sections.skills/meta.instructions.md—meta.yamlauthoring rules.skills/meta.schema.json— strict metadata validation.skills/_template/— canonical starter layout.- Existing skills under
skills/for naming and relationship patterns.
Workflow
1. Confirm environment
From syncolab-skills root:
test -d skills && echo OK
2. Choose and validate the label
- Use lowercase kebab-case:
^[a-z][a-z0-9]*(-[a-z0-9]+)*$. - Do not use
_templatefor real skills (scaffold only). - List siblings:
ls skills/— avoid collisions and confusing names (helper,utils).
3. Scaffold the directory
SKILL_LABEL="your-skill-label"
cp -R skills/_template "skills/${SKILL_LABEL}"
Remove HTML comment placeholders as you replace content.
4. Author SKILL.md
Frontmatter (required):
---
name: your-skill-label # must equal directory name
description: ... # capability + when to use; ≥20 chars; routing-friendly
---
Body — include the sections that matter for this skill (see skill.instruction.md). At minimum aim for:
- Purpose, When to Use, When NOT to Use, Expected Outcome
- Inputs to Gather, Workflow, Tool Availability Rules
- Output Format, Quality Bar, Safety and Boundaries
Authoring principles:
- Concise, high-signal — the agent is capable; add only non-obvious domain knowledge.
- Progressive disclosure — move long checklists, examples, and specs to
references/; link one level deep fromSKILL.md. - Concrete workflows — numbered steps the agent can follow; avoid fake precision.
- Explicit tool behavior — read-only vs write vs dispatch; never fabricate tool results.
- Verbatim user text — if the user supplies exact wording for the skill, preserve it.
5. Author meta.yaml
Follow meta.instructions.md. Required shape:
name: Human Readable Name
version: "1.0.0"
type: methodical # pick one allowed type
description:
capability: ...
trigger_conditions: Use when ...
scope_boundaries: ...
key_domain_words:
- ...
tags:
- your-skill-label # include the skill label
- ...
relationships:
skills: []
tool_sets: []
- Tags: lowercase kebab-case only.
descriptionfields: short, router-facing; no long procedures.- Relationship
namevalues: kebab-case skill ids (not display names). - Do not invent relationship types outside the schema.
6. Add optional directories only when needed
| Directory | Use for |
|---|---|
references/ |
Long examples, checklists, specs |
assets/ |
Images, audio, PDFs |
scripts/ |
Skill-scoped helpers |
No other top-level folders under the skill directory.
7. Review and fix
Check the skill against skills/meta.schema.json and the required sections in skills/skill.instruction.md (frontmatter name matches <skill-label>, kebab-case id, triggers, boundaries, recommended SKILL.md headings).
Fix all structural and schema errors before considering the skill done. Review warnings (missing recommended sections, size, metadata alignment).
Repeat edit → review until ready for publish-skill.
8. Hand off to publish (if requested)
If the user wants the skill on main, switch to publish-skill after validation passes.
Tool Availability Rules
| Access | Behavior |
|---|---|
| Shell + write | Scaffold, edit files, run validation, report command output. |
| Read-only | Produce full file contents and exact shell commands; do not claim files were written. |
| No shell | Output planned paths and draft SKILL.md / meta.yaml; ask for dispatch or shell access. |
Always run or show real validation output—never invent pass/fail.
Review / Decision / Execution Criteria
A skill is ready when:
- Label, frontmatter
name, and directory name match. meta.yamlvalidates againstmeta.schema.json.- Triggers and anti-triggers are explicit enough for routing.
- Workflow is actionable without this chat’s context.
- Safety and tool rules are stated.
SKILL.mdstays focused; large content is inreferences/.
Anti-patterns: vague descriptions, marketing language, Windows paths, time-sensitive “before date X” rules, mixing terminology, bloated monolithic SKILL.md, secrets in examples.
Output Format
Report to the user:
- Skill label and path
skills/<skill-label>/. - Files created/updated (list).
- Validation — command run and result (pass or errors to fix).
- Follow-ups — optional
references/, relationship updates, or publish-skill next step.
Quality Bar
- Description states what the skill does and when to use it (third person, specific trigger terms).
- Purpose explains operational value, not “helps with X.”
- Boundaries prevent misuse and wrong routing.
- Evidence-based: cite repo paths and validation output when relevant.
- Substance over length; target well under 500 lines in
SKILL.md.
Safety and Boundaries
- Do not commit secrets, tokens, or internal URLs into skills.
- Do not fabricate validation results or repository state.
- Do not modify unrelated skills or global schema unless the user explicitly requests it.
- State assumptions when requirements are incomplete; ask before large scope expansion.
Escalation / Dispatch Rules
- Too broad — split into multiple focused skills with
relationships.skillsinstead of one mega-skill. - Publish to GitHub — use publish-skill; do not push or open PRs unless the user asked.
- Schema/instruction changes — if conventions must change, update
skill.instruction.md/meta.instructions.md/meta.schema.jsontogether per repo rules.
References
skills/skill.instruction.mdskills/meta.instructions.mdskills/meta.schema.jsonskills/_template/skills/meta.schema.json— metadata validation rules