Docs

Floom Starter Pack

Reference and setup guide. Everything you need to install, update, and understand what the pack adds to your agent — plus the curation decisions behind it.

Quickstart

The simplest path is to paste a single prompt into your agent:

Agent prompt (Claude Code, Cursor, Codex, OpenCode, Kimi)
Set up Floom Starter Pack: https://floom.dev/starter

Your agent reads the manifest at that URL and installs the right files for its runtime. No account needed. Nothing to configure.

If you prefer to run it yourself:

Terminal
npx @floomhq/starter

The CLI detects which agent config files exist on your machine and writes only to the appropriate paths.

flowchart LR User["Paste command\ninto agent"] --> CLI["npx @floomhq/starter init"] CLI --> Pick["Agent asks:\nwhat's your work?"] Pick --> Install["Installs skills +\nactivation rules"] Install --> Ready["Agent fires skills\nautomatically"]

What gets installed

The pack writes three things per supported agent:

FilePurpose
AGENTS.md / CLAUDE.mdActivation rules — tell the agent when to invoke each skill, using the AGENTS.md pattern Vercel found achieves 100% invocation rate.
.floom/skills.jsonSkill manifest — the full list of installed skills, their sources, install counts, and profile tags. Used by the find-skills meta-skill for discovery without loading all 97 into context.
.floom/starter.lockLock file — records the pack version and install date. Used by npx @floomhq/starter update to pull only changed skills.
No executables. Nothing gets added to your PATH, no daemons are started, no network connections are opened after install. The pack is static config files only.

Total size on disk: approximately 120 KB for the full 97-skill pack. Individual skill files average 1.2 KB.

flowchart TD Floom["npx @floomhq/starter"] --> Skills["~/.claude/skills/\n~/.cursor/rules/\netc."] Floom --> Companion["~/CLAUDE.md\nactivation block"] Floom --> Manifest["~/.floom/manifest.json"] Floom --> Index["~/.floom/skills-index.json"]

Supported agents

The pack supports five agents out of the box. Each agent reads skill context from a different path.

AgentActivation fileSkills path
Claude Code ~/.claude/CLAUDE.md ~/.claude/skills/
Codex CLI ~/.codex/AGENTS.md ~/.codex/skills/
Cursor .cursorrules (project root) .cursor/skills/
OpenCode AGENTS.md (project root) .opencode/skills/
Kimi AGENTS.md (project root) .kimi/skills/

When you run the installer, it detects which of these directories exist and writes only to the ones that do. If none are found, it prompts you to choose.

Not included: Gemini CLI. The pack does not support Gemini at this time.

Updating

The skill manifest is updated daily as new skills are published to skills.sh. To pull the latest version:

Terminal
npx @floomhq/starter update

This reads your existing .floom/starter.lock, fetches the latest manifest, and writes only the files that have changed. Your existing activation rules in AGENTS.md or CLAUDE.md are preserved.

To update via your agent, paste:

Agent prompt
Update Floom Starter Pack to latest: https://floom.dev/starter/update

Uninstalling

To remove all files the pack added:

Terminal
npx @floomhq/starter remove --all

This deletes the .floom/ directory and removes the Floom activation block from your AGENTS.md or CLAUDE.md. It does not touch anything outside the paths the installer originally wrote to.

To remove only a specific agent's config:

Terminal
npx @floomhq/starter remove --agent claude-code

Privacy

The Floom Starter Pack is a local install. After the initial download, it operates entirely on your machine.

  • No telemetry. No analytics. No usage data is collected or transmitted.
  • No account required. No sign-in. No API key.
  • The installer downloads skill files from GitHub. After install, there are no ongoing network calls.
  • The skill files themselves are static text. They contain no code that executes automatically.
The find-skills meta-skill (by Vercel Labs, part of this pack) does make network calls to skills.sh when your agent invokes it to search for new skills. This is on-demand, not automatic.

License

