skills/claude-local/SKILL.md
Distill the user's global ~/.claude/CLAUDE.md into a gitignored CLAUDE.local.md for repos they contribute to but don't own — keeping only repo-relevant instructions and dropping personal flair. Use when the user says "set up CLAUDE.local", "scaffold local claude config", "drop my preferences in this repo", "I'm contributing and want my preferences applied", "claude-local.md", or invokes /claude-local. Also use proactively when they open an unfamiliar repo and want to start contributing.
npx skillsauth add paulnsorensen/dotfiles claude-localInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Tailor the user's global Claude Code preferences to this project and write
them to a CLAUDE.local.md that the global gitignore covers. The output is a
slim, project-relevant overlay — not a copy of ~/.claude/CLAUDE.md.
The global ~/.claude/CLAUDE.md is tuned for the user's own work —
personal communication style, owned-architecture rules, early-development
stances. When the user contributes to someone else's
repo they want their engineering preferences applied (coding principles,
skill delegation, self-eval) without dragging in the personal flair or
architectural opinions that don't apply to a codebase they don't own.
Two non-negotiables:
CLAUDE.md, AGENTS.md, or .gitignore. The point is a clean,
gitignored personal overlay.~/.claude/CLAUDE.md fresh each time so updates flow through.The output goes at the project root (top of the git repo), not the cwd.
git rev-parse --show-toplevel
If that fails (not a git repo), tell the user and stop — CLAUDE.local.md
only makes sense when there's a git boundary to scope it to.
test -f "$REPO_ROOT/CLAUDE.local.md"
If it exists, ask the user: refresh (regenerate from current global), keep (stop), or overwrite (treat as new). Don't silently clobber — the user may have hand-edited it.
Read these signals to drive the distillation. Glob from the repo root:
| Signal | Implies |
|--------|---------|
| Cargo.toml | Rust |
| package.json (+ tsconfig.json) | TypeScript |
| package.json (no tsconfig) | JavaScript |
| pyproject.toml / setup.py / requirements.txt | Python |
| go.mod | Go |
| Gemfile | Ruby |
| pom.xml / build.gradle* | Java / Kotlin |
| composer.json | PHP |
| mix.exs | Elixir |
| *.csproj / *.sln | C# / .NET |
A project can be multi-language. Capture every language signal you find. Note the build/runtime tooling you observe (uv vs pip, pnpm vs npm vs yarn, cargo vs bazel) so the output references what the project actually uses.
Read("~/.claude/CLAUDE.md")
Do not trust any cached summary in this skill. The global file is the source of truth.
Apply these rules. They aren't a checklist to copy verbatim; they're the judgment to bring.
cheez-search over
grep, cheez-read over cat, cheez-write over sed, jq/yq
over inline python3 -c, gh over raw GitHub API), CLI tools
(jq/yq/tokei/duckdb), agent permission model (bypassPermissions ≠ Bash
bypass), agent nesting limits. These apply in any repo./self-eval reference and its
8-item anti-pattern summary (sycophancy, premature completion, dismissing
failures, hedging, scope reduction, false confidence, AI slop, weak
assertions). Universal.uv) — only include if you saw a pyproject.toml,
setup.py, or requirements.txt.CLAUDE.local.md is
gitignored, a stray git add -f or grep across $HOME could surface it
in a contributed repo's history. Keep the flair scoped to the global file./age, /cure, /respond, /de-slop, and
/tdd-assertions exist and are preferred. For autonomous flows on
large changes, /ultracook chains cook → press → age → cure./go, /lsp) — meta-tool
state, irrelevant to any project.Write to <repo_root>/CLAUDE.local.md. Use this template — keep it
compact (target: 60-120 lines, never longer than 200). Bullets, not
prose.
# CLAUDE.local.md
Local Claude Code overlay — gitignored personal preferences scoped to
this repo. Not part of the project's instructions; this file is only
for the user's personal Claude Code session. Source: `~/.claude/CLAUDE.md`
(distilled <YYYY-MM-DD>).
## Project context
- **Languages:** <detected>
- **Build/runtime:** <detected>
## Engineering principles
<short bulleted list — coding principles>
## Complexity budget
<copied verbatim — it's already terse>
## Code style
<only the languages this project uses>
## Skill delegation
<the table, trimmed to tools relevant here — keep cheez-* always, keep
language-specific tooling only when applicable>
## Self-evaluation checklist
<the 8-item scan, one line each>
## Workflow shortcuts
<brief reference: /age, /cure, /respond, /de-slop, /tdd-assertions —
no full descriptions; these are reminders for Claude>
## Build system
- Fix versions, don't restructure builds.
- Read workspace/root config before modifying child build files.
- Use `/version-doctor` for dependency conflicts.
Adapt section headings to what's actually relevant — don't include a "Code style" section with no content if the project's language wasn't covered in the global file.
CLAUDE.local.md must be ignored by Git but not via the project's
.gitignore (that would commit the user's preference for ignoring it).
Use the global excludes file.
# 1. Find or create the global excludes file
EXCLUDES="$(git config --global --get core.excludesfile || echo "")"
if [ -z "$EXCLUDES" ]; then
EXCLUDES="$HOME/.config/git/ignore"
mkdir -p "$(dirname "$EXCLUDES")"
touch "$EXCLUDES"
git config --global core.excludesfile "$EXCLUDES"
fi
# 2. Add CLAUDE.local.md if not already present
if ! grep -qxF "CLAUDE.local.md" "$EXCLUDES"; then
printf '\n# Personal Claude Code overlay (claude-local skill)\nCLAUDE.local.md\n' >> "$EXCLUDES"
fi
# 3. Verify Git actually ignores the new file
git -C "$REPO_ROOT" check-ignore CLAUDE.local.md
If git check-ignore returns non-zero (file not ignored), surface the
issue and walk through possible causes — most likely the project has a
!CLAUDE.local.md un-ignore rule, or core.excludesfile is set to
something the user doesn't expect. Don't silently move on.
Tell the user:
CLAUDE.local.md was written (full path).pyproject.toml found").<excludes-file-path> and verified
ignored.CLAUDE.md, AGENTS.md, .gitignore, or
any other tracked file in the contributed repo.CLAUDE.local.md to the project's .gitignore — that
would be a tracked change suggesting the project should know about
this file. Use the user's global excludes.~/.claude/CLAUDE.md re-read is the whole point — it lets the user
edit their global preferences and have updates flow through on the
next invocation.Running this skill twice on the same repo with no global changes should
produce a CLAUDE.local.md byte-identical (modulo the timestamp on the
"distilled" line) to the first run. If the user has hand-edited the
file, ask before regenerating — don't clobber their tweaks.
CLAUDE.md already in scope: CLAUDE.local.md is
additive — Claude Code reads both. The local overlay should not
contradict the project's instructions; if there's a clash, the
project wins. Note this at the top of the output file.~/Dev/dotfiles or contains a
CLAUDE.md that already imports ~/.claude/CLAUDE.md — if so, ask
before generating; the overlay may be redundant.~/.claude/CLAUDE.md exists: stop and tell the user. There's
nothing to distill from.tools
Reconstruct what a past coding-agent session was doing so you can resume it — goal, files touched, last verified state, and the next step — by querying the session logs. Use when the user says "what was I working on", "recover that session", "reconstruct where I left off", "resume my last session", "what did that session change", "rebuild context from logs", or invokes /work-recovery. Report-only — it never scores or judges. Do NOT use for usage scoring (that is /skill-improver, /tool-efficiency, /prompt-analytics) or one-off interactive log queries (that is /session-analytics).
development
Curate this repo's hallouminate wiki (.hallouminate/wiki/, the repo:dotfiles:wiki corpus) — add or update architecture pages, per-harness docs, and gotchas. Use when the user says "update the wiki", "document this in the wiki", "refresh the harness docs", "add a wiki page", "curate the wiki", "the wiki is stale", or invokes /wiki-curator. Also use at session end to write back a non-obvious decision or gotcha worth preserving. Grounds the existing wiki first, follows one-topic-per-file conventions, verifies every external doc URL before writing, and reindexes. Do NOT use for general code search (that is cheez-search) or for editing AGENTS.md command reference.
tools
Audit how a tool, command, or MCP server is actually used across coding-agent sessions and produce calibrated recommendations — tool-vs-task fit, error forensics, fix recommendations, permission friction, MCP health, and token economics. Use when the user says "tool efficiency", "am I using X efficiently", "audit tool usage", "why does X keep failing", "how do I fix this error", "what should I change", "permission friction", "is this MCP worth it", "tool error rate", "fix recommendations", or invokes /tool-efficiency. Do NOT use for auditing a skill or agent definition (that is /skill-improver) or for one-off interactive log queries (that is /session-analytics).
tools
Analyze how prompts and skill routing behave across coding-agent sessions and produce calibrated recommendations — prompt-pattern analysis, routing accuracy, and knowledge gaps. Use when the user says "analyze my prompts", "prompt patterns", "is routing working", "which skill should have fired", "knowledge gaps", "what do I keep asking", or invokes /prompt-analytics. Do NOT use for auditing a single skill/agent definition (that is /skill-improver), tool/MCP efficiency (that is /tool-efficiency), or one-off interactive log queries (that is /session-analytics).