chore(skills): drop find-skills — unused, and its update step began timing out

RC fix (soak day 1): `make update` step 7.5 failed on a 300s clone timeout
of alchaincyf/find-skills. The skill (search the skills.sh registry from
Claude) was never used; the discovery case stays reachable manually via
`npx -y skills find <query>`. Removed from install-plugins.sh (install list
+ summary + comment), update-all.sh (refresh list), link.sh
(NPX_EXTERNAL_SKILLS), lib/toggle-external.sh (MANAGED_TOOLS + case arms),
plugin-advisor.md, .gitignore; local skills/find-skills symlink deleted.
Memory-registry and test-fixture mentions kept — append-only history.
toggle-external `list` verified post-removal; suites 8/8.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpphkdTosUzokBDNG7PToS
This commit is contained in:
Bastien Chanot
2026-07-08 17:11:11 +02:00
co-authored by Claude Opus 4.8
parent 28026d8403
commit 5a1fff5030
7 changed files with 13 additions and 15 deletions
-1
View File
@@ -68,7 +68,6 @@ skills/impeccable
# External skills installed via `npx skills add` — auto-created by link.sh # External skills installed via `npx skills add` — auto-created by link.sh
skills/darwin-skill skills/darwin-skill
skills/find-skills
# Context7 docs-lookup skill — installed by `ctx7 setup --claude --cli` # Context7 docs-lookup skill — installed by `ctx7 setup --claude --cli`
# (install-plugins.sh Step 6, when absent) into ~/.claude/skills (a symlink to # (install-plugins.sh Step 6, when absent) into ~/.claude/skills (a symlink to
+3
View File
@@ -25,6 +25,9 @@ Format follows [Keep a Changelog](https://keepachangelog.com/).
- `gitflow_finish` ignored its `<type> <name>` arguments and always merged the checked-out branch — naming a different branch silently merged the wrong one. The arguments are now an optional safety assertion: if given and not equal to the current branch, `finish` refuses with a clear error instead of merging. No-argument calls (the only real caller) are unchanged. - `gitflow_finish` ignored its `<type> <name>` arguments and always merged the checked-out branch — naming a different branch silently merged the wrong one. The arguments are now an optional safety assertion: if given and not equal to the current branch, `finish` refuses with a clear error instead of merging. No-argument calls (the only real caller) are unchanged.
- `doctor.sh` false-warnings removed (a check that cries wolf is one you learn to ignore): `cargo` absence no longer claims "RTK unavailable" (RTK ships as a prebuilt binary); `check_symlink` no longer flags files reached through directory-level symlinks (e.g. `hooks/session-start.sh`); the GStack check counts the per-skill symlinks instead of a `skills/gstack` link that `link.sh` deliberately removes; the token-budget estimate is measured against the ~200k context window instead of a mis-framed "~11k session budget" that produced a false "92% CRITICAL". - `doctor.sh` false-warnings removed (a check that cries wolf is one you learn to ignore): `cargo` absence no longer claims "RTK unavailable" (RTK ships as a prebuilt binary); `check_symlink` no longer flags files reached through directory-level symlinks (e.g. `hooks/session-start.sh`); the GStack check counts the per-skill symlinks instead of a `skills/gstack` link that `link.sh` deliberately removes; the token-budget estimate is measured against the ~200k context window instead of a mis-framed "~11k session budget" that produced a false "92% CRITICAL".
### Removed
- **find-skills** (alchaincyf) — skill-discovery helper dropped from the toolchain (install/update/link/toggle/advisor). Never used, and its `make update` refresh step had started failing on clone timeouts. The discovery use case stays reachable manually: `npx -y skills find <query>`.
## [4.0.0] — 2026-06-30 ## [4.0.0] — 2026-06-30
### Added ### Added
+3 -3
View File
@@ -19,7 +19,7 @@ Detect active plugins and project signals. Recommend enable/disable. Apply compa
claude plugin list 2>/dev/null || echo "plugin-list-unavailable" claude plugin list 2>/dev/null || echo "plugin-list-unavailable"
# External (non-marketplace) tools status — gstack, emil-design-eng, # External (non-marketplace) tools status — gstack, emil-design-eng,
# darwin-skill, find-skills. Managed by lib/toggle-external.sh since # darwin-skill. Managed by lib/toggle-external.sh since
# `claude plugin enable|disable` does not apply to them. # `claude plugin enable|disable` does not apply to them.
bash "$HOME/.claude/lib/toggle-external.sh" list 2>/dev/null || echo "toggle-external-unavailable" bash "$HOME/.claude/lib/toggle-external.sh" list 2>/dev/null || echo "toggle-external-unavailable"
@@ -353,8 +353,8 @@ RULE: IF `complex-arch` signal (multiple services, event bus, distributed system
## TOGGLING EXTERNAL TOOLS ## TOGGLING EXTERNAL TOOLS
Marketplace plugins toggle via `claude plugin enable|disable <name>@<marketplace>`. Marketplace plugins toggle via `claude plugin enable|disable <name>@<marketplace>`.
Non-marketplace tools (gstack per-skill symlinks, emil-design-eng, darwin-skill, Non-marketplace tools (gstack per-skill symlinks, emil-design-eng, darwin-skill)
find-skills) toggle via `bash $HOME/.claude/lib/toggle-external.sh enable|disable <tool>`. toggle via `bash $HOME/.claude/lib/toggle-external.sh enable|disable <tool>`.
When a recommendation flips the state of one of those tools, emit the exact When a recommendation flips the state of one of those tools, emit the exact
command — never write files directly. command — never write files directly.
+1 -3
View File
@@ -832,7 +832,6 @@ echo ""
NPX_SKILLS=( NPX_SKILLS=(
"alchaincyf/darwin-skill" "alchaincyf/darwin-skill"
"alchaincyf/find-skills"
) )
# `skills add` resolves its target (.agents/skills/, skills-lock.json) RELATIVE # `skills add` resolves its target (.agents/skills/, skills-lock.json) RELATIVE
@@ -985,7 +984,7 @@ echo ""
# STEP 10 — REFRESH SYMLINKS (final, so this script is self-sufficient) # STEP 10 — REFRESH SYMLINKS (final, so this script is self-sufficient)
# ============================================================ # ============================================================
# Steps 2/8/8.5 INSTALL skills (gstack submodule, emil/frontend/motion, npx # Steps 2/8/8.5 INSTALL skills (gstack submodule, emil/frontend/motion, npx
# darwin/find-skills) that link.sh must symlink into ~/.claude/skills/. Since # darwin-skill) that link.sh must symlink into ~/.claude/skills/. Since
# link.sh runs BEFORE this script in install.sh, those symlinks would be missing # link.sh runs BEFORE this script in install.sh, those symlinks would be missing
# on a fresh run until link.sh is run again by hand. Re-run it here so # on a fresh run until link.sh is run again by hand. Re-run it here so
# `make plugin` (and `make install`) finish complete — nothing left to do. # `make plugin` (and `make install`) finish complete — nothing left to do.
@@ -1023,7 +1022,6 @@ echo " 🔄 frontend-design — distinctive frontend interfaces, anti-AI-
echo " 🔄 impeccable — /impeccable design verbs + 45-rule deterministic detector (npx impeccable detect)" echo " 🔄 impeccable — /impeccable design verbs + 45-rule deterministic detector (npx impeccable detect)"
echo " 🔄 design-motion-principles — motion/animation design, 3-designer lens (kylezantos)" echo " 🔄 design-motion-principles — motion/animation design, 3-designer lens (kylezantos)"
echo " 🔄 darwin-skill — autonomous skill optimizer (npx skills, ~/.agents/skills/)" echo " 🔄 darwin-skill — autonomous skill optimizer (npx skills, ~/.agents/skills/)"
echo " 🔄 find-skills — skill discovery helper (npx skills, ~/.agents/skills/)"
echo " 🔄 magic MCP — 21st-dev UI generation MCP (toggle: lib/toggle-external.sh enable magic)" echo " 🔄 magic MCP — 21st-dev UI generation MCP (toggle: lib/toggle-external.sh enable magic)"
echo "" echo ""
echo " All plugins installed at: user scope (~/.claude/plugins/)" echo " All plugins installed at: user scope (~/.claude/plugins/)"
+5 -6
View File
@@ -20,7 +20,6 @@
# gstack — per-skill symlinks populated by gstack's own setup # gstack — per-skill symlinks populated by gstack's own setup
# emil-design-eng — single symlink → skills-external/emil-design-eng # emil-design-eng — single symlink → skills-external/emil-design-eng
# darwin-skill — single symlink → ~/.agents/skills/darwin-skill # darwin-skill — single symlink → ~/.agents/skills/darwin-skill
# find-skills — single symlink → ~/.agents/skills/find-skills
# magic — 21st-dev Magic MCP server (API key in .env) # magic — 21st-dev Magic MCP server (API key in .env)
# #
# For fine-grained activation (only design skills, only qa skills, only # For fine-grained activation (only design skills, only qa skills, only
@@ -41,7 +40,7 @@ warn() { echo -e "${YELLOW}⚠${NC} $1"; }
err() { echo -e "${RED}✗${NC} $1"; } err() { echo -e "${RED}✗${NC} $1"; }
# All non-plugin tools this script can toggle. # All non-plugin tools this script can toggle.
MANAGED_TOOLS=(gstack emil-design-eng darwin-skill find-skills magic) MANAGED_TOOLS=(gstack emil-design-eng darwin-skill magic)
# Load MAGIC_API_KEY (and any other secrets) from $REPO/.env if present. # Load MAGIC_API_KEY (and any other secrets) from $REPO/.env if present.
# Called only by the magic branch — other tools don't need env vars. # Called only by the magic branch — other tools don't need env vars.
@@ -81,7 +80,7 @@ status_tool() {
[ -d "$REPO/skills-external/emil-design-eng" ] || { echo "missing"; return; } [ -d "$REPO/skills-external/emil-design-eng" ] || { echo "missing"; return; }
[ -e "$SKILLS_DIR/emil-design-eng" ] && echo "enabled" || echo "disabled" [ -e "$SKILLS_DIR/emil-design-eng" ] && echo "enabled" || echo "disabled"
;; ;;
darwin-skill|find-skills) darwin-skill)
[ -d "$HOME/.agents/skills/$tool" ] || { echo "missing"; return; } [ -d "$HOME/.agents/skills/$tool" ] || { echo "missing"; return; }
[ -e "$SKILLS_DIR/$tool" ] && echo "enabled" || echo "disabled" [ -e "$SKILLS_DIR/$tool" ] && echo "enabled" || echo "disabled"
;; ;;
@@ -116,7 +115,7 @@ disable_tool() {
done < <(gstack_skills) done < <(gstack_skills)
ok "gstack disabled ($moved symlinks moved)" ok "gstack disabled ($moved symlinks moved)"
;; ;;
emil-design-eng|darwin-skill|find-skills) emil-design-eng|darwin-skill)
if [ -e "$SKILLS_DIR/$tool" ]; then if [ -e "$SKILLS_DIR/$tool" ]; then
rm -rf "${DISABLED_DIR:?}/${tool:?}" rm -rf "${DISABLED_DIR:?}/${tool:?}"
mv "$SKILLS_DIR/$tool" "$DISABLED_DIR/$tool" mv "$SKILLS_DIR/$tool" "$DISABLED_DIR/$tool"
@@ -158,11 +157,11 @@ enable_tool() {
ok "gstack enabled ($moved symlinks restored)" ok "gstack enabled ($moved symlinks restored)"
fi fi
;; ;;
emil-design-eng|darwin-skill|find-skills) emil-design-eng|darwin-skill)
local src local src
case "$tool" in case "$tool" in
emil-design-eng) src="$REPO/skills-external/$tool" ;; emil-design-eng) src="$REPO/skills-external/$tool" ;;
darwin-skill|find-skills) src="$HOME/.agents/skills/$tool" ;; darwin-skill) src="$HOME/.agents/skills/$tool" ;;
esac esac
if [ -e "$DISABLED_DIR/$tool" ]; then if [ -e "$DISABLED_DIR/$tool" ]; then
rm -rf "${SKILLS_DIR:?}/${tool:?}" rm -rf "${SKILLS_DIR:?}/${tool:?}"
+1 -1
View File
@@ -90,7 +90,7 @@ done
# absolute paths so the link stays valid regardless of where the # absolute paths so the link stays valid regardless of where the
# repo is cloned (relative ../../ paths broke on repos deeper than # repo is cloned (relative ../../ paths broke on repos deeper than
# one level below $HOME). # one level below $HOME).
NPX_EXTERNAL_SKILLS=(darwin-skill find-skills) NPX_EXTERNAL_SKILLS=(darwin-skill)
for _ext in "${NPX_EXTERNAL_SKILLS[@]}"; do for _ext in "${NPX_EXTERNAL_SKILLS[@]}"; do
_target="$HOME/.agents/skills/$_ext" _target="$HOME/.agents/skills/$_ext"
_link="$REPO/skills/$_ext" _link="$REPO/skills/$_ext"
-1
View File
@@ -388,7 +388,6 @@ echo "── Updating external skills (npx skills)..."
if command -v npx &>/dev/null; then if command -v npx &>/dev/null; then
NPX_SKILLS=( NPX_SKILLS=(
"alchaincyf/darwin-skill" "alchaincyf/darwin-skill"
"alchaincyf/find-skills"
) )
for _src in "${NPX_SKILLS[@]}"; do for _src in "${NPX_SKILLS[@]}"; do
_name="${_src##*/}" _name="${_src##*/}"