The Floom Starter Pack installer and tooling is MIT licensed. This means you can use, modify, and redistribute it freely.

Individual skills in the pack carry their own licenses. The breakdown:

LicenseSkillsCount
MIT All superpowers, mattpocock, vercel-labs, coreyhaines31, scrapegraphai, wshobson, currents-dev, remotion-dev skills 62 skills
Apache 2.0 All benchflow-ai/skillsbench, pbakaus/impeccable, supabase/agent-skills, and most anthropics/skills 29 skills
Source-available docx, pdf, pptx, xlsx from anthropics/skills (use freely, not fully OSS) 3 skills
Proprietary workplan, wireframe-to-react, video-polish (Floom team, full rights granted for pack distribution) 3 skills

Each skill file includes a license header. If you redistribute individual skills, preserve the header.

Architecture

The full technical shape of the pack: how the installer resolves targets, what files get written, how agents discover installed skills, and what V0 guarantees.

Mental model

The package contains a manifest plus bundled skill folders. The installer resolves selected profiles, detects local agents, writes skills into their native roots, writes a local index, and adds instructions that teach agents to search locally.

flowchart LR User([User]) --> CLI["npx @floomhq/packs install"] CLI --> Manifest["packs/starter/manifest.json"] CLI --> Skills["Bundled skill folders"] CLI --> Detect["Detect local agents"] Detect --> Claude["Claude Code"] Detect --> Codex["Codex CLI"] Detect --> Cursor["Cursor"] Detect --> OpenCode["OpenCode"] Detect --> Kimi["Kimi"] CLI --> Index["~/.floom/packs/starter-index.json"] CLI --> Instructions["Harness instruction files"] Skills --> Roots["Local agent skill roots"] Index --> Discovery["local-find-skills"] Instructions --> Discovery style User fill:#0a5230,color:#fff,stroke:none style Discovery fill:#fbfaf3,stroke:#0a5230,color:#0a5230
V0 scope: Local compatibility infrastructure. Proves user value of curated skills without waiting for cloud sync, account setup, or MCP adoption.

Install flow

When the user runs install, explicit targets win. If no target is passed, the CLI detects local agent config directories and installs only to those agents.

Terminal
npx @floomhq/packs install --profiles core,dev,writing --yes
flowchart TD Install["install command"] --> Explicit{"--targets provided?"} Explicit -->|yes| UseExplicit["Use requested targets"] Explicit -->|no| Detect["Detect present local agents"] Detect --> ClaudePath["~/.claude"] Detect --> CodexPath["~/.codex or CODEX_HOME"] Detect --> CursorPath["~/.cursor"] Detect --> OpenCodePath["~/.config/opencode"] Detect --> KimiPath["~/.kimi"] Detect --> Found{"any found?"} Found -->|yes| UseDetected["Install only detected targets"] Found -->|no| Error["Ask for explicit --targets"] style Install fill:#0a5230,color:#fff,stroke:none style Error fill:#fbfaf3,stroke:#b8c8b1,color:#5a6259

Files written

Each target receives skill folders in its native root, a harness instruction file, and a shared local index at ~/.floom/packs/starter-index.json.

flowchart LR CLI["floom-packs"] --> ClaudeRoot["~/.claude/skills"] CLI --> CodexRoot["~/.codex/skills"] CLI --> CursorRoot["~/.cursor/skills-cursor"] CLI --> OpenCodeRoot["~/.config/opencode/skills"] CLI --> KimiRoot["~/.kimi/skills"] CLI --> ClaudeInstr["~/.claude/CLAUDE.md"] CLI --> CodexInstr["~/.codex/AGENTS.md"] CLI --> CursorInstr["~/.cursor/rules/floom-packs.mdc"] CLI --> OpenCodeInstr["~/.config/opencode/AGENTS.md"] CLI --> KimiInstr["~/.kimi/agents/floom-system.md"] CLI --> Index["~/.floom/packs/starter-index.json"] style CLI fill:#0a5230,color:#fff,stroke:none style Index fill:#fbfaf3,stroke:#0a5230,color:#0a5230

