builtin-skills · git:20260420.0a86d5f · 2026-04-20 · sha256 9fa46cac09e1635b
builtin-skills git:20260420.0a86d5fA
Immutable. This exact content is served forever at /api/v1/blob/9fa46cac09e1635b.
--- name: builtin-skills description: Use when creating a new builtin skill for Crush, editing an existing builtin skill (internal/skills/builtin/), or when the user needs to understand how the embedded skill system works. --- # Builtin Skills Crush embeds skills directly into the binary via `internal/skills/builtin/`. These are always available without user configuration. ## How It Works - Each skill lives in `internal/skills/builtin/<skill-name>/SKILL.md`. - The tree is embedded at compile time via `//go:embed builtin/*` in `internal/skills/embed.go`. - `DiscoverBuiltin()` walks the embedded FS, parses each `SKILL.md`, and sets paths with the `crush://skills/` prefix (e.g., `crush://skills/jq/SKILL.md`). - The View tool resolves `crush://` paths from the embedded FS, not disk. - User skills with the same name override builtins (last occurrence wins in `Deduplicate()`). ## Adding a New Builtin Skill 1. Create `internal/skills/builtin/<skill-name>/SKILL.md` with YAML frontmatter (`name`, `description`) and markdown instructions. The directory name must match the `name` field. 2. No extra wiring needed — `//go:embed builtin/*` picks up new directories automatically. 3. Add a test assertion in `TestDiscoverBuiltin` in `internal/skills/skills_test.go` to verify discovery. 4. Build and test: `go build . && go test ./internal/skills/...` ## Existing Builtin Skills | Skill | Directory | Description | |-------|-----------|-------------| | `crush-config` | `builtin/crush-config/` | Crush configuration help | | `jq` | `builtin/jq/` | jq JSON processor usage guide |