diff --git a/.github/workflows/evals.yml b/.github/workflows/evals.yml index f2c5cb232..d10cf69a1 100644 --- a/.github/workflows/evals.yml +++ b/.github/workflows/evals.yml @@ -189,11 +189,23 @@ jobs: SKILLS_DIR="$HOME/.claude/skills" REPO="$GITHUB_WORKSPACE" # /__w/gstack/gstack mkdir -p "$SKILLS_DIR" + # The gstack root stays a symlink — the preamble's runtime bash resolves + # ~/.claude/skills/gstack/bin/* and ~/.claude/skills/gstack//sections/* + # through it, and bash follows cross-mount symlinks fine. ln -snf "$REPO" "$SKILLS_DIR/gstack" + # But the per-skill SKILL.md the TUI DISCOVERS must be a REAL file on the + # same mount as $HOME. claude 2.1.187's interactive-TUI skill scanner does + # not follow the /github/home -> /__w cross-mount symlink (proven: `claude + # -p` discovered the skill — READY — while the TUI rejected /office-hours + # as "Unknown command"; a local macOS repro with the identical symlinked + # registry recognized it, isolating the failure to the container's + # cross-mount symlink). Copy SKILL.md + sections as real files so the TUI + # reads them directly. for s in office-hours plan-ceo-review; do + rm -rf "$SKILLS_DIR/$s" mkdir -p "$SKILLS_DIR/$s" - ln -snf "$REPO/$s/SKILL.md" "$SKILLS_DIR/$s/SKILL.md" - ln -snf "$REPO/$s/sections" "$SKILLS_DIR/$s/sections" + cp "$REPO/$s/SKILL.md" "$SKILLS_DIR/$s/SKILL.md" + cp -R "$REPO/$s/sections" "$SKILLS_DIR/$s/sections" done echo "--- registry under $SKILLS_DIR ---" ls -la "$SKILLS_DIR/gstack" "$SKILLS_DIR/office-hours" "$SKILLS_DIR/plan-ceo-review"