skill-creator · v0.4.0 · 2026-10-26 · sha256 9ddd690c411e71e9

skill-creator v0.4.0A

Immutable. This exact content never changes and is served at /api/v1/blob/9ddd690c411e71e9.

---
name: skill-creator
description: |
  Create a new IWE skill with proper frontmatter, gates, scaffold and verification.
  Use when the pilot says: /skill-creator or «создай скилл <name>».
  The skill enforces WP Gate precondition, Routing Gate, IntegrationGate hard-check,
  collects parameters in 5 short steps, generates a scaffold SKILL.md from a template,
  shows a draft, writes files, and reminds about verify-skill.sh.
version: 0.4.0
status: experimental
browser_safe: false
layer: L1
agents: single
interaction: multi-step
gates_required: [wp]
gates_enforced: [integration, routing]
gates_rationale: "wp — создание скилла = нетривиальный артефакт (>15 мин), требует согласованного РП до начала (WP Gate precondition). integration — новый скилл-обёртка над инструментом/ролью требует существующих DP.SC.* + DP.ROLE.* до реализации (IntegrationGate hard-block). routing — размещение (Claude/Kimi, project/user, L1-L3) есть решение Routing Gate до scaffold."
triggers:
  slash:
    - /skill-creator
  phrases:
    - "создай скилл <name>"
    - "новый скилл <name>"
routing:
  executor: sonnet
  deterministic: false
---

# /skill-creator — create an IWE skill

> **Scope:** create a new skill OR guide an update to an existing skill in `.claude/skills/` or `.kimi/skills/`.
> **Not in scope:** full re-scaffold without deleting the old `SKILL.md` first (delete manually, then call `/skill-creator` again); creating a WP; creating a Pack.
> **Role:** ad-hoc content-role «Инженер скиллов»; formalize in Pack if ≥3 skills/year.

## When to use

- Pilot wants a new skill for a repeated workflow.
- A new tool/agent/system needs a Service Clause + Role + SKILL.md.
- A skill needs promotion from author repo to `FMT-exocortex-template`.

## Preconditions (checked, not performed)

1. **WP Gate precondition.** The task must be attached to an agreed WP in the weekly plan or explicitly named by the pilot. `/skill-creator` does not conduct the WP Gate ritual itself.
2. **Routing Gate.** Decide target platform (Claude vs Kimi) and level (project vs user). Default: project-level `.claude/skills/` in the author repo.
3. **IntegrationGate hard-check.** `DP.SC.*` and `DP.ROLE.*` must exist in the PACK repo. If not, the skill stops and offers to create them. Bypass only by explicit pilot instruction «пропусти gate» — no code flag.

## Algorithm

### Step 1 — Check WP Gate precondition

Look up the current weekly plan (`current/WeekPlan W{N}.md`) or ask:

```
К какому РП привязано создание скилла?
```

If no WP is named and none matches the skill topic → stop:

```
Создание скилла требует согласованного РП. Сначала откройте РП через WP Gate.
```

### Step 2 — Routing Gate

Ask or infer:

| Question | Default |
|----------|---------|
| Claude или Kimi? | Claude |
| project-level или user-level? | project-level |
| governance-репо для учёта? | `${IWE_GOVERNANCE_REPO:-DS-strategy}` |

Target path:
- Claude project: `.claude/skills/<name>/`
- Kimi project: `.kimi/skills/<name>/`
- User level: `~/.claude/skills/<name>/` or `~/.kimi/skills/<name>/`

### Step 2.5 — Detect existing skill

Check whether `<target_path>/SKILL.md` already exists.

**If it exists** → switch to update mode. Do NOT re-scaffold. Show the pilot:

```
Скилл <name> уже существует (версия X.Y.Z).
Что обновить?
  [ ] description
  [ ] slash / phrase triggers
  [ ] version bump (current: X.Y.Z → new: ?)
  [ ] algorithm step (add / edit)
  [ ] bundled resource (add scripts/ references/ assets/)
  [ ] полный пересоздать → удалите SKILL.md вручную, затем запустите /skill-creator снова
  [ ] отмена → ничего не менять
```

Collect the pilot's choices. A requested description must contain at least 10 words; if shorter, explain the validation requirement and ask for an expanded wording before editing. Apply agreed changes directly to the existing `SKILL.md` via Edit.

Skip Steps 3–6 **unless** the pilot selected "bundled resource" or any change that expands the skill's scope or gates — in that case, run **Step 3 (IntegrationGate)** before applying.

