v0.2.0: split — public framework only, runbook fetched from private host
The agent and skill prose used to ship inside this package, which exposed home-infra topology (hosts, IPs, AINs, container layout, /opt/herding cred paths) to anyone with the public package URL. This release moves to a fetcher model: - Public package ships only the plumbing: claude-his-fetch + claude-his-install. - Runbook content lives on a private host at $HIS_CONTEXT_HOST:/opt/his-context/. - claude-his-fetch (rsync over SSH) populates ~/.cache/claude-his-agent/. - claude-his-install symlinks ~/.claude/agents/his.md + ~/.claude/skills/his into the cache. History rewritten — the previous tree contained sensitive operational details. A bundle of the pre-rewrite tree is preserved out-of-band by the maintainer.
This commit is contained in:
Executable
+31
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
# claude-his-fetch — pull current His context from a private host over SSH.
|
||||
# The public package ships zero infrastructure context; the runbook lives on a
|
||||
# host you control and is fetched into a per-user cache that ~/.claude/ symlinks
|
||||
# to. Re-run periodically (cron, or on demand) to refresh.
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HIS_CONTEXT_HOST:-hertz}"
|
||||
SRC="${HIS_CONTEXT_PATH:-/opt/his-context/}"
|
||||
CACHE="${HIS_CONTEXT_CACHE:-${HOME}/.cache/claude-his-agent}"
|
||||
|
||||
mkdir -p "${CACHE}"
|
||||
|
||||
echo "claude-his-fetch: ${HOST}:${SRC} -> ${CACHE}"
|
||||
|
||||
if ! command -v rsync >/dev/null 2>&1; then
|
||||
echo "claude-his-fetch: rsync not found; install rsync (apt/pacman) and retry" >&2
|
||||
exit 3
|
||||
fi
|
||||
|
||||
# Reuses the user's existing SSH credentials; trust boundary is whatever
|
||||
# already authorises the user on $HIS_CONTEXT_HOST.
|
||||
rsync -a --delete -e ssh "${HOST}:${SRC}" "${CACHE}/"
|
||||
|
||||
# Sanity — these are the two files ~/.claude symlinks expect to exist.
|
||||
test -r "${CACHE}/agent.md" || { echo "fetch failed: missing agent.md" >&2; exit 2; }
|
||||
test -r "${CACHE}/skill/SKILL.md" || { echo "fetch failed: missing skill/SKILL.md" >&2; exit 2; }
|
||||
|
||||
agent_bytes=$(wc -c <"${CACHE}/agent.md")
|
||||
skill_bytes=$(wc -c <"${CACHE}/skill/SKILL.md")
|
||||
echo "claude-his-fetch: OK (${agent_bytes}B agent, ${skill_bytes}B skill)"
|
||||
Executable
+26
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env bash
|
||||
# claude-his-install — wire ~/.claude/{agents,skills}/his to the fetched context cache.
|
||||
# Runs claude-his-fetch first if the cache is empty.
|
||||
set -euo pipefail
|
||||
|
||||
CACHE="${HIS_CONTEXT_CACHE:-${HOME}/.cache/claude-his-agent}"
|
||||
|
||||
if [ ! -r "${CACHE}/agent.md" ] || [ ! -r "${CACHE}/skill/SKILL.md" ]; then
|
||||
echo "claude-his-install: cache empty, running claude-his-fetch first..."
|
||||
claude-his-fetch
|
||||
fi
|
||||
|
||||
DEST="${HOME}/.claude"
|
||||
mkdir -p "${DEST}/agents" "${DEST}/skills"
|
||||
|
||||
ln -sfn "${CACHE}/agent.md" "${DEST}/agents/his.md"
|
||||
ln -sfn "${CACHE}/skill" "${DEST}/skills/his"
|
||||
|
||||
cat <<EOF
|
||||
Installed His for $USER:
|
||||
${DEST}/agents/his.md -> ${CACHE}/agent.md
|
||||
${DEST}/skills/his -> ${CACHE}/skill
|
||||
|
||||
Refresh by re-running 'claude-his-fetch' (or cron it weekly).
|
||||
Override host/path via HIS_CONTEXT_HOST / HIS_CONTEXT_PATH / HIS_CONTEXT_CACHE.
|
||||
EOF
|
||||
Reference in New Issue
Block a user