← ClaudeAtlas

sdlc-setuplisted

One-command adoption of LoopSmith into an EXISTING repo — detect the repo + board, scaffold .sdlc/, and write a safe config with the right defaults (github discovery scoped to @me, ledger on, PRs on), then bootstrap the ledger and verify. Use when the user runs /sdlc-setup, says "set LoopSmith up here", or is adopting the plugin into a project that already has code and history. For a brand-new empty project, /sdlc-init alone is enough.
swapnil-agrim/loopsmith · ★ 6 · AI & Automation · score 62
Install: claude install-skill swapnil-agrim/loopsmith
# sdlc-setup Adopt LoopSmith into a repo that already has code and history, in one pass, with defaults that don't surprise you. This is the "master prompt": you run it, it inspects the repo, and it configures the plugin the way a real team wants it — instead of ten manual edits to `config.json`. ```bash SETUP="${CLAUDE_SKILL_DIR}/scripts/setup.py" LOOP="${CLAUDE_SKILL_DIR}/../sdlc-loop/scripts" ``` Work through these in order. Report what you find and what you set at each step; only ask the user when a choice genuinely can't be inferred. ## 1. Inspect the repo - **Repo:** `python3 "$SETUP" detect .` → `owner/name` from the git remote. If empty, ask (or the repo has no remote → use `--source local-goals` below). - **Board:** `gh project list --owner <owner> --format json` — if exactly one plausible board exists, use it; if several, ask which; if none or `gh project` isn't scoped, leave the board off (the loop runs on issues + labels regardless). Use what you know from context/memory about which repo and board this project uses before asking. - **Already adopted?** If `.sdlc/config.json` exists, you're re-running — that's fine, everything below is idempotent and preserves existing settings. ## 2. Scaffold `.sdlc/` if it isn't there If there's no `.sdlc/`, run **`/sdlc-init`** first (it only adds the `.sdlc/` folder, never touches code). Then continue. ## 3. Pick the verify command (do NOT skip — this is a known trap) `verify.enforce: true` with an **empty** `