If the pilot selected "algorithm step" or "bundled resource", ask question **4e (executor)** again and update the `routing:` block: a changed algorithm can make the recorded executor wrong, and nothing else detects that.

For Step 7 (register + verify): run `verify-skill.sh` always. Run `generate-skills-catalog.sh` only if frontmatter changed (name, description, triggers, version).

Version bump rule: bump patch for trigger / description edits; bump minor for algorithm changes **or adding a bundled resource**; bump major for gate or scope changes.

**If it does not exist** → continue to Step 3 (normal creation flow).

### Step 3 — IntegrationGate

Check PACK repo for files matching `DP.SC.*` and `DP.ROLE.*`. If missing:

```
Service Clause (DP.SC.*) и Role (DP.ROLE.*) не найдены.
Создайте их сейчас через /pack-new или соответствующий процесс.
Для продолжения без них скажите явно: «пропусти gate».
```

Stop until the gate is satisfied or explicitly bypassed by pilot words.

### Step 4 — Collect parameters (5 short steps)

**4a. Name and description**

```
Имя скилла (hyphen-case): <name>
Краткое описание — что делает и когда использовать:
```

The description must contain at least 10 words; count the YAML value, not surrounding metadata.

**4b. Agents and interaction axes**

```
agents: single | multi
interaction: one-shot | multi-step
```

**4c. Triggers**

```
slash-команды (через запятую):
фразовые триггеры (через запятую):
```

Keep phrase triggers narrow: include a skill name placeholder to avoid accidental activation.

**4d. Bundled resources**

```
Какие bundled resources нужны?
[ ] scripts/
[ ] references/
[ ] assets/
```

Default: `assets/` for scaffold template, `scripts/` for verify script.

