Skill: Write a Skill
SkillProductivityGuide for correctly creating a new skill in pm-workspace. Use when a task is repeated 2+ times or takes more than 15 minutes.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Skill: Write a Skill skill
What this skill tells your AI
The instructions your AI receives, as published by gonzalezpazmonica/savia in .claude/skills/write-a-skill/SKILL.md and read by ahel’s review.
Guia canonica para crear una skill nueva en pm-workspace que supere el auditor de calidad.
Authoritative Paths
Lee estos paths antes de actuar.
| Para | Lee este path |
|---|---|
| Template SKILL.md | .opencode/skills/_template/SKILL.md |
| Template DOMAIN.md | .opencode/skills/_template/DOMAIN.md |
| Protocolo de template | docs/rules/domain/skill-template-protocol.md |
| Auditor de calidad | scripts/skill-catalog-auditor.sh |
| Registro de skills | SKILLS.md |
Cuando usar
- Una tarea se repite 2+ veces en sesiones distintas.
- Una tarea tarda mas de 15 minutos y sigue un patron reutilizable.
- Un patron nuevo aparece que ningun skill existente cubre.
Cuando NO usar
- La tarea es un comando puntual que no se repetira.
- Ya existe una skill con el mismo scope — ampliar la existente.
- La tarea es solo configuracion de proyecto (usar regla en
docs/rules/).
Decision Checklist
- La tarea se ha repetido 2+ veces? Si NO: documenta como nota, no como skill.
- Existe ya una skill solapada? Si SI: ampliar esa skill en lugar de crear una nueva.
- El nombre es un verbo o patron de accion? Si NO: renombrar antes de crear.
Abort Conditions
- Si la skill resultante superaria 150 lineas, dividirla en dos skills especializadas.
- Si no puedes rellenar
DOMAIN.md ## Por que existe esta skillen 2 frases, la skill no deberia existir.
Workflow
Detectar patron repetido
|
Copiar template a .claude/skills/<nombre>/
|
Rellenar SKILL.md y DOMAIN.md
|
Verificar con auditor (debe dar OK)
|
Registrar en SKILLS.md
Detalle de cada paso
-
Copiar template:
cp -r .claude/skills/_template .claude/skills/<nombre-skill> -
Rellenar SKILL.md: sustituir todos los
<placeholder>. Seguir patron "Authoritative Paths First" (SE-153). Borrar bloque HTML inicial. Si la skill no es orquestadora, borrar la seccionSubagent Scope Guard. -
Rellenar DOMAIN.md: max 60 lineas. Cubrir: por que existe, conceptos de dominio, limites, confidencialidad, referencias.
-
Verificar:
bash scripts/skill-catalog-auditor.sh --skill <nombre>Criterio PASS: SKILL.md existe, DOMAIN.md existe, frontmatter con name y description presentes, SKILL.md <= 150 lineas, DOMAIN.md <= 60 lineas, DOMAIN.md > 3 lineas, SKILL.md referencia al menos un path real.
-
Registrar: ejecutar
bash scripts/skills-md-generate.shpara regenerar SKILLS.md.
Outputs esperados
.claude/skills/<nombre>/SKILL.md(<=150 lineas).claude/skills/<nombre>/DOMAIN.md(<=60 lineas)SKILLS.mdactualizado- Auditor: resultado OK sin FAIL
Dos tipos de skill (lección SE-347 / Prime Agent)
Decide el tipo ANTES de copiar el template:
| Tipo | Cuándo | Template | Contrato |
|---|---|---|---|
| Markdown (instrucciones) | La capacidad es sobre todo procedimiento | .claude/skills/_template/ | SKILL.md guía al agente |
| Python-backed | El agente debe invocar funcionalidad reutilizable con contrato tipado | .claude/skills/_template_python/ | SKILL.md + pyproject.toml + src/<import>/__init__.py con run(...) |
Reglas del tipo Python-backed:
- El import name es el nombre del skill con
-→_(ej.release-audit→release_audit). src/<import>/__init__.pydebe exponerrun(...)(callable, async opcional).pyproject.tomldeclara el paquete;[project.scripts]opcional para CLI.- Se instala en el venv de python del proyecto (local, CRIT-001 — nunca cloud).
- El SKILL.md documenta el contrato en
## Usage(args con nombres y defaults). - TDD: escribe el test del callable antes que la implementación (
__init__.test.py).
Los skills de digestión/análisis (pdf-digest, excel-digest, tabular-analyst) son candidatos a migrar a Python-backed progresivamente.
Memory hooks
- Skill nueva creada: guardar en memoria con tipo decision y titulo "skill creada: nombre".
Related
- Template:
.opencode/skills/_template/SKILL.md - Rule:
docs/rules/domain/skill-template-protocol.md - Auditor:
scripts/skill-catalog-auditor.sh - Roadmap:
docs/ROADMAP.md
Signals
- GitHub stars
- 50
- Forks
- 12
- Last commit
- Sep 2026
ahel recommends instead
Advanced
- Catalog kind
- skill
- Gateway key
write-a-skill-2- Source
- github.com/gonzalezpazmonica/savia