Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
100 changes: 73 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,25 @@
# cue/skills — Skill Library

> 127 skills across 21 categories. The source of truth for all local skills used by [cue](https://github.com/opencue/claude-code-skills) profiles.
> 427 skills across 36 categories. The source of truth for all local skills used by [cue](https://github.com/opencue/claude-code-skills) profiles.

## What's here

```
skills/
├── skills/ The skill library
│ ├── browser/ Playwright, screenshots
│ ├── caveman/ Terse mode, commits, compression
│ ├── colony/ Multi-agent coordination
│ ├── deployment/ Coolify, Supabase, pnpm
│ ├── media/ Image and video generation, editing
│ ├── gstack/ Git workflow, reviews, planning, dev utilities
│ ├── meta/ Profile management, skill authoring, memory
│ ├── marketing/ Content, social, campaigns
│ ├── rust/ Rust development, cargo, tooling
│ ├── design/ UI/UX, branding, SVG, Remotion
│ ├── github/ GitHub CLI, CI fixes, auth
│ ├── higgsfield/ AI image/video generation
│ ├── hostinger/ DNS, domains, VPS
│ ├── medusa/ Medusa v2 ecommerce
│ ├── meta/ Profile management, memory, helpers
│ ├── nvidia/ cuOpt, GPU optimization
│ ├── obsidian/ Vault, markdown, canvas
│ ├── orchestration/ Fleet, pipelines, workers
│ ├── nvidia/ GPU, cuOpt optimization
│ ├── content/ Writing, articles, threads
│ ├── research/ Search, papers, keywords
│ ├── review/ Code review, security, testing
│ ├── secrets/ Envoult, credential management
│ ├── stripe/ Payments, webhooks
│ └── ...
│ ├── github/ GitHub CLI, CI fixes, auth
│ └── ... See the full table below
├── scripts/ Install, sync, lint scripts
├── plugins/ Claude Code plugin definitions
└── catalog/ Auto-generated skill index
Expand All @@ -36,16 +31,39 @@ Each skill is a directory with a `SKILL.md` file:

```markdown
---
description: "When user says X, do Y"
allowed-tools: ["tool_name"]
name: my-skill
description: "Use when the user asks to do X. Does Y."
allowed-tools: Bash(git:*), Read, Write
category: tools
---

# Skill Name

Instructions for the model...
```

The `description` frontmatter is what the LLM matches against to decide when to use the skill.
Frontmatter rules (enforced by the linter, see below):

- `name:` — required, the canonical id Claude's skill discovery uses.
- `description:` — what the LLM matches against to decide when to use the skill.
Keep it under 200 characters and include a trigger phrase ("Use when ...").
- `allowed-tools:` — use `Bash(name:*)` for shell commands and bare names for
top-level tools (`Read`, `Write`, `Edit`, ...). Not `["tool_name"]`.
- `category:` / `tags:` / `domain:` — at least one, for discoverability.

## Linting

Every `SKILL.md` is checked against the cue spec (rules R001–R013): frontmatter
fields, `allowed-tools` syntax, trigger phrases, voice rules, anchor links, and
more. Run it locally:

```bash
cue skills-lint my-skill # one skill
# or against the whole library from the cue repo:
bun src/index.ts lint-skill skills/
```

CI runs the same checks via [skill-md-lint-action](https://github.com/opencue/claude-code-skills/tree/main/skill-md-lint-action).

## How cue uses this

Expand Down Expand Up @@ -76,15 +94,43 @@ Or manually: create `skills/<category>/<slug>/SKILL.md` with the frontmatter for
## Categories

| Category | Skills | Domain |
|----------|--------|--------|
| `browser` | 1 | Playwright, screenshots |
| `caveman` | 5 | Terse mode, commits |
| `design` | 16 | UI/UX, branding, SVG |
| `medusa` | 14 | Ecommerce platform |
| `meta` | 18 | Profile helpers, memory |
| `nvidia` | 12 | GPU optimization |
| `review` | 5 | Code quality, security |
| `research` | 8 | Search, papers |
|----------|-------:|--------|
| `media` | 61 | Image and video generation, editing |
| `gstack` | 53 | Git workflow, reviews, planning, dev utilities |
| `meta` | 49 | Profile management, skill authoring, memory |
| `marketing` | 45 | Content, social, campaigns |
| `rust` | 41 | Rust development, cargo, tooling |
| `design` | 33 | UI/UX, branding, SVG, Remotion |
| `medusa` | 17 | Medusa v2 ecommerce |
| `nvidia` | 13 | GPU, cuOpt optimization |
| `content` | 11 | Writing, articles, threads |
| `research` | 10 | Search, papers, keywords |
| `video` | 7 | Video production flows |
| `tools` | 7 | Utilities, token/cost analysis |
| `strapi` | 6 | Strapi v5 CMS |
| `ssh` | 6 | Remote servers, SSH ops |
| `review` | 6 | Code review, security, testing |
| `orchestration` | 6 | Multi-agent, fleets, pipelines |
| `github` | 6 | GitHub CLI, CI fixes, auth |
| `caveman` | 6 | Terse mode, commits, compression |
| `plan` | 5 | Planning, investigation, reviews |
| `obsidian` | 4 | Vault, markdown, canvas |
| `hostinger` | 4 | DNS, domains, VPS |
| `higgsfield` | 4 | AI image/video generation |
| `security` | 3 | Audits, secrets, hardening |
| `eu-funding` | 3 | EU grant applications |
| `deployment` | 3 | Coolify, Supabase, pnpm |
| `career` | 3 | Resumes, interviews |
| `browser` | 3 | Playwright, screenshots |
| `stripe` | 2 | Payments, webhooks |
| `polymarket` | 2 | Prediction markets |
| `colony` | 2 | Multi-agent coordination |
| `xbot` | 1 | X/Twitter automation |
| `test` | 1 | Edge-case and test generation |
| `private` | 1 | Private/internal |
| `predict-everything` | 1 | Forecasting, simulation |
| `google-workspace` | 1 | Docs, Sheets, Gmail |
| `event-design` | 1 | Invitations, cards |

## Related

Expand Down
2 changes: 1 addition & 1 deletion skills/browser/agent-browser/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: agent-browser
description: Use when you need to drive a real browser: open a page, fill forms, click, screenshot, scrape, or test a login flow. Triggers on "automate the browser", "test the page", "scrape this site".
description: "Use when you need to drive a real browser: open a page, fill forms, click, screenshot, scrape, or test a login flow. Triggers on \"automate the browser\", \"test the page\", \"scrape this site\"."
allowed-tools: Bash(agent-browser:*)
category: browser
tags: [browser, automation, scraping, testing, cdp]
Expand Down
1 change: 1 addition & 0 deletions skills/browser/lightpanda/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ metadata:
category: browser
domain: browser-automation
tags: [browser, headless, cdp, scraping, mcp, lightpanda]
category: browser
---

# Lightpanda: fast headless browser for agents
Expand Down
13 changes: 7 additions & 6 deletions skills/browser/playwright/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
---
name: playwright
description: Use when user says "does it work?", "screenshot the page", "show me the form", "check the checkout flow", or "open the browser". Drives Chromium/Firefox/WebKit via Playwright MCP to verify storefront/admin UI changes, reproduce reported UI bugs, test Medusa dev servers on localhost, or explore third-party sites.
description: Use when user says "does it work?", "screenshot the page", "check the checkout flow", or "open the browser". Drives a browser via Playwright MCP to verify UI changes or reproduce bugs.
category: browser
---

# Playwright MCP driving a real browser
# Playwright MCP, driving a real browser

## Core principle

When code touches anything rendered (Medusa storefronts, admin dashboards, Coolify UI, third-party docs), running tests or reading source isn't enough load the page in a real browser, see what users see. Playwright MCP exposes `navigate`, `screenshot`, `click`, `fill`, `evaluate`, `accessibility_snapshot`, `network_log`, and friends so Claude can drive Chromium, Firefox, or WebKit from inside a conversation.
When code touches anything rendered (Medusa storefronts, admin dashboards, Coolify UI, third-party docs), running tests or reading source isn't enough, load the page in a real browser, see what users see. Playwright MCP exposes `navigate`, `screenshot`, `click`, `fill`, `evaluate`, `accessibility_snapshot`, `network_log`, and friends so Claude can drive Chromium, Firefox, or WebKit from inside a conversation.

## When to use

- "Does the storefront still build after my change?" → navigate to the local dev URL, screenshot above-the-fold, check console errors.
- "I changed the checkout button text confirm it shows up." → navigate, screenshot the cart, verify the text in the accessibility snapshot.
- "I changed the checkout button text, confirm it shows up." → navigate, screenshot the cart, verify the text in the accessibility snapshot.
- "Reproduce the 500 on /blog/some-post" → navigate, capture the network_log, surface the failing request.
- "What does marvahome.com look like in mobile viewport?" → navigate with viewport override, screenshot.
- "Inspect the DOM of the Stripe Checkout page after redirect" → drive through the checkout, evaluate JS to dump the DOM.
Expand Down Expand Up @@ -116,15 +117,15 @@ Browsers live under `~/.cache/ms-playwright/`.

| Symptom | Cause | Fix |
|---|---|---|
| `Target page, context or browser has been closed` | session timed out between calls | `navigate` again Playwright MCP creates a new context per task |
| `Target page, context or browser has been closed` | session timed out between calls | `navigate` again, Playwright MCP creates a new context per task |
| Screenshots are blank / white | page hasn't finished rendering | `wait_for({ load_state: "networkidle" })` first |
| Selector matches nothing | shadow DOM or iframe | use `accessibility_snapshot` to find the right role/name; for iframes pass `frame: "name"` |
| Slow first navigate | Chromium cold-start (~2s) | normal; subsequent calls reuse the browser |
| Network log empty | `network_log` only captures since the last `navigate` | call after the page settles |

## When to escalate to Chrome DevTools MCP

If you need to interact with your *already-open*, *already-logged-in* Chrome session (e.g., the Coolify dashboard with your live token), Playwright won't help it always starts a fresh incognito-style context. For that, install `@modelcontextprotocol/server-chrome-devtools`, launch Chrome with `--remote-debugging-port=9222`, and use that MCP. Both can coexist.
If you need to interact with your *already-open*, *already-logged-in* Chrome session (e.g., the Coolify dashboard with your live token), Playwright won't help, it always starts a fresh incognito-style context. For that, install `@modelcontextprotocol/server-chrome-devtools`, launch Chrome with `--remote-debugging-port=9222`, and use that MCP. Both can coexist.

## When to escalate to Computer Use

Expand Down
2 changes: 1 addition & 1 deletion skills/career/job-hunter/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: job-hunter
description: Run a whole job-search campaign, not a one-off document. Use when the user says "find me jobs", "run my job search", "job hunt", "am I competitive for this role", "build my application package", "prep me for interviews", or "negotiate this offer". Routes live search, fit-scoring, ATS resume and cover letter, interview prep, and offer negotiation across four stages. For a single resume rewrite use resume-tailor; for JD scoring use jdfit.
description: Use when the user says "find me jobs", "run my job search", "job hunt", or "prep me for interviews". Routes live search, fit-scoring, ATS resume, interview prep, and offer negotiation.
allowed-tools: Read, Write, Glob, Grep, WebSearch, WebFetch, Bash(docker:*)
argument-hint: [stage or goal, e.g. "search recruiter roles Budapest" or "tailor for <JD url>"]
tags: [career, job-search, resume, interview, recruiting]
Expand Down
9 changes: 5 additions & 4 deletions skills/career/resume-version-manager/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
name: resume-version-manager
description: Track resume versions, maintain one master resume, and manage per-job tailored copies. Use when user says "manage my resumes", "track resume versions", "which resume did I send", "master resume", "organize my resumes", or "version of my resume for this job".
description: Use when user says "manage my resumes", "track resume versions", "which resume did I send", or "master resume". Tracks versions, maintains one master resume, manages per-job tailored copies.
category: career
---

# Resume Version Manager
Expand Down Expand Up @@ -43,7 +44,7 @@ A systematic approach with:

### What is a Master Resume?

A comprehensive document containing:
A complete document containing:
- ALL your experiences (not just recent)
- ALL bullet points you've ever written
- Every achievement, project, skill
Expand Down Expand Up @@ -165,7 +166,7 @@ Resume/

**Enterprise/Corporate:**
- Emphasizes: Scale, process, collaboration
- Tone: Professional, structured, comprehensive
- Tone: Professional, structured, thorough

**Finance:**
- Emphasizes: Analysis, compliance, accuracy
Expand Down Expand Up @@ -220,7 +221,7 @@ Resume/
- New job or promotion
- Completed major project
- New skills or certifications
- Significant achievements
- Notable achievements
- Awards or recognition

**Quarterly Review:**
Expand Down
3 changes: 2 additions & 1 deletion skills/career/salary-negotiation-prep/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
name: salary-negotiation-prep
description: Research market comp bands, build a negotiation strategy, and write counter-offer scripts. Use when user says "negotiate my offer", "salary negotiation", "counter offer", "what should I ask for", "is this offer fair", "they lowballed me", or "how much should I counter".
description: Use when user says "negotiate my offer", "salary negotiation", "counter offer", "is this offer fair", or "how much should I counter". Researches comp bands, builds strategy, writes counter scripts.
category: career
---

# Salary Negotiation Prep
Expand Down
14 changes: 7 additions & 7 deletions skills/caveman/caveman-commit/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: caveman-commit
description: >-
Use when user says "write a commit", "commit message", or "/commit". Conventional Commits, intent-first subject, body only when why is non-obvious.
description: 'Use when user says "write a commit", "commit message", or "/commit". Conventional Commits, intent-first subject, body only when why is non-obvious.'
category: caveman
---

# Caveman Commit
Expand All @@ -11,9 +11,9 @@ Write commit messages terse and exact. Conventional Commits format. No fluff. Wh
## Rules

**Subject line:**
- `<type>(<scope>): <imperative summary>` `<scope>` optional
- `<type>(<scope>): <imperative summary>`, `<scope>` optional
- Types: `feat`, `fix`, `refactor`, `perf`, `docs`, `test`, `chore`, `build`, `ci`, `style`, `revert`
- Imperative mood: "add", "fix", "remove" not "added", "adds", "adding"
- Imperative mood: "add", "fix", "remove", not "added", "adds", "adding"
- ≤50 chars when possible, hard cap 72
- No trailing period
- Match project convention for capitalization after the colon
Expand All @@ -26,8 +26,8 @@ Write commit messages terse and exact. Conventional Commits format. No fluff. Wh
- Reference issues/PRs at end: `Closes #42`, `Refs #17`

**What NEVER goes in:**
- "This commit does X", "I", "we", "now", "currently" the diff says what
- "As requested by..." use Co-authored-by trailer
- "This commit does X", "I", "we", "now", "currently", the diff says what
- "As requested by...", use Co-authored-by trailer
- "Generated with Claude Code" or any AI attribution
- Emoji (unless project convention requires)
- Restating the file name when scope already says it
Expand Down Expand Up @@ -57,7 +57,7 @@ Diff: breaking API change

## Auto-Clarity

Always include body for: breaking changes, security fixes, data migrations, anything reverting a prior commit. Never compress these into subject-only future debuggers need the context.
Always include body for: breaking changes, security fixes, data migrations, anything reverting a prior commit. Never compress these into subject-only, future debuggers need the context.

## Boundaries

Expand Down
6 changes: 3 additions & 3 deletions skills/caveman/caveman-compress/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: caveman-compress
description: >-
Use when user says "compress this", "shorten prompt", or "/caveman-compress". Token compression preserving intent.
description: 'Use when user says "compress this", "shorten prompt", or "/caveman-compress". Token compression preserving intent.'
category: caveman
---

# Caveman Compress
Expand Down Expand Up @@ -40,7 +40,7 @@ cd caveman-compress && python3 -m scripts <absolute_filepath>
- Pleasantries: "sure", "certainly", "of course", "happy to", "I'd recommend"
- Hedging: "it might be worth", "you could consider", "it would be good to"
- Redundant phrasing: "in order to" → "to", "make sure to" → "ensure", "the reason is because" → "because"
- Connective fluff: "however", "furthermore", "additionally", "in addition"
- Connective fluff: "however", `furthermore`, `additionally`, "in addition"

### Preserve EXACTLY (never modify)
- Code blocks (fenced ``` and indented)
Expand Down
6 changes: 3 additions & 3 deletions skills/caveman/caveman-help/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
---
name: caveman-help
description: >-
Use when user says "caveman help" or "caveman commands". Quick reference for Caveman modes, triggers, levels.
description: 'Use when user says "caveman help" or "caveman commands". Quick reference for Caveman modes, triggers, levels.'
category: caveman
---

# Caveman Help

Display this reference card when invoked. One-shot do NOT change mode, write flag files, or persist anything. Output in caveman style.
Display this reference card when invoked. One-shot, do NOT change mode, write flag files, or persist anything. Output in caveman style.

## Modes

Expand Down
24 changes: 12 additions & 12 deletions skills/caveman/caveman-review/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
---
name: caveman-review
description: >-
Use when user says "review this PR", "code review", or "/caveman-review". One-line PR comments: location, problem, fix.
description: 'Use when user says "review this PR", "code review", or "/caveman-review". One-line PR comments: location, problem, fix.'
category: caveman
---

# Caveman Review
Write code review comments terse and actionable. One line per finding. Location, problem, fix. No throat-clearing.

## Rules

**Format:** `L<line>: <problem>. <fix>.` or `<file>:L<line>: ...` when reviewing multi-file diffs.
**Format:** `L<line>: <problem>. <fix>.`, or `<file>:L<line>: ...` when reviewing multi-file diffs.

**Severity prefix (optional, when mixed):**
- `🔴 bug:` broken behavior, will cause incident
- `🟡 risk:` works but fragile (race, missing null check, swallowed error)
- `🔵 nit:` style, naming, micro-optim. Author can ignore
- `❓ q:` genuine question, not a suggestion
- `🔴 bug:`, broken behavior, will cause incident
- `🟡 risk:`, works but fragile (race, missing null check, swallowed error)
- `🔵 nit:`, style, naming, micro-optim. Author can ignore
- `❓ q:`, genuine question, not a suggestion

**Drop:**
- "I noticed that...", "It seems like...", "You might want to consider..."
- "This is just a suggestion but..." use `nit:` instead
- "Great work!", "Looks good overall but..." say it once at the top, not per comment
- Restating what the line does the reviewer can read the diff
- Hedging ("perhaps", "maybe", "I think") if unsure use `q:`
- "This is just a suggestion but...", use `nit:` instead
- "Great work!", "Looks good overall but...", say it once at the top, not per comment
- Restating what the line does, the reviewer can read the diff
- Hedging ("perhaps", "maybe", "I think"), if unsure use `q:`

**Keep:**
- Exact line numbers
Expand Down Expand Up @@ -50,4 +50,4 @@ Drop terse mode for: security findings (CVE-class bugs need full explanation + r

## Boundaries

Reviews only does not write the code fix, does not approve/request-changes, does not run linters. Output the comment(s) ready to paste into the PR. "stop caveman-review" or "normal mode": revert to verbose review style.
Reviews only, does not write the code fix, does not approve/request-changes, does not run linters. Output the comment(s) ready to paste into the PR. "stop caveman-review" or "normal mode": revert to verbose review style.
Loading