refactor(skills): dedup compress -> caveman-compress [v1.0.0]
skills/compress/ was a byte-identical dupe of skills/caveman-compress/ (SHA256 match across all 7 scripts/ files; SKILL.md diff was name: + Process step 2 only; descriptions textually identical = arbitrary harness tie-break + double-counted listing budget). Kept caveman-compress canonical: it carries README.md (benchmarks + caveman-toolkit branding) and SECURITY.md (Snyk false-positive writeup), and matches the caveman-* prefix invariant. Ported the better Process-step wording from compress (`cd <directory_containing_this_SKILL.md>`) into caveman-compress; the prior `cd caveman-compress` form assumed cwd was the parent dir and broke when invoked from ~/.claude/skills/caveman-compress/. Added version: 1.0.0 to caveman-compress frontmatter (first versioned release; aligns with skill-versioning concept). Removed: skills/compress/, dist/compress.skill, ~/.claude/skills/compress/ (manual prune; install.sh has no prune step yet -- future [install-ps1] task should add --prune). Slash-command impact: /compress gone; /caveman-compress and /caveman:compress (toolkit-canonical) remain. Wiki: .wiki/concepts/compress-dedup.md (rationale + rejected alternatives), index.md + log.md updated. Tasks: [compress-dedup] flipped active -> done in same commit (per-task file .tasks/compress-dedup.md created with full decisions log). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
# Task Board
|
||||
_Updated: 2026-05-05_
|
||||
_Updated: 2026-05-05 (compress-dedup done)_
|
||||
|
||||
<!--
|
||||
Canonical layout. One block per task. Per-task deep context lives in
|
||||
@@ -38,11 +38,11 @@ _Updated: 2026-05-05_
|
||||
|
||||
---
|
||||
|
||||
## ⚪ [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)
|
||||
## 🟢 [compress-dedup] — resolve compress vs caveman-compress duplication
|
||||
**Status:** done
|
||||
**Where I stopped:** `skills/compress/` deleted as a byte-identical dupe of `skills/caveman-compress/` (SHA256 match across all 7 scripts/ files; SKILL.md diff was `name:` + Process step 2 only; README + SECURITY only in caveman-compress). Ported the better Process-step wording from compress (`cd <directory_containing_this_SKILL.md>` instead of brittle `cd caveman-compress`) into `skills/caveman-compress/SKILL.md`. Added `version: 1.0.0` to caveman-compress frontmatter (first versioned release; aligns with skill-versioning concept). Removed: `skills/compress/`, `dist/compress.skill`, `~/.claude/skills/compress/` (manual prune — install.sh has no prune step). Rebuilt `dist/caveman-compress.skill` + reinstalled to `~/.claude/skills/caveman-compress/` (verified `version: 1.0.0` + new Process step on disk). Harness skill listing confirms `compress` is gone, only `caveman-compress` remains. `.wiki/concepts/compress-dedup.md` written (rationale + rejected alternatives: alias-stub has no harness mechanism, "keep both" wastes listing budget, "delete caveman-compress" loses README + SECURITY); `.wiki/index.md` + `.wiki/log.md` updated.
|
||||
**Next action:** (none — kept until merged)
|
||||
**Branch:** master
|
||||
|
||||
---
|
||||
|
||||
|
||||
38
.tasks/compress-dedup.md
Normal file
38
.tasks/compress-dedup.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# compress-dedup
|
||||
|
||||
## Goal
|
||||
Resolve the duplication between `skills/compress/` and `skills/caveman-compress/`. Both ship byte-identical `scripts/` (7 files: `__init__.py`, `__main__.py`, `benchmark.py`, `cli.py`, `compress.py`, `detect.py`, `validate.py`) and near-identical `SKILL.md` (only `name:` field and Process step 2 differ). Both register independently with the harness with identical descriptions — listing-token waste and arbitrary tie-break on activation. Pick canonical = `caveman-compress` (richer: README + SECURITY + caveman-toolkit branding); port the better Process-step wording from `compress` (generic `cd <directory_containing_this_SKILL.md>` vs brittle `cd caveman-compress`); delete `skills/compress/` entirely. Add `version: 1.0.0` frontmatter to caveman-compress (project-discipline Rule 3 alignment). Skill listing collapses from two redundant entries to one rich one. Install path `~/.claude/skills/compress/` is removed.
|
||||
|
||||
## Key files
|
||||
- `skills/compress/` — entire folder deleted
|
||||
- `skills/caveman-compress/SKILL.md` — port Process step from compress; add `version: 1.0.0`
|
||||
- `skills/caveman-compress/README.md` — left as-is (already canonical, branding intact)
|
||||
- `skills/caveman-compress/SECURITY.md` — left as-is
|
||||
- `dist/compress.skill` — deleted (rebuild won't recreate; source gone)
|
||||
- `dist/caveman-compress.skill` — rebuilt after SKILL.md edit
|
||||
- `~/.claude/skills/compress/` — removed manually (install.sh has no prune step)
|
||||
- `~/.claude/skills/caveman-compress/` — reinstalled
|
||||
- `.wiki/concepts/compress-dedup.md` — design rationale (why caveman-compress canonical, why no alias mechanism, install-path impact)
|
||||
- `.wiki/index.md` — add concept entry
|
||||
- `.wiki/log.md` — append decision line
|
||||
- `.tasks/STATUS.md` — flip compress-dedup ⚪ → 🔴 → 🟢
|
||||
|
||||
## Decisions log
|
||||
- 2026-05-05: scripts/ byte-identical (SHA256 match across all 7 files). SKILL.md diff = `name:` field + Process step 2 only. Description text identical between the two. README + SECURITY only in caveman-compress. Conclusion: same skill, two registrations.
|
||||
- 2026-05-05: chose `caveman-compress` as canonical over `compress`. Rationale: (a) richer docs (README with benchmarks table, branding, "Part of Caveman" toolkit linkage; SECURITY.md with Snyk false-positive writeup), (b) name reflects actual upstream origin (JuliusBrussee/caveman toolkit), (c) caveman cluster (caveman, caveman-commit, caveman-review, caveman-help, caveman-compress) has consistent prefix.
|
||||
- 2026-05-05: rejected "alias-stub" approach (keep `compress` as a tiny SKILL.md pointing at caveman-compress). Harness has no alias mechanism — every SKILL.md fully registers; alias-stub still consumes a listing slot and a description budget. No win.
|
||||
- 2026-05-05: rejected "keep both" approach. Identical descriptions ⇒ harness arbitrarily tie-breaks; both consume listing tokens; user has no way to predict which fires. Pure waste.
|
||||
- 2026-05-05: ported Process step 2 wording from `compress` SKILL.md into `caveman-compress` SKILL.md. The compress version (`cd <directory_containing_this_SKILL.md> && python3 -m scripts ...`) is robust regardless of cwd; the caveman-compress version (`cd caveman-compress && ...`) implicitly assumes cwd is the parent directory. Net: caveman-compress gets the better text + keeps everything else.
|
||||
- 2026-05-05: added `version: 1.0.0` frontmatter to caveman-compress SKILL.md. First versioned release of this skill. Aligns with the rest of the infra-skill cluster (skill-versioning concept).
|
||||
- 2026-05-05: install.sh has no prune step — removing `skills/compress/` does NOT remove `~/.claude/skills/compress/`. Manual `rm -rf ~/.claude/skills/compress/` required. Filed mental note for `[install-ps1]` task: future installer should accept a `--prune` flag, or `setup-tasks`-style canon-list, to remove stale installs.
|
||||
- 2026-05-05: slash-command impact — `/compress` slash command stops working after deletion; `/caveman-compress` and `/caveman:compress` (the canonical caveman-toolkit form) remain. Confirmed with user that `/compress` was effectively never used; no migration needed.
|
||||
|
||||
## Open questions
|
||||
- [ ] Eventually wire up an `install.sh --prune` flag that drops `~/.claude/skills/<name>/` for any name not in `skills/<name>/`. Tracked indirectly via `[install-ps1]` ⚪ task — that task should at minimum match install.sh, but adding prune is the right time to do it.
|
||||
|
||||
## Completed steps
|
||||
- (filled in during implementation)
|
||||
|
||||
## Notes
|
||||
- Origin: both skills came from the JuliusBrussee/caveman upstream toolkit (caveman-compress carries the "Part of Caveman" branding); `skills/compress/` looks like a stripped-down copy that lost README + SECURITY + branding. Never reconciled until this task.
|
||||
- Frontmatter description budget reminder (~900 chars): caveman-compress description is well under, no risk on this edit.
|
||||
Reference in New Issue
Block a user