Config
Keeper of a project's supermodo configuration (skills.config.json) and docs scaffold. Use whenever the user wants to view, check, change, fix, or upgrade the supermodo config, set up or onboard a project onto the supermodo skills, start a new supermodo project, or whenever another supermodo skill reports a missing or invalid skills.config.json. Trigger on 'supermodo config', 'set up supermodo', 'configure supermodo', 'bootstrap supermodo', 'change the coverage target', 'edit the config', 'add a command to the config' — even when the word 'config' itself is not used.From its SKILL.md
npx -y skills add supermodo/skills --skill configAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
12.1 KB, ~2.9k tokens by cl100k_base, as published. Nobody here has run it
supermodo config
Requires: the sibling
protocolsskill (shared protocol masters). Missing → tell the user to install the full supermodo package.
Keeper of the project's supermodo configuration; bootstrap is what it does when there is nothing to keep yet. Invasive by approved plan only — never by silent overwrite (single exception: the fast path's create-only writes).
Read on demand (paths relative to this SKILL.md's folder; masters absent → tell the user to install the full supermodo package):
../protocols/references/config.md— the config contract: the ONLY schema. Read before writing or validating any config.../protocols/references/questions.md— before asking the user anything.../protocols/references/tooling.md— before the commands step / Phase 6.../protocols/references/docs-convention.md— before the dry-run.references/procedures.md(this skill) — the phase playbook: read its matching section when a checklist item below sends you there.
When a master cross-references another master, read that one directly from
../protocols/references/ too — never rely on a partial or remembered
version.
Cross-tool note (Claude Code ↔ Codex). Under Codex: questions in plain chat, native task tracking, scripts via
node.
Hard rules — every mode, no exceptions
- The schema is closed. Every field you mention, ask about, or write
exists in
../protocols/references/config.md. There is no GitLab, CI/CD, deployment, or GitHub section — a question about a nonexistent field plants settings that can never be written. Discovery findings outside the schema = at most one line in the final report, never a question. - Interview = one step per message. Send a step, STOP, wait, send the next. A bulk questionnaire makes the user rubber-stamp eight decisions in one reply.
- A missing command tier always gets the 3-option closed menu (set up after / give command now / skip). Silent omission destroys the Phase 6 queue and the recorded-decline mechanism.
- Agent step: no roster + any project evidence → PROPOSE concrete roles first, then one yes/no. The user can only judge a roster they can see.
- Never execute a discovered command before the user approved its exact argv. A committed Makefile is untrusted input (config contract, first-use rule).
- Never overwrite a pre-existing file outside an approved plan; never
touch a file not marked
<!-- supermodo:generated -->unless the user approved its migration. - No git operations, ever (
.gitignoreis edited as a normal file).
Red flags — these thoughts ARE the violation
| If you catch yourself thinking… | Reality |
|---|---|
| "Batching the questions is more efficient / user is in a hurry" | #1 observed failure. One step per message (rule 2). |
| "mutation: none found — omit" | Missing tier = closed menu (rule 3). |
| "Project deploys via GitHub/GitLab — I should ask about that" | Not in the schema → not a question (rule 1). |
| "No agents dir — single-agent fallback, moving on" | Evidence exists → propose roles first (rule 4). |
"I'll just run make test to verify it works" | Not before the user approved that argv (rule 5). |
| "The recap/dry-run is a formality here" | Only confirmed recap + approved dry-run proceed. |
Modes
| Invocation | Mode |
|---|---|
config | Show current config + validation; offer edits. No config yet → bootstrap automatically. |
config --yes | Bootstrap with defaults, no interview (auto-selected in an empty project) — procedures §1 |
config --edit [field] | Change fields — "Edit" below |
config --upgrade | Migrate config version — procedures §7 |
Never re-scaffold over a configured project: with a valid config present,
report and offer edits — bootstrap runs only when skills.config.json is
absent (or the user explicitly asks; same conflict rules).
Bootstrap (no config exists)
Copy this checklist into your response at bootstrap start and tick items as
they complete; a failed item returns to its phase, never skips ahead. Each
"procedures §N" = read that section of references/procedures.md when you
get there.
Bootstrap
- [ ] Discovery scan (commands, agent dirs, stray docs)
- [ ] Route: fast path (empty project or --yes → procedures §1) OR wizard
- [ ] Wizard: steps 1..M, ONE message each (below)
- [ ] Recap shown, user confirmed
- [ ] Dry-run: full file list shown, user approved (procedures §2)
- [ ] Conflicts: per-file migration plan approved, or none (procedures §3)
- [ ] Written + manifest recorded (procedures §4)
- [ ] config-check.ts exit 0 (procedures §5)
- [ ] Tooling phase: queued tiers closed, or none (procedures §6)
- [ ] Final report + librarian --absorb pointer if stray docs (procedures §8)
The wizard — one step per message
Discover candidates BEFORE asking: package.json scripts,
deno.json/deno.jsonc tasks, Makefile targets, agent dirs
(.claude/agents, .codex/agents).
These 8 steps and NOTHING else — never add, remove, or reorder (rule 1).
M = how many apply; announce it at step 1, drop inapplicable steps
entirely. One step per message (rule 2); bare "ok"/empty accepts the
default. Only if the user unprompted says "defaults for everything": fill
remaining steps with defaults, jump to recap — never invite that shortcut.
Every step message uses exactly this shape:
Step N of M — <topic>
<one line: what this controls and which skills it affects>
<the question>
Default: <value>
-
Project name — reports and docs headers. Default: directory basename.
-
Docs entry — the router path every skill reads first. Default
docs/README.md. -
Commands — argv arrays, never shell strings; tiers per the tooling master. Discovered tier → show exact argv, confirm. Missing tier (rule 3 — EVERY absent tier,
mutationincluded) → one context line, then:1. Set up after (recommended) — queued for the tooling phase 2. Give the command now 3. Skip — recorded as a decline, not re-asked while tooling is unchangedDo NOT invent commands; improvement ideas ("lint should also type-check") are a one-line note for the tooling phase, not a wizard question.
-
Coverage target — tests/tdd gates. Integer 1–100, default
80. -
Agent team — context first:
workdispatches teammates from this roster (implementers, reviewers, test/quality, infra); without one, skills run single-agent. Then (rule 4):Situation Do Roster dir found Confirm as agents.dir; map files to the four role categories; offer to draft uncovered roles the project plausibly needs.No roster, ANY project evidence PROPOSE roles immediately (filename + one-line each, grounded only in evidence), then ONE yes/no: create these? Default no. Never ask permission to propose; never invent an evidence-free role. No roster, no evidence State single-agent fallback in one line, next step. No question. Accepted → files join the dry-run. Then, still inside this step, ask ONE closed menu: which hosts do you use? (1) current host only — default; (2) claude + codex; (3) name them.
agents.dir= the CANONICAL roster, defaulting to the current host's native dir (.claude/agents/on Claude Code,.codex/agents/on Codex; any path is a valid own answer); the chosen hosts land inagents.hostsandsync-configsmirrors the roster one-way from canonical to each other host's native dir — the user edits only the canonical dir, never a mirror. More than one host chosen → close the step by naming the mirror command (/supermodo:sync-configs). Declined → single-agent fallback, recorded as default suggestion, re-asked only onconfig --edit agentsor materially changed evidence (class-(c), never auto-resolved). -
Question transport — default
chat; offertoolonly on Claude Code (overrides apply uniformly to every skill). -
Verbosity — default
concise;standardfor fuller chat reporting. -
Workspace / worktree — context first: by default
workandflowrun in the main working tree. Offer the alternative in one line — a dedicated git worktree per task, not per subprocess, created on its own branch offdevand merged back intodevwhen the task lands (cleanup suggested at/release) — then ONE yes/no. Yes →workspace.worktree: trueand add the worktree dir (worktrees/) to the.gitignoreappend. Default no. The per-run--worktree/--no-worktreeflags override this either way.
Class-(c) preference fields (name, coverage, verbosity, transport, worktree) always come from the user even when a default is obvious.
Recap + confirm: after the last step, show ALL answers (defaults marked), one plain confirmation. A correction re-runs just that step, then recaps again. Only a confirmed recap proceeds to the dry-run.
Phases after the wizard
Follow the checklist; detail lives in references/procedures.md. Essence:
- Dry-run (§2): COMPLETE file list (docs scaffold rooted at
docs.entry,skills.config.jsonshown verbatim,.gitignoreappend, accepted agent files) — nothing written before approval. - Conflicts (§3): existing non-generated content → per-file move/merge/leave plan, approval per file; declined → HALT unchanged.
- Write (§4): temp-then-rename; every action recorded in
.skills/supermodo/config-manifest.json; real-path containment beneath the project root on every write. - Validate (§5):
node <dir-of-this-SKILL.md>/scripts/config-check.ts skills.config.jsonmust exit 0 — fix errors before claiming success. - Tooling phase (§6): queued tiers, one at a time, freshness method — never remembered recipes.
- Report + docs handoff (§8): final report; stray docs found in
discovery → END with
/supermodo:librarian --absorbas the required next step.
Edit (config --edit [field])
Load + validate first. Interview only the named field(s) — or ask which —
questions-protocol format. Before/after JSON diff, confirm, write
(temp-then-rename), manifest, re-validate. Class-(c) fields always confirm.
commands edits: same closed menu as wizard step 3 (manifest declines not
re-asked while tooling unchanged); new commands verified before recording.
Upgrade (config --upgrade)
Procedures §7. Short form: version equal → report, stop; lower → dry-run migration, full bootstrap safety; higher → HALT, user must update the supermodo skills.
Schema
Lives in ONE place: ../protocols/references/config.md. Read it — never a
remembered copy — whenever you need field names or values. A field not in
that file does not exist (rule 1).
Guardrails
- No git operations (rule 7); the user (or the
commitskill) handles git. - Write only inside the project root (real-path resolved), and only paths
from an approved plan or the fast path's create-only exception: docs
scaffold,
skills.config.json,.gitignore,.skills/supermodo/, accepted<agents.dir>/files, approved tooling-phase targets. Nothing else, ever. - Halt-and-report on any conflict without an approved resolution.
Report
Config path + validation result, files created/moved/merged, manifest path, conflicts left for the user. Steady-state runs may add ONE informational line for missing/declined tiers — a nudge, never a repeated question. Concise per verbosity; safety and conflict details never compressed.
What ships with it: 3 files
22.3 KB alongside SKILL.md, 1 of them executable
evals/
- evals.json3.7 KB
references/
- procedures.md8.2 KB
scripts/
- config-check.tsruns10.3 KB