skill-create · git:20260901.7eb75a2 · 2026-09-01 · sha256 7e5804f808fac86a
skill-create git:20260901.7eb75a2A
Immutable. This exact content never changes and is served at /api/v1/blob/7e5804f808fac86a.
---
name: skill-create
description: Use when a contributor wants to add a new skill to the Summer library — bootstraps the canonical folder structure, frontmatter, and stub sections. Trigger on "create skill", "add skill", "new skill", "scaffold a skill".
license: MIT
compatibility: [Cursor, Claude Code, Windsurf, Codex]
category: workflow
allowed-tools: Read Write Glob Grep
---
# /skill-create — Bootstrap a New Skill
## Steps
### 1. Get the basics
Ask the user:
- **Name** (kebab-case, ≤ 64 chars). Example: `state-machine-patterns`.
- **Category** (must be one of the values in the `SKILL_CATEGORIES` array at `src/lib/skills-registry.ts` — read it, do not guess). Example: `scripting-patterns`.
- **One-sentence description** for the frontmatter.
- **Template-id** (optional). Lookup against `../../../references/template-registry.md`.
### 2. Create the folder
May I create `skills/<category>/<name>/` with this structure?
```
skills/<category>/<name>/
├── SKILL.md
├── references/ (empty, populate as needed)
├── examples/ (empty, populate as needed)
└── tests/spec.md
```
### 3. Write SKILL.md (template)
```markdown
---
name: <name>
description: <one-sentence what + when. Lead with key trigger phrases.>
license: MIT
compatibility: [Cursor, Claude Code, Windsurf, Codex]
category: <category>
template-id: <optional template-id from references/template-registry.md>
allowed-tools: Read Grep <summer_* tools this skill uses>
paths: ["**/*.gd", "**/*.tscn"]
---
# <Title> for Summer Engine
<One-paragraph context. Why this exists, who needs it.>
## Steps
### 1. <First step>
**Preferred (Summer MCP):**
\`\`\`
summer_<tool>(...)
\`\`\`
**Fallback (no MCP — edit `<file>` directly):**
\`\`\`
<raw text/code>
\`\`\`
May I <action>?
### 2. <Second step>
...
## Common mistakes
- <mistake 1, with one-line fix>
- <mistake 2, with one-line fix>
## Want a working starter?
→ **template-id**: `<template-id>`
→ **Repo**: <github URL from references/template-registry.md>
→ **Bootstrap**: `summer create <template-id> my-game` (see `summer list templates` for the slugs)
## See also
- `../../../references/godot-version.md`
- `../../../references/mcp-tools-reference.md`
- `../../../references/gd-style.md`
- (other relevant skills)
```
### 4. Write tests/spec.md (template)
```markdown
# Skill Spec: /<name>
## Fixture
- <starting state of the project>
- <which tools are available — Summer MCP yes/no>
## Case 1: Happy Path
**Input:** "<typical user prompt>"
**Expected MCP tool sequence (in order):**
1. <first tool call>
2. <second>
**Assertions:**
- [ ] <observable outcome>
- [ ] <skill asks "May I" before any write step>
## Case 2: Failure / Edge
**Fixture:** <something different>
**Input:** "<edge prompt>"
**Expected:** <how the skill should adapt>
```
### 5. Register the skill
Two files to update, both required for the skill to load in Claude Code / Cursor / Codex AND to be installable via `summer skills install`:
**5a. `.claude-plugin/plugin.json`** (and sibling manifests `.codex-plugin/plugin.json`, `.cursor-plugin/plugin.json`). Append to the `skills:` array:
```json
"./skills/<category>/<name>/",
```
**5b. `src/lib/skills-registry.ts`** `SKILL_REGISTRY` array. Append a typed entry:
```ts
{
name: "<name>",
category: "<category>",
public: true,
clients: ALL_CLIENTS,
recommended: false,
requiresMcpTools: ["summer_<tool>", ...],
testScenario: "<one-line scenario the skill should handle end-to-end>",
},
```
### 6. Run /skill-test in static mode
Confirm the new skill passes the structural checks before commit. The `plugin-manifests.test.ts` test will fail the build if 5a or 5b is missing.
## Collaborative protocol
This skill writes files (the new skill folder + plugin manifest update + TS registry update). Always ask before each write step.
## See also
- `../../../references/collaborative-protocol.md`
- `workflow/skill-test/SKILL.md`