Brainstorming
obra/superpowers
Makes the agent clarify intent and agree on a design with you before writing any code, scaling the process from a quick spike to a written spec.
Self-contained parallel generator — invoke directly, do not decompose.
$ npx skills add popmechanic/VibesOS --skill riff -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install popmechanic/VibesOS riff --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/popmechanic/VibesOS.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/riff .claude/skills/riff && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "riff" agent skill from https://github.com/popmechanic/VibesOS/tree/main/skills/riff into .claude/skills/riff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "riff", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/popmechanic/VibesOS/tree/main/skills/riffType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add popmechanic/VibesOS --skill riff -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install popmechanic/VibesOS riff --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/popmechanic/VibesOS.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/riff .agents/skills/riff && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "riff" agent skill from https://github.com/popmechanic/VibesOS/tree/main/skills/riff into .agents/skills/riff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "riff", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add popmechanic/VibesOS --skill riff -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install popmechanic/VibesOS riff --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/popmechanic/VibesOS.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/riff .cursor/skills/riff && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "riff" agent skill from https://github.com/popmechanic/VibesOS/tree/main/skills/riff into .cursor/skills/riff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "riff", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/popmechanic/VibesOS.git --path skills/riff--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add popmechanic/VibesOS --skill riff -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install popmechanic/VibesOS riff --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/popmechanic/VibesOS.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/riff .gemini/skills/riff && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "riff" agent skill from https://github.com/popmechanic/VibesOS/tree/main/skills/riff into .gemini/skills/riff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "riff", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install popmechanic/VibesOS riffInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add popmechanic/VibesOS --skill riff -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/popmechanic/VibesOS.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/riff .github/skills/riff && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "riff" agent skill from https://github.com/popmechanic/VibesOS/tree/main/skills/riff into .github/skills/riff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "riff", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add popmechanic/VibesOS --skill riff -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install popmechanic/VibesOS riff --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/popmechanic/VibesOS.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/riff .opencode/skills/riff && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "riff" agent skill from https://github.com/popmechanic/VibesOS/tree/main/skills/riff into .opencode/skills/riff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "riff", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
riffSelf-contained parallel generator — invoke directly, do not decompose.
Riff is an agent skill from popmechanic/VibesOS. Self-contained parallel generator — invoke directly, do not decompose. Generates 3-10 app variations in parallel for comparing ideas. Use when user says "explore options", "give me variations", "riff on this", "brainstorm approaches", or wants to see multiple interpretations of a concept.
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files.
It sits in Agent Workflows, covering Brainstorming. The repository describes itself as: A GUI for Claude Code that makes it easy to vibe code simple, un-hackable apps. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5baf8a2. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteBashTaskGlobAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
bunclaudeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Riff loads about 2k tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 453 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Bash, Task, Glob, AskUserQuestionAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from popmechanic/VibesOS at commit 5baf8a2, republished under its MIT licence (© popmechanic). 453 words, ~2,034 tokens.
.claude/skills/riff/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Plan mode: If you are planning work, this entire skill is ONE plan step: "Invoke /vibes:riff". Do not decompose the steps below into separate plan tasks.
Display this ASCII art immediately when starting:
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░▒▓███████▓▒░░▒▓████████▓▒░░▒▓███████▓▒░
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓█▓▒▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓█▓▒▒▓█▓▒░░▒▓█▓▒░▒▓███████▓▒░░▒▓██████▓▒░ ░▒▓██████▓▒░
░▒▓█▓▓█▓▒░ ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓█▓▓█▓▒░ ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓██▓▒░ ░▒▓█▓▒░▒▓███████▓▒░░▒▓████████▓▒░▒▓███████▓▒░Generate multiple app variations in parallel. Each riff is a different INTERPRETATION - different ideas, not just styling.
Detect whether you're running in a terminal (Claude Code CLI) or an editor (Cursor, Windsurf, VS Code with Copilot). Terminal agents use AskUserQuestion for all input. Editor agents present requirements as a checklist comment, wait for user edits, then proceed. See the vibes skill for the full detection and interaction pattern.
Use AskUserQuestion to collect all config at once.
Question 1: "What kind of app do you want to explore? (broad/loose is fine)"
Header: "Theme"
Options: User enters via "Other"
Question 2: "Describe the visual style - colors, mood, aesthetic"
Header: "Visual"
Options: ["Warm sunset tones", "Clean minimal white", "Neon cyberpunk", "Other (describe)"]
Question 3: "How many variations should I generate?"
Header: "Count"
Options: ["3 (recommended)", "5", "7", "10"]After receiving all answers, proceed immediately to Step 2 - no more questions.
Note: If the frontend-design skill is available, use it for enhanced visual design quality.
mkdir -p riff-1 riff-2 riff-3 ...Use the bundled script to generate riffs in parallel. Each script instance calls claude -p (uses subscription tokens) and writes directly to disk.
Generate riffs in parallel based on user's count:
VIBES_ROOT="${CLAUDE_PLUGIN_ROOT:-$(dirname "$(dirname "${CLAUDE_SKILL_DIR}")")}"
# For each N from 1 to ${count}:
bun "$VIBES_ROOT/scripts/generate-riff.js" "${prompt}" N riff-N/app.jsx "${visual}" &
# Then wait for all
wait
echo "All ${count} riffs generated!"Example for count=3:
VIBES_ROOT="${CLAUDE_PLUGIN_ROOT:-$(dirname "$(dirname "${CLAUDE_SKILL_DIR}")")}"
bun "$VIBES_ROOT/scripts/generate-riff.js" "productivity apps" 1 riff-1/app.jsx "warm sunset oranges and soft creams" &
bun "$VIBES_ROOT/scripts/generate-riff.js" "productivity apps" 2 riff-2/app.jsx "warm sunset oranges and soft creams" &
bun "$VIBES_ROOT/scripts/generate-riff.js" "productivity apps" 3 riff-3/app.jsx "warm sunset oranges and soft creams" &
waitWhy this works:
claude -p "..." → uses subscription tokens&) run in parallel → true concurrencyConvert each app.jsx to a complete index.html:
VIBES_ROOT="${CLAUDE_PLUGIN_ROOT:-$(dirname "$(dirname "${CLAUDE_SKILL_DIR}")")}"
bun "$VIBES_ROOT/scripts/assemble-all.js" riff-1 riff-2 riff-3 ...Read the pitch.md files (NOT the full code) for fast evaluation:
# Read pitch files - contains reasoning about theme, colors, functionality
cat riff-*/pitch.md
# Also read BUSINESS comments for app names (just first 10 lines of each)
head -10 riff-*/app.jsxpitch.md contains the model's reasoning about theme, colors, and design choices. BUSINESS comment (top of app.jsx) contains: name, pitch, customer, revenue.
Then create RANKINGS.md using this format:
# Riff Rankings: [Theme]
## Summary
| Rank | App Name | Score | Best For |
|------|----------|-------|----------|
| 1 | [Name] | XX/50 | [one-liner] |
| 2 | [Name] | XX/50 | [one-liner] |
| ... | ... | ... | ... |
## Detailed Scores
### #1: [App Name] (riff-N)
| Criterion | Score | Notes |
|-----------|-------|-------|
| Originality | X/10 | [Why unique or derivative] |
| Market Potential | X/10 | [Target audience size, demand] |
| Feasibility | X/10 | [Technical complexity, time to build] |
| Monetization | X/10 | [Revenue model viability] |
| Wow Factor | X/10 | [First impression, engagement] |
| **Total** | **XX/50** | |
[Repeat for each riff]
## Recommendations
- **Best for solo founder:** [riff-N] - [reason]
- **Fastest to ship:** [riff-N] - [reason]
- **Most innovative:** [riff-N] - [reason]
- **Best monetization:** [riff-N] - [reason]Scoring Guidelines:
Create index.html gallery page with:
Generated ${count} riffs for "${prompt}":
#1: riff-X - App Name (XX/50)
#2: riff-Y - App Name (XX/50)
...
Open index.html for gallery, or browse riff-1/, riff-2/, etc.Scripts resolve the plugin root via VIBES_ROOT, which tries ${CLAUDE_PLUGIN_ROOT} first (set by Claude Code) and falls back to deriving the path from ${CLAUDE_SKILL_DIR} (two directories up). Set it at the top of each bash block: VIBES_ROOT="${CLAUDE_PLUGIN_ROOT:-$(dirname "$(dirname "${CLAUDE_SKILL_DIR}")")}"
After presenting rankings, guide the user with AskUserQuestion:
Question: "You have ${count} variations ranked. What would you like to do?"
Header: "Next"
Options:
- Label: "Develop the #1 ranked app"
Description: "Take the top-ranked variation and continue building it. I'll copy riff-1/app.jsx to your working directory so you can iterate with the full vibes feature set - add functionality, refine the design, make it yours."
- Label: "Let me pick a different one"
Description: "The rankings are just my analysis - you might see something special in another variation. Tell me which riff number speaks to you and I'll set it up for development."
- Label: "Turn winner into SaaS (/sell)"
Description: "Ready to monetize the best one? Sell adds authentication via Pocket ID with passkeys, subscription billing, and multi-tenant database isolation. Each customer gets their own subdomain with their own data."
- Label: "Deploy a riff as demo (/cloudflare)"
Description: "Want to share one quickly? Deploy puts any variation live on Cloudflare Workers within minutes. Great for getting feedback before committing to further development."
- Label: "I'm done for now"
Description: "Wrap up this session. All riffs are saved in riff-1/, riff-2/, etc. - browse them locally or come back later to continue."After user responds:
© popmechanic, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files in skills/riff of popmechanic/VibesOS.
Open the folder on GitHubat commit 5baf8a2
Riff next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Riff this skillpopmechanic/VibesOS | 136 | — | ~2k | Automated safety check: Notes | MIT | |
| Brainstormingobra/superpowers | 297k | 1 repos | ~2.5k | Automated safety check: Pass | MIT | |
| Brainstormingxpinjection/test-driven-spring-boot | 112 | 52 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Yao Meta Skillyaojingang/yao-meta-skill | 2.7k | — | ~768 | Automated safety check: Pass | MIT | |
| Typesafe AIOpenAgentsInc/openagents | 455 | 9 repos | ~2.5k | Automated safety check: Pass | MIT | |
| Trellis StartROYIANS/foliq-print-template-designer | 136 | 6 repos | ~646 | Automated safety check: Pass | MIT |
obra/superpowers
Makes the agent clarify intent and agree on a design with you before writing any code, scaling the process from a quick spike to a written spec.
xpinjection/test-driven-spring-boot
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior.
yaojingang/yao-meta-skill
Create, improve, or evaluate an existing skill from workflows, prompts, SOPs, scripts.
OpenAgentsInc/openagents
Build AI-powered software with TypeSafe: small units of AI intelligence you can use like programming primitives.
ROYIANS/foliq-print-template-designer
Initializes an AI development session by reading workflow guides, developer identity, git status, active tasks, and project guidelines from .trellis/.
jnMetaCode/superpowers-zh
Turns a rough idea into an approved design before any code is written, sorting the request into spike, bounded or architectural and enforcing an approval gate.
popmechanic/VibesOS
Self-contained SaaS pipeline — invoke directly, do not decompose.
popmechanic/VibesOS
Self-contained app generator — invoke this skill directly, do not decompose into sub-steps.
popmechanic/VibesOS
Self-contained deploy automation — invoke directly, do not decompose.
popmechanic/VibesOS
Self-contained design transformer — invoke directly, do not decompose.
popmechanic/VibesOS
Self-contained SaaS pipeline — invoke directly, do not decompose.
popmechanic/VibesOS
Lightweight requirements gathering before app generation. An agent skill from popmechanic/VibesOS.
Categories
Self-contained parallel generator — invoke directly, do not decompose. Riff is an agent skill from popmechanic/VibesOS. Self-contained parallel generator — invoke directly, do not decompose.
Riff fits situations like: user says explore options; give me variations; brainstorm approaches; wants to see multiple interpretations of a concept.
Run `npx skills add popmechanic/VibesOS --skill riff -a claude-code`. Or copy the skill folder (skills/riff in popmechanic/VibesOS) into .claude/skills/riff in your project. Claude Code loads it when a task matches its description.
Run `npx skills add popmechanic/VibesOS --skill riff -a codex`. Or copy the skill folder (skills/riff in popmechanic/VibesOS) into .agents/skills/riff in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add popmechanic/VibesOS --skill riff -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/riff, .gemini/skills/riff, .github/skills/riff and .opencode/skills/riff in your project.
Going by SKILL.md and its folder, Riff needs the command-line tools its instructions call (bun and claude). Its frontmatter pre-approves these tools: Read, Write, Bash, Task, Glob, AskUserQuestion.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Riff is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 8.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Riff: Brainstorming (obra/superpowers, 297k stars), Brainstorming (xpinjection/test-driven-spring-boot, 112 stars), Yao Meta Skill (yaojingang/yao-meta-skill, 2.7k stars) and Typesafe AI (OpenAgentsInc/openagents, 455 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
popmechanic (a GitHub user) maintains it in popmechanic/VibesOS, which has 136 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on July 27, 2026.
Source: popmechanic/VibesOS on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.