Conflict protection

Every installed skill gets a provenance file. Managed pack skills can be replaced by later installs; untracked user-created folders are protected by default.

flowchart TD SkillWrite["Plan skill write"] --> Exists{"destination exists?"} Exists -->|no| Copy["copy skill folder"] Exists -->|yes| Provenance{"has .floom-pack.json from @floomhq/packs?"} Provenance -->|yes| Replace["replace managed copy"] Provenance -->|no| Force{"--force?"} Force -->|yes| Replace Force -->|no| Conflict["refuse overwrite"] style SkillWrite fill:#0a5230,color:#fff,stroke:none style Copy fill:#fbfaf3,stroke:#b8c8b1 style Replace fill:#fbfaf3,stroke:#b8c8b1 style Conflict fill:#fbfaf3,stroke:#b8c8b1,color:#5a6259

Skill discovery

No MCP is required in V0. The discovery loop is local: injected instructions point the agent at the starter index and the local-find-skills skill.

flowchart LR Instructions["Injected instructions"] --> Agent(["Agent"]) Index["starter-index.json"] --> Finder["local-find-skills"] Finder --> Agent Agent --> Selected["Selected SKILL.md files"] Selected --> Work["Task execution"] style Agent fill:#0a5230,color:#fff,stroke:none style Work fill:#fbfaf3,stroke:#b8c8b1
MCP can come later for larger libraries and better search tooling. It is not a launch dependency for Floom Packs V0.

Data model

The manifest links profiles to skills, and skills to their upstream source records — keeping provenance legible and auditable.

classDiagram class PackManifest { id name version defaultProfiles targets } class Profile { id name description skills[] } class Skill { slug name source upstream } class Source { label repo commit license status } PackManifest "1" --> "*" Profile PackManifest "1" --> "*" Skill PackManifest "1" --> "*" Source Profile "*" --> "*" Skill Skill "*" --> "1" Source

Next curation pass planned sources:

SourceGoalGate
skills.shBroad public skill ecosystemLicense and attribution verification
Native Claude skillsHigh-quality agent-native patternsRedistribution rights and adaptation policy
gstackStrong developer workflow ideasStandalone extraction without telemetry/update coupling
superpowersPotential broad workflow skillsLicense/provenance review
Other open sourcesFill profile gapsClear source URL, commit, license, and quality score

Verified behaviors

Behaviors confirmed across all five launch targets. These are the acceptance criteria for any release.

  • Manifest references existing skill folders.
  • Every bundled skill has frontmatter and description.
  • Dry-run writes nothing.
  • Temp-root install writes skills, index, provenance, and instructions.
  • Target autodetection works.
  • Missing detected targets produces a clear error.
  • --targets all writes all five launch targets.
  • Untracked existing skills are not overwritten.
Methodology
Why we built it this way

How we curated 63 skills from 91,000

Skills.sh indexes 91,035 skills. We curated 63 of them. The selection rules:

01
Install count floor: 32,900+
Every skills.sh skill in the pack has been installed by at least 32,900 agents. This is a proxy for real-world validation. The median in the pack is 75,000 installs.
02
License compliance
MIT, Apache 2.0, or Floom-owned. Skills requiring an API key are excluded. gstack skills were excluded because no redistributable license was confirmed.
03
Description quality
Skills must have a clear "when it fires" trigger. A skill without an obvious trigger condition wastes context and won't be invoked reliably.
04
No API-key-required skills
The pack must work out of the box with zero setup. Skills that require external credentials are excluded or replaced with equivalent free alternatives.

The 4 source tiers, in priority order:

