Verified the user's `Remove-Item -Recurse -Force ~/.claude/skills/...`
ran cleanly:
- 16 skills in ~/.claude/skills/, no duplicates
- Old `wiki-maintainer` and `task-status-wiki` gone
- New `using-wiki`, `using-tasks`, `setup-wiki`, `setup-tasks` present
- context7 plugin confirmed live (mcp__plugin_context7_context7__*
tools showed up after restart, legacy mcp__context7__* gone)
Removed the ⚪ block from .tasks/STATUS.md; logged in .wiki/log.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Apply setup-tasks pattern to this repo's own .tasks/. Old flat layout
(## Done / ## Backlog sections, no emoji, no per-task files) replaced
with the canonical board:
- 7 ⚪ Ready blocks for live backlog items, each with the canonical
fields (slug, status, where-stopped, next-action, branch)
- Historical Done entries dropped — git log is the history of what
we've done (looking at .tasks/STATUS.md from bd8c378 backwards
shows the same content, just less compactly)
- No per-task files at this point — none of the items are active or
paused; using-tasks creates them on demand when a task starts
Backup written to .tasks/STATUS.md.bak-20260428-132845 (local only —
.gitignore now ignores **/*.bak-* since they're redundant with git
history).
Two backlog items that were marked done in the old format are gone:
both refer to commits already in this branch's history (4382fd3,
bd8c378). The cleanup-stale-skill-installs item is preserved as a
⚪ block for the user.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Mirror the wiki split. Rename `task-status-wiki` → `using-tasks` (preserves
file history via `git mv`). Strip the "Initialization" section out — that
content moves to the new `setup-tasks` skill, which owns greenfield
creation and migration.
`setup-tasks` has 6 phases (sanity → discovery → plan + confirm → backup →
greenfield/migrate → verify → report) and two modes:
- greenfield: write `.tasks/STATUS.md` with the canonical board template
(emoji legend in a comment block; no per-task files at bootstrap — they
get created on demand by using-tasks when actual tasks are added)
- migrate: detect old flat STATUS.md (no emoji, plain `## Done`/`## In
Progress` sections), back it up, then walk the user *interactively*
through each task to extract slug / status / branch / where-stopped /
next-action. Never auto-parses the old format — too varied, real work
at stake.
`using-tasks` Prerequisites section delegates to `setup-tasks` when the
board is missing or non-canonical (no emoji, no per-task files).
`project-bootstrap` Step 4 now delegates to `setup-tasks`.
The user's manual follow-up after this commit:
rm -rf ~/.claude/skills/{wiki-maintainer,task-status-wiki}/
to clean up the stale installs of the old names. (install.sh creates the
new ones but doesn't remove the old.)
This completes the three-commit refactor (a/b/c) tracked in
.tasks/STATUS.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Rename `wiki-maintainer` to `using-wiki` (rename via git mv preserves
file history). Strip greenfield/bootstrap content out of it; add a
Prerequisites section that delegates to the new `setup-wiki` skill when
`.wiki/` is missing or non-canonical.
New `setup-wiki` skill: 6-phase procedure (sanity → discovery → plan +
confirm → backup → create/migrate → verify → report). Two modes —
greenfield (no `.wiki/`) and migrate (existing non-canon, e.g. SUMMARY.md
+ source/). Confirmation gate before any write. Templates for each canon
file (`CLAUDE.md` schema, `index.md`, `log.md`, `overview.md`,
`raw/README.md`) baked in.
`project-bootstrap` Step 3 now delegates to `setup-wiki` instead of
holding inline templates that drift from canon.
After this commit, `~/.claude/skills/wiki-maintainer/` still exists as a
stale install — the user will rm it manually after commit (c) lands the
tasks split.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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) <noreply@anthropic.com>
- .wiki/concepts/skill-vs-plugin.md: when a bare SKILL.md suffices vs when
a plugin is required (slash commands, hooks, sub-agents, MCP via
marketplace). Concrete breakdown of `superpowers` showing why each of
its non-skill artifacts needs the plugin format.
- .wiki/index.md, log.md: linked / logged.
Backlog: project-bootstrap Step 4 has the same defect as the wiki step
(now fixed in 1cae0a2) — it creates a single flat STATUS.md and never
mentions the per-task files that task-status-wiki actually expects. Added
to .tasks/STATUS.md backlog for a conscious follow-up.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
User confirmed: invoking using-context7 in a session that needed setup
correctly delegated to setup-context7 via the Prerequisites pointer, and
the setup flow ran end-to-end. Pattern validated.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Split context7 concerns into two skills:
- using-context7 (policy, every-time): when to call, how to query well
- setup-context7 (infrastructure, one-time): install plugin, inject API
key, clean manual MCP entries, with confirmation gates
setup-context7 reuses an existing CONTEXT7_API_KEY by searching, in order:
~/.claude/settings.json → ~/.claude.json (top-level + project-scoped) →
~/.claude/settings.local.json → env. Asks the user only if nothing found.
Cross-platform (paths identical on Win/Linux/macOS; only JSON validator
differs). Phase-2 confirmation gate before any write; per-edit JSON
validation; rollback procedure documented.
using-context7 gets a small Prerequisites section pointing at
setup-context7 when MCP tools are missing.
Bonus fix: scripts/build.sh PS multi-arg bug. Comma-joined -Names didn't
split into [string[]] when build.ps1 was invoked via -File. Now the bash
side loops one PS invocation per skill.
Wiki: extended .wiki/concepts/context7-setup.md with the design rationale
(why split policy from setup) — template for future "X plugin + how to
use X" pairs. index.md and log.md updated.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Context: user previously had context7 MCP server registered manually in
three places (~/.claude/settings.json + two in ~/.claude.json), with the
CONTEXT7_API_KEY in HTTP-header form. Replaced with the official
context7@claude-plugins-official plugin.
What changed (outside the repo):
- ~/.claude/plugins/cache/.../context7/unknown/.mcp.json — added
"--api-key" CLI flag to args (Upstash docs recommend this for stdio).
- ~/.claude/settings.json — removed top-level mcpServers.context7.
- ~/.claude.json — removed top-level mcpServers.context7 and a legacy
project-scoped entry under projects[snolla-admin-ui].
Backups saved with suffix .bak-20260428-114532.
What changed in the repo (this commit):
- .wiki/concepts/context7-setup.md — new page documenting where the key
lives, the /plugin update gotcha, and the rollback path.
- .wiki/index.md, log.md — linked / logged.
- .tasks/STATUS.md — task moved to Done.
Plugin takes effect after Claude Code restart; current session still uses
the legacy HTTP transport (verified via smoke test on resolve-library-id).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bootstrap was creating .wiki/SUMMARY.md + WORKFLOW.md + source/ — none of
which match Karpathy's LLM Wiki pattern or what wiki-maintainer reads first.
The skill had to bend around an invented layout (no schema file, wrong
catalog name, missing log/overview/entities/concepts/packages).
Rewrote Step 3 to create the canonical layout verbatim:
.wiki/CLAUDE.md schema (project-specific conventions)
.wiki/index.md catalog
.wiki/log.md append-only op log
.wiki/overview.md project overview
.wiki/raw/README.md immutability note
.wiki/{entities,concepts,packages,sources}/.gitkeep
Pinned the gist URL inside the schema:
https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f
Bumped dist/project-bootstrap.skill, recorded the why in
.wiki/source/wiki-realignment.md, and queued migration of *this* repo's own
.wiki/ (still on the old layout) as a backlog task — to be done deliberately.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pin every newly-bootstrapped project to Windows / PowerShell out of the box
by adding a fifth trigger line to the CLAUDE.md template. The line activates
the active-platform skill, which then governs all command/example output.
- skills/project-bootstrap/assets/CLAUDE.md.template: append `we're on Windows`
- skills/project-bootstrap/SKILL.md: sync the embedded preview in Step 5 and
document the Linux/macOS substitution
- CLAUDE.md (this repo): backfill the line — was created from old template
- dist/project-bootstrap.skill: rebuilt
- .wiki/source/active-platform-decision.md: append "Wired into project-bootstrap"
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- skills/active-platform/SKILL.md: default = Windows/PowerShell; trigger
phrases in RU+EN switch the active platform for the session; per-platform
conventions (chaining, paths, env vars, install scripts) documented
- dist/active-platform.skill: built archive
- .wiki/source/active-platform-decision.md: rationale (skill chosen over
global CLAUDE.md / project memory; user wanted a discoverable, iterable
artifact)
- scripts/build.sh: fix PS arg-passing — single-quotes were leaking into
-Names value, so multi-arg builds on Windows were rejected with
"not found in skills/"
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>