Package the kit as a Claude Code plugin + marketplace - #1
Merged
Conversation
Make the repo installable as a Claude Code plugin (named "loop") and its
own single-plugin marketplace, purely additive over the existing clone-install.
- .claude-plugin/plugin.json + marketplace.json (both pass `claude plugin validate`)
- commands/*.md -> /loop:{make-this,spawn,status,standup,radar,scan,
approvals,listen,agents,ownership,tick}; bodies invoke the existing
tools/ scripts via ${CLAUDE_PLUGIN_ROOT} substitution (no PATH dependency)
- skills/make-this/SKILL.md: model-invocable auto-offer of the loop
- bin/: 11 shims over the existing scripts as a terminal CLI convenience
- README: "C. As a Claude Code plugin" install + usage section
The installer (scripts/install-into-repo.sh) does not copy the plugin-only
dirs into user repos, so clone-install and plugin-install stay independent.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sketch (not built) for an autonomy layer on top of the plugin scaffold: two options (subagent fan-out vs supervisor-launches-sessions), a scoped first step (run only pre-approved briefs, PR-gated, no self-merge), and the guardrails that keep the kit's isolation + human-approval invariant. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Packaging (review blockers): - bin shims now cd to the operator's PRIMARY worktree before running, so loop data (journals/radar) is read/written in the canonical checkout regardless of whether the command is invoked from a subdirectory or a linked agent worktree. Fixes the silent "wrong tree" / "no agents-status" failures, and stops standup from writing BLOCKERS.md/OPERATOR_ASKS.md into the wrong dir via tick. - command bodies route through the bin shims so the fix applies to /loop:* too; make-this now honors $ARGUMENTS and defaults to the repo root (not the CWD). - shim root-resolution uses `cd -P` to resolve symlinks in the fallback path. Autonomy design: - flip the recommendation from Option A (subagent fan-out) to Option B (supervisor launches a separate process per worktree): isolation here is a physical property (separate process/dir/permission grant), and fan-out shares one session's permission scope, so instruction-only "worktree pinning" can't preserve it. Resolve the three open questions, add the omitted failure modes (shared-file contention, approval-file races, all-blocked deadlock, cost blowup, partial-dispatch), and recommend shipping it as a separate opt-in plugin so the default install stays human-in-the-loop. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The primary-checkout resolution used `awk '{print $2}'`, which truncated
worktree paths containing spaces (e.g. ~/Documents/My Project) and then
silently failed to cd — reintroducing the wrong-directory bug for those
paths. Parse everything after "worktree " via sed instead, so spaces survive.
Verified from a subdirectory and from inside a linked worktree, both at a
space-containing path. Also note in make-this that a relative target resolves
from the repo root.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds a modular demo set, all rendered as the real Claude Code UI driving the
real /loop commands on a sample multi-currency /orders feature across 3 agents:
- intro-chat — chat-style "set up the loop" intro
- scene1-worktrees — one repo fans out into per-agent git worktrees
- agents-grid — 2x2 of Claude Code windows working in parallel
- operator-cli — the operator's /loop:status -> approve flow
- loop-reel.mp4 — the four stitched into a ~70s reel with title cards,
gentle zoom, and an ambient audio bed
Each scene ships as standalone auto-playing HTML + MP4 + GIF. README gains a
"See it in motion" section embedding the four scene GIFs and linking the reel.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- relocate all generated demo media into docs/demo-clips/ for editing: numbered scene clips (01-04), gifs, the reel, source HTML + title cards - regenerate the audio bed at an audible level (peak -3 dB; the previous bed was ~-42 dB, effectively silent) and re-mux the reel - add demo-clips/audio-bed.wav and NOTES.md (clip list, suggested order, re-stitch recipe) - update README demo paths to docs/demo-clips/ Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Untrack docs/demo-clips/ (gitignored, kept locally for editing) and remove the README "See it in motion" embeds so there are no broken links. The repo ships the plugin/kit code and docs only. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Makes the repo installable as a Claude Code plugin (named
loop) and its own single-plugin marketplace, purely additive over the existing clone-install. Adds a follow-up design doc for an optional autonomous mode.Contents
.claude-plugin/plugin.json+marketplace.json— both passclaude plugin validate.commands/*.md→/loop:{make-this,spawn,status,standup,radar,scan,approvals,listen,agents,ownership,tick}. Bodies invoke the existingtools/scripts via${CLAUDE_PLUGIN_ROOT}substitution (no PATH dependency).skills/make-this/SKILL.md— model-invocable auto-offer of the loop.bin/— 11 shims over the existing scripts as a terminal CLI convenience.README— "C. As a Claude Code plugin" install + usage section.docs/AUTONOMOUS_LOOP_DESIGN.md— proposal (not built) for an optional operator-drives-the-agents mode, with the guardrails that preserve the kit's isolation + human-approval invariant.Testing
claude plugin validate .passes for both the marketplace and the plugin manifest (validated in isolation too).bin/shims exercised end-to-end against a throwaway git repo:loop-make-thisinstalls the kit (45 files),loop-spawncreates real worktrees + branches.loop-status/loop-standup/loop-tickaggregate correctly across all of them (4 agents · 3 idle · 1 blocked, stale flag, blocker surfaced).Not verified
Live runtime behavior inside a real (non-sandboxed) Claude Code session — nested headless
claudeproduces no output in the dev environment used here. The manifests validate and the wrapped scripts are tested; the remaining check is an interactiveclaude --plugin-dir .→/loop:status.Design decisions / corrections to the original plan
authormust be an object; this CLI's validator rejects$schema/displayNameinplugin.json."./"; marketplace description goes undermetadata.description.${CLAUDE_PLUGIN_ROOT}substitution rather than depending onbin/PATH injection.🤖 Generated with Claude Code