FAQ
booping is a Claude Code plugin with 10 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes release, chat, code-review. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
> /plugin marketplace add A/claude-booping> /plugin install booping@booping
A self-learning, project-scoped sprint workflow for Claude Code. booping turns a feature idea into a durable, on-disk loop — groom → develop → retro → learn — that effectively utilizes sub-agents to avoid context rot, with optional Gemini cross-validation when GEMINI_API_KEY is set. Every artifact (plans, retros, lessons, sprint snapshots) lives under ~/Claude/{project}/, one folder per codebase, so weeks-long programs stay legible long after the session ends.

Each project's vault is a plain Obsidian-friendly folder of markdown files.
The vault at ~/Claude/{project}/ is markdown-only with YAML frontmatter that Obsidian renders natively as Properties. One vault per project, side-by-side with whatever else you keep in ~/Claude/. No proprietary database, no lock-in — just files you can grep, version, and edit by hand.
booping is aimed at experienced developers and tech leads — people comfortable making architectural calls, decomposing work, and reviewing code critically. The skills assume you can tell a sharp plan from a vague one and a sound diff from a sloppy one.
It's built for iterative, agile-style development: maintenance, incremental features, or growing a project sprint by sprint. It is not a waterfall tool — don't hand it a whole-project spec and expect a finished product. One plan is one sprint; the loop compounds across many.
Per-project configuration tunes the framework to each codebase: place a ~/Claude/{project}/config.yaml file in your vault and it deep-merges over the plugin's src/config.yaml at render time — the lifecycle, sprint scale, and agent wiring are the natural targets for per-project tuning. The /code-review skill is a side-route for stack-aware review of in-progress diffs against the active plan.
Required: uv and git. Optional: GEMINI_API_KEY environment variable for /groom cross-validation against Gemini.
# macOS
brew install uv git
# Linux (Debian/Ubuntu)
sudo apt install -y git
curl -LsSf https://astral.sh/uv/install.sh | sh
Inside Claude Code, register the marketplace once, then install the plugin:
/plugin marketplace add A/claude-booping
/plugin install booping@booping
Update later via /plugin update booping (or from the /plugin UI).
After installing, cd into the target repo and run /install. That single step scaffolds ~/Claude/{project}/ (with plans/, retrospectives/, lessons/, notes/, _booping/).
For a hand-holding walkthrough and per-command reference, see the docs site.
The full loop is five commands. Run them in order:
# Inside the target repo, once:
/install
# Spec a feature, bug, or refactor — free-text description.
# The more detailed your brief, the sharper the resulting plan:
/groom Add per-tenant rate limiting to the public API
# Execute the next ready plan (auto-claims from the queue):
/develop
# …or target a specific one (path relative to ~/Claude/{project}/):
/develop plans/20260426-per-tenant-rate-limiting.md
# Retrospect on what shipped:
/retro plans/20260426-per-tenant-rate-limiting.md
# Fold the retro's findings into durable rules:
/learn retrospectives/20260426-per-tenant-rate-limiting.md
The skills will list candidates if you forget the exact filename.
A plan moves through a small set of statuses. /groom shapes the spec and waits for explicit user approval before handing off; /develop claims the next ready plan and executes milestone by milestone; /retro compares what shipped to the original spec; /learn distils the retrospective into rules that bind the next sprint.
The status vocabulary below is the canonical set in src/config.yaml plan.statuses:
/groom backlog → in-spec → awaiting-plan-review → ready-for-dev
(loopback: awaiting-plan-review → in-spec)
(parking: in-spec → backlog)
(cancellation: backlog/in-spec/awaiting-plan-review → cancelled)
/develop ready-for-dev → in-progress → awaiting-retro
(failure: in-progress → fail)
/retro awaiting-retro → awaiting-learning
(skip: awaiting-retro → done)
/learn awaiting-learning → done
Terminal states: cancelled · done · fail
A plan carries one of the following statuses in its frontmatter. Terminal states are marked.
backlog — Parked plan. Split-sibling stubs and user-filed ideas not yet in grooming.in-spec — /groom is actively researching, designing, and drafting.awaiting-plan-review — Draft complete; /groom is presenting and awaiting explicit user approval, change request, or cancellation.ready-for-dev — Approved. Queued for /develop to claim.in-progress — /develop has claimed the plan and is executing milestones.awaiting-retro — All milestones done; waiting for /retro to write the retrospective.awaiting-learning — Retro written; waiting for /learn to absorb lessons.done (terminal) — /learn has absorbed all lessons.cancelled (terminal) — User shelved the plan.fail (terminal) — /develop hit an unrecoverable blocker.src/config.yaml plan.statuses is the canonical contract for the full transition table — including triggers (when), gates, artifacts, and on_exit mutations. Read it there if you need the exact rules; this README only narrates them.
In booping, a plan is a sprint — the unit /groom produces and /develop executes end-to-end. Story Points (SP) measure the sprint's complexity and review burden, not effort or time. A 20-SP sprint might take a couple of hours on one project, a full session on another, and a full day on a third; what matters is that SPs give you a feel for the size and review weight of the sprint, independent of how fast the underlying work happens.
The 1–5 scale (src/config.yaml sprint.scale):
In practice, sprints over 35 SP (sprint.default_threshold_sp) get hard to keep reviewable, so /groom ends up suggesting a split into sibling sprints above that mark. It's a soft cap, not a velocity — booping has no fixed cadence and no per-week capacity. Tasks at 5 SP must be re-decomposed; tasks at 1 SP should be grouped into a single agent briefing.
Wide-domain skills stay stack-agnostic. Project-specific concerns live entirely in your vault:
~/Claude/{project}/_booping/skill_<name>.md — per-skill extension. Loaded automatically into the skill's context at invocation. Use it to teach /groom your codebase's conventions or /develop your test runner.~/Claude/{project}/_booping/agent_<name>.md — per-agent extension. Injected into the matching agent's body at load time so worker agents inherit project rules without separate reads.~/Claude/{project}/plan_templates/*.md — project-local plan templates. Discovered alongside the core templates (backend, frontend, claude-skill, cli, documentation); can override a core one by sharing its name or add entirely new ones.~/Claude/{project}/review_templates/*.md — project-local code-review templates. Loaded by /code-review alongside the core templates (coding-architecture, python, security); the skill picks the matching subset by inspecting the repo's manifests and reading each template's description frontmatter.~/Claude/{project}/lessons/ — accumulated rules from /learn. Read by skills' Preflight on every invocation./retro and /learn are the loop that makes booping worth more than the sum of its sprints.
/retro reads the plan, scans the session logs and git diff for what actually shipped, and writes a retrospective at ~/Claude/{project}/retrospectives/YYYYMMDD-{kebab-title}.md — what worked, what didn't, divergences from spec, the business goal outcome.
/learn then reviews the retrospective with the user, picks the durable findings, and writes them into two surfaces: project-wide lessons (~/Claude/{project}/lessons/{N}_{title}.md) and extra instructions for the matching skill or agent (~/Claude/{project}/_booping/skill_<name>.md, _booping/agent_<name>.md). Lessons are loaded by future /groom and /develop invocations; extension files travel with the matching skill or agent at load time. The user confirms each finding before it lands.
booping is a feedback loop, not an autopilot. Three things stay your job:
/groom produces a draft and waits at awaiting-plan-review for a reason — sharpen it, push back, ask for splits. As lessons accumulate, plans drift toward your style and constraints, but only if you fed the loop honest reviews. Shit in, shit out./develop ships milestones; you own the quality bar. /code-review is a helper that runs stack-aware passes against the in-progress diff and surfaces findings — but reading those findings, deciding what's off, and bringing the feedback into /retro so /learn can turn it into rules is still your job./retro and /learn are scaffolding for a feedback loop, not a substitute for one. You still need to sit with the retrospective, confirm which findings are durable, and let /learn write them down. Skip that step and the loop stalls.Invest in the loop and it compounds. Treat it as a magic box and you'll get magic-box results.
MIT — see LICENSE.
.claude/
.claude-plugin/
marketplace.json
plugin.json
skills/
release/
SKILL.md
.gitattributes
.github/
workflows/
ci.yml
docs.yml
.gitignore
agents/
booping-developer.md
booping-researcher.md
bin/
booping
booping-create-project
booping-external-llm-call
llm-call-templates/
validate-plan.md.j2
booping-python/
pyproject.toml
src/
booping/
__init__.py
cli.py
commands/
__init__.py
build.py
config_get.py
debug.py
frontmatter_update.py
render_playbook.py
render_sprints.py
render.py
transition.py
vault_commit.py
context/
__init__.py
_yaml.py
agent.py
config.py
extra_instructions.py
lesson.py
lifecycle.py
plan_template.py
plan.py
playbook.py
project.py
retro.py
review_template.py
skill.py
logger.py
rendering.py
tools.py
utils.py
tests/
__fixtures__/
on_exit_equivalence.yaml
playbooks-home/
_playbooks/
_lib/
playbook.md
alpha/
playbook.md
steps/
_ignored.md
draft.md
gather.md
nomanifest/
README.md
partial/
playbook.md
steps/
present.md
shared/
playbook.md
steps/
only.md
claude-booping/
_booping/
.booping.log
playbooks-vault/
_playbooks/
beta/
playbook.md
steps/
single.md
shared/
playbook.md
steps/
only.md
plugin-root-minimal/
agents/
sample-agent.md
bin/
booping
docs/
plan_templates/
api-endpoint.md
sample.md
review_templates/
python.md
sample.md
skills/
debug-skill/
.debug_enabled
SKILL.md
sample-skill/
SKILL.md
src/
config.yaml
templates/
deep_a.j2
deep_b.j2
deep_c.j2
deep_d.j2
deep_e.j2
deep_f.j2
deep_g.j2
deep_h.j2
deep_i.j2
deep_j.j2
deep_k.j2
deep_l.j2
hello.j2
mutual_a.j2
mutual_b.j2
partial.j2
self_ref.j2
uses_kwargs.j2
render-playbook-home/
_playbooks/
composed/
playbook.md
steps/
draft.md
gather.md
named-step.md
plain.md
cycle/
playbook.md
steps/
a.md
b.md
inline-in-parallel/
playbook.md
steps/
one.md
root.md
two.md
missing-step/
playbook.md
steps/
present.md
no-graph/
playbook.md
steps/
only.md
orphan/
playbook.md
steps/
a.md
extra.md
unknown-dep/
playbook.md
steps/
a.md
b.md
vault-disable-internal-agents/
config.yaml
vault-empty/
.gitkeep
vault-full/
_booping/
skill_groom.md
.booping
lessons/
2026-01-20-prefer-explicit-over-implicit.md
plan_templates/
api-endpoint.md
plans/
20260101-add-search-feature.md
20260115-fix-login-timeout.md
retrospectives/
2026-01-31-sprint-1.md
review_templates/
sample.md
vault-minimal/
.booping
vault-with-config-override/
.booping
config.yaml
__init__.py
commands/
__init__.py
build_test.py
config_get_test.py
frontmatter_update_test.py
render_sprints_test.py
render_test.py
transition_test.py
vault_commit_test.py
conftest.py
context/
__init__.py
_yaml_test.py
agent_test.py
assemble_test.py
config_test.py
extra_instructions_test.py
lesson_test.py
lifecycle_test.py
plan_template_test.py
plan_test.py
playbook_test.py
project_test.py
retro_test.py
review_template_test.py
skill_test.py
helpers.py
rendering_test.py
templates/
__init__.py
test_available_agents.py
test_develop_skill.py
test_extra_instructions.py
test_lessons.py
test_logger.py
test_render_playbook.py
utils_test.py
uv.lock
CLAUDE.md
docs/
cross_validation.md
development_quality_checks.md
how_to_initialize_project.md
images/
vault-in-obsidian.webp
install_extension_files.md
learn_review_table.md
plan_templates/
backend.md
claude_skill.md
cli.md
documentation.md
frontend.md
retro_summary_format.md
review_templates/
coding-architecture.md
python.md
security.md
task_bug.md
task_feature.md
task_refactoring.md
template_plan_frontmatter.md
documentation/
chat.md
code_review.md
develop.md
groom.md
help.md
index.md
install.md
integrating-external-agents.md
learn.md
playbook.md
project_config.md
quick_start.md
retro.md
vault.md
justfile
LICENSE
mkdocs.yml
README.md
skills/
chat/
SKILL.md
code-review/
SKILL.md
develop/
SKILL.md
groom/
SKILL.md
help/
SKILL.md
install/
SKILL.md
learn/
SKILL.md
playbook/
SKILL.md
retro/
SKILL.md
src/
config_files.yaml
config.yaml
files/
agents/
booping-developer.md.j2
booping-researcher.md.j2
skills/
chat/
SKILL.md.j2
code-review/
SKILL.md.j2
develop/
SKILL.md.j2
groom/
SKILL.md.j2
help/
SKILL.md.j2
install/
SKILL.md.j2
learn/
SKILL.md.j2
playbook/
SKILL.md.j2
retro/
SKILL.md.j2
templates/
_partials/
_available_agents.j2
_developer_body.j2
_extra_instructions.j2
_git_guide.j2
_learn_targets.j2
_lesson_template.j2
_lessons.j2
_plan_frontmatter.j2
_plan_lesson_check.j2
_plan_template.j2
_plan_transitions.j2
_playbook_graph.j2
_playbook_step.j2
_project_context.j2
_retrospective_template.j2
_review_template.j2
_session_log_extraction.j2
_shared_instructions.j2
_sprint_planning.j2
_task_classification.j2
agents/
booping-developer.md.j2
booping-researcher.md.j2
docs/
plan_lifecycle_overview.md.j2
skills/
chat.md.j2
code-review.md.j2
develop.md.j2
groom.md.j2
help.md.j2
install.md.j2
learn.md.j2
playbook.md.j2
retro.md.j2
sprints.md.j2© 2026 Flowy · Free and open source
Built for Claude Code · Not affiliated with Anthropic