Personal toolkit of agentic software development skills — usable across Claude Code, Cursor, agy (Antigravity), and OpenCode.
Skills are written once as plain Markdown and adapted to each tool's native skill/rule format via thin per-tool adapters.
PRD → Technical Plan → Implementation
| Step | When | Skill |
|---|---|---|
| PRD | Large features: new UX flows, multi-screen changes, data model changes | prd |
| Technical plan | All non-trivial work; always after PRD for large features | planning |
| Guardrails | Applied continuously on every file touched | coding-agent-guardrails |
For small changes (bug fixes, single-screen tweaks, refactors): skip the PRD, write a technical plan or go straight to implementation.
Once installed (see Getting started), skills trigger on the phrases/slash-commands in each SKILL.md's frontmatter. /sdlc is the main entry point — it drives prd → planning through review/implement/verify as one chain, so most invocations name a feature slug and, for a fresh feature, a description after a colon. Five of the most common flows:
-
Large feature — chain PRD + Plan, stop for review before any code is touched
/sdlc prd-plan auth-flow: Add OAuth login with Google and GitHub, replacing email/passwordWrites
prd-auth-flow.md, thenplan-auth-flow.md; stops afterplan(AWAITING: plan) instead of auto-continuing into implementation. -
Small change — single-phase chain, skip the PRD
/sdlc plan copy-clipboard-button: Add a "copy to clipboard" button to the settings screenRuns just the
planphase and stops — no PRD, no implementation started yet. -
Full orchestrated SDLC, no chain given — PRD → Plan → Review → Implement → Verify → Review, end to end
/sdlc multi-account-support: Add multi-account switching to the appRuns the entire default chain with resumable state — re-running
/sdlc multi-account-supportlater (e.g. a fresh session) picks up exactly where it left off, never redoing a completed phase. -
Chain multiple remaining phases together, skipping ones already done
/sdlc implement-verify auth-flowPlan for
auth-flowis already written and reviewed — this runsimplementthenverifyin one invocation and stops again for the next review, without re-runningprd/plan. (If the feature is still paused awaiting a prior phase, the agent stops and asks before discarding that pause rather than silently jumping ahead — use/sdlc continuefirst in that case.) -
Advance exactly one phase past a pause, or check where things stand
/sdlc continue /sdlc statuscontinueadvances the currently-awaiting feature by one phase and re-pauses;statusreports feature, mode,AWAITING: <phase> — <artifact>, and the next unchecked checklist item, without changing anything.
Every installer installs all skills — there's no per-skill option — so you just pick a tool. Quickest is the one-line curl install (below); a manual clone works too if you want to inspect the repo or pin a commit first.
Quickest — one-line install (Claude Code, global):
curl -fsSL https://raw.githubusercontent.com/fastestdevalive/vibekit/main/scripts/get.sh | bash -s -- claude-codeThis clones vibekit into ~/.vibekit and installs every skill into ~/.claude/skills/. Works for any tool the dispatcher supports:
curl -fsSL https://raw.githubusercontent.com/fastestdevalive/vibekit/main/scripts/get.sh | bash -s -- opencode # global, no path needed
curl -fsSL https://raw.githubusercontent.com/fastestdevalive/vibekit/main/scripts/get.sh | bash -s -- agy # project-scoped — run from inside your project, or add --project=/path
curl -fsSL https://raw.githubusercontent.com/fastestdevalive/vibekit/main/scripts/get.sh | bash -s -- cursor # project-scoped — run from inside your project, or add --project=/pathWhether that installs globally (every project on your machine, no per-project step) or per-project depends on what the tool itself supports:
| Tool | Default scope | Why |
|---|---|---|
| Claude Code | Global — ~/.claude/skills/ |
Has a real global skills dir; no per-project concept at all |
| OpenCode | Global — ~/.config/opencode/skills/ |
Confirmed by official docs: a native Skills system (same progressive-disclosure model as Claude Code) reads a global ~/.config/opencode/skills/ dir in every project, alongside a project-local .opencode/skills/ |
| agy (Antigravity) | Project — .agents/skills/ in the target repo |
Antigravity's own docs disagree with each other on the global path; project scope is the only one reliably documented. --global opts into an empirically-found (unofficial) path if you want to try it |
| Cursor | Project — .cursor/rules/ in the target repo |
Cursor's only global option is Settings → Customize → Rules, a single text box in the app UI — there's no file/folder a script can write to. --global explains this and exits instead of guessing |
Only pass --project=<dir> when you deliberately want a project-scoped install instead of the default for that tool (or you're not standing inside the target project already, since the fallback is the current directory).
Manual — clone + run the installer directly:
git clone https://github.com/fastestdevalive/vibekit.git
cd vibekit
# Global installs — no path needed
./install.sh claude-code
./install.sh opencode
# Project-scoped installs — defaults to the current directory
cd /path/to/your/project && /path/to/vibekit/install.sh cursor
cd /path/to/your/project && /path/to/vibekit/install.sh agy
# ...or stay put and point at the project explicitly:
./install.sh cursor --project=/path/to/your/project
./install.sh agy --project=/path/to/your/projectThen bootstrap a project:
# Creates .vibekit/feature-plans/{pending,wip,done}/, PRD + plan templates, AGENTS.md, CLAUDE.md
./skills/planning/scaffold.sh /path/to/your/project- Installed via the curl one-liner — re-run the exact same command. It
git pulls~/.vibekitto the latestmainand re-runs the installer:curl -fsSL https://raw.githubusercontent.com/fastestdevalive/vibekit/main/scripts/get.sh | bash -s -- claude-code - Installed via manual clone —
git pullinside your clone, then re-run./install.sh <tool>:cd vibekit && git pull && ./install.sh claude-code
Every adapter overwrites each shipped skill's content on re-run, so edits upstream (a changed SKILL.md, a new companion file) always reach an existing install. The one thing re-running does not do everywhere is clean up a skill that vibekit retires outright (rare — skills get edited far more often than removed): Claude Code, agy, and OpenCode sync away stale files within a skill's own folder, and Claude Code additionally has a short hardcoded list for skills renamed/removed at the top level. None of the adapters auto-remove a skill's leftover top-level file/folder if it's fully retired upstream — delete it by hand in that rare case.
| Skill | What it does | Status |
|---|---|---|
prd |
PRD template + writing guide — user behavior, options, decisions, screen layouts | ✅ v0.1 |
planning |
Bullet-point technical plan + phased checklists with per-phase test verification | ✅ v0.2 |
coding-agent-guardrails |
File size limits, code structure, VCS discipline, build behavior | ✅ v0.1 |
coding |
Universal coding rules — error handling, testing, API design, dependencies, config/secrets, logging | ✅ v0.1 |
android-coding |
Android/Kotlin/Compose rules, extends coding + coding-agent-guardrails |
✅ v0.1 |
sdlc |
Orchestrates PRD → Plan → Review → Implement → Verify → Review, pluggable reviewer + resumable state | ✅ v0.1 |
report |
One-shot investigation → findings document — no state, no checklist, no phases | ✅ v0.1 |
code-review |
Agent-friendly review checklists + PR templates | 🔜 planned |
debugging |
Structured bug investigation + RCA template | 🔜 planned |
architecture |
ADR template (bullet-point style) | 🔜 planned |
vibekit/
├── AGENTS.md ← agent guide (OpenCode, Codex, etc.)
├── CLAUDE.md ← same, for Claude Code
├── README.md
├── LICENSE
├── skills/
│ ├── prd/
│ │ ├── SKILL.md ← source of truth + frontmatter
│ │ ├── FORMAT.md ← PRD writing guide
│ │ └── _prd_sample_format.md ← PRD template
│ ├── planning/
│ │ ├── SKILL.md ← source of truth + frontmatter
│ │ ├── FORMAT.md ← writing rules
│ │ ├── SECTIONS.md ← per-section templates
│ │ ├── _template_arch.md ← arch template — rare, system-level decomposition
│ │ ├── _template_plan.md ← plan template — the default
│ │ └── scaffold.sh ← project bootstrapper
│ ├── coding-agent-guardrails/
│ │ └── SKILL.md ← universal code quality rules
│ ├── coding/
│ │ ├── SKILL.md ← universal coding rules
│ │ └── CONTRIBUTING.md ← maintainer notes (not installed)
│ ├── android-coding/
│ │ ├── SKILL.md ← Android/Kotlin/Compose rules
│ │ └── CONTRIBUTING.md ← maintainer notes (not installed)
│ ├── sdlc/
│ │ ├── SKILL.md ← orchestration + config + decomposition
│ │ ├── PHASES.md ← per-phase agent behavior
│ │ ├── GRAMMAR.md ← invocation grammar + gate/pause lifecycle
│ │ ├── EXAMPLES.md ← 9 worked usage examples
│ │ └── evals/ ← eval cases (not installed)
│ └── report/
│ ├── SKILL.md ← source of truth + frontmatter
│ └── _template_report.md ← findings-doc template
├── adapters/
│ ├── claude-code/install.sh ← → ~/.claude/skills/<name>/
│ ├── cursor/install.sh ← → .cursor/rules/<name>.mdc
│ ├── agy/install.sh ← → .agents/skills/<name>/
│ └── opencode/install.sh ← → ~/.config/opencode/skills/<name>/
├── scripts/
│ └── get.sh ← curl-installable bootstrap (clone/update ~/.vibekit + install)
└── install.sh ← top-level dispatcher
Each skill ships a SKILL.md with YAML frontmatter:
---
name: planning
description: Structured technical plan with bullet-point format and phased checklists
version: 0.2.0
triggers:
- "plan a feature"
- "/plan"
globs:
- ".vibekit/feature-plans/**"
---Each adapter cherry-picks the fields its target tool understands:
| Tool | Native location | What gets installed |
|---|---|---|
| Claude Code | ~/.claude/skills/<name>/SKILL.md (global) |
SKILL.md + companion files copied verbatim, each loaded on demand |
| Cursor | <project>/.cursor/rules/<name>.mdc (project-scoped — no scriptable global exists) |
SKILL.md + every linked companion inlined into the single .mdc (Cursor has no companion-file mechanism) |
| agy (Antigravity) | <project>/.agents/skills/<name>/SKILL.md (project-scoped by default) |
whole skill dir copied verbatim, same progressive-disclosure model as Claude Code |
| OpenCode | ~/.config/opencode/skills/<name>/SKILL.md (global by default), or <project>/.opencode/skills/<name>/SKILL.md with --project=<dir> |
whole skill dir copied verbatim — OpenCode's native Skills system uses the same progressive-disclosure model as Claude Code |
Both AGENTS.md and CLAUDE.md live at the repo root so Claude Code and OpenCode automatically load project context when working inside this repo or a scaffolded project.
.vibekit/feature-plans/<state>/<feature>/ ← state: pending | wip | done
prd-<feature>.md ← master PRD (optional)
arch-<feature>.md ← master arch (rare — only if system-level decomposition is needed)
plan-<feature>.md ← master plan
NN-<subfeature>/
plan-<NN>-<feature>-<subfeature>.md
screenshots/ ← transient by default, gitignored
- Simple features skip the sub-feature dirs — just
plan-<feature>.mdat the feature root - Backward compat: flat
pending/<slug>.mdfiles still work
.vibekit/reports/
YYYY-MM-DD-<slug>.md ← flat report, no screenshots
YYYY-MM-DD-<slug>/
report.md
screenshots/ ← gitignored unless permanent
- Not under
.vibekit/feature-plans/— a report is a dated snapshot, not a plan with a lifecycle - Never edited in place — superseding a report means writing a new dated one
MIT