From a916abe5fb4715ee99665b2655133424f80751f5 Mon Sep 17 00:00:00 2001 From: vitya Date: Tue, 28 Apr 2026 13:29:36 +0300 Subject: [PATCH] refactor(tasks): migrate this repo's .tasks/ to canonical layout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- .gitignore | 3 ++ .tasks/STATUS.md | 137 ++++++++++++++++++----------------------------- .wiki/log.md | 1 + 3 files changed, 57 insertions(+), 84 deletions(-) diff --git a/.gitignore b/.gitignore index 1fe0f9c..f7571b4 100644 --- a/.gitignore +++ b/.gitignore @@ -66,3 +66,6 @@ coverage/ # Misc *.tmp .tmp/ + +# Migration backups (created by setup-* skills; redundant with git history) +**/*.bak-* diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index 3d46cc0..5dd144a 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -1,101 +1,70 @@ # Task Board _Updated: 2026-04-28_ -## Done + -#### (a) Versioning + manifest — `e1e5bd1` -- [x] `version: 1.0.0` added to all 6 infra skills' frontmatter -- [x] `project-bootstrap` Step 5.5 writes `.wiki/concepts/bootstrap-manifest.md` -- [x] `concepts/skill-versioning.md` documents the convention +## ⚪ [cleanup-stale-skill-installs] — remove old wiki-maintainer and task-status-wiki installs +**Status:** ready +**Where I stopped:** (not started) +**Next action:** `rm -rf ~/.claude/skills/wiki-maintainer ~/.claude/skills/task-status-wiki` then verify only `using-wiki` and `using-tasks` remain +**Branch:** (no branch — local cleanup) -#### (b) Split wiki — `36fe39e` -- [x] `wiki-maintainer` → `using-wiki` (rename via `git mv`) -- [x] New `setup-wiki` skill — 6 phases, two modes (greenfield / migrate), full canon templates -- [x] `using-wiki` Prerequisites delegates to `setup-wiki` -- [x] `project-bootstrap` Step 3 delegates +--- -#### (c) Split tasks — _this commit_ -- [x] `task-status-wiki` → `using-tasks` (rename via `git mv`) -- [x] New `setup-tasks` skill — 6 phases, two modes (greenfield / migrate); migration is interactive, never auto-parses old flat STATUS.md -- [x] `using-tasks` Prerequisites delegates to `setup-tasks` -- [x] `project-bootstrap` Step 4 delegates -- [x] Stale `dist/task-status-wiki.skill` removed +## ⚪ [compress-dedup] — resolve compress vs caveman-compress duplication +**Status:** ready +**Where I stopped:** (not started) — noticed during initial migration that both skills ship identical `scripts/` subtrees (`compress.py`, `cli.py`, `detect.py`, `validate.py`, `benchmark.py`) +**Next action:** `diff -r skills/compress skills/caveman-compress`; decide if one is canonical and the other should be removed (or aliased) +**Branch:** (not started) -### Manual follow-up for the user (one-time) -- [ ] `rm -rf ~/.claude/skills/{wiki-maintainer,task-status-wiki}/` — the old folders linger on disk after rename. The new `using-wiki` / `using-tasks` are already installed alongside; once you remove the old ones, `available_skills` will list only the new names. +--- -### Create `setup-context7` skill -- [x] Drafted `skills/setup-context7/SKILL.md` — 8 phases (discovery → plan → backup → install → inject → clean → smoke-test → restart) + rollback + cross-platform notes -- [x] API-key discovery in priority order: `settings.json` → `.claude.json` (top-level + project-scoped) → `settings.local.json` → env → ask -- [x] Phase 2 confirmation gate (no mutations without explicit "ok"); Phase 6 validates JSON after each edit -- [x] Documented `/plugin update` gotcha -- [x] Added Prerequisites section in `using-context7` pointing at `setup-context7` -- [x] Built + installed both skills (`setup-context7` already in `available_skills`) -- [x] Updated `.wiki/concepts/context7-setup.md` with "Now captured as a skill" section explaining the policy/setup split rationale -- [x] **Bonus fix:** `scripts/build.sh` PS multi-arg bug — comma-joined `-Names` wasn't splitting into `[string[]]` when called via `-File`. Now loops in bash, one PS invocation per skill. +## ⚪ [install-ps1] — PowerShell-native install.ps1 +**Status:** ready +**Where I stopped:** (not started) — `install.sh` already works in git-bash on Windows, so this is convenience for PS-only users +**Next action:** mirror `scripts/install.sh` logic in PowerShell (copy `skills//` → `~/.claude/skills//`, support `$env:CLAUDE_SKILLS_DIR` override) +**Branch:** (not started) -### Switch context7 from manual MCP config to official plugin -- [x] Backup `~/.claude.json` and `~/.claude/settings.json` (suffix `.bak-20260428-114532`) -- [x] User installed `context7@claude-plugins-official` -- [x] Located installed plugin: `~/.claude/plugins/cache/claude-plugins-official/context7/unknown/` -- [x] Injected `--api-key` flag into the plugin's `.mcp.json` (key sourced from `settings.json`, not echoed in chat) -- [x] Smoke-tested `mcp__context7__resolve-library-id` (returned 5 Nuxt entries — works in current session via legacy HTTP config; plugin takes over after Claude Code restart) -- [x] Removed three manual context7 entries (settings.json + 2 in `.claude.json`); JSON validity confirmed -- [x] Documented setup + plugin-update gotcha in `.wiki/concepts/context7-setup.md` -- [x] Wiki index + log + summary updated +--- -### Migrate this repo's `.wiki/` to canonical Karpathy layout -- [x] `git mv` `.wiki/source/*.md` → `.wiki/concepts/` (rename detection preserves history) -- [x] Add `type: concept` frontmatter to each migrated page -- [x] Create `.wiki/CLAUDE.md` (schema, with Karpathy gist URL pinned at top) -- [x] Create `.wiki/index.md` (replaces `SUMMARY.md`) -- [x] Create `.wiki/log.md` with backfilled entries for prior decisions -- [x] Create `.wiki/overview.md` (project intro page) -- [x] Create `.wiki/raw/README.md` (replaces `.gitkeep` placeholder) -- [x] Empty `.gitkeep` in `.wiki/entities/`, `packages/`, `sources/` -- [x] Delete `.wiki/SUMMARY.md`, `.wiki/source/`, `.wiki/raw/.gitkeep` +## ⚪ [archive-roundtrip-test] — smoke-test for .skill archive shape +**Status:** ready +**Where I stopped:** (not started) — caught the PowerShell-Compress-Archive backslash bug manually; a smoke-test would catch the next regression automatically +**Next action:** add a script that builds `dist/.skill`, unzips into a temp dir, and `diff -r` against `skills//`. Fail on any difference. Run from CI or pre-commit if we add one +**Branch:** (not started) -### project-bootstrap: align wiki init with Karpathy canon -- [x] Read Karpathy gist + `wiki-maintainer` SKILL.md — gap confirmed -- [x] Rewrite Step 3: create `index.md`, `log.md`, `overview.md`, `.wiki/CLAUDE.md` schema, `raw/README.md`, empty `entities/ concepts/ packages/ sources/` with `.gitkeep` -- [x] Drop the bogus `SUMMARY.md` + `WORKFLOW.md` + `source/` from the template -- [x] Pin Karpathy gist URL inside the schema file -- [x] Rebuild + reinstall `project-bootstrap.skill` -- [x] Document the realignment in `.wiki/source/wiki-realignment.md` +--- -### project-bootstrap: include `active-platform` trigger in CLAUDE.md template -- [x] Add `we're on Windows` line to `assets/CLAUDE.md.template` -- [x] Update embedded preview in `SKILL.md` Step 5 (with note about Linux/macOS substitution) -- [x] Backfill the line in this repo's own `CLAUDE.md` -- [x] Rebuild + reinstall `project-bootstrap.skill` +## ⚪ [active-platform-tuning] — tune active-platform triggers based on real usage +**Status:** ready +**Where I stopped:** (not started) — current triggers are best-guess; haven't observed real misfires/missed-fires yet +**Next action:** keep a tally of times the skill should have triggered but didn't (or vice versa); revise the description / trigger list after ~5 real signals. Also add WSL handling explicitly if it comes up +**Branch:** (not started) -### active-platform skill -- [x] Draft `skills/active-platform/SKILL.md` (RU+EN triggers, default=Windows/PowerShell, palette=Win/Linux/mac) -- [x] Fixed `build.sh` PS arg-passing bug (single-quotes were leaking into `-Names` value) -- [x] Build `dist/active-platform.skill` and install into `~/.claude/skills/` -- [x] Document decision in `.wiki/source/active-platform-decision.md` -- [x] Update `.wiki/SUMMARY.md` +--- -### bootstrap-skills-migration -- [x] Bootstrap repo (git, .wiki, .tasks, CLAUDE.md) -- [x] Brainstorm and document repo layout (`.wiki/source/repo-layout.md`) -- [x] Copy all 12 personal skills from `~/.claude/skills/` to `skills/` -- [x] Write `scripts/build.sh`, `scripts/build.ps1`, `scripts/install.sh` -- [x] Document ZIP/PowerShell gotcha (`.wiki/source/build-notes.md`) -- [x] Build initial `dist/*.skill` archives (forward-slash entry paths verified) -- [x] Update root README with usage -- [x] Smoke-test `install.sh` to a temp dir -- [x] Remove legacy `project-bootstrap.skill` from repo root (replaced by `dist/`) +## ⚪ [active-platform-eval] — run formal skill-creator eval loop on active-platform +**Status:** ready +**Where I stopped:** (not started) — depends on having ~5 real interactions logged for tuning context +**Next action:** invoke `skill-creator` to set up an eval set for `active-platform`; benchmark current vs revised description +**Branch:** (not started) +**Blocker:** waits on `active-platform-tuning` to gather signals first -## Backlog +--- -- Resolve `compress` vs `caveman-compress` duplication (look at both, decide if one should go). -- Consider a PowerShell-native `install.ps1` (current `install.sh` already works in git-bash, so low priority). -- Revisit grouping/manifest if skill count grows past ~30. -- Decide whether to write a smoke-test that round-trips `skills//` → `dist/.skill` → unpack → diff (would catch archive-shape regressions). -- Tune `active-platform` triggers based on real-world usage; add WSL handling if it comes up. -- Consider running formal `skill-creator` eval loop on `active-platform` once we have ~5 real interactions to learn from. -- **Migrate this repo's `.wiki/` to the canonical Karpathy layout** (it was bootstrapped with the old buggy template). Directory rename + file moves; needs a conscious commit, not a silent piggyback. _(done — `4382fd3`)_ -- **Fix `project-bootstrap` Step 4 to match `task-status-wiki` canon.** Same class of bug as the wiki fix: bootstrap creates a single flat `STATUS.md`, but `task-status-wiki` SKILL.md expects per-task files (`.tasks/.md`) plus `STATUS.md` as a board pointing at them with emoji-status convention (🔴 active / 🟡 paused / ⚪ ready / 🟢 done / 🔵 blocked). Two pieces of work: (a) update bootstrap Step 4 + asset, (b) migrate this repo's existing `.tasks/STATUS.md` to per-task files. +## ⚪ [skills-grouping-revisit] — revisit flat vs grouped skills/ layout if count grows past ~30 +**Status:** ready +**Where I stopped:** (not started) — current 14 skills fit fine in flat `skills/`; threshold for revisiting is ~30 +**Next action:** when triggered (skill count crosses threshold), evaluate variant B (grouped by family) vs variant C (flat + manifest) from the original brainstorm in `.wiki/concepts/repo-layout.md` +**Branch:** (not started) diff --git a/.wiki/log.md b/.wiki/log.md index 49746a1..a5203f3 100644 --- a/.wiki/log.md +++ b/.wiki/log.md @@ -25,3 +25,4 @@ Parseable: `grep "^## \[" .wiki/log.md | tail -20`. ## [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 ## [2026-04-28] refactor | wiki split — `wiki-maintainer` renamed to `using-wiki` (policy); new `setup-wiki` skill owns greenfield creation and canon migration; `project-bootstrap` Step 3 delegates ## [2026-04-28] refactor | tasks split — `task-status-wiki` renamed to `using-tasks` (policy); new `setup-tasks` skill owns greenfield + interactive migration (no auto-parsing of old flat STATUS.md); `project-bootstrap` Step 4 delegates +## [2026-04-28] refactor | this repo's `.tasks/` migrated to canonical layout — flat `## Done`/`## Backlog` replaced by emoji-status board (7 ⚪ Ready blocks); historical Done entries dropped (preserved in git log); `.bak` ignored via .gitignore