From Skill Loop
One-time crawl of the current repo to generate the judgment-level coding skills and the linter/formatter config needed so Claude doesn't fail on the next PR. Run once per repo.
How this command is triggered — by the user, by Claude, or both
Slash command
/skill-loop:bootstrap [subdir to focus on, optional]opusThis command is limited to the following tools:
The summary Claude sees in its command listing — used to decide when to auto-load this command
# skill-loop: BOOTSTRAP (Layer 1)
You are performing the **one-time** bootstrap of skill-loop for this repository.
Goal: read the codebase and emit exactly the conventions Claude needs so it
won't violate them on the next PR. This is the only expensive, high-capability
pass — make it count, but stay disciplined and conservative. Optional focus
path: `$ARGUMENTS`
Project root: `${CLAUDE_PROJECT_DIR}`
Plugin scripts: `${CLAUDE_PLUGIN_ROOT}/bin`
## Step 0 — Model preferences (first run only)
If `${HOME}/.skill-loop/config` has no `model_reflect=` line, the
user hasn't chosen models yet. Bef...You are performing the one-time bootstrap of skill-loop for this repository.
Goal: read the codebase and emit exactly the conventions Claude needs so it
won't violate them on the next PR. This is the only expensive, high-capability
pass — make it count, but stay disciplined and conservative. Optional focus
path: $ARGUMENTS
Project root: ${CLAUDE_PROJECT_DIR}
Plugin scripts: ${CLAUDE_PLUGIN_ROOT}/bin
If ${HOME}/.skill-loop/config has no model_reflect= line, the
user hasn't chosen models yet. Before crawling, settle it:
/skill-loop:configure does — apply the same
preset table and write the same keys (profile, model_bootstrap,
model_promote, model_reflect, model_ci).balanced.The configured model_reflect governs the recurring automatic learning, so this
choice is the main cost lever. After writing it: if model_bootstrap (default
opus) is not opus, relaunch the rest of this bootstrap via the Task
tool (general-purpose agent) at that model and relay its result; otherwise
continue here on Opus.
Use Bash/Glob/Grep, not guesswork:
package.json, pyproject.toml/requirements*.txt, go.mod, Cargo.toml,
Gemfile, pubspec.yaml, *.csproj, composer.json).*_test.go, *.test.ts, tests/,
*_spec.rb, test/), and how tests are named/structured..prettierrc*, .eslintrc*, eslint.config.*, ruff.toml/[tool.ruff],
.flake8, .rubocop.yml, .editorconfig, rustfmt.toml, .golangci.yml,
dprint.json, biome.json, analysis_options.yaml.Read a handful of representative, recently-changed source files plus 2–3 tests. Identify concrete, recurring conventions in these buckets:
For every convention you found, classify it:
Deterministic — anything a formatter/linter can mechanically enforce: indentation, quote style, import ordering, line length, trailing commas, semicolons, spacing. DO NOT create a skill for these. Instead:
.editorconfig always; .prettierrc for JS/TS; [tool.ruff]
in pyproject.toml or ruff.toml for Python; rustfmt.toml; etc.).Judgment-level — anything requiring taste/intent (the buckets in Step 2). These become skills. Each rule MUST come with a shell command that verifies compliance (a grep, a test invocation, a script). If you cannot write a verification command and the rule isn't enforceable by a linter, keep it only if it's clearly high-value; otherwise drop it.
When in doubt, prefer FEWER, higher-signal rules. Bloat is paid for in tokens on every future session.
First resolve where it goes (personal, per-project, never in the repo):
"${CLAUDE_PLUGIN_ROOT}/bin/sl-where.sh" # prints STATE_DIR, SKILL_NAME, SKILL_DIR, SKILL_FILE, SKILL_PATHS
Built for large codebases: ONE folder per project (<SKILL_DIR>) containing a
small SKILL.md that ROUTES to one supporting file per concern. The router's
description auto-loads; each concern file loads on demand only when relevant, so
the always-on cost stays tiny even as the skill grows.
(1) Write the router <SKILL_FILE>:
---
name: <SKILL_NAME>
description: <one precise line covering this repo's conventions, so it auto-loads when working here>
paths: <SKILL_PATHS>
---
# <project> conventions
Read the file for the area you're touching:
- **Naming** — `naming.md`
- **Layering** — `layering.md`
- **Error handling** — `error-handling.md`
List only the concerns you actually write a file for.
(2) Write one supporting file per concern at <SKILL_DIR>/<concern>.md
(naming.md, layering.md, testing.md, error-handling.md, domain.md):
# Error handling
- <imperative rule>
- <imperative rule>
**Verify:** `<command that checks compliance>`
Only create files for concerns with a real, verifiable rule. paths scopes the
whole skill to THIS repo so it never bleeds into your other projects.
Personal prefs (the model keys from Step 0 + the promotion threshold) live in the
GLOBAL ${HOME}/.skill-loop/config:
promote_min=2
Per-project signals/candidates live in the STATE_DIR printed by sl-where.sh
(already created). Never write anything into the repo or the plugin folder.
Show the user:
description, the rules, and
the verify command..skill-loop/config you wrote.Finally, record one line in the live activity log so the run shows in
/skill-loop:logs:
"${CLAUDE_PLUGIN_ROOT}/bin/event.sh" BOOTSTRAP "generated <N> skill(s) + <M> config(s)"
Keep skills minimal and every rule verifiable. After this runs once, the hooks take over and the skills improve on their own.
npx claudepluginhub joeljohn159/skill-loop --plugin skill-loop/bootstrapBuilds an HTTPS bootstrap endpoint that returns per-user JSON configuration (MCP servers, skills, dynamic config) for a Claude add-in, validating Entra JWTs and supporting template interpolation.
/bootstrapBootstraps Vercel-linked repo: preflight checks, provisions Neon Postgres via Vercel, verifies/pulls env vars, runs db migrations and dev startup.
/bootstrapGenerates a hand-written style API quick reference markdown file (API_REFERENCE.md) from the ida-domain source code by exploring Python files, identifying classes and methods, and producing a concise reference.
/bootstrapBootstraps a complete project with security foundation, scaffold (Static/SPA/Workers/Fullstack/Astro), design system, i18n, SEO, tests, and deploy pipeline after gathering requirements.
/bootstrapScaffolds the minimum repo structure required by session-orchestrator, auto-detecting the appropriate tier (fast/standard/deep). Also supports upgrade, retroactive lock, sync-rules, and ecosystem-health subcommands.
/bootstrapScaffolds missing test, lint, and CI infrastructure for JavaScript/TypeScript, Python, Go, Rust projects using standard tools. Detects stack, proposes plan, implements after approval. Scopes: test|lint|ci|all.