From heimdall
Configure Heimdall file/directory protection storage and scan for paths to protect. Use when the user says "install heimdall", "set up heimdall", "set up protection", "configure heimdall", "create lock store", "initialize heimdall", or asks to start guarding files. Picks local (./.claude/heimdall), worktree (../.claude/heimdall), global (~/.claude/heimdall/<project>), or shared (~/.claude/heimdall-shared, user-wide across every project), then suggests protectable paths.
How this skill is triggered — by the user, by Claude, or both
Slash command
/heimdall:installThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Two phases: (1) create the store, (2) scan for protectable paths and let the
Two phases: (1) create the store, (2) scan for protectable paths and let the user opt each one in behind a passphrase.
local, worktree, global, or shared, use it. Otherwise pick via AskUserQuestion: recommend worktree when git worktree list shows >1 entry, else local; mention global survives worktree deletion, and shared survives every project (appropriate for user-wide paths like ~/.claude, ~/.gitconfig). If the catalog target anchor is home (e.g. ~/.claude, ~/.ssh, ~/.aws, ~/.gitconfig), recommend shared so the lock applies in every project, not just this one.node "${CLAUDE_PLUGIN_ROOT}/scripts/heimdall-init.js" --kind=<kind>
It's idempotent — existing lock blocks are preserved.Scan for protectable paths (mirrors the protectors already in ~/.claude):
node "${CLAUDE_PLUGIN_ROOT}/scripts/heimdall-scan.js" --kind=<kind> --json
The scan only returns paths that actually exist — and for local/worktree it never suggests home-anchored paths (e.g. ~/.claude), only paths present in the repository. Already-protected paths are omitted. If the result is [], tell the user there's nothing new to protect and stop.
Ask per suggestion. Use AskUserQuestion (batch up to 4 suggestions per call). For each suggestion make one question:
Protect <label> (<comma-joined protect paths>)?Protect — phrase "<defaultPhrase>" (recommended)Use a different phraseSkip
If the user picks "Use a different phrase", ask them for the phrase (free-form / Other).Apply each opted-in suggestion with the scan's metadata. For a suggestion with protect, defaultPhrase (or the user's phrase), and optional allowedPaths/trustedSubdirs:
node "${CLAUDE_PLUGIN_ROOT}/scripts/heimdall-protect.js" \
--kind=<kind> \
--phrase="<phrase>" \
--paths="<comma,separated,protect>" \
[--allowed="<comma,separated,allowedPaths>"] \
[--trusted="<comma,separated,trustedSubdirs>"]
Pass --allowed/--trusted only when the suggestion includes them (the claude-config group does).
Finish by running /heimdall:list (or the list script) and showing the resulting protection.
The user can always add more later with /heimdall:protect or remove with /heimdall:unprotect.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub thomfilg/ai-plugin-work --plugin heimdall