bootstrap-project
Skill2 starsChanged 2 months agoMITView on GitHub
Use when the friend wants to start a brand-new project's memory — nothing to scan yet, just a name. Triggers on the /ren:bootstrap-project slash command. Stamps the shared wiki skeleton (additive) and queues an empty L2 pointer-map for the project. For an EXISTING repo with real code/git history, use /ren:ingest-project instead.
11 other projects use a version of this.
Adopted by
Most recently taken up by
- jrjsmrtn/project-orchestration-skillstheir own version, first seen Nov 3, 2026
- zarubinvibe/athenatheir own version, first seen Nov 1, 2026
- holgerleichsenring/specification-first-agentic-developmenttheir own version, first seen Oct 28, 2026
- luiseiman/dotforgetheir own version, first seen Oct 13, 2026
- kohj1018/agentic-dev-harnesstheir own version, first seen Sep 29, 2026
- alfredobs97/flutter_agentic_templatetheir own version, first seen Sep 24, 2026
Other versions11 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 11
- holgerleichsenring/specification-first-agentic-development★ 41same name
- jrjsmrtn/project-orchestration-skills★ 17same name
- luiseiman/dotforge★ 8same name
- jkm-4314/claude-code-skills★ 4same name
- cahenesy/throughline★ 3same name
- farmisen/skills★ 2same name
- kohj1018/agentic-dev-harness★ 2same name
- zarubinvibe/athena★ 2same name
- alfredobs97/flutter_agentic_template★ 0same name
- hidekitux/skills★ 0same name
1 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository19 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- backupSkill
- code-mapSkill
- distillSkill
- doctorSkill
- ingest-projectSkill
- installSkill
- interviewSkill
- metric-watchSkill
- pinSkill
- recallSkill
- rememberSkill
- retrospectiveSkill
- routine-initSkill
- suggestionsSkill
- updateSkill
- wiki-healthSkill
- wiki-migrationSkill
- wrapSkill
The file
We split this skill into the rules it gives an agent
2 rules. 0 are common, 0 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 10 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 64
Always producer="promotion", writer="human" — a human directly asked for this, so it's never quarantined on apply.
- Very specific: line 77
Write to the wiki directly.
“Common” is measured: kept by at least 6 in 10 of the 10 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
bootstrap-project
The fresh-project half of the L2 pair. /ren:ingest-project scans an existing repo for facts; this skill is for a project with nothing to scan yet — just a name and an empty map to grow into.
When to use this skill
- Friend invokes
/ren:bootstrap-project <slug>for a new project with no existing code/history - Friend says: "start tracking a new project called X", "set up memory for my new idea"
When NOT to use this skill
- The project already has real code/git history to mine →
/ren:ingest-project [path]instead (it produces a POPULATED map, not an empty one) - The friend wants to look something up, not create a project →
/ren:recall
Behavior
- Resolve
project_slug(kebab-case) and the activesessionid. If bootstrapping inside a project repo (the common case), resolverepo_root=Path.cwd(). - Call
importlib.import_module("skills.bootstrap-project.lib").bootstrap(project_slug, session, repo_root=repo_root):- Stamps the shared skeleton (
lib/skeleton.pyagainstwiki-skeleton/manifest.yaml'smasterprofile) into the wiki root — additive only; an already-onboarded wiki is untouched. - Only when
projects/<slug>/map.mddoes NOT exist yet: assembles an empty L2 map (importlib.import_module("skills.ingest-project.lib").assemble_l2— same frozen schemaingestuses, just with emptyknowledge/pointersand a single "project bootstrapped" log line) and proposes it (ADD) atlib.memory.queue. If the map already exists, this step is skipped entirely — no proposal, no write — andbootstrap()returnsNone. The map is only ever SEEDED once; its real content is grown over time by other writers (/ren:ingest-project,/ren:wrap,/ren:pin), and bootstrap must never re-run over that growth. - Stamps the manifest's
projectprofile underprojects/<slug>/:overview.md(the guaranteed wake-up orientation page) and, as of 0.6.2, the project-wiki skeleton — the emptyknowledge/tree (the sanctioned home for this project's durable distilled pages,type: project-knowledge,schema_version: 1,project: <slug>; arbitrary-depth subdirectories, each with a hub named after the folder —<topic>/<topic>.md), aschema.mdtemplate stub (type: project-schema— the project's own SCHEMA document: taxonomy tree, naming conventions, whatraw/holds; the ingest worker drafts the real taxonomy, bootstrap only marks the slot), and the emptyraw/directory for immutable source material. Bootstrap only creates the skeleton;/ren:ingest-projectand later sessions fill it, and the L2 map's Decision-map pointers index it (hubs and top-level pages, not deep leaves). Project-specific pages must NOT go in root-leveldecisions/·patterns/·research/— that's the promotion-gated instruction plane (docs/decisions/2026-08-01-project-knowledge-subtree.md, amended by2026-08-01-hierarchical-project-wiki.md). - Always
producer="promotion",writer="human"— a human directly asked for this, so it's never quarantined on apply. - When
repo_rootis given, also writes<repo_root>/AGENTS.mdvialib.portability.agents_surface.write_agents_md— the thin, harness-neutral pointer file foreign coding agents (e.g. Codex) read to find this project's wiki map (Codex D5: the surface existed but had zero production callers before this wiring). A failure writing AGENTS.md never breaks bootstrap itself; omitrepo_root(defaultNone) to skip it entirely. - Also writes
<repo_root>/CLAUDE.mdvialib.adapter.claude_md.write_project_claude_md(repo_root, project_slug)— stamps the thin RenOS pointer block (managedren:markers) pointing at the project's L2 map, preserving any surrounding user content. Wired as of 0.4.3 (closes a 0.2 finalize claim that had zero production callers). Same failure isolation asAGENTS.md: a failure never breaks bootstrap itself.
- Stamps the shared skeleton (
ingest-project'slib.ingest()also stampsCLAUDE.mdnow (issue #15) when givenrepo_root=— same additive marker-block contract. Both skills additionally record the repo-path↔slug pair instate_dir()/projects.jsonviaren_paths.record_project_repo(issue #19), sodetect_projectfinds the project even when the checkout dir is named differently from the slug.- Confirm to the user:
Queued <qid> — bootstrapped projects/<slug>/map.md. On the skip path (map already existed,bootstrap()returnedNone), instead confirm:projects/<slug>/map.md already exists — left untouched.
Why this reuses ingest-project's assemble_l2
Both skills produce the SAME frozen L2 schema (type: l2-map, Knowledge / Decision map / Log sections) — bootstrap just starts it empty. Rendering logic lives once in skills/ingest-project/lib, reached here via importlib.import_module("skills.ingest-project.lib") (the hyphenated directory name isn't a valid Python identifier segment, so a plain dotted import statement can't reach it — importlib.import_module resolves the string path without that restriction).
What this skill does NOT do
- Scan anything. There's no repo to scan yet — that's
/ren:ingest-project's job. - Write to the wiki directly. Both the skeleton stamp (additive-only, idempotent) and the map proposal go through their respective owning mechanisms (
lib/skeleton.py,lib.memory.queue) — this skill orchestrates, it doesn't write. - Populate the Knowledge or Decision map sections. They start empty;
/ren:ingest-project,/ren:pin, or/ren:wrapfill them in over time.
Failure-degradation modes
| Failure | Behavior | User-visible |
| No slug given | Refuse, prompt for a name | "What should this project be called? Usage: /ren:bootstrap-project <slug>" |
| A map already exists for this slug | Map write skipped entirely — no proposal queued, existing content (however much it's grown) is untouched | "projects/<slug>/map.md already exists — left untouched." |
| Skeleton stamp finds existing user files | Skipped, reported, nothing overwritten | (silent per-file; only new entries are queued) |
References
- Task 4.4 (
skills/ingest-project/lib/__init__.py) —assemble_l2, the shared L2 renderer - Task 0.3 (
lib/skeleton.py,wiki-skeleton/manifest.yaml) — the additive skeleton stamp - Task 2.1 (
lib/memory/queue.py) — the single write-queue this skill's only write path - Spec §3.1 L2 — the pointer-map definition
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

