agentsclimarketplace

Michi bootstrap

Skill csepulv/michi/toolkit/skills/michi-bootstrap

my approach to building software, embodied in an agent-centric toolkitFrom the repository description

Install
npx -y skills add csepulv/michi --skill michi-bootstrap

Assembled 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

24.3 KB, ~5.8k tokens by cl100k_base, as published. Nobody here has run it

Michi Bootstrap

Onboard a project to the michi documentation structure. This happens before the first michi-planning session — for a brand-new project or an existing one being prepared for Michi work.

Principles served: Shared context as foundation (builds the context layer all other skills read). Progressive detail (sets up the S/M/L/XL document hierarchy). Sustain the system (docs infrastructure makes future iterations productive). See references/principles.md.

When to Use

  • Setting up a new project for michi work
  • Onboarding an existing project that has never used Michi
  • Re-running on a project with partial Michi structure to close remaining gaps

Inputs

Before starting:

  • Access to the target project codebase
  • Michi toolkit installed (skills in .claude/skills/ or accessible via the GitHub repo)
  • User present and interactive — this is collaborative, not autonomous

Phase 1: Survey

Produce a project profile — a structured snapshot that drives the recommendation phase.

Codebase Heuristics

Get a quick size/shape read:

  1. Check if tokei is installed (which tokei). If available, run tokei for language and size breakdown.
  2. If tokei is not available, fall back to heuristics:
    • Count files by extension: find . -type f -name '*.js' -o -name '*.ts' -o -name '*.py' | wc -l (adapt to what's present)
    • Rough line count: find . -type f -name '*.js' | xargs wc -l | tail -1 (adapt to primary language)
    • Directory depth and structure: ls top-level, note key directories
  3. For large monorepos (thousands of files, multiple top-level packages): present the top-level structure and ask what's in scope. "Which parts of this repo should I focus on? Any directories to exclude?" Re-run heuristics on the scoped subset.

For small-to-medium repos, look at everything.

Multi-Project Detection

Determine whether the repo holds multiple sub-projects with independent dev lifecycles. The trigger is a dev-process question, not package-manager shape: does a piece of the repo have its own epics, its own status, its own story that should stay separate?

Heuristics suggesting multi-project:

  • Top-level tools/, packages/, apps/, services/, or similar directories with two or more subdirs that each carry their own README or package metadata
  • Workspace file present: pnpm-workspace.yaml, turbo.json, lerna.json, yarn.lock with a top-level workspaces field in package.json
  • Multiple top-level package.json / pyproject.toml / Cargo.toml under different top-level directories
  • User says so directly ("this is a monorepo", "has sub-projects")

Heuristics are suggestive, not definitive. A tools/ dir of internal scripts may not warrant sub-project doc treatment; a repo without any workspace file may still have sub-projects with independent dev lifecycles. Always ask.

The question to ask (when heuristics suggest multi-project or the user indicates one):

This looks like it might hold multiple sub-projects. Do any of them have their own dev lifecycle — their own epics, their own status, their own story — that should live separately from the rest of the repo? If yes, I'll set up the multi-project layout: docs/ROOT/ for the umbrella project's work and docs/<name>/ for each sub-project.

Record a multi-project: yes/no flag in the project profile. If yes, also record the candidate sub-projects list (confirmed by the user).

Brownfield detection for existing multi-project Michi setups: if docs/ROOT/ or docs/<name>/CLAUDE.md entries already exist, recognize it as an established multi-project Michi repo. Focus on gaps in ROOT + per-sub-project dirs, not re-litigating the structure.

See references/docs-structure.md (Multi-Project Directory Structure section) for the layout rules.

Existing Docs Inventory

Scan for documentation:

  • Top-level docs: README, CLAUDE.md, AGENTS.md, PROJECT.md, STATUS.md, ARCHITECTURE.md, CONTRIBUTING.md
  • Docs directories: any docs/ folder, its structure and contents
  • Michi-specific artifacts: docs/epics/, verification files, plan docs, journal files, scenario catalogs
  • Other markdown: any .md files with useful content (notes, TODOs, changelogs)

For each file found, note:

  • Whether it exists
  • Whether it's substantive or a stub (quick content assessment)
  • Last modified date (for staleness)

Docs Root Assessment

Check whether docs/ already contains non-Michi content (product docs, API docs, customer-facing content, generated docs). If so, the project needs a separate Michi docs directory.

  • If docs/ is empty or doesn't exist → Michi docs root is docs/ (default)
  • If docs/ contains existing non-Michi content → ask: "Your docs/ directory has existing content. Should Michi docs live in docs-michi/, a different subdirectory, or alongside what's here?"
  • Record the decision as docs-root: <path> in CLAUDE.md's ## Michi section

All subsequent Michi directory creation uses this root.

Michi Gap Analysis

Compare what exists against the docs-structure standard (references/docs-structure.md):

  • Categorize each expected artifact: missing, stub, stale, or present-and-healthy
  • Note existing docs that don't map to Michi structure but could be reorganized (e.g., a notes.md that could seed journal.md, a TODO.md that could feed STATUS.md)
  • Detect existing Michi artifacts from a prior bootstrap — focus on gaps, not re-litigating what's already set up

Present the Project Profile

Present findings to the user. Adapt the format to what was found — the example below is illustrative:

Project: [name]
Size: [lines, languages, file count]
Monorepo: [yes/no, scope if yes]

Docs inventory:
  README.md          ✓ substantive
  CLAUDE.md          ✗ missing
  PROJECT.md         ✗ missing
  STATUS.md          ✓ stub (last modified 3 months ago)
  ARCHITECTURE.md    ✗ missing
  docs/              ✓ exists, flat structure (no epics)

Existing docs that could be reorganized:
  docs/notes.md      → could seed journal or STATUS.md
  TODO.md            → could seed STATUS.md or roadmap

Codebase patterns detected:
  Test runner: [detected from config files]
  Build tool: [detected from config files]
  Key patterns: [directories, conventions observed]

Wait for the user to review before proceeding. This is a checkpoint.

Report findings; don't bundle a proposed fix list with the survey. Bundling is the impulse to help pull (see Clarify before Asserting in references/principles.md) — let the user direct the recommendation phase rather than pre-deciding it.

Phase 2: Recommend

Based on the survey, present recommendations. The flow branches:

Greenfield Path

If the survey finds no existing docs and minimal or no code: skip tier selection. Scaffold the full Michi structure. Confirm with the user and proceed to Phase 3.

If ambiguous whether greenfield or brownfield, ask: "This looks like a fairly new project. Should I scaffold the full Michi structure, or review what exists and pick what to set up?"

Brownfield Path

Present effort tiers. Each tier is additive — M includes S, L includes M.

TierNameWhat it covers
SEssentialsCLAUDE.md with build/test commands, key files, conventions. STATUS.md stub. Minimum viable Michi.
MFoundationS + PROJECT.md, first docs/epics/<name>/ structure with empty verification/ and plans/ subdirs. Reorganize any existing docs that map cleanly.
LFull setupM + ARCHITECTURE.md, substantive STATUS.md, reorganize remaining existing docs into epic structure, populate CLAUDE.md's Michi Instructions section from template.
XLDeep onboardL + write verification test-plan.md for first epic, draft initial scenario catalog, document branching convention, populate journal with bootstrap findings. Create docs/reference/ with code-style.md stub.

For each tier, show:

  • What gets created
  • What gets reorganized (existing docs that move or merge)
  • What gets deferred (with a note about why it matters)

The user picks a tier, says "somewhere between M and L," or cherry-picks across tiers. Adapt.

Multi-Project Branch

When multi-project: yes (from Phase 1 detection), the tier recommendation covers the umbrella (docs/ROOT/) AND each sub-project. This modifies both greenfield and brownfield paths — it's not a separate path, it's a multiplier.

How it works:

  1. ROOT gets its own tier. Treated like a normal single-project recommendation — S/M/L/XL applied to the umbrella's needs (own product work, shared reference material, cross-tool epics).
  2. Each sub-project gets its own tier. Present the tier table per sub-project. The user can pick different tiers per sub-project — sekko at L, agent-sync at single-file for now, session-export at M. Sub-projects that have nothing yet can be skipped (no docs/<name>/ dir created).
  3. Repo-root CLAUDE.md is always in scope. It's a single file holding both the umbrella's own conventions/build/test AND the repo-wide layer (cross-project rules, project index including ROOT, Michi marker with multi-project: true, pointer to per-sub-project CLAUDE.mds). No separate docs/ROOT/CLAUDE.md — the umbrella's identity docs (CLAUDE.md, PROJECT.md, STATUS.md, ARCHITECTURE.md, README.md) live at repo root. docs/ROOT/ holds only the umbrella's working docs (epics/, journal.md, memory.md, reference/).

Present recommendations as a table:

Project          Tier recommendation   Notes
---------------- --------------------- --------------------------------------
ROOT             M                     umbrella site + cross-tool reference
sekko            L                     full dev history, epics active
session-export   M                     plans + journal, no epics yet
agent-sync       single-file           one plan file, don't overbuild
agent-isolation  skip                  no dev knowledge yet

Wait for the user to confirm per-project tiers before proceeding.

Branching Convention

If no clear branch strategy is apparent from git history (no feature branches, only main), note this in the roadmap with a suggestion to establish one before the first michi-session.

Deferred Work

Anything not covered by the chosen tier goes to docs/reference/docs-refactorings-roadmap.md. The roadmap is always produced for brownfield projects unless everything is addressed (XL with no remaining gaps).

Wait for the user to choose before proceeding. This is a checkpoint.

Phase 3: Execute

Core principles: draft with the user, don't generate and dump. Don't assume — ask.

Per-Artifact Flow

For each artifact in scope:

  1. Draft content based on survey findings and the relevant template (references/)
  2. Present the draft for review and edits
  3. Write or update the file after approval
  4. Move to the next artifact

Greenfield Execution Order

  1. CLAUDE.md — the foundation. Use references/CLAUDE-MD-template.md. Populate: build/test commands (from survey), conventions detected from initial code, key files (exemplar patterns found during survey), @-refs to the other docs about to be created.
  2. PROJECT.md — use references/PROJECT-template.md. Purpose, users, features, constraints. Mostly user-provided — prompt for each section rather than guessing.
  3. STATUS.md — current state stub. Brief — enough to orient the next session.
  4. First epic directory — create docs/epics/<name>/ with verification/ and plans/ subdirs. Ask the user what the first epic should be called.
  5. ARCHITECTURE.md — only if the project has enough shape. If too early, note in the roadmap as "create after first milestone."
  6. docs/reference/code-style.md — stub for applied coding principles. Create docs/reference/ and seed with a minimal file. This grows through debriefs. Also create .claude/rules/project-rules.md with an @ reference so it's auto-loaded.

Brownfield Execution Order

Execute within the chosen tier:

  1. CLAUDE.md — highest value artifact. If one exists, assess and fill gaps. If missing, create from template. Merge relevant content from existing docs (README conventions, contributing guides).
  2. Reorganize existing docs — for docs identified in the survey as mapping to Michi artifacts, show the user what would move. "Your notes.md has status-like content — want to merge this into STATUS.md?" Don't delete originals until the user confirms.
  3. Create missing artifacts — in tier order: STATUS.md, PROJECT.md, then ARCHITECTURE.md.
  4. First epic setup — create docs/epics/<name>/ if M tier or above. Ask the user what the first epic should be called.

Multi-Project Execution

When multi-project: yes, the per-artifact draft-review-approve flow runs per sub-project. Order:

  1. Repo-root identity docs — the umbrella's own CLAUDE.md, PROJECT.md, STATUS.md, ARCHITECTURE.md, README.md live at repo root (not under docs/ROOT/). CLAUDE.md is a single file: umbrella conventions/build/test PLUS the repo-wide layer (cross-project rules, project index including ROOT, Michi marker with multi-project: true, pointer convention for per-sub-project CLAUDE.mds). Do this first so umbrella + repo-wide framing is in place before per-project work starts.
  2. docs/ROOT/ — the umbrella's working docs. epics/, journal.md, memory.md, reference/ scaled to the umbrella's tier. No CLAUDE.md/PROJECT.md/STATUS.md/ARCHITECTURE.md in this dir — those are at repo root.
  3. Each sub-project — iterate in user-chosen order (or alphabetical if unspecified). Apply the greenfield or brownfield flow at the sub-project's chosen tier. Sub-projects DO get their identity docs under docs/<name>/: docs/<name>/CLAUDE.md (sub-project conventions), docs/<name>/PROJECT.md, docs/<name>/STATUS.md, docs/<name>/ARCHITECTURE.md — plus working docs (epics/, journal.md) per tier.

Sub-project CLAUDE.md files are NOT added as @-refs to repo-root CLAUDE.md — they're read explicitly when that sub-project is the session's subject. The repo-root CLAUDE.md points at the convention in prose, not via auto-load.

Source/docs boundary: remind the user that source dirs (tools/<name>/, packages/<name>/) keep README.md + code only. All internal dev knowledge for sub-projects (CLAUDE.md, epics, plans, journal) lives under docs/<name>/. The umbrella's identity docs living at repo root is the deliberate asymmetry — the repo IS primarily about the umbrella.

Throughout Execution

  • Don't silently reorganize. Each move or merge is a mini-decision the user approves.
  • Don't assume what an existing document's purpose is. If unclear, ask.
  • Track what was done and what was deferred.
  • When something isn't clear — a doc's intent, where content should live, whether to keep or merge — ask rather than guessing.

Output

When execution is complete, produce:

  1. Summary — list of what was created, modified, or reorganized.
  2. Roadmapdocs/reference/docs-refactorings-roadmap.md if anything was deferred. Includes:
    • Deferred documentation items with brief rationale
    • Branching convention note (if no branch strategy was detected)
    • Other observations from the survey that didn't result in action
  3. What's next — The natural next step is /michi-planning to prepare the first milestone. If the project needs more exploration first, /michi-explore.

Customize Mode

Invocation: /michi-bootstrap customize

Add project- or team-specific overrides to Michi skill behavior. Creates docs/reference/extensions.md — a file that Michi skills check before applying their defaults. Anything in that file takes priority.

Steps

  1. Check for existing extensions file. If docs/reference/extensions.md already exists, note it and ask whether to review/edit the existing file or stop here. Don't overwrite.

  2. Create the extensions file. Copy references/extensions-template.md to docs/reference/extensions.md. The template includes a suggested heading structure and examples.

  3. Wire it into CLAUDE.md. Add @docs/reference/extensions.md to CLAUDE.md alongside existing @-refs so it's loaded at every session start. If CLAUDE.md doesn't exist, note that it should be created (suggest running /michi-bootstrap first).

  4. On-ramp the user. After creating the file, briefly explain what to do with it:

    • ## Common is for instructions that apply to all Michi skills — team conventions, issue tracker, branch naming, deploy process
    • Per-skill sections (## michi-session, ## michi-planning, etc.) override behavior for that skill only
    • Can also ask: "Do you have a coding standards file I should reference? I can add a pointer in ## Common so all skills know about it." If yes, add a line like: See [path] for project coding standards.
    • The file is plain markdown — edit it directly at any time
  5. Leave the rest to the user. Don't attempt a guided walkthrough of every section. The template's examples are the guide. The user populates it as needs emerge.


Multi-Project Migration Mode

Invocation: /michi-bootstrap multi-project

Migrate a single-project Michi repo to multi-project layout. One-time, mechanical — preserves git history via git mv.

When to use

  • The repo is adding its first sub-project with an independent dev lifecycle.
  • The user says "this should be multi-project now" / "let's split this into sub-projects."
  • Heuristics detect sub-projects during a regular /michi-bootstrap run in an existing single-project Michi repo.

Steps

  1. Confirm the repo is currently single-project Michi. Verify docs/epics/ and docs/journal.md live at the root of docs/ (not under docs/ROOT/ or docs/<name>/ already). If the repo is already multi-project, stop and direct to regular /michi-bootstrap.

  2. Confirm multi-project: true intent. Ask the user which sub-projects they're introducing, in addition to the umbrella's existing work. Record the sub-project list.

  3. Preview the migration. Repo-root UPPERCASE files stay at repo root — they describe the umbrella, which IS the repo. Only docs/* contents move:

    docs/epics/         → docs/ROOT/epics/
    docs/reference/     → docs/ROOT/reference/
    docs/journal.md     → docs/ROOT/journal.md
    docs/memory.md      → docs/ROOT/memory.md
    
    # Stay in place (do NOT move):
    CLAUDE.md           → stays at repo root; gets repo-wide additions in step 5
    PROJECT.md          → stays at repo root (describes the umbrella)
    STATUS.md           → stays at repo root (umbrella's status)
    ARCHITECTURE.md     → stays at repo root (umbrella's design)
    README.md           → stays at repo root (public-facing orientation)
    

    Wait for user approval.

  4. Execute via git mv. Preserves history. Do each move individually so the user can pause if anything looks wrong.

  5. Augment repo-root CLAUDE.md. The existing CLAUDE.md already holds the umbrella's conventions/build/test (that's correct — keep it). Add the repo-wide layer in place — don't split, don't move. The additions:

    • Project index — one line per project pointing to docs/<name>/, including ROOT.
    • Michi marker update — add multi-project: true to the ## Michi section.
    • Pointer convention — "When working on a specific sub-project under <source-parent>/<name>/, read docs/<name>/CLAUDE.md. Not auto-loaded; read when the sub-project is the subject of work."
    • Cross-project rules (if any) — conventions that apply to every project in the repo (naming, git, shared coding standards, commit format). Often already present from single-project days; tag them as "repo-wide, applies to all sub-projects" if the distinction matters.
  6. Create per-sub-project stubs. For each sub-project the user named, create docs/<name>/ with at minimum a CLAUDE.md stub. Sub-projects get full mini-Michi inside their dir (CLAUDE.md, PROJECT.md, STATUS.md, ARCHITECTURE.md, epics/, journal.md) per their chosen tier — unlike the umbrella, sub-projects don't have a "repo root" to themselves, so all their identity docs live at docs/<name>/. Ask about tier per sub-project (single-file / S / M / L) and scaffold accordingly — same as Phase 2/3 Multi-Project Branch.

  7. Verify. Ask the user to spot-check the resulting structure:

    • ls at repo root: CLAUDE.md / PROJECT.md / STATUS.md / ARCHITECTURE.md / README.md / docs/ — same shape as a single-project Michi repo.
    • ls docs/: ROOT/ first, then sub-projects.
    • docs/ROOT/: contains epics/, journal.md, memory.md, reference/ — no CLAUDE.md, no PROJECT.md, no STATUS.md, no ARCHITECTURE.md.
    • docs/<sub-project>/: has its own CLAUDE.md/PROJECT.md/STATUS.md/ARCHITECTURE.md/epics/.
    • Repo-root CLAUDE.md should read as umbrella conventions + repo-wide rules + project index + pointer.
  8. Update STATUS.md (repo-root) with a note that the repo transitioned to multi-project on <date>.


Expedition Mode

Invocation: /michi-bootstrap expedition [name]

Stand up the learning-mode (expedition) lane for open-ended, spiral exploration — scaffold the expedition root and capture the substrate, so /michi-expedition has a root to operate from. (The expedition modes assume the root and the substrate notes already exist; this creates them.) Canonical layout: references/expedition-structure.md.

Core principles, same as the rest of bootstrap: draft with the user, don't generate and dump. Don't assume — ask.

Steps

  1. Locate the expedition root. Standalone effort → expeditions/ at repo root. Inside a Michi repo → a learning epic at docs/epics/<name>/. Confirm with the user.

  2. Scaffold the structure (per references/expedition-structure.md), as stubs with **Last updated:** stamps:

    • STATUS.md — current state per charter (active/paused/dormant).
    • iteration-log.md — the chronological spine (header row: date · charter · report · human verdict · next).
    • backlog.yaml — the living queue (seed with the schema from michi-expedition's references/expedition-templates.md; define the project's type vocabulary with the user).
    • ruminations.md — the open/murky companion to the portraits.
    • charters/, portraits/, campaigns/, reference/ — empty dirs (with a .gitkeep if needed).
  3. First-contact substrate capture (the step the loop presupposes). With the user, capture the substrate's operational facts to global reference/ — how to access it, where it lives, query traps, what's read-only vs. writable. For a data corpus: read paths, partitioning, key gotchas. For external research: the source set and any access notes. This is the "find and document the substrate" pass; without it the first run can't query.

  4. Project-specifics → extensions.md. If the project has substrate-specific vocabulary, seeds, or conventions that should override toolkit defaults, run/point to /michi-bootstrap customize to create extensions.md. The expedition pattern stays in the toolkit; the substrate specifics live here.

  5. Hand off. The root is now ready — direct the user to /michi-expedition charter to define the first mission. Don't author the charter here (charters are Paired and belong to michi-expedition).

Wait for the user at the root-location and substrate-capture checkpoints — those are the judgment calls.

What ships with it: 7 files

81.2 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.