Triggers when the user wants to create, edit, improve, or debug an OpenLoaf custom Skill. Typical phrasings: "help me create a skill", "build a new skill", "turn what we just did into a skill", "write a skill that auto-XX", "tweak this skill", "why isn't this skill triggering", "edit my custom skill", "add a global skill", "add a skill to the current project". Any create / modify / tune request touching a `SKILL.md` under `.openloaf/skills/` should load this skill. Also applies when the user wants to understand the skill format, troubleshoot triggering issues, or solidify a conversation workflow into a reusable capability. Not for: modifying built-in skills (e.g. file-ops, email-ops) — those are read-only capabilities shipped with the platform.
73
90%
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
This skill guides you in creating, editing, and improving custom Skills for OpenLoaf. A Skill is a chunk of Markdown instructions that gets auto-loaded into the conversation when the user's request matches its description, letting the AI perform tasks following the method inside.
| Tool | Responsibility | Read-only |
|---|---|---|
Read / Glob / Grep | Read existing skills and locate anchors (always-available tools) | Yes |
Write | Create new SKILL.md / openloaf.json / helper scripts (always-available tools) | No |
Edit | Modify existing skill content (always-available tools) | No |
Loading: All core tools, always available, no
ToolSearchactivation needed. This skill has no dedicated deferred tools — it's an instructional skill that teaches the AI how to organize custom skill files.
User-defined skills come in two scopes. Figure out where it belongs before doing anything. Priority from low to high: builtin < global < project; project skills override global skills of the same name.
~/.openloaf/skills/<skill-name>/SKILL.md{projectRoot}/.openloaf/skills/<skill-name>/SKILL.mdDoes the capability only make sense in the current project (file paths, business terms, repo conventions)?
└─ Yes → Project skill (default first choice)
└─ No → Reusable across projects (personal habits, generic templates)?
└─ Yes → Global skill
└─ Unsure → Start with a project skill; promote to global later if multiple projects need itIron rule: Project-specific business knowledge does not belong in global skills — it pollutes other projects. Conversely, stuffing a generic capability into a project skill misses the reuse opportunity. When uncertain, ask the user: "Is this capability only useful in this project, or do you want it in your other projects too?"
Before touching files, nail down four things (the conversation context may already contain the answers — don't ask again):
If the user says "turn what we just did into a skill", review the conversation history to extract the actual tool sequence used, the decision logic, and places where the user corrected you — that's the knowledge the skill truly needs to capture.
Every skill is a folder, and the one essential file is SKILL.md.
<skill-name>/
├── SKILL.md # Required — skill instructions (YAML frontmatter + Markdown body)
├── openloaf.json # Optional — UI metadata (icon, color, display name)
└── scripts/ # Optional — helper scripts (python/bash, etc.)---
name: my-skill-name # kebab-case, matches folder name
description: > # Decides when the AI loads this skill — getting this line right is critical
Triggers when the user... Typical phrasings: "...". Not for: ...
---
# Skill Title
Body content...descriptiondescription is the only gate for skill triggering; triggering accuracy almost entirely rides on it:
├─ Yes → ... format expresses branching logic clearlyscripts/ or use layered references when it grows too long# Skill Title
One paragraph overview of what this skill covers.
## Triggering Conditions
List which user phrasings / scenarios should trigger this skill.
## Workflow
Describe step by step what the AI should do. Use numbered steps + decision trees.
## Tool Usage
List the tools this skill depends on and the key usage points.
## Examples
1–2 end-to-end complete examples.
## Common Pitfalls
Easy mistakes and things to watch out for.
## Iron Rules
3–5 inviolable core rules.openloaf.json provides UI display info and sits alongside SKILL.md:
{
"name": "Display Name",
"description": "One-line description",
"icon": "🔧",
"version": "0.1.0",
"sourceLanguage": "zh-CN",
"targetLanguage": "zh-CN",
"colorIndex": 0
}colorIndex palette: 0=cyan 1=purple 2=amber 3=sky 4=rose 5=emerald 6=indigo 7=lime
icon: Pick the emoji that best represents the skill's function.
Use the Write tool to write the file. Paths strictly differ by scope:
| Scope | Write path |
|---|---|
| Global skill | ~/.openloaf/skills/<skill-name>/SKILL.md |
| Project skill | {projectRoot}/.openloaf/skills/<skill-name>/SKILL.md |
Check for name conflicts before creating to avoid accidental overwrites:
Glob: ~/.openloaf/skills/<skill-name>/SKILL.md # Check global
Glob: {projectRoot}/.openloaf/skills/<skill-name>/SKILL.md # Check projectOn conflict, ask the user: overwrite / rename / cancel.
Always tell the user after creation: the skill list is loaded at conversation init, so the new skill is not visible in the current conversation — they need to open a new conversation for it to take effect.
Once the skill is created, suggest the user test it:
| Symptom | Cause | Fix |
|---|---|---|
| Skill doesn't trigger | description too narrow | Add more typical phrasings, cover colloquial and synonym forms |
| Skill mis-triggers | description too broad | Add "not for" qualifiers, draw boundaries with other skills |
| AI doesn't follow instructions | Body too long or too vague | Shorten, add decision trees, add concrete examples |
| Tool calls error out | Tool usage not explained | Add parameter examples and call ordering |
| Picked up by other projects | Mistakenly placed in global | Move to project scope ({projectRoot}/.openloaf/skills/) |
When the user asks to improve an existing skill:
Read the current SKILL.md to understand what's theredescription optimization specialty: If the user reports "it didn't trigger when it should have", focus on refining the description:
description errs wide, not narrow — a missed trigger hurts far more than an occasional extra triggerGlob for conflicts before creating, prompt the user to test in a new conversation after — the skill list is loaded at conversation inita1ab5be
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.