From e1e5bd1309edbc87244075c1b2d10f59954b16c0 Mon Sep 17 00:00:00 2001 From: vitya Date: Tue, 28 Apr 2026 13:19:38 +0300 Subject: [PATCH] feat: version infra skills (1.0.0) + project-bootstrap manifest step MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Six infra skills carry `version: 1.0.0` in frontmatter: project-bootstrap, setup-context7, task-status-wiki, using-context7, using-markitdown, wiki-maintainer. Bumped manually on SKILL.md edits; semver — MAJOR breaks contract, MINOR adds, PATCH wording. project-bootstrap gets a new Step 5.5 that writes .wiki/concepts/bootstrap-manifest.md per project — skill + version + role table read live from each delegated skill's frontmatter, not hardcoded. The file is overwritten on re-bootstrap; for history, git log. Why: when canonical layout for .wiki/ or .tasks/ changes, projects bootstrapped under the old version drift silently. The per-project manifest makes that drift debuggable instead of guesswork. Communication and discovery skills (caveman family, find-skills, active-platform) aren't versioned — their content is "good copy-paste" and snapshot mismatch isn't a layout problem. Wiki: .wiki/concepts/skill-versioning.md documents the convention; index.md and log.md updated. .tasks/STATUS.md tracks (a/b/c) progress. Setup/using split for wiki and tasks (commits b and c) follows. Co-Authored-By: Claude Opus 4.7 (1M context) --- .tasks/STATUS.md | 28 ++++ .wiki/concepts/skill-versioning.md | 48 +++++++ .wiki/index.md | 1 + .wiki/log.md | 1 + .wiki/raw/setup-task-status-wiki.md | 204 ++++++++++++++++++++++++++++ dist/project-bootstrap.skill | Bin 4131 -> 4582 bytes dist/setup-context7.skill | Bin 4165 -> 4173 bytes dist/task-status-wiki.skill | Bin 2509 -> 2518 bytes dist/using-context7.skill | Bin 2603 -> 2611 bytes dist/using-markitdown.skill | Bin 2976 -> 2984 bytes dist/wiki-maintainer.skill | Bin 3264 -> 3274 bytes skills/project-bootstrap/SKILL.md | 30 ++++ skills/setup-context7/SKILL.md | 1 + skills/task-status-wiki/SKILL.md | 1 + skills/using-context7/SKILL.md | 1 + skills/using-markitdown/SKILL.md | 1 + skills/wiki-maintainer/SKILL.md | 1 + 17 files changed, 317 insertions(+) create mode 100644 .wiki/concepts/skill-versioning.md create mode 100644 .wiki/raw/setup-task-status-wiki.md diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index cc62075..f883d0d 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -1,6 +1,34 @@ # Task Board _Updated: 2026-04-28_ +## In Progress + +### Versioning + setup/using split for wiki & tasks +**Goal:** version 6 infra skills (`1.0.0`), record them in a per-project bootstrap manifest, then split `wiki-maintainer`/`task-status-wiki` into `setup-X`/`using-X` pairs (mirroring context7) so bootstrap delegates to setup-skills and using-skills self-bootstrap on missing infra. + +**Three commits:** + +#### (a) Versioning + manifest +- [x] Add `version: 1.0.0` to frontmatter of all 6 infra skills +- [x] `project-bootstrap` Step 5.5 writes `.wiki/concepts/bootstrap-manifest.md` (table read live from each delegated skill's frontmatter) +- [x] `concepts/skill-versioning.md` documents the convention; index + log updated +- [x] Build + install affected skills (loop in build.sh handles 6-arg invocation cleanly) + +#### (b) Split wiki +- [ ] Rename `skills/wiki-maintainer/` → `skills/using-wiki/`; update `name:` in frontmatter +- [ ] New `skills/setup-wiki/` (canonical layout creation, gated, derived from current "Bootstrap empty wiki" section + Karpathy gist) +- [ ] Prerequisites section in `using-wiki` → invokes `setup-wiki` if `.wiki/` is missing/non-canon +- [ ] `project-bootstrap` Step 3 delegates to `setup-wiki` + +#### (c) Split tasks +- [ ] Rename `skills/task-status-wiki/` → `skills/using-tasks/`; update `name:` +- [ ] New `skills/setup-tasks/` derived from `.wiki/raw/setup-task-status-wiki.md` + existing SKILL.md +- [ ] Prerequisites in `using-tasks` → invokes `setup-tasks` +- [ ] `project-bootstrap` Step 4 delegates to `setup-tasks` + +**One-time, after all three:** +- [ ] Manual `rm -rf ~/.claude/skills/{wiki-maintainer,task-status-wiki}/` (the old names) once the renamed installs are in place + ## Done ### Create `setup-context7` skill diff --git a/.wiki/concepts/skill-versioning.md b/.wiki/concepts/skill-versioning.md new file mode 100644 index 0000000..ee7f050 --- /dev/null +++ b/.wiki/concepts/skill-versioning.md @@ -0,0 +1,48 @@ +--- +title: Skill versioning + bootstrap manifest +type: concept +updated: 2026-04-28 +--- + +# Skill versioning + bootstrap manifest + +## Why version skills + +When the canonical layout for `.wiki/` or `.tasks/` changes (as it has — see [wiki-realignment.md](wiki-realignment.md) and the upcoming task-tracking realignment), projects bootstrapped under the old version drift out of canon silently. Without a record of *which version* did the bootstrap, debugging that drift is guesswork. + +The fix is two-sided: skills carry a version, and `project-bootstrap` records which versions it used in a per-project manifest. + +## Frontmatter format + +The 6 infra skills (`project-bootstrap`, `setup-context7`, `setup-wiki`, `setup-tasks`, `using-wiki`, `using-tasks`, `using-context7`, `using-markitdown`) carry `version: ` in their frontmatter: + +```yaml +--- +name: project-bootstrap +version: 1.0.0 +description: … +--- +``` + +Semver: +- **MAJOR** — breaks the contract (renames, layout changes, trigger-phrase removals). +- **MINOR** — adds capability (new triggers, new optional steps). +- **PATCH** — wording / clarity tweaks; no behavioral change. + +Bumped manually when `SKILL.md` is edited. No CI gate — discipline-based. + +## What skills are versioned + +Currently only the **infrastructure** skills (the ones bootstrap touches and that govern project layout). Communication-mode skills (`caveman`, family) and discovery skills (`find-skills`, `active-platform`) aren't versioned — their content is "good copy-paste" and a snapshot mismatch isn't a layout problem. + +If we ever start packaging or marketplace-publishing the rest, we'll version them too. + +## The manifest + +`project-bootstrap` writes `.wiki/concepts/bootstrap-manifest.md` with a frontmatter block + a small table of skill + version + role. The file is **overwritten** on re-bootstrap (not appended) — for history, `git log` shows the changes over time. + +## Why this matters + +Concrete scenario: you discover that some old project's `.tasks/STATUS.md` doesn't follow the canon (no per-task files, no emoji status). Look at its `bootstrap-manifest.md` — if it shows `setup-tasks: 1.0.0` but the current canon is from `2.0.0`, you know exactly what happened and can re-run `setup-tasks` to migrate. + +Without the manifest: `git log` of the project's `.tasks/` folder, guess from filenames, hope. diff --git a/.wiki/index.md b/.wiki/index.md index 797679e..9260799 100644 --- a/.wiki/index.md +++ b/.wiki/index.md @@ -16,6 +16,7 @@ Catalog of all wiki pages. One line per page, organized by type. Updated on ever - [build-notes.md](concepts/build-notes.md) — why `build.ps1` exists alongside `build.sh`; PS 5.1 backslash-in-zip gotcha; how to extract a `.skill` - [context7-setup.md](concepts/context7-setup.md) — switched context7 from manual MCP entries to the official plugin; API key in `.mcp.json` as `--api-key`; now also captured as `setup-context7` skill (one-time install/migrate flow with key discovery) - [repo-layout.md](concepts/repo-layout.md) — flat `skills/`, committed `dist/`, bash + PowerShell scripts; install model +- [skill-versioning.md](concepts/skill-versioning.md) — why infra skills carry `version: ` in frontmatter and how `project-bootstrap` records them in a per-project manifest - [skill-vs-plugin.md](concepts/skill-vs-plugin.md) — when a bare SKILL.md is enough vs when you actually need a plugin (slash commands, hooks, sub-agents, MCP servers); concrete breakdown of `superpowers` - [wiki-realignment.md](concepts/wiki-realignment.md) — fixing `project-bootstrap` to create the Karpathy-canonical wiki layout diff --git a/.wiki/log.md b/.wiki/log.md index a0406ab..e9654f9 100644 --- a/.wiki/log.md +++ b/.wiki/log.md @@ -22,3 +22,4 @@ Parseable: `grep "^## \[" .wiki/log.md | tail -20`. ## [2026-04-28] decision | setup-context7 skill — formalized the install/migrate algorithm; using-context7 gets a Prerequisites pointer; build.sh PS multi-arg bug fixed (loop instead of comma-joined -Names) ## [2026-04-28] verify | setup-context7 — Vitya ran using-context7 in a session that needed setup; Prerequisites pointer triggered setup-context7; full flow worked end-to-end. Pattern (policy + setup split) validated. ## [2026-04-28] decision | skill-vs-plugin — documented when a bare skill suffices vs when a plugin is required (slash commands, hooks, sub-agents, MCP via marketplace) +## [2026-04-28] decision | skill-versioning — added `version: 1.0.0` to 6 infra skills' frontmatter; project-bootstrap now writes .wiki/concepts/bootstrap-manifest.md per project diff --git a/.wiki/raw/setup-task-status-wiki.md b/.wiki/raw/setup-task-status-wiki.md new file mode 100644 index 0000000..da62141 --- /dev/null +++ b/.wiki/raw/setup-task-status-wiki.md @@ -0,0 +1,204 @@ +# task-status-wiki + +> An idea file for LLM agents. Copy-paste this into your agent (Claude Code, Cursor, Windsurf, etc.) +> and it will set up a task status tracking system in your monorepo. +> The agent builds the specifics in collaboration with you. + +--- + +## The Problem + +When working on multiple large tasks in parallel inside a monorepo, context is lost on every +switch. You have to re-explain: what was being done, why, what the current blocker is, +which files matter. This is expensive and error-prone. + +## The Pattern + +Maintain a small wiki inside the repo — a folder of plain markdown files — that an LLM agent +actively reads and updates as you work. The files store *compressed working context*, not +prose notes. When you switch tasks, you give the agent the relevant file and it is immediately +oriented without re-explanation. + +This follows the same principle as Karpathy's llm-wiki: knowledge should *accumulate* across +sessions, not be re-derived from scratch each time. + +--- + +## Structure to Create + +``` +.tasks/ + STATUS.md ← the board: one block per task, sorted by priority + .md ← deep context file per task +``` + +Place `.tasks/` at the monorepo root. Commit it to git — decision history is valuable, +and diffs show how thinking evolved. + +### Solo vs. team + +**Solo:** local commits are enough. No need to push `.tasks/` — history is preserved locally, +remote repo stays clean. + +**Team or multiple agents:** push `.tasks/` to remote. It becomes the shared source of truth. +Without it, each agent or person works from their own stale snapshot and statuses diverge. +Add a `**Owner:**` field to each STATUS.md block so it's clear who (or which agent) holds +the task at any moment. + +--- + +## STATUS.md — the board + +This is the first file you open when returning to work. One block per active task. +The agent updates it at the end of every session, or when asked. + +### Format + +```markdown +# Task Board +_Updated: YYYY-MM-DD_ + +## 🔴 [task-slug] — short description +**Status:** active | paused | blocked | done +**Owner:** person or agent name (team mode only — omit if solo) +**Where I stopped:** one sentence — the exact thought or action interrupted +**Next action:** one concrete step to resume immediately +**Blocker:** (if any) what is stopping progress +**Branch:** git branch name + +--- + +## 🟡 [task-slug] — short description +... +``` + +### Status emoji convention +- 🔴 Active — currently being worked on (only one at a time) +- 🟡 Paused — in progress, can be resumed +- ⚪ Ready — not started, fully defined +- 🟢 Done — completed, kept for reference until merged +- 🔵 Blocked — waiting on external input + +--- + +## Per-Task File — `.md` + +Created when a task starts. The agent maintains it throughout. This is the *compiled* +context — not raw notes, but synthesized understanding that would take too long to +re-derive from scratch. + +### Format + +```markdown +# + +## Goal +One paragraph. What this task achieves and why it matters in the monorepo context. + +## Key files +List of files central to this task, with one-line notes on their role. +- `path/to/file.ts` — what it does and why it matters here +- `path/to/other.ts:42` — specific line if relevant + +## Decisions log +Reverse-chronological. The agent appends here when a non-obvious decision is made. +- YYYY-MM-DD: Why we chose X over Y +- YYYY-MM-DD: Discovered constraint Z, adjusted approach + +## Open questions +- [ ] unresolved questions that block or affect design +- [ ] questions to discuss with teammates + +## Completed steps +- [x] steps that are done (agent moves items here from open questions or session notes) + +## Notes +Anything that doesn't fit above: temporary hypotheses, links to external context, +names of people to ask. +``` + +--- + +## Agent Operations + +These are the operations the agent performs. The agent should do them autonomously +without being asked each time. + +### On session start +1. If in team mode: `git pull` to sync `.tasks/` before reading anything +2. Read `STATUS.md` +3. If the user names a task, read its `.md` +4. Confirm current state in one sentence: "We're in the middle of X, next step is Y" +5. Ask if the plan is still correct before doing anything + +### On session end (or when user says "pause" / "switch") +1. Update `STATUS.md`: set current task to 🟡, update "Where I stopped" and "Next action" +2. Append to `.md` Decisions log any non-obvious choices made this session +3. Move completed steps to "Completed steps" +4. Commit: `git add .tasks/ && git commit -m "chore: update task status []"` +5. If in team mode: `git push` + +### On task switch +1. Perform session-end operations for the current task +2. Ask which task to switch to +3. Read the target `.md` +4. Set it to 🔴 in STATUS.md +5. Confirm orientation before starting work + +### On task creation +1. Ask: task name (becomes the slug), goal, known key files, branch name +2. Create `.md` with populated Goal and Key files sections +3. Add block to `STATUS.md` with status ⚪ +4. Create and checkout the branch if it doesn't exist + +### On task completion +1. Move all open questions to resolved or drop them +2. Set status to 🟢 in STATUS.md +3. Add a "Completed" line in Decisions log with final summary +4. Remind user to delete the branch after merge + +--- + +## Initialization Prompt (run once per project) + +When the user pastes this file into the agent for the first time, the agent should: + +1. Confirm it understands the pattern in one sentence +2. Ask: "What tasks are currently in flight? Give me their names and a one-line description." +3. For each task mentioned: ask for branch name, current status, and where work stopped +4. Create the `.tasks/` folder structure +5. Create `STATUS.md` with all tasks filled in +6. Create a `.md` for each active or paused task +7. Make an initial commit: `git add .tasks/ && git commit -m "chore: init task status wiki"` +8. Print the path to STATUS.md and say it's ready + +The agent must not invent task details — it asks for what it doesn't know. + +--- + +## Rules for the Agent + +- **Never lose "Where I stopped"** — this is the most important field. If unclear, ask before ending session. +- **One sentence per field** — STATUS.md fields are not prose. Compress. +- **Key files must be specific** — not "auth module" but `packages/auth/src/useAuth.ts:87`. +- **Decisions log is append-only** — never rewrite past entries, only add. +- **Commit after every session end** — the git log is the history of thinking. +- **Always confirm orientation** — at session start, state what you understand before acting. +- **If STATUS.md is stale** (last update > 3 days ago), flag it and ask the user to confirm current state. +- **Team mode:** always `git pull` before reading, always `git push` after committing. One 🔴 per owner — two people must not hold the same task active simultaneously. Use the `Owner:` field to make this visible. + +--- + +## Why This Works + +The key insight from Karpathy's pattern: an LLM should not re-derive context on every session. +It should read accumulated, compiled knowledge — the same way a compiler produces an artifact +you don't recompute every time. + +The `.tasks/` wiki is that artifact for engineering work. Each task file is a *compiled* +representation of: what was learned, what was decided, what remains. The agent's job is +to keep it accurate and compressed — not verbose, not a log dump, but the minimum a future +session needs to be immediately productive. + +The STATUS.md board adds fast navigation: glance at it, pick a task, load its file. +Two reads and you're back in context. diff --git a/dist/project-bootstrap.skill b/dist/project-bootstrap.skill index df80f68fdf43391485abb596925eaf0c89e9c437..a8a4bb574ea2364e608dd4645c42bf1a6df783de 100644 GIT binary patch delta 3933 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 delta 3475 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 BplJXA diff --git a/dist/setup-context7.skill b/dist/setup-context7.skill index db6a3e271426fe924ab7580f10f3ac2daec664d4..277268d8b19f8d6024daac244ac9476cd136c373 100644 GIT binary patch delta 4138 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 diff --git a/dist/task-status-wiki.skill b/dist/task-status-wiki.skill index 953155598880a236da54376daf2a9bc782885b1b..679cfacafde3367ec3bba3b37297ffc837564f6f 100644 GIT binary patch delta 2402 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 U1wsh`0MnC+2|fmS2><{90A)^>IsgCw delta 2393 zcmV-f38wbe6U`GBP)h>@6aWAK2mp#yoLpe`%l|nE006|17bAae9LEv8&sP*yfF&+= zhp;Wj!NyQPk%=J$k_?K1qzHnyccyo@#hLC&cMn$^_>hy&L7-DEMtsaU`5}ElJ|VBF zXJ%(f=MVxUhdbTXRj*#Xs^)w?&#bETf}#r7^AJ^R!+dA1O;+kqc+*7V?1CO;L{F7f z8%>HD?SlzX+bDm#DD5KNMaBkG@}k;V=XK+#4aROLZZ+k+I-JtlRi*aSs2H`kIZVF{ z8Y@hoaBZrJc3W-r4VLh(HsFC@?My7TY-^?CPHQWNhZ%Vt+L}LyX9}xJc`<`oIObz| zWA!e5O!&bcO>l_Uv`arGGjg7G%F6QSD0)>~Q{&wR<^zAJ!aMw`+bWu-(y-kquc}JJ zS?8}q^jg&+r?V<>#9Bf)xF6I$&_uk$Ns|-`AM=|3+-+67A7pica>C9}+NMh{1_2KZ+>0s|i(jS`26ed=CSg(;iWL8#5;y(T5 zBPqM5!r4}+Kg9U~Zk#J|&*j9zIbRy9WcQz19pu4SU|cw49+17)MZ^)vnWA7eR#hBo zdz9lmn}d4UJ-T9}FA{@ZG4Haoo*5ttj#kD-e6uHos~b)SQp~8QkCPVyBY(?|txG~i zBQnIm`aK1l&k+l^0>Ck_r^}3Obt_VK3m5P{Xn0tHrPf6POIw_kBkp^M*|$Y(z0R`b za+!V8yE*sH#Yd+Au=4;yn1APe1;ZR!;eHLC$JgRgM|URUsK|e|%rhQ@|El4&jQ@A7BhmuH9@S7ZBT)G6AoB z+c06K(`SjeqOhGMWT5a`svh|OvLbGpOkL~JAXF6ZboyBQ^1SJRv(=u$wkp`#@ zRLa<_OjK_0_WLh}yp%3j!KXT~cXEP5q_6C6Uu3QQ3tBrCc9*X3wmB`J$%9^rcf2S9*V(o`l~K& z(!9OiL3KFn0P(aDN(t$kk4kj`9QO1Yxd>Ej9m)j7^br$hD7A0Z^6;8mPy z)qq7nkW~4;4O~_1^K*DJv?hk>ExiLDKr@jV765c5E=J2zv*Re;{b)U#IPcjcg(x;Y zyi3mj-0X_TpkT+7sF_uOVSdG;%D`_NdH zedAb?%viAV=u13eN>dvLsj1Y43z2J*1waB$*^xLp<&)V==f~OLN;pkD1i#ZTz{yD` zj^SJYh&b3v^PCf@oONRf@Hy@{6LD!W>KqfvR9Au6ejESe3YHPiIy-l(L|K%bDUion zf0g}smg10HKSiM(_>N+(1D`RuRUVTr$vhY=Xvv*LmE|z+fA*O)n<5Pk^O`0&)g${| zkmF0l+mZY4Cd&k^bo>L7&}A0m-qX2g&rlmOH8MlSz#iz#Z%{8AAb*#t2>AtGz)ML4 z+8vmApv{9)*NzpfFZga`=(2Wl#Pu{8f2KLPqvdcP;eOfC=2>?!A@qG&%n^d;=|(11 zMi1D@^_-AG6@^bu-Y(^gy!0>BwE$6Ywh zlgy~G06ZMbvyFlU$F;*Cf!YLihYJTJCm*G->(O11mr0LBhrMfvr*C&8-4YEaf21Qv z!ujW;q$Hmc{lQcOhhd^-!Igf7Ek^|)5nO6a;^k1)rDiS*GrBm`8vQp752L~KSSjfN z(u~f=BTl+#bXOk?1eZ`&xd9%g7yj}O+b>+q__i)h{b^rghhi}q% z{(S+#`5OA-dD7s4iP>=|e_?#z$@s?3O>dv`zyGJf+%vubfxX>Chr6~;b`C01V*ta6!#vqpU|1%q1(vld z5#oea&eWISBv&#FLT< LJ_c|J00000zo?RH diff --git a/dist/using-context7.skill b/dist/using-context7.skill index 174e940562c8850de1f389148495ff86a0759d27..37630c7a9463bb7307933f2deb8cead6b110c69f 100644 GIT binary patch delta 2551 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 M3qA%z3jhEB0H!v)?*IS* diff --git a/dist/wiki-maintainer.skill b/dist/wiki-maintainer.skill index 0e8279363c211623fef2547525048f8dedafdcf1..4c21b21014b79c87ebb62c903a8872a6836a3435 100644 GIT binary patch delta 3225 zcmV;K3}*Ad8Oj+OP)h>@6aWAK2mnZGoLrMiF7P-E008M2000=1j|>}seOX;^8^;xW z-(NA1QG{a1rDR)a%ou8ANlArRmSf3C0@v*hcZcML%bm^4tY`*8;iPEt&;SA2z88II zANrD}5Nb531LPM_f5E?`=ib>}QnKN|iOJ>c%>6j`+;b=0Za2u~RQ1Iyouu8VOml~S zl?hIjv8m4cVl&(bH-bce+1R9o<3|sz60@<&g%m~=T8yQ|$0(#ddXY#{qhhDcTnu%V z=~Qy659prjdm%@erNgzUxBzxda+nG6v!j>%A)sdQEh6hARaOz~J! zWIMc|F!~cjx@!x66{o{A7O~Dx5h^6fA}*&2QLN9{y}R>pZ$F$SQ5bZQ_2Ak|DG#>A zVf78$FZ0x@lUHY~FUHOlw%_ZGQtQG|>c-_DjPU%-5RCD1p^W4Jbl{&G3+qf8J0J8qpl&Q3VmVPw%HWx?N)9rA z@(8f*4o#}^B%6nb)irUla;#`2TIAY^K~|deAlM9H{{uM_R+lDL7RFLStH>KULxx*G zqEiw{x4o0eY_ zvZRxO>tqdqp>mCkn7c6@qB46G&cOc&IqT|Ku98rH>;sW*E_wt{vJ;;Q8BZiK->X6< zY&o4uLkL6Jhrtax?-=Dgm6wCL0%LLib?|S^D9QBArHa5nU#nyB6=;F+>r|;T;t7M` zf;fN^1J+50s4Zpj_B-@Y!&{Sr0ueL>*iOn z70Tm(%kI#b*iAhFBrFGfbzO@1KH+7cMkG=qi$-PYROW6aW=8}D$IKifYr(uy zO|6Cd9pT`&qjQU@y}n zJb4MpD+RQyPkMMw9C(_i4FB}cm$_Pe^wal$%b*ctO;cuKSY}k62-W@*7#6$!O1>+s z;nOndOd#F3bdG>qk(rO&E(Jn~sH))JZJU*&ZH`xq{9VPTfDe@o9r3%ZjTcY?P`4=y~{F5k)giNABZ@1rn z&E$xDf}aV%#t>f?E^36y4&~l%FaF9s>I+2jJN*3=vHS|3&-+-lct&x>)2|R^v@fwE z5bWpG!eh>toiFS^6|`4}a)r}H;}ZjfnCd_jdVGpSQy;{(wmSs(j=5_xQe;-U8? zTH=^?lu1I3dWvl*K;T;><1N%AGZ^E4jDkw&ivTU34Nu~}DI(fGCu|hjI9gS6THlwu zw;`#D-^a85b|scW4GIHL+wG%V)#76+QBAr;9yfiGt5O4&QAGHYlPy`*y`_V=nW0Of zaazb0^1a>mF#muB0ubYo@Nx>L`ugoG!nqr54s%1RX8Dn1LbC5(>m0&=ExLdnb+#T8_p@qN$w6f37jXt9E}_P z#hFZ}^*c~nY^dlK5w({qglNZlW{E{+NPPu&P>>@6A2%EZltv!lD(ORitxGCjI`GhU zg@#0{L+hZ5sqd{`u0VUD?+;4HE@=FXBT^#>Y~-5Xa-W(*@8oFjNLUXE%QaDzEO(uv z%u!((Dando5+K|W`YMSbOQ%uuX)KxWUq=t#$MiFLjeH)aEQOlpyrKeIhdcN7c215S ze7x>+exDc_(?#y4+!}&^Ac~^7oMtST5t9sa(&8VB^Tqcb4}dL^Brpujo-cmD({r%r z;)jcG0yi&I)sN=ltdTxvjr2LIvv$TbdYYPh$^410Bh z8fp!PJ7VS00O+13kAo`neQ|x``di(No89Z1>;b$1Z2h4geUiq1lvo;Y(-IQmWBk)S zJnZi6MJxfRpZ}I5YoAV|<{pM&T__woKs3i(bHdT`k`x?e}ZsS7enth*|P1O zS`y8rr?t{pc`8~c?&z1=j4%U0Qx4N7>z!B0j4GTBkeN6c=v@k3$Im3qm=Xm0EG?;R z&JpBkX=z4+YB#3ym zH~kHVB#rv?Ie`kND+BtR=BXo>?l)r<+ax0LLahA;X8ronn(*4xy9{$Md1j(}eWM9R z(+h)OSAq^TBr6Gw9FT>1r-~$R#R4SCSWbzkD;}LtY9F@&dpX|Y0HS$ zqk90%;}*)R!5jI#PQ&_gmslriWfyYJ--hrljDbLh^N)xbKC!$R{xq1BMcVT}UD*`{ zjn}HmzD-rP%?lnrxZ8y%I8#{cqPQsidm38#lZ*dyT}lG?grc z)tk#Qqr<#7I}N%X(lH>EAduvX*rX1R;=qZ zFXK~x-5IK{mj|n6_*#-w1K}lt8vysn8p;b4-xL|Z5a{H@0~MVbb3QdqJ|iLx$i29l zDJ9+GQE#ZO1+HEuyy_ysD}cRnTF|~EQ%G~eR4-$jjPhZ}zHd`cGPP2nae%@*p$?Dt zJHP_TgIE`H9xPZT@hq~OL`YwV5B=pN<*jOevP-#d>28b1EI$N}FvJaMx=KB9`dgFN zj#1TR$~%=kpOn_EjzVPCy_%tx!V-2xCpy7QaX^!gN?ttuJ5S>?w471Mx2n-qzOE(_ zP&G|0zA&*ndfd+O?!ke-*WxZo``-ZwA@hl33pq$L(jHW!e(){88zg?NG-1CbM%Iyk z@`Ldbi?ru`t{-Aul4y$O1f+=4q*{e)V(t@FIW%Np! z25DB}3oWV+NYqoAl?tAaqGgV=r9rQu^C61-1s@s3zYQf_LSbKv-^%K|rtAuT7uHm9 zEm#3k`i1OGG~I(T>YK~!OwMUlqNoXfTVj1cokfbP#y`o7+^w!*tNUo0l+g1GG_8NY z*J;EKIIPQ4Q%(fPqn6mgY&1ZOh6v$6!4&1ER;=|T%22*{bV4;i7s|^UD5~4)3XE^y z8#+PH+IesP-pMh227OwV>7+w0UpMo>YSgI2SXAF7H`ndV(mup1cfs5jsMcp`7(gii zG%#eU%P{oJME>sVJ*duTuFFz?u~^XmR8qP9Pe4R}Y7TAzRI} z1Ih0$7HP)h*<6aW+e000O8NNSv1lS(e|I1B&)>63j7 LJqB(J00000F^eUE delta 3209 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 vnXa$Xd%^z!P)h*<6aW+e000O8I7gLSyyff Initializes or upgrades a project in the current folder: git, .gitignore, README.md, .wiki/ using Karpathy's method, .tasks/ for task tracking, CLAUDE.md with skill triggers. @@ -256,6 +257,35 @@ host? Substitute `we're on Linux` or `we're on macOS` instead. --- +## Step 5.5 — Bootstrap manifest + +Write `.wiki/concepts/bootstrap-manifest.md`. The manifest records which skills (and at which versions) initialized this project's `.wiki/` and `.tasks/` layout, so layout drift between projects bootstrapped at different times is debuggable. + +Read each delegated skill's `SKILL.md` frontmatter to pick up the live `version:` value (don't hardcode): + +```markdown +--- +title: Bootstrap Manifest +type: concept +updated: +generator: project-bootstrap@ +--- + +# Bootstrap Manifest + +Skills used to initialize this project's `.wiki/` and `.tasks/` layout, with their versions at install time. + +| Skill | Version | Role | +|---|---|---| +| `project-bootstrap` | | orchestrator | +| `setup-wiki` | | wiki canonical layout | +| `setup-tasks` | | tasks canonical layout | + +This file is overwritten if `project-bootstrap` is re-run on the same project. For history, use `git log .wiki/concepts/bootstrap-manifest.md`. +``` + +If a delegated setup-skill is unavailable on this machine (e.g. user installed only a subset), record the missing skill as `unknown` in the version column so the gap is visible. + ## Step 6 — Commit ```bash diff --git a/skills/setup-context7/SKILL.md b/skills/setup-context7/SKILL.md index 494b7b0..d27d93c 100644 --- a/skills/setup-context7/SKILL.md +++ b/skills/setup-context7/SKILL.md @@ -1,5 +1,6 @@ --- name: setup-context7 +version: 1.0.0 description: Installs and configures the official context7 MCP plugin (`context7@claude-plugins-official`), reuses the user's existing Context7 API key, and cleans out any manual `mcpServers.context7` entries from `~/.claude.json` and `~/.claude/settings.json`. Use this skill when the user says "install context7", "set up context7", "configure context7", "настрой context7", "установи context7", "context7 не работает", "context7 isn't working", or whenever the `mcp__context7__resolve-library-id` / `mcp__context7__query-docs` tools are missing in a session that needs library docs. Cross-platform — Windows / Linux / macOS. Mutates user-level config; pauses for confirmation before writing. --- diff --git a/skills/task-status-wiki/SKILL.md b/skills/task-status-wiki/SKILL.md index 53f4f1e..23eeb85 100644 --- a/skills/task-status-wiki/SKILL.md +++ b/skills/task-status-wiki/SKILL.md @@ -1,5 +1,6 @@ --- name: task-status-wiki +version: 1.0.0 description: > Manage a persistent task status wiki inside a monorepo using the .tasks/ folder pattern. Use this skill whenever the user is switching between tasks, resuming a paused task, diff --git a/skills/using-context7/SKILL.md b/skills/using-context7/SKILL.md index 1f68fc0..280c2c5 100644 --- a/skills/using-context7/SKILL.md +++ b/skills/using-context7/SKILL.md @@ -1,5 +1,6 @@ --- name: using-context7 +version: 1.0.0 description: Use when answering questions about a specific library, framework, SDK, API, or CLI tool — including setup/install, config, API syntax, version-specific behavior, migration between versions, or library-specific errors. Training data is often stale; context7 returns current docs. Skip for general programming concepts, refactoring, business-logic debugging, or when the codebase already answers the question. --- diff --git a/skills/using-markitdown/SKILL.md b/skills/using-markitdown/SKILL.md index 20bcf77..1febec3 100644 --- a/skills/using-markitdown/SKILL.md +++ b/skills/using-markitdown/SKILL.md @@ -1,5 +1,6 @@ --- name: using-markitdown +version: 1.0.0 description: Use when capturing external content into a markdown-based knowledge base, wiki `raw/` directory, or any pipeline that must preserve the source's full text — for web pages, PDFs, DOCX/PPTX/XLSX, EPUB, CSV/JSON/XML, ZIP archives, images (with OCR/EXIF), audio (with transcription), or YouTube URLs. Also use when WebFetch returned an LLM-summarized version but the raw content is what's needed. --- diff --git a/skills/wiki-maintainer/SKILL.md b/skills/wiki-maintainer/SKILL.md index 26baefa..cc1f550 100644 --- a/skills/wiki-maintainer/SKILL.md +++ b/skills/wiki-maintainer/SKILL.md @@ -1,5 +1,6 @@ --- name: wiki-maintainer +version: 1.0.0 description: Use when a repo has a `.wiki/` directory following Karpathy's LLM Wiki pattern and the user asks to ingest a document, answer from the wiki, lint/health-check it, or says "заингесть", "обнови вики", "проверь вики", "запроси вики", "query the wiki". Also use when modifying any file under `.wiki/` — the workflow and formats below are mandatory, and project-specific conventions live in `.wiki/CLAUDE.md`. ---