Skills
Skills are the project's reusable agent playbooks — a SKILL.md per folder under
.claude/skills/, each with name/description frontmatter and a markdown body.
The squad already reads them: an agent carries the slugs you assign in its spec,
and the matching documents ride along in its system prompt (capped per skill).
This window is the human-facing read of the same shelf, plus a way to add to it.
The window
Open it from View ▸ Skills… (⌥⌘K) or Window ▸ Open Skills Window. It pops into its own free-floating window, the same way the Squad, Terminal, and Tasks panels tear off.
- Left lists every installed skill — display name over slug — read from
.claude/skills/. The count sits in the header. - Right reads the selected skill: its title, the path to its
SKILL.md, the description (when it applies), and the full body. Edit in editor opens the file in a tab for real changes — the window itself never rewrites an existing skill.
Authoring a new skill
New skill swaps the detail pane for a short form: a name (the slug previews
live underneath as you type), a description of when the skill applies, and the
markdown body. Create skill writes .claude/skills/<slug>/SKILL.md with the
frontmatter filled in, then selects it. A blank name or a slug that already
exists is refused rather than clobbering — editing lands on the file directly.
Where the logic lives
SkillCatalog (Skills/SkillCatalog.swift) is the pure seam: frontmatter
parsing, slugifying a name, the SKILL.md template, and the create-with-guard.
It reuses SquadSkills.directory as the single .claude/skills/ location, so
the browser and the squad's prompt injection always read the same shelf.
SkillsView is just the window. The parsing, slug rules, and create guards are
unit-tested (SkillCatalogTests).