---
name: skillforge
description: Creates new pi skills — scaffolds SKILL.md with frontmatter, registers in _index.md, and logs the decision.
categories: [software-development]
agents: [pi, hermes, claude, copilot]
version: 2026-01-01
triggers: ["create skill", "new skill", "build skill", "new capability"]
tools: [bash, memory_reflect, git]
constraints: ["do not duplicate existing skills", "always include self-rewrite hook"]
metadata:
  source: custom
  scope: global
---

# Skillforge — the skill that creates skills

When a new capability is needed:

1. **Check for duplicates.** Read `skills/_index.md`. If a similar skill exists,
   extend it instead of creating a new one.
2. **Check memory.** Read `memory/semantic/LESSONS.md` for related patterns.
3. **Draft the skill.** Create `skills/<name>/SKILL.md` with:
   - YAML frontmatter (name, version, triggers, tools, preconditions, constraints)
   - Plain-language instructions (destinations and fences, not driving directions)
   - A self-rewrite hook at the bottom
4. **Register it.** Add an entry to `skills/_index.md` and append a JSON line
   to `skills/_manifest.jsonl`.
5. **Log it.** Append a record to `memory/semantic/DECISIONS.md` explaining
   why this skill was created.

## What good skills look like
- State the destination ("verify tests pass before commit"), not the exact
  command sequence.
- Include 2–3 examples of correct behavior when it clarifies intent.
- Include 1 example of a failure and what was learned from it.
- Keep the whole file under 100 lines.

## Self-rewrite hook
After every 5 skills created, or on any failed creation:
1. Read the last 5 skillforge entries from episodic memory.
2. If better trigger patterns or constraint structures have emerged,
   update this file and the template it implies.
3. Commit: `skill-update: skillforge, <one-line reason>`.
