
--- name: lint description: Health-check an LLM Wiki vault for issues — orphan pages, missing links, contradictions, stale content, frontmatter problems. Use when user wants to lint, check, audit, or health-check their wiki. argument-hint: [--vault <name>] [--fix] disable-model-invocation: true allowed-tools: Bash(git *) Read Write Edit Glob Grep --- # Lint Wiki Health-check a vault's wiki for structural and content issues. ## Usage ``` /lint --vault my-research /lint --vault my-research --f
Extract content from GitHub Discussion threads for wiki ingestion. Uses gh CLI GraphQL API, authenticated via gh auth.
Extract article content from dev.to posts for wiki ingestion. Uses dev.to public API, no auth required.
Graduate reusable knowledge from one vault to another (typically project vault to meta). Identifies cross-cutting learnings and files them into the target vault. Use when user wants to promote, graduate, transfer, or share knowledge between vaults.
--- name: query description: Ask questions against an LLM Wiki vault and get synthesized answers with citations. Optionally save answers back into the wiki. Use when user wants to query, ask, search, or explore their knowledge base. argument-hint: "<question>" [--vault <name>] [--save] disable-model-invocation: true allowed-tools: Bash(git *) Read Write Edit Glob Grep --- # Query Wiki Ask questions against a vault's wiki and get synthesized answers with citations. ## Usage ``` /query "What d
Read raw content of a GitHub gist from a URL or gist ID. Use when user shares a gist.github.com link, asks to read a gist, or references a gist ID.
Extract content from GitHub gists for wiki ingestion. Uses raw URL fetch, no auth required.
Extract post and comments from Reddit threads for wiki ingestion. Appends .json to any Reddit URL, no auth required for public subreddits.
Extract full text from X/Twitter posts for wiki ingestion. Uses FXTwitter API, no auth required.
--- name: search description: Search wiki pages using qmd (hybrid BM25/vector search) or grep fallback. Use when user wants to search, find, or look up content across their wiki vault. argument-hint: "<query>" [--vault <name>] disable-model-invocation: true allowed-tools: Bash(which *) Bash(brew *) Bash(cargo *) Bash(qmd *) Bash(grep *) Read Glob Grep --- # Search Wiki Search vault wiki pages using qmd (hybrid BM25/vector search with LLM re-ranking) or grep fallback. ## Usage ``` /search "de
Extract text from Office documents (Word, Excel, PowerPoint) for wiki ingestion. Lazy-installs pandoc on first use.
Clone a GitHub repo into the .reference/ folder for study and reference. Use when user wants to study a repo, clone for reference, look at someone's code, or pull down a project to learn from.
Extract text content from PDF files for wiki ingestion. Lazy-installs poppler on first use.
Read full text of an X/Twitter post from a URL. Use when user shares an x.com or twitter.com link, asks to read a tweet, or needs tweet content extracted.
Page type templates and frontmatter conventions for LLM Wiki pages. Reference skill loaded by ingest, query, and lint skills to ensure consistent wiki structure.
Extract transcript from YouTube videos for wiki ingestion. Lazy-installs yt-dlp on first use.
Process pasted text, notes, or local markdown files for wiki ingestion. No external dependencies.
First-time setup for the llm-wiki system. Checks tools, skills, and Obsidian. Use when setting up llm-wiki on a new machine.
--- name: slides description: Generate Marp presentation slide decks from wiki content. Use when user wants to create slides, a presentation, a deck, or export wiki knowledge as a talk. argument-hint: "<topic>" [--vault <name>] disable-model-invocation: true allowed-tools: Bash(which *) Bash(npx *) Bash(pnpm *) Bash(git *) Read Write Edit Glob Grep --- # Generate Slides Create Marp-format presentation slide decks from wiki content. ## Usage ``` /slides "LLM Knowledge Bases" --vault my-resear
Show status of all LLM Wiki vaults — page counts, source counts, last activity, and git status. Use when user wants to see vault status, list vaults, or check wiki health.
Import an existing Obsidian vault, markdown folder, or git repo as an llm-wiki vault. Moves content into vaults/, adds missing structure (index, log, CLAUDE.md, frontmatter). Use when user wants to import, adopt, migrate, or bring in an existing knowledge base.
Extract Hacker News threads (post + comments) for wiki ingestion. Uses Algolia HN API, no auth required.
Ingest local video files (meetings, screen recordings, presentations). Transcribes audio, extracts keyframes, creates structured wiki pages.
Extract transcript from a YouTube video as clean readable text. Use when user shares a youtube.com or youtu.be link and wants the transcript, content summary, or to read what was said.
Archive a completed vault by moving it out of the active vaults/ directory. Optionally promote reusable knowledge first. Use when user wants to archive, shelve, or finish a project vault.
Create a new LLM Wiki vault with proper directory structure, index, log, and conventions. Use when user wants to create a vault, start a new wiki, or set up a new knowledge base.
Extract readable content from a web URL for wiki ingestion. Handles article extraction, HTML-to-markdown conversion.
Ingest LinkedIn posts into the wiki. Supports pasted text or cookie-based auth for URL fetching.
Ingest a source into an LLM Wiki vault. Detects source type (URL, PDF, YouTube, tweet, gist, text), extracts content, creates wiki pages, updates index and log. Use when user wants to ingest, add, import, or process a source into their wiki.
--- name: compare-codebase-to-spec description: Audit drift between a spec and the actual codebase. Walks each requirement, ADR, milestone, and verification entry from the spec, checks the code, and emits an audit report with per-item status (✅ implemented, ⚠️ partial, ❌ missing, ➕ extra) plus a drift score. Optional PDF render. Use after each phase, before re-speccing, or when the build feels off-track. category: development argument-hint: [--pdf] [--repo <path>] <spec-path> allowed-tools: Read
One-time setup of the Cloudflare agent surface for Claude Code on a fresh machine. Wires the cloudflare-api MCP (Code Mode, bearer token from .env), the bundled cloudflare/skills plugin (skills + slash commands + 4 product MCPs), and OAuths the cloudflare-observability MCP for log queries. Idempotent. Use when onboarding a new machine, when cloudflare-api MCP is missing, or after running /ro:cloudflare-setup for the first time.
Create distinctive, production-grade frontend interfaces with high design quality. Use when building web components, pages, HTML tools, or applications. Generates creative, polished code that avoids generic AI aesthetics.
--- name: daily-co description: Wire Daily.co managed WebRTC video into a Next.js (App Router) app, including private rooms, owner/participant meeting tokens, the React iframe embed, and first-class live transcription (Deepgram-backed). Covers the REST API (create-room, create-meeting-token), the @daily-co/daily-js iframe embed (with the browser-only dynamic-import to avoid SSR window errors), the @daily-co/daily-react custom-UI alternative, and the transcription event lifecycle (transcription-s
Resolve and enrich Dutch addresses from a Node / Next.js / Worker backend using PDOK (the Dutch national geo / open-data platform) and the Kadaster BAG API. Covers the PDOK Locatieserver for geocoding (suggest + lookup + free endpoints, free and no key) to turn an address or postcode into coordinates plus the official BAG identifiers, then the Kadaster BAG API Individuele Bevragingen (free API key) to read a building's bouwjaar (build year), oppervlakte (floor area) and gebruiksdoelen (use purpose). Includes copy-pasteable Node fetch helpers, a real worked example, and the real-estate / CRM use cases (enrich a listing with build year + floor area + map coordinates, validate and normalise an address, generate real Dutch addresses). Use when the user wants to geocode a Netherlands address, look up a Dutch postcode, validate or normalise an NL address, enrich a property listing with build year / floor area / coordinates, or mentions "pdok", "kadaster", "bag", "dutch address", or "geocode netherlands".
--- name: ep-online description: Look up Dutch building energy labels from EP-Online, the official national energy-label register (RVO). Two access modes — the per-address REST web service (apikey via the Authorization header) and the monthly bulk public-data file (full dataset, CSV / XML / XLSX zip, ~monthly cadence, free, good for a cron). Covers the exact download endpoint + auth from a captured request, the CSV column schema, joining a label to a listing by postcode + house number, and a cop
Query CBS (Statistics Netherlands / Centraal Bureau voor de Statistiek) open data from a Node / Next.js / Worker backend. Covers the StatLine OData API (v3 ODataApi and v4 datasets.cbs.nl), how to find a table id from the catalog, querying with $filter / $select / $top / $skip, the difference between untyped and typed datasets and dimension codelists, a copy-pasteable Node fetch helper, and real-estate worked examples (average existing-dwelling sale price per region/period, Kerncijfers wijken en buurten neighbourhood stats) to enrich a Dutch property CRM's neighbourhood context. Free, no API key, no auth. Use when the user wants CBS data, Dutch statistics, neighbourhood/wijk-buurt enrichment, average house prices for a region, or mentions "cbs", "statistics netherlands", "dutch open data", "statline", "kerncijfers wijken en buurten", or "bestaande koopwoningen".
Send a push notification to Ronan's phone via the Pushover API. Use at the END of an AFK / night-shift / Ralph-loop / unattended /loop run so he knows the agent has stopped and is ready for the next thing. Do NOT fire this for ordinary interactive responses, only when the user has signalled they are away from keyboard. Reads PUSHOVER_APP_TOKEN and PUSHOVER_USER_KEY from ~/.claude/.env. Triggers on "AFK", "go AFK", "night shift", "kick off night shift", "run night shift", "/ro:matt-pocock-coding-workflow" in night-shift mode, "/ro:ralph" in night-shift mode, and any "/loop" with no interval. Also use whenever the user explicitly says "ping me", "notify me", "push me when done", "let me know when you're finished".
--- name: workos description: Wire WorkOS AuthKit into a TanStack Start app on Cloudflare Workers, install, env config, sign-in + callback routes, sealed-session cookie, server auth helper, Drizzle shadow user table, organisations + Admin Portal hooks, optional SAML SSO. Use when user wants to add WorkOS auth, AuthKit, hosted login, organisations, B2B login, SSO, or social login to a TanStack Start + Drizzle + D1 app and does not need to own the user table. category: auth argument-hint: [install
Lightweight browser automation via custom scripts. Use when Playwright MCP or Claude-in-Chrome is unavailable, or for building reusable browser check flows.
Extract cookies from Firefox for authenticated web scraping. Reads cookies.sqlite for a specific domain. macOS only.
Run any Apify actor from a Node / Next.js / Worker backend and pull its dataset into your app. Covers auth via APIFY_TOKEN, the run-sync-get-dataset-items endpoint for short runs, async run + poll + fetch-dataset for long runs, dataset pagination, cost-awareness (pay-per-event vs pay-per-result), a copy-pasteable server-side fetch helper, and a real worked example for the easyapi/funda-nl-scraper actor (Dutch property listings) with its exact input + output shape. Use when the user wants to run an Apify actor, scrape via Apify, call the Apify API, pull a scraped dataset into a CRM/app, set up an Apify-backed connector, or mentions "apify", "scrape via apify", "run apify actor", "funda scraper", or "apify dataset".
Browser-based verification using Playwright MCP or Claude-in-Chrome. Navigate pages, interact, screenshot, check console errors. Use when you need to check a page, verify UI, take screenshots, or test browser interactions.
Ronan's default working norms — commit cadence, checkpointing, asking for decisions, definition-of-done. Reference skill that should inform every coding session. Load at session start alongside coding-principles.
Extract and maintain a DDD-style ubiquitous language glossary for a project. Use when user wants to define domain terms, build a glossary, check terminology consistency, or onboard with domain language.
Mix multiple audio tracks (voice, music, SFX) into a single output file via ffmpeg. Layer narration over background music, add sound effects at timestamps, adjust volumes.
Create a new Claude Code skill with proper SKILL.md structure, frontmatter, and best practices. Use when user wants to create, write, build, or add a new skill.
Post and manage articles on dev.to (Forem) via the official API. Create drafts from markdown files, publish or unpublish, list and update existing posts. Use when user wants to publish a dev.to post, draft a dev.to article, fetch their dev.to profile, or sync a markdown file to dev.to.
Manage your LinkedIn via the official API — create posts, fetch your profile, and draft copy for bio/experience edits. Use when user wants to post to LinkedIn, share an update, check their LinkedIn identity, or revise their profile/headline/about.
Generate background music from text prompts via ElevenLabs Music API. Outputs MP3 files up to 10 minutes. Use for video soundtracks, podcast intros, ambient backgrounds.
Transcribe audio or video files to text via OpenAI Whisper API or local whisper-cpp. Standalone utility — also used by ingest-video for meeting recordings and screen captures.
--- name: app-polish description: Post-ship launch-ready polish audit. Walks a freshly-shipped web app against the ten-point launch-polish checklist (analytics, stats surface, OG images, PWA, SEO, keyboard, accessibility, visual regression, API docs, craft signals) and routes to the dedicated sub-skill for each gap. Use right after `/ro:cf-ship` / `/ro:fly-deploy` / `/ro:gh-ship`, or before a Product Hunt / Show HN launch. category: quality-review argument-hint: [--app <dir>] [--only <checks>] [
--- name: accessibility-ci description: Ship accessibility as a CI gate, not a hope. Wires axe-core unit tests (jest-axe or vitest-axe), @axe-core/playwright e2e, Lighthouse CI, aria-live regions for async state, and focus management in modals. Use right after `/ro:cf-ship` as part of `/ro:app-polish` check #7. category: quality-review argument-hint: [--runner vitest|jest] [--lighthouse] [--skip-e2e] allowed-tools: Bash(*) Read Write Edit Glob Grep content-pipeline: - pipeline:review - platf
Read LinkedIn profile data (bio, headline, experience, education, skills, contacts) via the unofficial Voyager API. Uses your browser session cookies — NO password. Sibling to the official-API `linkedin` skill. Use when user wants to see or export their own (or a public) profile content not available in the official API.
Scan LinkedIn posts for a URL or pasted content, or fetch recent posts by a person/company. Uses cookie auth via browser-cookies (Firefox/Brave/Chrome/Arc) when available, otherwise pasted-text fallback. Returns findings without vault persistence. Sibling to llm-wiki/ingest-linkedin.
Wire Nango cloud into a TanStack Start + Cloudflare Workers app for OAuth + token-refresh + proxy across third-party APIs. Install, env config, server SDK, Connect UI session, Shopify recipe, Google Ads recipe, webhook verification. Use when user wants to add Nango, wire integrations, connect Shopify, Shopify OAuth, Google Ads OAuth, OAuth broker, integration platform, or connect a merchant's store to a TanStack Start + D1 + WorkOS app.
--- name: drain-pr-queue description: Merge a stack of open PRs sequentially without babysitting each one. Discovers (or accepts) a list of PRs, arms auto-merge on all of them, then update-branches in a loop as each one lands so the next becomes mergeable. Handles BEHIND, DIRTY, and CI-failure cases. Use when you have several PRs ready to ship and don't want to merge them one at a time. Sibling to /ro:gh-ship (that one drives a single feature; this one drains a queue). category: development argu
--- name: pwa-install description: Turn a web app into an installable Progressive Web App. Wires a web manifest, minimal service worker (network-first for HTML, cache-first for assets), icons, and an install-prompt component. Use for daily-return utilities, dashboards, and any app where "add to home screen" replaces the need for an email list. category: quality-review argument-hint: [--runtime cf|vercel|node] [--name <app>] [--theme <hex>] [--no-sw] [--offline] allowed-tools: Bash(*) Read Write
Scan Hacker News for trends, hot threads, or specific topics. Returns findings — titles, points, comment highlights, URLs — without writing anywhere. Use when you want to see what's trending, research a topic, or pull a specific thread. Sibling to llm-wiki/ingest-hackernews (that one persists to a vault; this one just returns findings).
--- name: visual-regression description: Wire Playwright screenshot baselines with CI PR-diff comments to protect against silent CSS regressions. Composes with `/ro:playwright-check` (browser tool) and `/ro:visual-diff` (per-image diff). Use after polish work is done and you want to keep it intact. category: quality-review argument-hint: [--routes <comma-list>] [--viewports <list>] [--update-baselines] allowed-tools: Bash(*) Read Write Edit Glob Grep content-pipeline: - pipeline:review - pla
--- name: stripe description: Wire Stripe payments into a TanStack Start + Cloudflare Workers app. Install, env config, Workers-friendly webhook signature verification (constructEventAsync), Drizzle subscriptions + events tables, WorkOS-to-Stripe customer linking, Checkout flow (subscription + one-time), customer portal, EU defaults (iDEAL + SEPA + SOFORT + Stripe Tax + B2B VAT reverse charge), local stripe listen + trigger. Use when user wants to add Stripe, wire payments, checkout, subscriptio
--- name: trend-scan description: Two modes — (1) discover what's trending right now across Hacker News, Reddit, YouTube, Product Hunt (no topic needed), returning a picklist of top N themes; (2) deep-dive a specific topic across the same sources and return a ranked brief. Flow: discover → user picks → deep-dive. YouTube hits matching a "load-bearing" heuristic get transcript snippets inlined by default. category: research argument-hint: [topic] [--discover] [--sources hn,reddit,youtube,producth
Scan YouTube for videos by topic (search), channel (uploads feed), or URL (metadata). Returns titles, view counts, channel, upload date. Optionally auto-inlines a trimmed transcript snippet for high-signal hits via `--rich auto`. Pair with `/ro:video-summarize` for a full deep dive.
Scan Reddit for hot threads in a subreddit, topic search, or a single-thread fetch. Uses the public .json endpoint (no auth). Returns findings without vault persistence. Sibling to llm-wiki/ingest-reddit.
Generate AI videos from text or an image via the PixVerse Platform API (text-to-video, image-to-video). Submit a generation, poll for the result, get the MP4 URL. Use for product demos, recipe/cooking videos, social clips, b-roll, or any "turn this prompt/image into a short video" task. Async API (submit returns a video_id, you poll a result endpoint).
Interact with Sentry (EU region) — install SDK, triage issues, manage releases, upload source maps, CRUD alerts and projects. Use when user wants to track errors, add error monitoring, see recent issues, create a release, upload source maps, wire Sentry into an app, or manage alerts.
Generate a character mascot for any project — a wide hero illustration plus two character-consistent variants (avatar + empty-state) — derive a favicon set from the mascot avatar, and wire them into the README and the landing page. Uses OpenAI gpt-image-1 (with /v1/images/edits for character consistency across variants) or falls back to Google Gemini Nano Banana 2. Derives the prompt from the README + 'Why <name>' rationale + any CONTEXT.md / parent PRD so the character matches the app's spine. Idempotent — re-run to regenerate. Use when the user says "generate a mascot", "give this project a mascot", "make a little character for the app", "brand this with a character", or "add a mascot to the README". Sibling of /ro:share-assets (which embeds this as its hero/mascot step) and /ro:generate-image (which is generic image-gen, not project-aware).
Danger-first snapshot of all live Claude Code sessions before a restart or shutdown. Scans running `claude` processes (NOT transcript timestamps, which miss idle/week-old tabs), resolves each to its folder + branch + uncommitted/unpushed/open-PR state, and writes a danger-first list to ~/.claude/session-snapshot.md so you know what unsaved work you are walking away from and exactly which `cd <folder> && claude --resume <id>` to run after reboot. Also lists orphaned worktrees with no attached session as a reap signal. Use when the user says "save my open sessions", "save the open claude tabs", "snapshot my sessions", "save my session statuses before I restart", "what should I reopen after I restart", "before I restart my computer", "capture my open tabs", or "snapshot-show" (just reads the saved file back).
--- name: worktree description: Coordinate multiple agents on one repo via a worktree-lock pool, so two agents never clobber each other's working tree. Acquire the first free slot (main, then beta/gamma… worktrees, created on demand), work there on your own branch, release when you've pushed. Use before modifying any repo that might be in use by another agent (factory, dataforce, etc.), or whenever you're told a repo is being worked on. Backed by `ro worktree`. category: development argument-hin
PREFERRED default grill mode. Grill-mode plus lazy documentation. Runs the grill-me interrogation and, as decisions are reached, writes them into CONTEXT.md (domain language) and docs/adr/000N-*.md (hard-to-reverse decisions) so a fresh agent can pick up cold without re-grilling the user. Use this by default any time a grill is needed; fall back to /ro:grill-me only when the user explicitly wants ephemeral grilling with no durable artefacts. Triggers on "grill me", "let's grill", "/grill" in agent-native repos, "grill with docs", "grill and document", "interview me", "pressure-test this", "before we code", "let's build / make / design / plan / spec", or when the user wants the grill output captured persistently rather than living in the chat transcript.
Wire the common "invite-only with a waitlist" access pattern into a TanStack Start + Better Auth + Drizzle + Resend app — passwordless email-OTP sign-in gated by an email allowlist, a public waitlist capture with confirmation email, a "you're in" email when an address is whitelisted, a super-admin / admin / member role tier, and a super-admin-only admin section to view users, view the waitlist, whitelist emails, and promote admins. Use when the user wants invite-only access, an allowlist/whitelist of emails, a waitlist with emails, gated sign-up, an admin user-management section, role tiers, or "only let approved people in".
Alias for /ro:planner-worker. Multi-agent coding swarm — planner + worker + merger over git worktrees on the Max plan. When the user types /ro:swarm, /swarm, "kick off the swarm", "run the swarm", "swarm coding", or anything matching "swarm + code/PR/PRD", redirect to /ro:planner-worker.
Ephemeral grill mode (no durable artefacts). PREFER /ro:grill-with-docs as the default for ANY grill since it captures CONTEXT.md + ADRs alongside the interrogation. Use /ro:grill-me only when (a) the user explicitly asks for a no-docs grill, or (b) the repo has nowhere sensible to write durable docs (e.g. a throwaway scratch directory). Both skills walk the same decision tree the same way; the only difference is whether decisions get written down. Triggers on "grill me ephemeral", "quick grill no docs". For everyday "grill me / let's build / before we code / pressure-test this / interview me about", grill-with-docs is the default.
--- name: harden-npm description: Apply npm/pnpm/bun supply-chain hardening to a repo. Pins packageManager, writes per-repo .npmrc with minimum-release-age + ignore-scripts, audits GitHub Actions for pull_request_target, installs husky pre-push hook if missing, optionally runs pnpm approve-builds. Idempotent and safe to re-run. Auto-invoked by /ro:new-tanstack-app and /ro:new-app. Use after any /ro:migrate-* or whenever a repo needs supply-chain controls brought up to canon. category: quality ar
--- name: new-astro-app description: Orchestrate scaffolding a new Astro app on the canonical stack (Astro 5 + `output: 'server'` on @astrojs/cloudflare + Sentry EU + PostHog EU + pnpm). For marketing/landing/portfolio sites where most pages are static and only a thin runtime exists for /api routes. Sister skill to /ro:new-tanstack-app — Astro path of the stack-decision-map's "App shape → Marketing site / static-leaning" leaf. Dispatches to /ro:sentry, /ro:posthog, /ro:cloudflare-dns, /ro:cf-shi
Interact with the BoardGameGeek XML API2. Search games, fetch details with ratings and weight, pull a user's collection or wishlist, download box art from the CDN. Covers the 2026 auth reality (registered application token, Bearer header, 401 without one, approval takes a week or more) plus a browser fallback via the GEEK.geekitemPreload JSON while approval is pending. Reads BGG_XML_API_TOKEN from ~/.claude/.env. Triggers on "boardgamegeek", "bgg", "fetch my BGG collection", "look up a board game", "bgg search", "download board game images".
--- name: linear-run description: The single front door for a collaborator's Linear board — check the board and, per ticket, do the right thing in one run. Resolves the board from the repo's .ro-linear.json, then per candidate ticket either grills it (ungrilled + a real domain decision blocks the build → /ro:linear-grill posts mandatory/optional questions as the RoBot user, tags the collaborator, moves to "Question for <name>"), builds it (questions answered or only technical decisions remain →
Forensic retro across a whole Linear board to find WHERE work went wrong — especially the "collaborator asked for X, we delivered, it wasn't right" loop. Reconstructs every ticket's lifecycle from issue history (status transitions + actor), labels, comments, and attachments; cross-references the linear-listen activity log (agent dispatches per ticket) and linked GitHub PRs; isolates every Ready-to-Test → bounced-back rework instance; classifies each by root cause (context-not-loaded / bad-question / built-before-AC / no-AC-for-verification / spec-misread / premature-done / env); and writes a trends report to .linear-audit/. Files SYSTEM gaps against ronan-skills and PROJECT gaps against the product repo; the weekly scheduled run also opens Linear review issues tagged to Ronan. Use when Ronan says "audit the linear board", "linear retro", "why do tickets keep bouncing", "where did we go wrong with Eoin's tickets", "/ro:linear-audit".
Turn a warranty rejection, repair quote, or RMA email into a cited decision brief — legal read (NL/EU consumer law), is the part user-serviceable, live part and new-unit prices, repair-vs-DIY-vs-new economics, before-you-send-it checklist, deadlines. Use when the user pastes or screenshots a repair quote, warranty rejection, "not covered" email, onderzoekskosten fee, or asks "should I repair or replace this".
--- name: linear-update description: Close the loop on a Linear ticket when its work ships - move it to the Interview validation gate (assigned to the collaborator, tagged, with what-we-built + acceptance criteria), or to Done when they've already validated. The transition is GATED: no move to Ready-to-Test/Interview without both an acceptance-criteria checklist and a screenshot in the hand-off comment; mobile/responsive tickets additionally require a real-device or emulation "verified on <devic
--- name: new-mcp-server description: Scaffold a new MCP server (Model Context Protocol). Two transports — hosted (Cloudflare Workers via McpAgent) and local (stdio). Wires tools, resources, prompts with Zod schemas, optional WorkOS auth for hosted multi-tenant servers, optional /.well-known/mcp/server-card.json for the in-flight server-card spec, and the MCP Inspector for local dev. Use when user wants to create an MCP server, new MCP server, scaffold an MCP server, build an MCP server, MCP ser
--- name: uptimerobot description: Manage UptimeRobot monitors — create, list, pause, delete HTTP/keyword/port/ping monitors; set up alert contacts; fetch uptime stats. Use when user wants to add uptime monitoring, create a status check, pause a monitor, see uptime %, or wire a new deployed app into external monitoring. category: observability argument-hint: [monitor <list|create|pause|resume|delete>] [contact <list|create>] [account] [--readonly] allowed-tools: Bash(curl *) Bash(jq *) Read Writ
Text-to-speech via ElevenLabs API. Converts text or a script file to high-quality MP3. Standalone utility — also called by generate-podcast and generate-video for voiceover.
Compare images for visual correctness using pixel diff and Claude vision. Use for screenshot comparison, visual regressions, design-match checks (current UI vs a reference image), or per-component diffs against a design.
--- name: list-draft-prds description: List open GitHub issues labelled `prd:draft` in the current repo — the agent-native repo's "ideas inbox". Draft PRDs are NEVER auto-picked-up by Ralph, planner-worker, agentic-e2e-flow, or night-shift; they sit waiting to be grilled into real PRDs (Pocock 7-section template) before the label is swapped to the repo's gate label (`ready-for-agent` by default, `Sandcastle` / `swarm` per project). Use when you want to see what ideas are sitting, triage your dra
--- name: add-mcp-to-app description: Expose an existing TanStack Start + Cloudflare Workers app as an MCP server that MCP-speaking agents (Claude Code, Codex, Cursor, anything that talks the Model Context Protocol) can install in one command. Adds the OAuth 2.1 authorization-server routes (.well-known discovery, /oauth/authorize with auth-code + PKCE, /oauth/token, /oauth/register for Dynamic Client Registration), an /api/mcp handler that accepts both Bearer-token PATs and OAuth access tokens,
Build, debug, and tune Vercel AI SDK (v6) code — Core primitives (streamText, generateText, generateObject, streamObject, embed, embedMany, tool() agentic loops, wrapLanguageModel middleware), UI hooks (useChat, useCompletion, useObject), and provider-specific features for Anthropic (prompt caching, extended thinking), OpenAI (reasoning effort, structured outputs), and Google (grounding, thinking budget). Covers the v6 UIMessage parts[] wire protocol, DefaultChatTransport, message persistence, abort/retry, edge-runtime gotchas (Cloudflare Workers process.env), and v5 → v6 migration. Use when the user mentions Vercel AI SDK, `ai` package, useChat, streamText, generateObject, structured output with Zod, agentic tools, prompt caching, AI SDK v6, AI SDK migration, or wires Anthropic/OpenAI/Google through the unified provider interface.
--- name: testing-stack description: Wire the canonical testing + API-docs stack into a TanStack Start + Cloudflare Workers app. Installs Vitest (unit + integration), Playwright (e2e + visual), Bruno (API collection with local/production/mock envs), Zod + @asteasolutions/zod-to-openapi (served at /api/openapi), Scalar docs UI (at /api/docs), Prism mock server (FE-dev fallback on :4010), and k6 ad-hoc load tests (smoke/local/prod profiles). Use when user wants to add tests, API tests, API docs, O
Turn a Claude Design (claude.ai/design, Anthropic Labs) handoff into production code in an existing repo. Walks an agent through getting the source bundle, mapping its design tokens to CSS variables, exposing the design system on an admin-gated /styleguide route, building token-driven components, fixing exported asset alpha channels, slicing each screen into swarm-friendly issues pinned to the committed prototype, and auditing fidelity before declaring done. Use when the user says "implement this Claude design", "claude design to code", "build this design file/zip", "build this design handoff", or hands over an api.anthropic.com/v1/design/h/<id> link or a handoff .zip. Downstream pair of generate-claude-design-prompt (that one writes the brief; this one implements the result).
Reference catalogue of every TanStack library with verified status (2026-05-01) and adopt-today / wait / skip verdicts for the user's stack. Load when the user mentions TanStack Query, TanStack Table, TanStack Form, TanStack Router, TanStack Start, TanStack Virtual, TanStack DB, TanStack AI, TanStack Pacer, TanStack Intent, TanStack CLI, TanStack Hotkeys, TanStack Store, TanStack Devtools, asks "what TanStack library for X", "is TanStack X stable", "TanStack catalogue", "TanStack ecosystem", or considers adopting any individual TanStack library. Reference skill, not an action skill. Different from /ro:new-tanstack-app (which scaffolds a TanStack Start app); this is the umbrella catalogue.
--- name: infra-docs description: Generate (and refresh) architect-grade living documentation of an app's deployed cloud infrastructure. Discovers the real, live resources (not just what's in config) — Cloudflare Workers + D1 + R2 + Secrets Store + Workers AI + Durable Objects + Zero Trust/Access + cron, or Fly/Vercel equivalents — reads the codebase to map data flows, and writes a multi-document set under docs/infrastructure/ with C4-style architecture diagrams, per-resource detail, mermaid seq
Software design principles and opinionated stances on clean code. Reference skill — index is always loaded, detail files read on demand. Use when reviewing code, refactoring, or making architecture decisions.
--- name: improve-codebase-architecture description: Scan a repo for shallow modules and propose consolidations into deeper ones. Ousterhout's deep-modules principle applied to AI-friendly codebases (better feedback loops, easier delegation, fewer parallel-agent collisions). Standalone skill; can run on any repo. Use when a codebase feels hard for agents to work in, when modules feel too small, or before starting a Pocock Flow on a repo you haven't shaped yet. Triggers on "deepen modules", "impr
Document a resolved bug or incident as a structured post-mortem. Captures root cause, what was tried, what fixed it, and lessons learned — committed locally for future reference.
Produce the design-foundations doc set a UX/brand professional writes BEFORE any tokens or code — product principles, brand & personality, voice & tone, visual language (colour/type/space/motion/data-viz), UX & interaction principles, and an accessibility standard. Derives from the spec/PRD/CONTEXT and any existing mascot, asks only for the taste gaps, and writes durable docs into docs/design/. The front-of-build step for ANY application; chains into generate-design-brief → design-system-create → frontend-design → design-system-audit → app-polish. Use when the user says "design language", "brand/voice/tone", "colour scheme", "how a UX pro would approach this", "design docs for the app", "design foundations", or before scaffolding a new app's UI.
Style rules for writing human-sounding copy. Apply whenever producing user-facing text (READMEs, landing pages, docs, marketing, tweets, UI microcopy, PR descriptions, release notes). The core goal is to avoid the tells that make writing look AI-generated.
Safety net that blocks destructive git commands and suggests safer alternatives. Background knowledge for configuring pre_tool_use hooks.
Explore visual design directions for a view by generating N distinct, side-by-side options on a /designs route, each grounded in real Mobbin references and rendering the SAME sample data, so the user can review them live and pick one (or a blend) to merge into the app. Use when a screen works but you want to choose how it should look, when the user says "design pass", "show me design options/directions", "explore designs", "mobbin the design", "give me a few looks for X", or before committing to a layout for a new view. Pairs with the Mobbin MCP + the app's design tokens.
Web search via the Brave Search API (independent, privacy-first index) without a browser. Use to research a topic, find recent news, gather sources to then WebFetch, or discover a site's pages. Reads BRAVE_SEARCH_API_KEY from ~/.claude/.env. Triggers on "brave search", "search the web for X", "research X via brave", "find sources on".
Grill a collaborator's Linear tickets and move every processed ticket to where it belongs. Resolves the board from the repo's .ro-linear.json, reads the collaborator's Backlog / Ready-for-agent issues, then per ticket either posts 3-5 decision-extracting questions (state moves to "Question for <name>") or confirms it build-ready (state moves to "Grilled", the gate /ro:linear-nightshift consumes); shipped-and-confirmed tickets close as Done. The async-collaborator counterpart of /ro:day-shift for people who never touch GitHub. Triggers on "grill linear", "grill eoin's tickets", "linear grill", "add questions to the linear tickets", "/ro:linear-grill".
Generate a single-file HTML artefact from the current response (or a specific piece of content under discussion) instead of a long Markdown reply. Use whenever the user asks for a "human-readable version", "an artifact", "a shareable page", "an HTML version", "make it pretty", "save that as a page", or similar phrasing. Auto-detects an llm-wiki vault or any repo/folder and writes to `<root>/artifacts/html/<timestamp>-<slug>.html`. Editorial typography baseline with libraries layered in per the decision tree; opens in the user's default browser. Markdown stays the default chat surface; this skill is the explicit promote-to-artefact step.
--- name: matt-pocock-coding-workflow description: End-to-end Matt Pocock coding workflow as a single orchestrated skill. Chains grill-me, write-a-prd, slice-into-issues, ralph, and close-the-loop in order. Asks once at the start whether to run in-the-loop (human reviews per issue) or AFK (full night-shift Ralph). Use when starting a new feature, project, or substantial change and you want the disciplined grill, slice, loop, verify shape instead of jumping straight to code. Triggers on: "build t
Create git commits with emoji conventional commit format. Handles staging, message formatting, and timestamp rules. Use when committing changes.
Diagnose a runtime bug by sweeping the observability logs (Cloudflare Workers logs, Sentry, PostHog) using the shared trace_id, and if the logs don't capture what's needed, ADD structured logging at the failure point + in the request context, deploy (remote) or run locally, and have the user reproduce. Use whenever the user mentions logs, a bug, an issue, "why did X fail / not work", "check the logs", "it works on desktop but not mobile", a stack trace, an error code, or a flaky/intermittent failure. Auto-pick this before guessing at a fix.
Switch the active credential profile for ronan-skills. Three-tier resolver picks the right `~/.claude/.env.<context>` file based on `$RO_CONTEXT` env var, manual override, `.ro-context.local` / `.ro-context` files in the cwd or any ancestor, cwd-glob rules in `~/.claude/contexts.json`, or the default. Skills source via `$(ro context env)` to get a cwd-aware credential file. Use when the user wants to switch credentials between contexts (personal / work / per-client), set up a new context, or debug which context resolved.
--- name: gh-ship description: Ship a feature branch through GitHub — open PR, watch PR checks, confirm merge, then monitor main-branch CI and verify auto-deploy. Use when a feature is ready to go from branch to production via GitHub. Sibling to /ro:cf-ship (that one runs the local pre-flight; this one drives the GitHub side). category: development argument-hint: [--title "<title>"] [--base main] [--squash|--merge|--rebase] [--no-merge] allowed-tools: Bash(git *) Bash(gh *) Bash(curl *) Read ---
Wire Turso (libSQL) into a TanStack Start + Cloudflare Workers app, with native vector search for embeddings, and drive its CLI/API. libSQL is a SQLite fork with built-in vectors (F32_BLOB + vector_top_k + libsql_vector_idx) that upstream SQLite and D1 lack. Covers the critical @libsql/client/web (HTTP, Worker-safe) vs @libsql/client (Node) split, JWT auth, the Drizzle libSQL driver + customType vector column, KNN queries, and when Turso vectors beat Vectorize / pgvector / D1. Use when the user wants Turso, libSQL, vector embeddings / similarity search in SQL, a vector DB, or mentions @libsql/client / TURSO_DATABASE_URL / F32_BLOB.
Wire Mollie payments (iDEAL-first, Dutch/EU) into a TanStack Start + Cloudflare Workers app, and drive its REST API. Covers test_ vs live_ keys, the hosted-checkout redirect flow (create payment -> redirect to _links.checkout -> webhook -> re-fetch status), why you MUST fetch status from the API in the webhook (the body only carries the payment id), payment statuses, refunds, NL methods (iDEAL/card/Bancontact), and why direct fetch beats the @mollie/api-client SDK on Workers. Use when the user wants to add Mollie, take payments, iDEAL, a checkout, a payment webhook, refunds, or mentions mollie / a test_ key / pfl_ profile.
Dispatch coding tasks to Devin (Cognition's autonomous software engineer) via its v3 API, and embed Devin sessions in a TanStack Start + Cloudflare Workers app backend. Covers Bearer cog_ auth on the org-scoped v3 paths (/v3/organizations/{org_id}/sessions), create-session params (prompt, repos, max_acu_limit, structured_output_schema), the status lifecycle + polling for the PR result, sending messages to a live session, ACU cost control, and the dispatch-and-get-a-PR vs embed-in-app workflows. Use when the user wants to dispatch a task to Devin, run Devin from CLI/CI, get a PR from a prompt, embed an in-app coding agent, or mentions devin.ai / a cog_ key / an org- id.
Wire Cala (cala.ai) verified-web-knowledge into a TanStack Start + Cloudflare Workers app, and drive its REST API directly. Cala is "the knowledge layer for AI agents" — natural-language or structured (Cala-QL) queries over the public web that return source-cited, structured facts. Covers the X-API-KEY auth, the knowledge/search + knowledge/query + entity endpoints, a Workers-safe fetch client, a createServerFn wrapper, credit-budget caching, and an API-ops cheat-sheet. Use when the user wants to add Cala, gather/enrich data, ground an LLM answer in cited web facts, look up companies/products/entities, or mentions cala.ai / clsk_ keys.
--- name: vapi description: Wire VAPI (vapi.ai) voice agents into a TanStack Start + Cloudflare Workers app, and drive its REST API. Covers the public-vs-private key split, the @vapi-ai/web browser SDK (in-app voice) and @vapi-ai/server-sdk (Workers-safe), creating assistants + custom function tools, the tool-call webhook contract (request shape, the { results: [{ toolCallId, result }] } response, X-Vapi-Secret verification in a Worker), outbound calls, and phone numbers. Use when the user wants
--- name: posthog description: Interact with PostHog (EU region) — install SDKs, query events, manage feature flags, run experiments, inspect insights. Use when user wants to track events, add analytics, create/toggle a feature flag, set up an A/B test, query product data, or wire PostHog into a TanStack Start app. category: analytics argument-hint: [install | flag <list|get|create|toggle> | experiment <list|get> | query <hogql> | event <recent> | render-debug-snippet] [--project <id>] [--region
--- name: about-page description: Add a standard About page to any web app, what it is, the tech stack, and an FAQ, wired into a footer link with a sticky footer. Built with Spartan + Tailwind (the canonical component layer) and falls back to semantic HTML so it ships reliably. Use whenever building, polishing, or shipping an app, every app should have one. Triggers on "add an about page", "about page", "footer about link", or as a standard step in app build/polish. category: frontend argument-h
--- name: seo-launch-ready description: SEO groundwork for a freshly-shipped web app. Generates sitemap.xml, robots.txt, per-route canonical URLs, JSON-LD structured data, and a complete OG/Twitter meta set. Use right after `/ro:cf-ship` or `/ro:fly-deploy` as part of `/ro:app-polish` check #5. category: quality-review argument-hint: [--type <webapp|article|product|video>] [--domain <url>] [--sitemap-source <file>] allowed-tools: Bash(*) Read Write Edit Glob Grep content-pipeline: - pipeline:r
--- name: producthunt-scan description: Scan Product Hunt's daily / weekly / all-time rankings via the public Atom feed. Returns product names, taglines, URLs, upvotes (when exposed). No auth required. Use for "what launched today?" or niche topic filtering. category: research argument-hint: [topic] [--since today|week|month] [--limit N] [--category <slug>] allowed-tools: Bash(curl *) Bash(python3 *) Read content-pipeline: - pipeline:scan - platform:agnostic - role:scanner --- # Product H
--- name: stacked-prs description: Rebase a stacked feature branch after its parent PR has been squash-merged. Use when you have a branch B that was built on top of branch A, and A just landed on main (squash-merged). Runs git fetch + git rebase onto main + git push --force-with-lease, so B's diff no longer includes A's flattened commits. category: development argument-hint: [--onto <branch>] [--no-push] [--dry-run] allowed-tools: Bash(git *) --- # Stacked PRs: rebase-after-parent-merges One c
--- name: share-assets description: From one source brand mark, generate the full set of identity + share assets (favicon, app icons, PWA manifest, static OG image, Twitter card, dynamic OG route, JSON-LD) and wire them into a TanStack Start app's head + public/. Use when starting a new app or when an existing app's link previews look broken on X / WhatsApp / iMessage / LinkedIn / Slack. category: development argument-hint: [--source <path-to-svg>] [--no-dynamic-og] [--brand-color <hex>] <app-na
Scaffold, build, and deploy an app on the enterprise reference stack (Nx monorepo with an Angular + Spartan + Tailwind frontend and a NestJS Backend-for-Frontend, plus .NET microservices, MongoDB, and Keycloak, in Docker, deployed to Fly.io). This is the heavier, team-shaped, polyglot alternative to the TanStack canonical stack (/ro:new-tanstack-app). Use when the user wants to build on the enterprise stack, mirror an enterprise architecture, scaffold an Nx + Angular + NestJS + .NET app, or learn this stack hands-on. Accumulates build learnings in the Learnings section as the stack is exercised.
--- name: og-image-dynamic description: Generate per-URL Open Graph images at runtime so every shared link unfurls with a distinct, branded preview card. Supports Cloudflare Workers (Satori), Vercel Edge (@vercel/og), and TanStack Start static builds. Use after shipping any app that gets shared on X/Reddit/LinkedIn/WhatsApp. category: quality-review argument-hint: [--runtime cf|vercel|node] [--route /api/og] [--template <file>] [--test] allowed-tools: Bash(*) Read Write Edit Glob Grep content-pi
Ingest a YouTube URL or local video via steipete's `summarize` CLI — returns transcript (with timestamps), scene-detected slides (PNG + optional OCR), and an LLM narrative summary with section headings. Generic sibling to llm-wiki/ingest-youtube and llm-wiki/ingest-video (those persist to a vault; this one just produces artefacts and leaves placement to the caller).
Extract cookies for a domain from the user's browser (Firefox, Brave, Chrome, Arc, Chromium, Edge). Reads ROBROWSER default from ~/.config/ro/defaults.env. Used by scraping skills that need an authenticated session. Supersedes firefox-cookies.
Integrate Cal.com scheduling + Cal Video into an app — book meetings/viewings with auto-generated video links, synced into your DB via webhooks. Covers the v2 API (auth, create event types + webhooks programmatically), the React embed (@calcom/embed-react), and the booking→DB webhook with signature verification. Use when adding online appointments, video calls, or a booking flow. Triggers on "cal.com", "add scheduling", "book a meeting/viewing", "embed a calendar", "video appointments".
Embed branded video calls via Jitsi as a Service (JaaS / 8x8) in a web app — server-minted RS256 JWT auth, the JitsiMeetExternalAPI embed, live transcription piped to your app, and webhooks for room/recording/transcription events. Use when adding video meetings, a video-viewing/consult feature, or a transcript-driven meeting copilot. Triggers on "add video calls", "Jitsi", "JaaS", "8x8 video", "embed a meeting", "live transcription in a call", "meeting copilot". NOT the free meet.jit.si (no keys, no transcription, no SLA) — that's only for a throwaway demo.
Add a first-run product tour plus per-section prompts to an app, backed by persisted per-user state (not localStorage) so it survives devices and can be re-armed from an admin panel. Two surfaces — a welcome modal that walks the whole flow on first login, and a lightweight per-module prompt (Show me / Skip / Later) the first time a user enters each section. Covers the state shape, the server actions, the React component, and an admin reset. Use when building onboarding, a guided tour, coach marks, an empty-state walkthrough, or "explain the app to a first-time user". Triggers on "onboarding wizard", "product tour", "first-run experience", "guided tour", "walk the user through", "coach marks".
Alias for /ro:council-review --fix --ship. One gesture from dirty branch to deployed main, council review, fix loop, gate, squash-merge, deploy. When the user types /ro:council-ship, /council-ship, "council ship", "review and ship this", "council review and merge", "run the council then ship it", or anything matching "council + ship/merge/deploy", redirect to /ro:council-review with --fix --ship.
--- name: workos description: ARCHIVED 2026-05-01. WorkOS AuthKit wiring for TanStack Start on Cloudflare Workers. Pulled from active skills because the user's product portfolio is small SaaS and won't hit 10K MAU. Restore when (a) MAU genuinely approaches 100K, (b) a non-engineer partner needs the WorkOS hosted Admin Portal sidecar, or (c) per-connection SAML SSO is a near-term selling point. To restore, move this directory back to `skills/workos/` and `git push` (the pre-push hook will bump th
Add real WhatsApp to a web app via Twilio — inbound messages land in your app through a webhook, and you reply programmatically. Covers the zero-Meta-verification WhatsApp Sandbox (perfect for demos), the inbound webhook + X-Twilio-Signature validation, sending via the REST API (API-key auth), the 24-hour session window + template rule, and the move to a production number. Use when adding WhatsApp, a unified inbox, or two-way messaging. Triggers on "Twilio", "WhatsApp integration", "send/receive WhatsApp", "WhatsApp sandbox", "two-way messaging".
A local facade over Anthropic's own design skills — runs frontend-design + theme-factory + web-artifacts-builder (+ brand-guidelines) on your machine to produce multiple design variants and a self-contained interactive bundle.html preview, WITHOUT the claude.ai/design web canvas. Seeded by the repo's design-foundations docs; hands off to claude-design-to-code / design-system-create for production. Use when the user says "Claude Design but local", "generate design variants locally", "I find Claude Design clunky", "facade over Claude's design skills", "local design studio", or wants the variants-and-interactive-UI output without the hosted canvas.
--- name: performance-first description: Make apps feel instant. The core rule — navigation must never block on data: change route immediately, render a layout-matched skeleton, stream/fetch the data in. Covers Next.js App Router (loading.tsx, Suspense streaming, Link prefetch, useOptimistic) and TanStack Start/Router (deferred loaders + pendingComponent, TanStack Query cache + prefetch-on-intent, optimistic mutations), plus shared rules (skeletons over spinners, prefetch on hover, stale-while-r
Break out of debugging loops by stepping back and researching. Use when stuck, going in circles, hitting the same error repeatedly, or after multiple failed fix attempts.
--- name: capability-retro description: At session end (handoff / close-session) or on demand, scan THIS session for capability gaps — a manual multi-step dance that should become a skill, heavy context-filling work that should be an agent, or a repeatable workflow the user described ("if I ever X, do Y") — plus existing skills/agents that need editing. Triage each (create-skill / create-agent / edit-existing / already-exists / not-worth-it), dedup against the live registry, then with approval c
--- name: braintrust-vision-evals description: Eval OCR / AI-vision document intake — measure the JSON a vision model extracts from a document against a golden sample. The framing that makes it simple: the image is just input, you score extracted JSON vs ground-truth JSON (no special OCR monitor). Covers doc-as-Attachment datasets, ValidJSON / JSONDiff(+tolerance) / custom per-field F1 scorers, EU-resident vision model choice (Mistral OCR 4, Gemini via Vertex EU), and the hard BSN-never-stored +
Wire Braintrust (braintrust.dev) AI eval + observability into a TanStack Start + Vercel AI SDK + Cloudflare Workers app. Covers BRAINTRUST_API_KEY auth, tracing the AI SDK with wrapAISDK + initLogger + wrapTraced, the Eval() harness with autoevals scorers + the bt eval CLI + *.eval.ts convention, the OpenAI-compatible AI proxy, and the critical Workers flush caveat (asyncFlush + ctx.waitUntil(logger.flush())). Use when the user wants Braintrust, LLM evals, eval-driven tests, AI tracing/observability, scorers, or mentions braintrust / wrapAISDK / autoevals. Sibling of /ro:vercel-ai-sdk; compare with Langfuse (observability-first OSS) and PostHog LLM analytics.
Generate a complete /present system for a project demo — a hub that lists presentations, and per-presentation Present / Speaker / Clicker views plus a Prep learning center. Self-contained HTML deck with a PowerPoint-style presenter view (speaker notes + timer + next-slide), a phone PWA remote (clicker or speaker mode) synced cross-device, a scannable QR to open it, ArrowUp/Down font zoom, and a companion study page covering the tech + industry + business-case domains. Use when presenting a project/demo to a team, an interviewer, or a weekly review. Triggers on "build session presentation", "demo deck", "present what I built", "presentation hub", "/present", "prep / learning center for a demo", "slides for the demo", "weekly demo".
Automated verification loop that ensures work is done — tests pass, UI works, screenshots match designs. Use when you want to verify stories, check everything works, close the loop, run acceptance checks, or match a UI to a reference design component-by-component.
--- name: close-session description: End-of-session durability checklist that makes clearing context safe. Runs mechanical checks (uncommitted changes, unpushed commits, open PRs, chat-only decisions, new domain terms, ROADMAP staleness, memory entries) and either resolves each inline or queues it as a GitHub issue, ADR, wiki page, or memory note. The point is to walk away knowing nothing important lives only in this conversation. Triggers on "close session", "close the session", "wrap up the se
--- name: dream description: Nightly autonomous maintenance pass over the whole factory — while Ronan sleeps, review what's accumulated (GitHub issues, LLM-wiki, the skills themselves, notes) and make safe, reversible improvements: cross-link and refine issues, fix stale docs, propose/add missing skills, archive dead ones. STRICTLY non-destructive: never deletes, never contacts anyone external, every change is a git commit or logged issue edit so it's all undoable. In the morning it writes a com
--- name: design-system-create description: Scaffold a design system in a React/Tailwind project — DESIGN_SYSTEM.md spec + typed tokens module + cva variants for core primitives (Button, Input, Card). Emits a `/styleguide` showcase route (role-gated to superadmin + staff if Clerk is wired, dev-only otherwise) so every theme/component/token is auditable in-browser. Use when a project has hand-rolled Tailwind for buttons/inputs/cards and needs a single source of truth, or just to add the styleguid
--- name: day-shift description: Morning bridge skill that shapes the GitHub backlog between night-shift runs. Partitions open issues into buckets (prd:draft, ready-for-human, blocked-on-human, swarm, needs-triage), grills candidates one round at a time via AskUserQuestion (Pocock's grill-with-docs flow), promotes successfully grilled issues to the swarm gate label, and escalates non-converging issues to blocked-on-human with a structured comment naming the explicit human action needed. Defers t
--- name: diff-it description: Open a visual diff for a commit range in the browser. Builds a self-contained, inline-styled HTML page from `git diff <a>..<b>` (no external assets, no CDN, no diff2html dependency) and opens it with `open`. Use when the user wants to eyeball the changes across a set of commits rather than read raw terminal diff output, e.g. "diff the vectorizing work across these 5 commits". Triggers on "diff it", "show me the diff between those commits", "launch a diff viewer", "
--- name: nextjs description: Scaffold and work on a Next.js (App Router) app on the Vercel-aligned stack — Next + Tailwind + shadcn/ui + Vercel deploy, pairing with Supabase (Postgres + Auth + RLS) and Drizzle. Use when the target stack is Next.js (a client project, or HousApp-style Next + Supabase + Vercel), NOT the golden TanStack + Cloudflare default. Covers create-next-app, Tailwind + shadcn setup, server/client component + server-action conventions, Supabase + Drizzle wiring, and Vercel de
Bridge a project from its LLM Wiki gestation vault into its own code repo, carrying the context across the boundary so future sessions starting in the repo pick up exactly where the wiki session stopped. Reads the project's llm-wiki vault (design docs, ROADMAP, decisions, open questions), synthesises a cold-start docs/agents/HANDOFF.md, opens a coordination-hub GitHub issue plus sliced ready-for-agent child issues, writes a thin repo CLAUDE.md whose "Start here" points at both (with a cross-vault back-pointer to the gestation vault), and writes a forward-pointer in the vault so it knows its child repo. Use when a project leaves ideation and gets its own repo. Triggers on "graduate this project", "graduate the project", "spin up the repo for this", "this needs its own repo now", "move this from the wiki into a repo", "bridge the vault to the repo", "carry the wiki context into the repo".
Turn a feature or set of screens into a high-quality prompt for Claude Design (claude.ai/design, Anthropic Labs), plus the human-checkpoint GitHub issue that carries it. Use when creating a design-input issue, when the user says "generate a Claude Design prompt", "write a Claude Design brief", "make a design ticket", or when an agent-native flow needs a UI designed before slices can build. Bakes in what Claude Design actually needs (the goal/layout/content/audience brief, repo linking, high-fidelity mode, chat-vs-comments refinement, handoff to Claude Code). Sibling of generate-design-brief (general) and frontend-design.
Run a night-shift against a collaborator's Linear board. Pulls the team's Grilled tickets (/ro:linear-grill moves a ticket to Grilled once its questions are answered), VERIFIES the questions were actually answered (unanswered → bounce the ticket to the "Question for <name>" state), mirrors verified tickets to ephemeral GitHub issues with ready-for-agent, then runs the standard /ro:night-shift machinery on GitHub. Tail-calls /ro:linear-update for everything that merged + deployed. Triggers on "linear nightshift", "nightshift linear", "drain the linear board", "run the shift off linear", "/ro:linear-nightshift".
--- name: backlog-audit description: Refinement audit for a GitHub issue backlog — make relationships, priorities, and grouping explicit and consistent so a fresh reader (or /ro:ultracode) knows exactly what to build and in what order. Builds the dependency graph (parent/child, blocks, blocked-by, enables), normalizes a "## Relations" block into every issue, applies consistent priority/blocked labels, flags problems (orphans, cycles, dupes, blocked-by-closed, un-ordered date cohorts), and refres
--- name: new-app description: Generic "start a new project" orchestrator. Walks the canonical [[stack-decision-map]] tree (audience → app shape → scale → reactivity → EU residency → owns-the-table → connectors → payments) using AskUserQuestion, lands on a leaf, dispatches to the framework-specific skill that builds it (`/ro:new-tanstack-app`, `/ro:new-astro-app`, `/ro:new-mcp-server`, ...). Use when the user wants to start, create, scaffold, bootstrap, or begin a new project but isn't sure whic
--- name: pickup-repo description: Repo-side session re-entry, the back half of /ro:graduate-project. On a fresh session in a code repo it reads the repo CLAUDE.md then docs/agents/HANDOFF.md, refreshes live state from `gh issue list --label ready-for-agent` plus the coordination-hub issue, follows the cross-vault back-pointer to read the gestation vault's recent ROADMAP / log / decisions, and prints a one-screen briefing (what this is, where it stopped, what's next, what's blocked, what to clai
--- name: ship description: Ship a feature branch the local-CI-first way — run the full local gate, push, open a PR, squash-merge, then deploy, without waiting on GitHub Actions. Use when a branch is ready for main and you want it merged and deployed now. Reads CI policy from `ro ci` (default skips remote CI because GitHub Actions billing keeps hitting limits). Sibling to /ro:gh-ship (waits on GitHub checks) and /ro:cf-ship (the deploy half). Triggers on "ship it", "ship this", "merge and deploy
--- name: planner-worker description: Multi-agent coding swarm. Planner / worker / merger over git worktrees on the Max plan. Reads a grilled PRD from `.ralph/<name>/prd.md` OR a pre-ranked queue from `/ro:night-shift`, dispatches parallel Claude Code Agent workers (one per vertical-slice issue in its own git worktree) with hybrid file-area conflict detection, and a merger Agent reviews + merges clean work back to the target branch. Defers to /ro:repo-mode for `--github` default — `personal` rep
--- name: stay-in-your-lane description: Scope each dev's or agent's work on a shared repo so parallel workers don't collide. Reads the source of truth (Linear / GitHub issues / Jira / Trello) or asks who is on what, then maintains a committed LANES.md in the target repo that maps each person or agent to the files, directories, and tasks they own. Auto-applies whenever LANES.md is present - before touching a file, an agent checks whether it falls in another lane and either steps around it or ask
Telegram bot setup, one-way send/notify, and two-way listener that pipes incoming messages to a Claude Code session. Subcommands - setup (walks BotFather and captures bot token + chat_id), send (one shot message), notify (end-of-run ping with the same firing rule as /ro:pushover), listen (long-poll loop that runs `claude -p` per incoming message in a configured working dir and replies with the output). Use when Ronan asks to "set up a telegram bot", "telegram me when done", "ping me on telegram", "start the telegram listener", "let me query claude from my phone", or any /ro:telegram subcommand. Reads TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID, TELEGRAM_LISTEN_CWD from ~/.claude/.env.
Capture findings, decisions, and research from the current project into the LLM Wiki repo. Routes to the wiki repo's own ingest skills (ingest-session, ingest-text, rough-notes) by reading their SKILL.md as the spec, so behaviour stays in sync with the wiki's conventions. Per-project config in .ronan-skills-llm-wiki.local.json maps the current project to one or more vaults. Use when the user says "update the wiki", "add this to the wiki", "capture our findings", or wants to ingest research from outside the wiki repo.
Wrap the abair.ie Irish-language speech stack (Trinity College Dublin) — text-to-speech, speech-to-text, and chat. Four subcommands (tts, stt, chat, launch) over one shared kit (openapi.yaml + scalar.html + bruno/). Use for any Irish (Gaeilge) speech work; sibling to /ro:tts-elevenlabs and /ro:transcribe (neither has real Irish coverage).
Trace production tool calls across every AI surface (in-app chat via Vercel AI SDK, Vapi voice, MCP server) through ONE wrapTraced wrapper around the shared ToolSpec.execute, so all three front doors land in the same Braintrust project. Covers wrapAISDK on the chat route, the single traceTool chokepoint for Vapi + MCP, the EU OTLP exporter option, the log→dataset loop that turns real traces into eval data, and the cost/token-by-model BTQL rollup (Braintrust tracks estimated_cost + tokens natively). Use when the user wants to trace tool calls in production, observe agent runs, unify chat/voice/MCP telemetry, build an eval dataset from logs, or see LLM cost by model. Sibling of /ro:braintrust, /ro:braintrust-tool-evals, /ro:braintrust-vision-evals.
--- name: agentic-e2e-flow description: High-level end-to-end orchestrator for autonomous feature delivery. Sequences swarm-research → grill-with-docs → write-a-prd → slice-into-issues → swarm-or-ralph → gh-ship. Defers to /ro:repo-mode for output target — `personal` repos publish PRD and slices as GitHub issues using Matt Pocock's agent-native repo pattern; `work` repos run the same pipeline fully local in gitignored `.ralph/` so nothing leaks to the work GH/Jira/ADO project. Use when the user
--- name: code-review description: CodeRabbit-style PR review. Reads a GitHub PR, produces a walkthrough plus inline findings tagged by severity (critical / major / minor / question / praise) in a kind-but-direct voice. Default mode writes a local markdown report under `.code-review/`; `--post` publishes the review to GitHub as RoBot-branded inline comments via one atomic API call. Use when user wants to review a PR, run a code review, give feedback on a teammate's branch, or get a second-opinio
--- name: dev-needs-panel description: At the end of an autonomous run, generate a self-contained HTML "what I need from you" panel the user opens when back at the keyboard. Shows per-project / per-worktree what the agent is blocked on (env vars, accounts, config) with fillable form fields and a Save button that writes a local answers file the agent reads next session (fallback - the user just says "updated"). Generalises the completion-report + telegram-ping pattern into an actionable inbound c
--- name: brief-to-live description: Take a brief/spec/task handed over in an interview or customer engagement and drive it end-to-end — grill + research → ingest to an LLM wiki vault → baseline infra → GitHub parent issues → auto-slice → autonomous build (ultracode) → a business/tech/way-of-working presentation. It's a conductor that chains existing ronan skills with human-in-the-loop checkpoints. Triggers when Ronan says he's been given a spec/brief/task to plan or implement — and SPECIFICALLY
--- name: completion-report description: Render a browsable HTML completion report at the tail of any autonomous coding run (Ralph, planner-worker, agentic-e2e-flow) or on demand for any git range. Shows per-story / per-PR cards with CI status, file-change stats, unified diffs, and a per-file rollback command. Inspired by ruizrica/agent-pi's completion-report extension. Fires automatically before Pushover when invoked from Ralph or planner-worker (the ping links to the report). Manual trigger vi
Eval an LLM's tool-calling — does the model pick the right tool with the right arguments for a given user message? Build a dataset of (input → expected tool + args), run Eval() with toolChoice "required", score with toolSelected + argsMatch plus autoevals JSONDiff/NumericDiff/ValidJSON, and gate pre-push on a committed deterministic baseline (mirror apps/web/scripts/eval-matching.ts). Use when the user wants to test tool selection, tool-call accuracy, function-calling correctness, agent routing, or mentions tool evals / toolChoice / argsMatch. Sibling of /ro:braintrust, /ro:braintrust-vision-evals, /ro:braintrust-trace-surfaces.
--- name: cf-ship description: Ship a TanStack Start / Cloudflare Workers app with pre-flight checks (typecheck + lint + test + D1 migrations + build + deploy). Use when user wants to deploy, ship, release, push, or go live with a Cloudflare Workers app. Handles secrets, D1 migrations, and a post-deploy smoke check. category: deployment argument-hint: [--skip-tests] [--skip-migrations] [--env <name>] allowed-tools: Bash(pnpm *) Bash(wrangler *) Bash(curl *) Bash(git *) Read Edit --- # CF Ship
Pull a Confluence page into an llm-wiki vault as a source-note via the wiki's /ingest convention. One-way (Confluence → wiki), defaults to llm-wiki-simplicity-taskforce-partnership. Use when partner-shared research in Confluence needs to live in the wiki for query, synthesis, or cross-vault linking. Pairs with /ro:confluence and /ingest.
--- name: create-crm description: Domain generator for a real-estate CRM module. Runs Brian Casel's shape-PRD-then-milestone method with a dossier-first Dutch real-estate model baked in, then hands the sliced backlog to the local factory to build. The component /ro:brief-to-live calls when a brief is "build a CRM". Handles greenfield (clean dossier-first schema) and brownfield (migrate an existing contact-centric spine, Makely-style) on the Next.js + Supabase + Drizzle stack. Triggers on "create
Deploy and manage apps on Fly.io via the flyctl CLI. Use when user wants to deploy, ship, launch, release, or manage a Fly.io app — including `fly deploy`, `fly status`, `fly logs`, `fly secrets`, `fly certs`, scaling, and setting up custom domains for Dockerised frontend/backend apps.
--- name: night-shift-retro description: End-of-run retrospective for autonomous swarm runs (night-shift, ralph --afk, planner-worker --afk, agentic-e2e-flow). Writes a sibling markdown + JSON artefact under .nightshift/retros/, captures matrix-row failures and failure modes per slice, files SYSTEM gaps as issues against ronan-skills or factory, files PROJECT gaps as ready-for-human issues against the current repo, and pings Pushover/Telegram with the retro URL as a deep link. Defers to /ro:repo
--- name: new-tanstack-app description: Orchestrate scaffolding a new TanStack Start app on the canonical stack (TanStack Start + Drizzle + Neon Postgres + Cloudflare Workers + shadcn/ui). Dispatches to sub-skills for DB (Neon default; D1 via --db sqlite), auth (Better Auth by default: identity in your own DB, agent-readable, default sign-in = email OTP via Resend (iOS one-tap autofill, no OAuth-app setup), Google + passkeys opt-in; Clerk as the hosted-UI consideration; WorkOS AuthKit at B2B 100
--- name: night-shift description: Autonomous overnight swarm against the current repo's GitHub backlog. Opens with a pre-flight summary (how many slices are ready to drain, how many drafts/parents need grilling/slicing, how many issues are blocked on a human and why) then asks "grill now or drain what's ready?" so the user always knows what AFK means for this run. Loops wave-after-wave with a 4-signal ranker (age + priority + size + unblocks-others), hybrid file-area conflict detection between
Manage credentials INSIDE the active ~/.claude/.env file — read which token/account to use for a given app (Simplicity vs Dataforce vs Ronan-personal), add or update a secret WITHOUT it passing through the chat (an interactive Terminal window prompts for it), and track secrets that were exposed in a transcript so they get rotated. Sibling to /ro:context (which switches WHICH env file is active). Use when the user wants to add an API key/token/secret, asks "which credential do I use for X", needs the env organized/labelled, or a secret was pasted into the chat and should be rotated.
--- name: ralph description: Run an autonomous Ralph loop to implement tasks from a PRD in .ralph/ OR from GitHub issues labelled `ready-for-agent` (agent-native repo pattern). Each iteration picks the highest-priority unfinished story, implements it in a fresh isolated context, opens ONE PR per story (squash-merged with `Closes #N` for GH source), validates, and updates progress. Source defaults defer to /ro:repo-mode — `personal` repos read from GitHub issues; `work` repos read from local `.ra
--- name: skill-retro description: Retrospective on skills used in the current session — surfaces friction, proposes concrete edits to SKILL.md files, and commits improvements. Use when the user wants to evolve, improve, review, refine, or retro the skills they just ran. Also use proactively at the end of a multi-skill task. category: development argument-hint: [--skill <name>] [--apply] [--since <ref>] allowed-tools: Bash(git *) Bash(grep *) Bash(find *) Read Write Edit Glob Grep --- # Skill R
--- name: supabase description: Manage Supabase — create/list projects via the Management API, link a project, wire @supabase/supabase-js + @supabase/ssr into a Next.js (or any TS) app, run migrations (db push), generate TypeScript types, scaffold and review Row Level Security (RLS) policies, and run the local dev stack. Reads SUPABASE_ACCESS_TOKEN from ~/.claude/.env. Use when the user wants Postgres + Auth + storage with RLS, multi-role apps, or is building on the Supabase stack (e.g. Next + S
--- name: code-review-gate description: Wire the Council-of-LLMs code review into a repo's pre-push hook, gated per-project by a config file with a first-run prompt. When enabled, every push triggers /ro:council-review on the pushed commits and blocks the push if the council finds critical issues; the report can then be looped back to a dev agent. Opt-in per repo: a committed .ro-code-review.json (shareable with the team) or a gitignored .ro-code-review.local.json (personal) records whether the
--- name: spec-to-repo description: Graduate an accepted vault spec into a fresh repo. Reads the spec, scaffolds the repo (delegates to a stack skill or stamps a minimal layout), copies the spec into docs/specs/, derives .ralph/prd.json from the User Stories section, and cross-links the vault entry. Closes the loop between research-in-vault and implementation-in-repo. Use when an accepted vault-genesis spec is ready to become code. category: development argument-hint: [--scaffold tanstack|minima
--- name: ultracode description: Turn a roadmap or a one-line goal into a running multi-agent workflow. Resolves the work-list (an explicit goal, or /ro:project-status's .handoff/status-latest.md build queue, or GitHub ready-for-agent issues), orders it by dependency + file-area conflict, AUTHORS a dynamic Workflow-tool JS script (plan → implement-in-worktree → review → merge), and kicks it off — so you say the word and the sub-agents fan out on their own. The word "ultracode" is itself the Work
--- name: session-state description: The shared mechanical sweep that detects what's live in this repo/session but not yet durable — uncommitted changes, unpushed commits, open PRs, and whether the in-flight branch is tracked as an issue. Pure detection, no actions: it prints a structured inventory block that a calling skill acts on. Used by /ro:close-session ("I'm done") and /ro:handoff ("I'm continuing elsewhere") so the two never drift. Not usually invoked directly; triggers on "session state
--- name: project-status description: Read-only status report that fuses the repo's handoff doc, live GitHub issues (incl. PRD umbrellas + their comments), the project's LLM-wiki vault, and git into ONE grouped roadmap — In-progress / Bugs / Blocked / Ready features / PRD umbrellas / Future — plus a dependency-ordered build queue of the ready, unblocked slices. The "where were we" answer when picking up a handoff. Writes the report to .handoff/status-latest.md so /ro:ultracode can orchestrate ag
--- name: setup-logging description: Set up (or audit) the observability stack in a TanStack Start + Cloudflare Workers app so it is "diagnosable by default" — structured logging (logtape) with a request context carrying trace_id + userId + tenant/orgId, a trace_id propagated FE→BE→logs→Sentry→PostHog, Cloudflare Workers observability enabled, and Sentry + PostHog wired. Two modes: `setup` (wire it into an app) and `audit` (check an existing app + report gaps). Use when scaffolding a new app, wh
Write a blog post or article fast and in the author's real voice (not generic AI voice), through a conversation. The author says what they want to talk about and gives context (the codebase, repos, ideas they've been chewing on); the skill grounds the draft in the actual code, writes it in the author's voice, generates images, runs a "is this bullshit?" pass, and optionally produces an ElevenLabs voice-clone audio version. Use when the user says "write a blog post", "turn this into an article", "blog from my codebase", "write up what I built", "draft a post about this repo", "article in my voice".
One-shot headless OpenAI Codex CLI calls for background/admin AI tasks — summaries, classification, extraction, admin glue. The default engine for anything that runs AI constantly in the background (daemon-driven, per-event), because it bills the flat ChatGPT subscription instead of Claude usage or per-token API spend, and it keeps working while Claude is rate-limited. NEVER for coding — coding stays Claude. Use when a skill or daemon needs a cheap always-on AI call, when the user says "use codex", "ask codex", "codex as backup", or when building a background summarizer/classifier into a listener or loop. Reads auth from ~/.codex/auth.json (ChatGPT account, no API key).
--- name: in-your-face description: Capture a chat-only answer into a durable artifact (markdown + HTML, PDF when cheap) and launch it automatically so the user cannot miss it. Use when user says "in your face", "don't let me lose this", "save that answer", "make that durable", or right after answering a substantive side question (a recipe, comparison, how-to, or generated prompt) that would otherwise die with the context. category: workflow argument-hint: [--no-open] [--vault <short>] [hint of
--- name: linear-listen description: Listen to a Linear webhook so the moment a collaborator (Eoin) touches a ticket — answers a grill, edits an earlier answer, drags it to Done, or kicks it back from Interview — a detached /ro:linear-run fires on just that ticket. A local Python receiver verifies the Linear signature, filters to the collaborator's own events on the configured team (loop-safe: the agent's own moves never re-trigger), debounces rapid edits, and dispatches `claude -p "/ro:linear-r
--- name: slice-into-issues description: Take a PRD (parent GitHub issue OR local prd.json) and slice it into vertical-slice user-story issues that an agent can pull from a Kanban backlog. Defers to /ro:repo-mode for output target — `personal` repos publish each slice as a child GitHub issue referencing the parent via `## Parent\n\n#<N>` with ready-for-agent label; `work` repos write gitignored `.ralph/issues/*.md` so nothing leaks to the work GH/Jira/ADO project. First-run prompt picks the mode
--- name: clerk description: Wire Clerk into a TanStack Start app on Cloudflare Workers using the dedicated @clerk/tanstack-react-start package. Install, env config, clerkMiddleware in src/start.ts, ClerkProvider in __root.tsx, drop-in UI components (SignIn, SignUp, UserButton, OrganizationSwitcher), server-side auth() helper for createServerFn, useUser / useAuth hooks for client routes, Drizzle shadow user table, webhook signature verification, organisations + multi-tenancy, plus a role taxonom
--- name: linear-pipeline description: The Fable orchestrator for a single dispatched Linear ticket. Holds almost no context itself; it receives `--issue <ID> --detached`, decides the stage sequence, and fans out a sub-agent per stage, passing forward only each stage's artifact (never re-derived, never inlined into its own context). Step zero, before any planning or stage routing, is a boundary triage against `canon/security-boundary.md` (#199): a match tags Ronan Connolly and stops the run, no
--- name: write-a-prd description: Generate a PRD through an interactive interview. Defers to /ro:repo-mode for output target — `personal` repos publish the PRD as a GitHub issue (Matt Pocock's 7-section template with ready-for-agent label, agent-native repo pattern); `work` repos write to gitignored `.ralph/<name>/prd.md` so nothing leaks to the work GH/Jira/ADO project. First-run prompt picks the mode and persists per-repo; suggested default comes from the gh remote owner. Falls back to local
--- name: council-review description: Run a "Council of LLMs" code review — dispatch the whole review-agent fleet (general, architecture, simplicity, SOLID/DRY, security, way-of-working, accessibility) in parallel against a diff, branch, or PR, each through its own lens, then merge their findings into one severity-tagged report. Inspired by Shopify's multi-model review ensemble (Farhan Thawar). Use when the user wants a deep multi-lens review, a "council review", a "full review", a pre-merge gat
AI-powered web research using the Perplexity API. Searches the live web and returns sourced answers with citations. Use when user wants to research, look up, search the web, or find current information.
--- name: vercel-verify description: After pushing to a Vercel-connected repo, verify the deploy actually succeeded — don't trust a green local gate. Resolves the project, polls the Vercel API for the deployment matching the pushed commit until READY / ERROR / CANCELED, and on failure pulls the build error log and surfaces the failing lines. Exists because a local pre-push gate can pass on a Turbo cache hit while the real Vercel build breaks (e.g. a server-only module reaching the client bundle)
--- name: compare-specs description: Diff two specs produced by /generate-spec. Walks the 10-section template, builds a section-by-section change table, a mermaid sankey of additions/removals/changes, and a drift score. Optional PDF render. Use to compare initial vs post-phase-1 spec, or two competing drafts before commit. category: development argument-hint: [--pdf] <spec-a-path> <spec-b-path> allowed-tools: Read Write Edit Glob Grep Bash content-pipeline: - pipeline:input - platform:agnost
--- name: onboarding-flow description: Scaffold a gamified onboarding checklist for a TanStack Start + Clerk + D1 app. Generates the D1 state model, server-event-driven completion handlers, a Home-page checklist component, and a PostHog activation funnel. Mirrors the "persistent dashboard widget + event-driven auto-tick" pattern documented in the llm-wiki canon. Use when starting a new app or when an existing app's empty Home dashboard needs to become an activation surface. category: development
--- name: design-system-audit description: Scan a repo for violations of its DESIGN_SYSTEM.md — hand-rolled buttons, hex colours, radius that changes across states, scale-based active states, missing hover/focus/disabled treatment. Prints a prioritised punch list. Use before shipping a UI polish or when a design system was recently introduced and callers haven't migrated yet. category: frontend argument-hint: [--path=src/] [--fix-obvious] [--skip history] --- # Design System — Audit Finds the
--- name: repo-mode description: Resolve, set, or check whether the current repo is in `personal` mode (PRDs and slices publish as GitHub issues) or `work` mode (everything stays local in gitignored .ralph/ files, nothing posted to the GH backlog). Auto-prompted on first use by /ro:write-a-prd, /ro:slice-into-issues, /ro:ralph, /ro:planner-worker, and /agentic-e2e-flow. Invoke directly to inspect or override the mode (e.g. `/ro:repo-mode work`, `/ro:repo-mode personal --global`, `/ro:repo-mode -
Test-driven development with red-green-refactor cycles and vertical slices. Use when implementing features test-first, doing TDD, or working through a story.
--- name: generate-spec description: Generate a spec-driven-development spec for a feature or whole product. Two modes, fresh (interview-driven greenfield, vault-first when no repo exists) or from-codebase (analyses an existing repo). Outputs versioned markdown with EARS-format requirements, mermaid diagrams, and inline ADRs. Specs are born in a vault and graduate into a repo's docs/specs/ once implementation starts. Optional PDF render. Use when starting a new project, capturing the current sta
Turn a YouTube talk into a beautiful, print-ready PDF "field guide" — transcript + scene-detected slide screenshots + a designed editorial layout with action points. Pulls the transcript and slides, understands the talk, then composes a multi-page A4 PDF using the proven field-guide template (cover, idea cards, stat callouts, pulled quotes, embedded slides, a grouped action-points checklist). Use when the user wants a PDF from a YouTube video, "youtube to pdf", a talk turned into a handout/guide/one-pager, or a designed summary of a video with screenshots. Sibling of /ro:video-summarize (extraction only) and the llm-wiki /generate pdf (vault pages -> pdf); this one is URL in, designed PDF out.
--- name: generate-design-brief description: Derive a paste-ready Claude Design brief from an accepted spec. Reads the spec's outcomes, audiences, scope, and UI-surfacing user stories; pulls in any linked branding entity; asks the user for the gaps (vibe references, accent colour, anti-references, tone). Writes the brief into wiki/designs/<project>/brief-v<N>-YYYY-MM-DD.md so it lives as a sibling artefact to the spec and can be re-derived when the spec changes. Use after a spec is accepted and
Wire outbound (and inbound) AI phone calls into an app, with a switchable telephony provider. Covers three paths, Telnyx-native AI agent, Vapi + Telnyx carrier, and Vapi + Twilio carrier, plus the exact API calls to buy a number, register it, and place an outbound call. Use when a product needs an AI assistant to phone a user (a "call me" feature), live call transcription, and a post-call summary. Triggers on "AI phone call", "outbound call", "vapi telnyx", "voice agent calls a number", "call me feature".
Interactive onboarding wizard for environment setup. Guides through plugin installation, IDE integration, MCP servers, API tokens, and opt-in background automations (the nightly /ro:dream cron, the Telegram listener, notification tokens) — presents a menu of everything that CAN be set up and lets the user pick, nothing installs by default. Use when user first installs the marketplace, asks "what can I set up / what's available", wants to set up, onboard, configure environment, install tools, or enable background services.
--- name: handoff description: Capture a live session into ONE handoff file so you can clear context and resume cleanly in a fresh session (or another worktree). The "I'm continuing elsewhere" sibling of /ro:close-session ("I'm done, nothing left"). Runs the shared /ro:session-state sweep, ensures every open loop is a GitHub issue (the durable queue), writes a single orientation file at .handoff/<ts>.md (+ latest.md), and prints the exact pickup command. `handoff status` is a read-only preview o
--- name: better-auth description: Wire Better Auth into a TanStack Start app. The DEFAULT auth pick (since the Settle build, 2026-06-07) for small SaaS and personal apps: identity tables in your own Postgres so an agent or API can join user to app data (agent-readable), self-issued access tokens / API keys (PAT) for app-to-app and agent access plus OAuth/OIDC for MCP clients later, passwordless email OTP via Resend as the DEFAULT sign-in method (iOS one-tap autofill via autocomplete="one-time-c
Wire Resend transactional email + audiences into a TanStack Start + Cloudflare Workers app. Install, env config, server SDK, send-email route with React Email components, audiences for waitlist (resend.contacts.create), webhook signature verification via resend.webhooks.verify, sending-domain DKIM/SPF setup, broadcast send. Phase 0 unblocker for marketing landing → email capture → confirmation pattern. Use when user wants to add Resend, wire email, transactional email, waitlist, audience, React Email, send email from a Worker, email confirmation, Resend webhook, broadcast, or unsubscribe handling.
--- name: migrate-to-astro description: Migrate an existing static-leaning web app (Vercel-hosted Astro, VPS-hosted Astro, Next.js marketing site, plain HTML site, etc.) to Astro 5 on Cloudflare Workers + Sentry EU + PostHog EU. Walks the cutover sequence in the order that actually works (not the order the docs suggest), with explicit checks for every one of the twelve gotchas captured in the LLM wiki research vault. Sister skill to /ro:migrate-to-tanstack — for sites that don't need a real serv
Search, price, register, and manage domains via the Porkbun API. Use when the user wants to find a cheap domain, check availability across TLDs, buy a domain, list their domains, update nameservers, or manage URL forwarding. Porkbun is the backend; cheap pricing, full API coverage, no IP whitelisting.
Build a new version of an existing UI/content surface alongside the old one, behind a local switcher, so both can be compared before the old is replaced. Local A/B testing for redesigns and substantial layout/copy changes. Use when redesigning a page, reworking a layout, overhauling copy, or any time a change is worth seeing side-by-side with what it replaces. Triggers on "compare both", "add a switcher", "A/B this", "build it beside the old one", "let me toggle between versions", "variant compare", or proactively when a change is a redesign rather than a fix.
--- name: migrate-app description: Generic "migrate an existing project" dispatcher. Asks the source stack and the target shape via AskUserQuestion, then hands off to the framework-specific migration skill (`/ro:migrate-to-tanstack`, `/ro:migrate-to-astro`). Use when the user wants to migrate, port, move, or convert an existing web app but isn't sure which target stack fits. Sister to `/ro:new-app` — same dispatcher pattern, the migration leaves of `[[stack-decision-map]]`. Calls neither skill u
Draft and queue social posts via the Typefully v2 API across X, LinkedIn, Threads, Bluesky, Mastodon, and any other connected account in a Typefully social set. Creates a draft you review in the Typefully app/web before it auto-posts, optionally schedules to a specific time, queues into the next free slot, returns a shareable preview link, or scopes to specific platforms via --targets. Supports single posts and threads. Reads TYPEFULLY_API_KEY and TYPEFULLY_SOCIAL_SET_ID from ~/.claude/.env. Use when user wants to schedule, queue, draft, or cross-post to any Typefully-connected platform.
--- name: migrate-to-tanstack description: Migrate an existing web app to the canonical TanStack Start + Drizzle + D1 + Cloudflare Workers stack. Use when user wants to migrate, port, move, rewrite, or convert an app to TanStack Start — from Next.js, Vite+Hono, Remix, Nuxt, Express, Fly.io, Vercel, or any other stack. category: project-setup argument-hint: [--strategy branch|parallel|fresh] [--keep-data] allowed-tools: Bash(pnpm *) Bash(pnpx *) Bash(wrangler *) Bash(git *) Bash(grep *) Bash(jq *
--- name: confluence description: Create, update, read, and Smart-Link Confluence pages via the Atlassian Remote MCP server. Defaults to the dataforce space on the Simplicity Labs site. Use when user wants to draft a research doc, post meeting notes, or link a Confluence page to a Jira ticket. Pairs with /ro:jira and /ro:confluence-to-wiki. category: project-management argument-hint: [create "title" [--parent <page-id>] [--body-file <path>] | update <page-id> [--body-file <path>] | show <page-id
Manage Cloudflare DNS records via the API — add, update, or delete subdomains (A, AAAA, CNAME, TXT, MX). Use when user wants to add a subdomain, point a DNS record, create/update/delete DNS entries on Cloudflare, or set up a custom domain for a hosted app (Fly, Vercel, Render, etc.).
Documentation standards for the LLM Wiki project. Reference skill loaded when creating or updating markdown docs. Ensures consistent structure, mermaid diagrams, and formatting.
Generate images from text prompts via Google Gemini (Nano Banana 2). Outputs PNG files. Use for thumbnails, slide imagery, infographic assets, social cards, or standalone image generation.
--- name: git-cleanup description: Prune local git branches that are already on main, detecting classic merges, squash-merges via merged PRs, and content-in-main via diff. Confirms with the user before deleting. Use when the user wants to clean up, prune, or delete merged branches, or asks which branches are safe to delete. category: development argument-hint: [--base main] [--dry-run] [--include-archive] [--yes] allowed-tools: Bash(git *) Bash(gh *) --- # Git Cleanup List every local branch,
--- name: keyboard-shortcuts description: Wire a global keyboard shortcut handler with editable-element and modifier guards, plus a discoverable help dialog. Power-user signal that pays for itself in demos, screencasts, and portfolio respect. Use on any utility app with more than three primary actions. category: quality-review argument-hint: [--actions <file>] [--help-key ?] [--no-dialog] allowed-tools: Bash(*) Read Write Edit Glob Grep --- # Keyboard Shortcuts A small amount of keyboard wirin
--- name: neon description: Manage Neon serverless Postgres — create project, branches (incl. per-PR preview), wire Drizzle + Neon HTTP driver for Cloudflare Workers, set DATABASE_URL via wrangler secret. Use when user wants Postgres (not SQLite/D1) — needs pgvector / PostGIS / JSONB / preview DB branches / strict types, or when wiring Neon into a TanStack Start + CF Workers app. category: database argument-hint: [install | project <list|create> | branch <list|create|delete> | push-secret] [--pr
Generate sound effects from text prompts via ElevenLabs Sound Effects API. Outputs MP3 files. Use for video SFX, UI sounds, ambient backgrounds, transition effects.
Scan X (Twitter) for posts from a user, search results, or single-tweet fetches. Uses FXTwitter (no auth) for single tweets. Returns findings without vault persistence. Sibling to llm-wiki/ingest-tweet.
Build a portable voice profile (markdown file) by running a 100-question taste interview across 7 categories. Output is consumable by any AI to reproduce the user's voice. Resumable across sessions. Based on Ruben Hassid's "I am just a text file" methodology (Jan 2026).
Bridge a Jira (DAFO) ticket to the agent-native GitHub repo flow. Two modes — --mirror creates a one-to-one GH issue in RonanCodes/dataforce with linkbacks both ways; --prd seeds /ro:write-a-prd from the ticket body and publishes the PRD as a GH parent issue. Use when a Taskforce-filed DAFO ticket needs to enter the Skip+Ronan implementation pipeline.
One-time Cloudflare API token setup so other skills (domain, cloudflare-dns, cf-ship) can create zones, edit DNS, manage Workers, and write redirect rules. Use when a Cloudflare skill fails with "Authentication error" or when onboarding a new machine. Walks the user through the account-owned token + user token model that Cloudflare requires.
--- name: security-audit description: Pre-publish safety check for a git repo. Scans for secrets/tokens, PII, work identifiers, committed .env files, and risky git history. Use before making a private repo public, before pushing to a new remote, or before sharing a snapshot/zip. category: quality argument-hint: [path] [--quick] [--history-only] [--no-personal] allowed-tools: Bash Read Write Glob Grep --- # Security Audit Catches the things you'd be embarrassed (or fired) to ship publicly: API
--- name: jira description: Create, read, update, comment on, and transition Jira tickets via the Atlassian Remote MCP server. Defaults to the DAFO (Dataforce) project on the Simplicity Labs site. Use when user wants to file a Jira ticket, move a DAFO ticket between board columns, list the board, assign work, or comment on a ticket. Pairs with /ro:confluence and /ro:jira-to-gh. category: project-management argument-hint: [create <Bug|Story|Task|Feature> "title" [--body "..."] [--assignee <accoun
When generating wiki pages, READMEs, POC docs, integration write-ups, architecture notes, design docs, or any artefact whose purpose is for the user to *understand* a topic — not just record information. Apply BEFORE writing the artefact, then validate against the checklist before saving. The "outsource thinking, not understanding" principle.