**4e. Executor (`routing:` block, mandatory — issue #894)**

```
Какие части работы полностью заданы входами и правилами (их делает код),
а где нужно суждение модели?
executor: script | mcp-direct | haiku | sonnet | opus | agent | script+judgment
```

- `script` / `mcp-direct` — no model at run time; `script` needs `script_path`. Only these may set `deterministic: true`.
- `haiku` / `sonnet` / `opus` — a model does the work (the value names the tier); `agent` — a subagent, needs `model: haiku|sonnet|opus`.
- `script+judgment` — code does the formal part, a model the judgment; needs `model_step:` naming the step that needs the model.

Do not leave the answer to a default: the scaffold writes `executor: TODO` until it is chosen, and verification fails on it.

### Step 5 — Generate scaffold

Choose scaffold template based on skill complexity:
- **Minimal** (`assets/skill-scaffold-minimal.md`): single-step skills without external gates
- **Full** (`assets/skill-scaffold-full.md`): multi-step skills with Preconditions and Bundled resources

Copy chosen template to target path and substitute:
- `{{name}}`, `{{description}}`, `{{version}}` (default `0.1.0`), `{{status}}` (default `experimental`)
- `{{agents}}`, `{{interaction}}`, `{{layer}}`
- `{{slash_triggers}}`, `{{phrase_triggers}}`
- `{{gates_rationale}}` — required when `gates_required` and `gates_enforced` are both empty
- `{{executor}}`, `{{deterministic}}`, `{{routing_extra}}` — from 4e (`scaffold-init.sh --executor … [--deterministic true] [--script-path …] [--model …] [--model-step …]`)

Create selected bundled resource directories with placeholder files.

### Step 6 — Show draft

Print generated `SKILL.md` and file list to stdout. No P5 question. Pilot can cancel with:

```
/skill-creator undo
```

Undo works only before next commit or within 15 minutes.

### Step 7 — Write files, register, verify

Write files to target path. Then regenerate the catalog and run verify:

```bash
# Run from the workspace root. Set these two paths from the routing decision;
# creator_dir is the directory containing THIS instruction, not the new skill.
skills_dir=.claude/skills
creator_dir=.claude/skills/skill-creator
workspace="$PWD"
template_root="${IWE_TEMPLATE:-$workspace/FMT-exocortex-template}"
if [ -f "$workspace/update-manifest.json" ] && [ -f "$workspace/scripts/generate-skills-catalog.sh" ]; then
  template_root="${IWE_TEMPLATE:-$workspace}"
fi
catalog_script="$workspace/scripts/generate-skills-catalog.sh"
if [ ! -f "$catalog_script" ]; then
  catalog_script="$template_root/scripts/generate-skills-catalog.sh"
fi
catalog_output="$(dirname "$skills_dir")/skills-catalog.yaml"
if ! IWE_WORKSPACE="$workspace" bash "$catalog_script" \
  --skills-dir "$skills_dir" --output "$catalog_output"; then
  echo "Catalog generation failed; verification was not run." >&2
  exit 1
fi
IWE_WORKSPACE="$workspace" IWE_TEMPLATE="$template_root" \
  bash "$creator_dir/scripts/verify-skill.sh" <name> "$skills_dir"
```

Both commands must pass before the skill is considered created. For Kimi targets set `skills_dir=.kimi/skills`; if this instruction is installed there too, set `creator_dir=.kimi/skills/skill-creator`. If either tool is absent, stop with the missing path rather than claiming verification.

The verifier uses the shared workspace `scripts/lib/find-python3.sh` and the declared PyYAML and markdown-it-py dependencies in `requirements.txt`. Metadata must be the first complete YAML block; duplicate keys, invalid types, and empty required values fail. Required Markdown sections must be real headings outside code examples. Bundled resources are checked in `scripts/`, `assets/`, and `references/`.

Tell the user where the new skill lives and that nothing preserves it (issue #873): a
project-local skill under `.claude/skills/<name>/` is usually outside git and outside the
`day-close.sh` backup, and `update.sh` neither erases nor carries it over. Until the template
owner picks a backup model, suggest keeping a copy in a git repository the user controls.

For skills with `interaction: multi-step`: run `/vdv audit` on the Algorithm section.
Not a gate — does not block creation — but catches steps with missing Input/Output linkage
before the skill is used in practice.

## Bundled resources

- `assets/skill-scaffold-minimal.md` — scaffold for single-step skills without external gates
- `assets/skill-scaffold-full.md` — scaffold for multi-step skills with Preconditions and Bundled resources
- `scripts/verify-skill.sh` — CLI wrapper using the shared Python resolver
- `scripts/verify-skill.py` — validates YAML metadata, gates, real sections, bundled resources, templates and platform-specific L1 location

## Known schema gaps

Fields used by some existing skills but not yet in the standard frontmatter schema:

- `argument-hint` — CLI-style hint for script-executor skills (e.g. agent-fault, apply-captures). Encodes the argument contract. Keep until schema is extended or absorbed into `description`.
- `routing.executor` — indicates whether the skill runs via `script`, `sonnet`, or another executor. The block is mandatory: `verify-skill.sh` and the template CI check it with the catalog generator's own rules (`generate-executor-catalog.py --validate-skill`, issue #894). Whether the chosen executor is the right one (code vs judgment) stays a review decision; the check only catches a declaration that contradicts the rules.

Until standardized: leave these fields as-is in existing skills; do not remove during Step 2.5 updates.

## Known tool gaps

- **`content-audit.sh` coverage (Ф9)**: audit script checks 5 structural criteria (gates_rationale, Algorithm section, step headings ≥3, step content ≥2 lines, When-to-use section). 7 YELLOW skills (single C3 issue) are simple alias/mode skills without numbered step headings. This is structural noise, not content error — these skills are functionally correct. See `scripts/content-audit.sh` for full output.

## Anti-patterns

- Do not create a skill without a linked WP.
- Do not bypass IntegrationGate with a code flag.
- Do not put wide phrase triggers like «надо сделать скилл».
- Run `generate-skills-catalog.sh` after writing files (Step 7) — not before, not manually.
- Do not make the skill verify itself; use `scripts/verify-skill.sh`.
- Do not skip `verify-skill.sh` after editing an existing skill — always run it after any update.
- Do not re-scaffold for minor updates (triggers, description, version bump, algorithm); use Step 2.5 update mode instead. Exception: platform or layer change (e.g. Claude→Kimi, L1→L3) requires a new path and a fresh scaffold — delete old SKILL.md first.
- Do not forget version bump when changing gates, scope, or algorithm steps (bump minor or major).

## Verification

After creation, run:

```bash
bash .claude/skills/skill-creator/scripts/verify-skill.sh <skill-name> .claude/skills
```

Expected result: PASS with checks for: valid YAML frontmatter, description of at least 10 words, recognized non-empty triggers, `gates_required`/`gates_enforced` fields with valid enum values, bundled resource files exist, scaffold templates valid, L1 skills present in FMT.

<!-- USER-SPACE -->
<!-- /USER-SPACE -->