diff --git a/setup.sh b/setup.sh index 4749e3d..d2a3067 100755 --- a/setup.sh +++ b/setup.sh @@ -8,26 +8,21 @@ # bash /path/to/agentic-toolkit/setup.sh # # What this does: -# 1. Adds Matt Pocock's skills (mattpocock/skills) at the version Domna trusts. -# 2. Adds Domna's own skills (Hestia-Homes/agentic-toolkit). -# 3. Writes/updates skills-lock.json so the install is reproducible. +# 1. Drops the pinned skills-lock.json from agentic-toolkit into the target repo. +# 2. Runs `skills experimental_install` to restore the exact pinned versions +# of Matt Pocock's skills + Domna's own skills (Hestia-Homes/agentic-toolkit). # -# To upgrade Matt's skills across all Domna repos: -# - Bump MATTPOCOCK_REF in this script (agentic-toolkit repo). +# To upgrade skills across all Domna repos: +# - In agentic-toolkit, re-install the skills you want, then commit the +# resulting skills-lock.json (this script reads from that file). # - Devs re-run setup.sh in their target repos. # set -euo pipefail -# --- pinned versions ----------------------------------------------------------- -# Bump these refs in agentic-toolkit when Domna decides to upgrade. Devs in -# target repos pick up the new pins on their next setup.sh run. -MATTPOCOCK_SOURCE="mattpocock/skills" -MATTPOCOCK_REF="" # leave empty to track HEAD; set to a commit SHA to pin - -DOMNA_SOURCE="Hestia-Homes/agentic-toolkit" -DOMNA_REF="" # leave empty to track HEAD; set to a commit SHA to pin - -AGENT_TARGET="claude-code" # Claude Code agent install layout +# --- config -------------------------------------------------------------------- +LOCK_URL="https://raw.githubusercontent.com/Hestia-Homes/agentic-toolkit/main/skills-lock.json" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" 2>/dev/null && pwd || true)" +LOCAL_LOCK="${SCRIPT_DIR:+$SCRIPT_DIR/skills-lock.json}" # --- guards -------------------------------------------------------------------- if ! command -v npx >/dev/null 2>&1; then @@ -39,25 +34,25 @@ if [[ ! -d .git ]]; then exit 1 fi +# --- stage skills-lock.json ---------------------------------------------------- +if [[ -n "$LOCAL_LOCK" && -f "$LOCAL_LOCK" ]]; then + echo "==> Using local skills-lock.json from $LOCAL_LOCK" + cp "$LOCAL_LOCK" ./skills-lock.json +else + echo "==> Fetching skills-lock.json from $LOCK_URL" + if command -v curl >/dev/null 2>&1; then + curl -fsSL "$LOCK_URL" -o ./skills-lock.json + elif command -v wget >/dev/null 2>&1; then + wget -qO ./skills-lock.json "$LOCK_URL" + else + echo "error: need curl or wget to fetch skills-lock.json." >&2 + exit 1 + fi +fi + # --- install ------------------------------------------------------------------- -mattpocock_pkg="$MATTPOCOCK_SOURCE${MATTPOCOCK_REF:+#$MATTPOCOCK_REF}" -domna_pkg="$DOMNA_SOURCE${DOMNA_REF:+#$DOMNA_REF}" - -echo "==> Installing Matt Pocock skills from $mattpocock_pkg" -npx --yes skills@latest add "$mattpocock_pkg" \ - --skill '*' \ - --agent "$AGENT_TARGET" \ - --copy \ - --global \ - --yes - -echo "==> Installing Domna skills from $domna_pkg" -npx --yes skills@latest add "$domna_pkg" \ - --skill '*' \ - --agent "$AGENT_TARGET" \ - --copy \ - --global \ - --yes +echo "==> Restoring skills from skills-lock.json" +npx --yes skills@latest experimental_install # --- post-install reminder ----------------------------------------------------- cat <<'EOF' @@ -66,4 +61,7 @@ cat <<'EOF' 1. Run /setup-matt-pocock-skills (one-time per repo) to record the issue tracker, triage labels, and domain-doc layout. + + 2. Commit skills-lock.json so the rest of the team gets the same pinned + skill versions on their next `skills experimental_install`. EOF diff --git a/skills-lock.json b/skills-lock.json new file mode 100644 index 0000000..c7462ae --- /dev/null +++ b/skills-lock.json @@ -0,0 +1,115 @@ +{ + "version": 3, + "skills": { + "diagnose": { + "source": "mattpocock/skills", + "sourceType": "github", + "sourceUrl": "https://github.com/mattpocock/skills.git", + "skillPath": "skills/engineering/diagnose/SKILL.md", + "skillFolderHash": "43d464d0e9d1049b9d525975c0f7367ab7e01a5f", + "pluginName": "mattpocock-skills" + }, + "grill-with-docs": { + "source": "mattpocock/skills", + "sourceType": "github", + "sourceUrl": "https://github.com/mattpocock/skills.git", + "skillPath": "skills/engineering/grill-with-docs/SKILL.md", + "skillFolderHash": "2969a1224c70fe41b9dd2ddbe32c2ec62f2815bd", + "pluginName": "mattpocock-skills" + }, + "improve-codebase-architecture": { + "source": "mattpocock/skills", + "sourceType": "github", + "sourceUrl": "https://github.com/mattpocock/skills.git", + "skillPath": "skills/engineering/improve-codebase-architecture/SKILL.md", + "skillFolderHash": "3ad8fa787b3b9b622d1f5a3d0afc27812ac782fa", + "pluginName": "mattpocock-skills" + }, + "setup-matt-pocock-skills": { + "source": "mattpocock/skills", + "sourceType": "github", + "sourceUrl": "https://github.com/mattpocock/skills.git", + "skillPath": "skills/engineering/setup-matt-pocock-skills/SKILL.md", + "skillFolderHash": "a500c5b9a481e6fac8c9bb87cd4c4e16c3f46e1a", + "pluginName": "mattpocock-skills" + }, + "tdd": { + "source": "mattpocock/skills", + "sourceType": "github", + "sourceUrl": "https://github.com/mattpocock/skills.git", + "skillPath": "skills/engineering/tdd/SKILL.md", + "skillFolderHash": "75beb3030b4c979205dd771ff85ac600baeb68f4", + "pluginName": "mattpocock-skills" + }, + "to-issues": { + "source": "mattpocock/skills", + "sourceType": "github", + "sourceUrl": "https://github.com/mattpocock/skills.git", + "skillPath": "skills/engineering/to-issues/SKILL.md", + "skillFolderHash": "2bf2903405724ce27038fc91f1c4304c4a63ae16", + "pluginName": "mattpocock-skills" + }, + "to-prd": { + "source": "mattpocock/skills", + "sourceType": "github", + "sourceUrl": "https://github.com/mattpocock/skills.git", + "skillPath": "skills/engineering/to-prd/SKILL.md", + "skillFolderHash": "63e890f04a30b69c9931615f36700fc45eb8d1ad", + "pluginName": "mattpocock-skills" + }, + "triage": { + "source": "mattpocock/skills", + "sourceType": "github", + "sourceUrl": "https://github.com/mattpocock/skills.git", + "skillPath": "skills/engineering/triage/SKILL.md", + "skillFolderHash": "de4f182c30876a2460ca307e2f601b9b892527e5", + "pluginName": "mattpocock-skills" + }, + "zoom-out": { + "source": "mattpocock/skills", + "sourceType": "github", + "sourceUrl": "https://github.com/mattpocock/skills.git", + "skillPath": "skills/engineering/zoom-out/SKILL.md", + "skillFolderHash": "6ecebabdea814d12888f56a611da7bf182b5fb26", + "pluginName": "mattpocock-skills" + }, + "caveman": { + "source": "mattpocock/skills", + "sourceType": "github", + "sourceUrl": "https://github.com/mattpocock/skills.git", + "skillPath": "skills/productivity/caveman/SKILL.md", + "skillFolderHash": "17972a1bdbf5909b9dbdc435ad348f0bf45f8664", + "pluginName": "mattpocock-skills" + }, + "grill-me": { + "source": "mattpocock/skills", + "sourceType": "github", + "sourceUrl": "https://github.com/mattpocock/skills.git", + "skillPath": "skills/productivity/grill-me/SKILL.md", + "skillFolderHash": "2a1ad17028306ebe45f0e49703fa28b9b2e7f499", + "pluginName": "mattpocock-skills" + }, + "write-a-skill": { + "source": "mattpocock/skills", + "sourceType": "github", + "sourceUrl": "https://github.com/mattpocock/skills.git", + "skillPath": "skills/productivity/write-a-skill/SKILL.md", + "skillFolderHash": "2f252b35aa238879afc5a230ac30343708dee0b3" + }, + "ralph-loop": { + "source": "Hestia-Homes/agentic-toolkit", + "sourceType": "github", + "sourceUrl": "https://github.com/Hestia-Homes/agentic-toolkit.git", + "skillPath": "skills/engineering/ralph-loop/SKILL.md", + "skillFolderHash": "d1414d3ccd3cc27f7cc1117b7723efc22b2d1ec7" + }, + "to-project": { + "source": "Hestia-Homes/agentic-toolkit", + "sourceType": "github", + "sourceUrl": "https://github.com/Hestia-Homes/agentic-toolkit.git", + "skillPath": "skills/engineering/to-project/SKILL.md", + "skillFolderHash": "c28e88e90052bee0dfddc8c525462fe339ff2244" + } + }, + "dismissed": {} +}