SourceSkills in packWhy this tier
skills.sh84 skills (87%)Battle-tested, real install counts, diverse publishers
Superpowers (obra, MIT)14 (sub-source of skills.sh)Highest install counts in workflow/planning category
SkillsBench (Apache 2.0)10 skillsAcademic validation on real benchmarks
Floom proprietary3 skillsLast resort only: workplan, wireframe-to-react, video-polish fill gaps with no proven equivalent
From 22 Floom-proprietary to 3. Version 1 of this pack had 22 Floom-authored skills (35%). Version 3 has 3 (3.1%). That reduction is the curation work.

How activation works (the 100% pattern from Vercel)

Vercel published research showing that agents skip 56% of installed skills by default. Even with an explicit "use these skills" prompt, invocation only reaches 70%. The AGENTS.md activation pattern achieves 100%.

The pattern works by embedding per-skill trigger conditions directly into the agent's context file (CLAUDE.md or AGENTS.md). Instead of telling the agent "you have 63 skills available," it tells the agent: "when the user says X, invoke Y."

1
Installer writes AGENTS.md. Each skill gets 1-2 trigger sentences in the activation block: "When the user asks to debug anything or mentions a test failure, invoke systematic-debugging."
2
Skills manifest is written to .floom/skills.json. Compact — name, source, profile tags. The agent doesn't load full skill files into context until they're invoked.
3
find-skills (by Vercel Labs) handles discovery. When a task doesn't match any installed trigger, the agent can invoke find-skills to search for the right tool without loading all 97 into context.
4
Skill is loaded on demand. The full skill file is read into context only when the trigger fires. Simon Willison's framing: "skills cost a few dozen tokens until invoked."
flowchart LR UserAsk["User asks:\n'review this PR'"] --> Agent Agent --> AGENTS["Reads CLAUDE.md\n/ AGENTS.md"] AGENTS --> Match["Matches\nactivation rule"] Match --> Skill["Loads pr-review\nskill"] Skill --> Output["Agent uses skill,\nreturns review"]

Source for the 100% claim: Vercel's agent evals post. The AGENTS.md pattern is also the basis for Anthropic's own Claude Code setup.

Why curation beats quantity

The SkillsBench paper (arxiv.org/abs/2602.12670) tested agent performance across three skill installation strategies:

+18.6pp
lift with 2-3 curated skills per task
Source: SkillsBench
-2.9pp
drop with kitchen-sink install (all available skills)
Source: SkillsBench
-1.3pp
drop with self-generated skills (agent writes its own)
Source: SkillsBench

The mechanism: irrelevant skills confuse the agent about what to use. A kitchen-sink install forces the agent to evaluate 200+ options per task, increasing both latency and error rate. The sweet spot is 2-3 well-matched skills per task, which is exactly what profile-based curation produces.

This is why the pack uses profile tags. When you label yourself as a developer, you get the 12 dev skills in your activation block, not all 97. The agent doesn't know about skills outside your selected profiles unless it invokes find-skills specifically.

What Floom adds to skills.sh skills

Floom doesn't author most of the skills in this pack. We curate them from the open ecosystem (mostly skills.sh) and add five things on top:

1. AGENTS.md / CLAUDE.md activation rule per skill so they actually fire. Vercel showed this lifts activation from 53% to 100%.
2. Cross-agent format translation — same skill, native install in 5 agents.
3. License vetting — we exclude API-keyed and ambiguous-license skills.
4. Daily refresh + version tracking from upstream sources.
5. Curated portfolio — 97 from 91,000 is editorial labor.

When you install via Floom, you're getting the original author's skill — with the activation, distribution, and update layer Floom provides on top. We link every skill to its source repo. Floom doesn't intermediate the code.

Why Floom doesn't pay for inference

Skills run inside your agent, on your API key, using your token budget. Floom is the distribution layer. We curate, package, and activate. Your agent executes.

This is intentional. Skills that run on a third-party runtime can't access your local filesystem, your git repo, or your project context. Skills that run in your agent can do all three. The power of skills is that they run where your agent runs.

Floom's business is the distribution infrastructure: the manifest, the installer, the activation pattern, and the curation. Not the inference.