The repo's task install (and targets like task install:claude:global) break the per-skill symlink wiring instead of establishing it. Observed 2026-07-04:
After task install: claude:0/40 crush:0/40 vibe:0/40 — every per-skill symlink gone.
A second task install:claude:global gave 22/40 (non-deterministic).
The identical link loop as plain bash, and install.sh, wire 40/40 every time (all four harnesses).
So the Taskfile installer is unreliable/destructive; install.sh is correct.
Likely cause
The multi-line - | install blocks mix Go-template {{.TASKFILE_DIR}}/{{.NON_SKILL_ENTRIES}} with shell $(...) and ${skill}. Suspects: task's default parallel execution of the install aggregate deps, or template/quoting of the regex. task list (single-line) works, so it's the multi-line-block handling, not TASKFILE_DIR resolution.
Repro
git clone https://git.d-ma.be/mathias/skills.git /tmp/skills && cd /tmp/skills
task install
for s in $(ls -1 | grep -Ev '^(Taskfile.yml|install.sh|README.md|SKILLS_INDEX.md)$'); do [ -L ~/.claude/skills/$s ] && echo x; done | wc -l # << 40
SKILLS_CHECKOUT_DIR="$PWD" bash install.sh # now 40/40
Fix options
Make task install delegate to install.sh (proven path) instead of reimplementing the loop — simplest, removes duplication.
If keeping the loops: disable parallel deps, audit template/quoting, add a post-condition assert (links == skills).
Workaround (already documented)
install.sh — curl -fsSL .../install.sh | bash, or SKILLS_CHECKOUT_DIR="$PWD" bash install.sh. SKILLS_INDEX.md now points here.
Surfaced consolidating local-dev's embedded .skills/ into this repo (2026-07-04).
## Problem
The repo's `task install` (and targets like `task install:claude:global`) break the per-skill symlink wiring instead of establishing it. Observed 2026-07-04:
- After `task install`: `claude:0/40 crush:0/40 vibe:0/40` — every per-skill symlink gone.
- A second `task install:claude:global` gave `22/40` (non-deterministic).
- The identical link loop as plain bash, and `install.sh`, wire `40/40` every time (all four harnesses).
So the Taskfile installer is unreliable/destructive; `install.sh` is correct.
## Likely cause
The multi-line `- |` install blocks mix Go-template `{{.TASKFILE_DIR}}`/`{{.NON_SKILL_ENTRIES}}` with shell `$(...)` and `${skill}`. Suspects: task's default parallel execution of the `install` aggregate deps, or template/quoting of the regex. `task list` (single-line) works, so it's the multi-line-block handling, not TASKFILE_DIR resolution.
## Repro
git clone https://git.d-ma.be/mathias/skills.git /tmp/skills && cd /tmp/skills
task install
for s in $(ls -1 | grep -Ev '^(Taskfile.yml|install.sh|README.md|SKILLS_INDEX.md)$'); do [ -L ~/.claude/skills/$s ] && echo x; done | wc -l # << 40
SKILLS_CHECKOUT_DIR="$PWD" bash install.sh # now 40/40
## Fix options
1. Make `task install` delegate to `install.sh` (proven path) instead of reimplementing the loop — simplest, removes duplication.
2. If keeping the loops: disable parallel deps, audit template/quoting, add a post-condition assert (links == skills).
## Workaround (already documented)
`install.sh` — `curl -fsSL .../install.sh | bash`, or `SKILLS_CHECKOUT_DIR="$PWD" bash install.sh`. SKILLS_INDEX.md now points here.
Surfaced consolidating local-dev's embedded `.skills/` into this repo (2026-07-04).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Problem
The repo's
task install(and targets liketask install:claude:global) break the per-skill symlink wiring instead of establishing it. Observed 2026-07-04:task install:claude:0/40 crush:0/40 vibe:0/40— every per-skill symlink gone.task install:claude:globalgave22/40(non-deterministic).install.sh, wire40/40every time (all four harnesses).So the Taskfile installer is unreliable/destructive;
install.shis correct.Likely cause
The multi-line
- |install blocks mix Go-template{{.TASKFILE_DIR}}/{{.NON_SKILL_ENTRIES}}with shell$(...)and${skill}. Suspects: task's default parallel execution of theinstallaggregate deps, or template/quoting of the regex.task list(single-line) works, so it's the multi-line-block handling, not TASKFILE_DIR resolution.Repro
Fix options
task installdelegate toinstall.sh(proven path) instead of reimplementing the loop — simplest, removes duplication.Workaround (already documented)
install.sh—curl -fsSL .../install.sh | bash, orSKILLS_CHECKOUT_DIR="$PWD" bash install.sh. SKILLS_INDEX.md now points here.Surfaced consolidating local-dev's embedded
.skills/into this repo (2026-07-04).