From loopd
Use when the user wants to install or bootstrap loopd in a fresh git repository. Scaffolds .loopd/ (charter, config, per-loop state files, scripts, pre-push hook) in the current repo, interactively gathering project name, main branch, PM worktree, and worker definitions. Safe to re-run — stops if .loopd/ already exists.
How this skill is triggered — by the user, by Claude, or both
Slash command
/loopd:loopd-initThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are setting up loopd (a PM + N-worker parallel development system) in the user's current git repository. This is a conversational install.
You are setting up loopd (a PM + N-worker parallel development system) in the user's current git repository. This is a conversational install.
git rev-parse --show-toplevel. If this fails, stop and tell the user to run inside a git repo..loopd/ does not already exist at the repo root. If it does, stop and ask the user whether to abort or have them rm -rf .loopd/ first.template/ directory is available. On Claude Code it lives under ${CLAUDE_PLUGIN_ROOT}/template/ (resolve via the standard plugin path); on Codex, resolve the skill's sibling template/. If unsure, ask: "Paste the absolute path to plugins/loopd/template/."Ask the user one question at a time. Use sensible defaults derived from the repo.
git rev-parse --show-toplevel. Confirm.git symbolic-ref refs/remotes/origin/HEAD --short 2>/dev/null | sed 's|origin/||', falling back to main. Confirm.backend frontend). Loopd needs at least one worker. For each worker, derive:
loop/<name>. Confirm each one.<parent-of-pm-worktree>/<project>-<worker>. Confirm each one.git branch loop/<name> origin/<main-branch> (if branch doesn't exist)git worktree add <worktree-path> loop/<name>
If no, print the equivalent commands for the user to run later.Show a summary table before proceeding. Get explicit confirmation.
Invoke the render helper to stamp template/ into <target>/.loopd/:
bash "${TEMPLATE_PARENT}/../scripts/render.sh" \
"${TEMPLATE_PARENT}" \
"${TARGET_REPO_ROOT}/.loopd" \
"PROJECT=<project>" \
"MAIN_BRANCH=<main>" \
"PM_WORKTREE=<pm-path>" \
"WORKER_NAMES_COMMA=<worker, names, comma-separated>"
This creates:
.loopd/LOOPD.md (charter).loopd/config.sh (runtime config).loopd/LOOP_PM.md (PM state).loopd/pm-round.sh, .loopd/setup.sh.loopd/hooks/pre-pushNotes:
render.sh preserves the executable bit on *.sh and hooks/pre-push.render.sh. Worker arrays and per-worker LOOP_<NAME>.md files are written in Step 3 below.Edit .loopd/config.sh to append the parallel worker arrays. Use the Edit tool to replace the # WORKERS_APPEND_HERE marker with:
WORKER_NAMES=(backend frontend)
WORKER_BRANCHES=(loop/backend loop/frontend)
WORKER_WORKTREES=(
"/abs/path/to/myapp-backend"
"/abs/path/to/myapp-frontend"
)
(Use the actual values the user supplied. One-line arrays are fine for short lists; line-per-entry for long ones.)
The per-worker template lives in a sibling directory (template-worker/) so the global render.sh pass in Step 2 doesn't touch it.
For each worker, invoke render.sh targeting just that one file:
bash "${PLUGIN_ROOT}/scripts/render.sh" \
"${PLUGIN_ROOT}/template-worker" \
"${TARGET_REPO_ROOT}/.loopd/_worker_<name>" \
"WORKER_NAME=<name>" \
"WORKER_UPPER=<NAME>" \
"PROJECT=<project>" \
"BRANCH=loop/<name>" \
"WORKTREE=<path>"
# Move the rendered file to its final name and remove the scratch dir.
mv "${TARGET_REPO_ROOT}/.loopd/_worker_<name>/LOOP_WORKER.md" \
"${TARGET_REPO_ROOT}/.loopd/LOOP_<NAME_UPPER>.md"
rmdir "${TARGET_REPO_ROOT}/.loopd/_worker_<name>"
Alternatively, use the Read → Write pattern (Read template, substitute placeholders in-memory, Write to target) if you prefer not to shell out.
cd <target-repo-root>
bash .loopd/setup.sh
setup.sh copies .loopd/hooks/pre-push into each worktree's common .git/hooks/ directory.
For each worker:
git -C <pm-worktree> branch <branch> origin/<main-branch> 2>/dev/null || true
git -C <pm-worktree> push -u origin <branch>
git -C <pm-worktree> worktree add <worktree-path> <branch>
Skip the first command if the branch already exists locally.
If the user said no, print these commands to the terminal for them to run manually.
Run bash .loopd/pm-round.sh --dry-run from the PM worktree. Expected: it lists every worker as up-to-date (behind=0) or similar. Any error here means config.sh is malformed — fix before handing off.
Print a success summary:
/loopd pm (to start PM) or /loopd <worker> (to start a worker).loopd/LOOPD.mdWhen this skill references tools like Read/Write/Edit/Bash, Codex users should substitute their native equivalents per references/codex-tools.md.
.loopd/. That's the user's state; destroying it loses their tracker history.Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub shmor3/mrskills --plugin loopd