agent-browser
Browser automation using Vercel's agent-browser CLI. Use when you need to interact with web pages, fill forms, take screenshots,…
Author a new Dex skill that actually fires and passes the quality bar. Runs a collision check, classifies the shape, writes a router-grade description, generates the real package (SKILL.md + evals), and grades it with `skill-score` before calling it done. Use when the user says
Claude Code
$ npx -y skills add davekilleen/Dex --skill create-skill --agent claude-code
Codex
$ npx skills add davekilleen/Dex --skill create-skill -a codex -y
Cursor
$ npx skills add davekilleen/Dex --skill create-skill -a cursor -y
Gemini CLI
$ npx skills add davekilleen/Dex --skill create-skill -a gemini-cli -y
GitHub Copilot
$ npx skills add davekilleen/Dex --skill create-skill -a github-copilot -y
OpenCode
$ npx skills add davekilleen/Dex --skill create-skill -a opencode -y
Windsurf
$ npx skills add davekilleen/Dex --skill create-skill -a windsurf -y
name: create-skill
description: "Author a new Dex skill that actually fires and passes the quality bar. Runs a collision check, classifies the shape, writes a router-grade description, generates the real package (SKILL.md + evals), and grades it with `skill-score` before calling it done. Use when the user says 'make a skill', 'I want a /command for X', 'turn this into a skill'. A skill the user builds for themselves is saved under `.claude/skills-custom/` (protected from updates) and coached, never blocked — ask for it by its trigger phrases; do not offer `/{name}` because Claude Code does not dispatch that folder. A first-party skill under `.claude/skills/` can be `/{name}` once the host lists it. Not for connecting an external tool; use `create-mcp`. Not for grading a skill that already exists; use `skill-score`."Author a skill the way the router and a real user will experience it: it must **fire when it should** (the description is the router) and **do the job safely and well when it fires** (the body is a contract, not a how-to essay). This skill runs a real authoring sequence — collision → classify → contract → generate → validate → score — and does not declare done until `skill-score` has graded the package.
**Slash-path honesty:** Claude Code only dispatches `/name` for skills it loaded from `.claude/skills/`, `~/.claude/skills/`, `.claude/commands/`, or a plugin (`/plugin-name:skill-name`). A user skill under `.claude/skills-custom/` is **not** on that list. Never tell the user to type `/{name}` or `/{name}-custom` for a skills-custom folder. Ask them to use the trigger phrases instead.
Governing principle: **hard on Core, gentle on the user's own creations.** A first-party (Core) skill must pass `skill-score ≥ 85` to ship — a hard gate we hold ourselves to. A skill the user writes for themselves is *coached, never blocked*: show the score, name the one change that would make it fire, offer to make it — but always create/keep their skill if they want it.
Compose, don't fork: `anthropic-skill-creator` (vendored) is the general skill-authoring guide; the Dex-specific delta lives in `references/dex-skill-standard.md`. Read that reference before generating the package.
---
Ask the user for:
1. A short name (e.g. "meeting-notes", "board-update") — hyphens, no spaces 2. What it should do for you, in 1–2 sentences 3. When you'd want it to fire — the phrases you'd actually say
Point 3 is not optional — it is the raw material for the WHEN trigger. If the user only gives 1–2, ask for the trigger phrases before continuing.
Infer from context; if genuinely unsure, ask one line: "Is this just for you, or something Dex should ship to everyone?"
The most common failure is a skill the router can't tell apart from one that already exists. Check first — run `skill-score --all` (its portfolio mode lists every routing collision and the nearest neighbor of each skill; it owns and runs the scorer, so you don't re-implement it here).
Read the `routing collisions` list and find the nearest neighbor to the intended job. Then decide:
If the scorer can't run (no `python3`), fall back to reading the descriptions in `.claude/skills/*/SKILL.md` and `.claude/skills-custom/*/SKILL.md` by hand and say you did so — never skip the collision check silently.
Pick the shape(s) — a skill can be more than one — because it decides the contract the body must carry (see `references/dex-skill-standard.md`):
This is the highest-leverage line in the whole package. Follow the template in `references/dex-skill-standard.md`. It must:
1. **Lead with the outcome** in plain language — what the user gets, no internal function/file names. 2. **Carry a WHEN trigger** — concrete situations AND the user phrases from Step 1 ("Use when the user says…"). 3. **Carry an anti-trigger** — "Not for X; use Y" naming the real nearest neighbor from Step 3.
One personal Dex, built around your work. Keep your priorities, people, meeting notes and tasks in a folder you own. Work with Dex through your AI app to plan the day, prepare for a meeting or follow through on a promise.
Browser automation using Vercel's agent-browser CLI. Use when you need to interact with web pages, fill forms, take screenshots,…
Build applications where agents are first-class citizens. Use this skill when designing autonomous agents, creating MCP tools,…
This skill should be used when writing Ruby gems following Andrew Kane's proven patterns and philosophy. It applies when creating…
This skill should be used before implementing features, building components, or making changes. It guides exploring user intent,…
Capture solved problems as categorized documentation with YAML frontmatter for fast lookup
Expert guidance for creating, writing, and refining Claude Code Skills. Use when working with SKILL.md files, authoring new…
Shape output for a reader with ADHD: lead with the next action, number multi-step work, restate state across turns, suppress…
Set up the owner profile so a personal agent knows who it works for (first-run setup, \"get to know me\"), or distill colleague,…