From claude-resources
Shares Claude Code resources (memories, skills, hooks, scripts, commands) between projects via a centralized claude-settings repo. Copies .claude/* files and publishes them, with private info scanning and optional auto mode.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-resources:claude-resources-share [-a|--auto][-a|--auto]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
One-direction publish from `$HOME/.claude/` (private) to `$HOME/repos/p/claude-resources` (public).
One-direction publish from $HOME/.claude/ (private) to $HOME/repos/p/claude-resources (public).
If the user passes -a or --auto (e.g. /claude-resources-share -a, /claude-resources-share --auto, or wording like "auto", "if no problems do copy and push", "do it all if clean"), enable auto mode:
/purge-private-info), skip the user-confirmation gate and proceed automatically. If findings are NOT clean, stop and report — do not auto-proceed./commits with push (option 1) automatically.In normal mode (no flag), follow the original gates: ask for confirmation after the scan and ask which commit option to use.
$HOME/.claude/$HOME/repos/p/claude-resources| Source | Target |
|---|---|
$HOME/.claude/commands/ | commands/ |
$HOME/.claude/skills/ | skills/ |
$HOME/.claude/agents/ | agents/ |
$HOME/.claude/hooks/ | hooks/ |
$HOME/.claude/scripts/ | scripts/ |
$HOME/.claude/web/ | web/ |
$HOME/.claude/CLAUDE.md | CLAUDE.md |
node_modules/.claude/ (stray nested config dirs inside subtrees, e.g. skills/.claude/).docusaurus/build/dist/__pycache__/.DS_Store*.pyc.cache/pnpm-lock.yamlpackage-lock.jsontarget/Skip symlinks during copy. Symlinks in $HOME/.claude/skills/ typically point to project-local repos that do not exist on a fresh machine, so dereferencing or preserving them in the public bundle would break the install. The rsync flag --no-links skips them entirely.
The public repo contains .claude-plugin/marketplace.json and .claude-plugin/plugin.json so users can install the bundle via /plugin marketplace add takazudo/claude-resources. These files live ONLY in the public repo (not in $HOME/.claude/), and Step 3's cleanup loop must NOT delete .claude-plugin/.
Invoke the /purge-private-info command, targeting the source directories listed above. Scan file contents for:
$HOME/)Present all findings to the user. Do NOT proceed until the user explicitly confirms there are no problems or that findings are acceptable.
In auto mode (-a / --auto): if the scan reports no HIGH/MEDIUM priority findings (clean result), skip the confirmation gate and proceed to Step 2. If anything is flagged, stop and report — auto mode never auto-confirms a non-clean scan.
# Create target if it doesn't exist
mkdir -p $HOME/repos/p/claude-resources
If the target has a .git/ directory, pull latest to avoid conflicts:
cd $HOME/repos/p/claude-resources
git pull --rebase
If not a git repo, the user should initialize it separately.
First, remove all old content in the target (preserving .git/, .gitignore, README.md, LICENSE):
# Remove previous copies (but preserve git and repo meta files)
cd $HOME/repos/p/claude-resources
for dir in commands skills agents hooks scripts web; do
rm -rf "./$dir"
done
rm -f ./CLAUDE.md
Then copy fresh from source using rsync. IMPORTANT: Pass each --exclude flag separately — do NOT store them in a shell variable, as variable expansion breaks glob patterns like *.pyc. The --no-links flag is critical: it skips symlinked skills/commands/agents that point to project-local repos.
SRC="$HOME/.claude"
DST="$HOME/repos/p/claude-resources"
for dir in commands skills agents hooks scripts web; do
rsync -av --no-links \
--exclude=node_modules \
--exclude=.claude \
--exclude=.docusaurus \
--exclude=build \
--exclude=dist \
--exclude=__pycache__ \
--exclude=.DS_Store \
--exclude='*.pyc' \
--exclude=.cache \
--exclude=pnpm-lock.yaml \
--exclude=package-lock.json \
--exclude=target \
"$SRC/$dir/" "$DST/$dir/"
done
cp "$SRC/CLAUDE.md" "$DST/CLAUDE.md"
After copying, verify no excluded artifacts leaked through and confirm the plugin manifests are still in place:
DST="$HOME/repos/p/claude-resources"
# Check for leaked node_modules
leaked=$(find "$DST" -name node_modules -type d 2>/dev/null)
if [ -n "$leaked" ]; then
echo "WARNING: Leaked node_modules found, removing:"
echo "$leaked"
find "$DST" -name node_modules -type d -exec rm -rf {} + 2>/dev/null
fi
# Clean .DS_Store files
find "$DST" -name .DS_Store -delete 2>/dev/null
# Sanity check: plugin manifests must exist for marketplace install to work
for f in .claude-plugin/marketplace.json .claude-plugin/plugin.json; do
if [ ! -f "$DST/$f" ]; then
echo "ERROR: Missing $f -- marketplace install will fail. Restore before pushing."
fi
done
# Sanity check: no symlinks should have leaked through
leaked_links=$(find "$DST" -type l 2>/dev/null)
if [ -n "$leaked_links" ]; then
echo "WARNING: Symlinks leaked through (should be skipped via --no-links):"
echo "$leaked_links"
find "$DST" -type l -delete 2>/dev/null
fi
Report file counts per directory:
DST="$HOME/repos/p/claude-resources"
for dir in commands skills agents hooks scripts web; do
echo "$dir: $(find "$DST/$dir" -type f | wc -l) files"
done
echo "CLAUDE.md: 1 file"
Normal mode: Ask the user whether they want to commit and push the changes to the target repo. Do NOT auto-commit or auto-push. Present the options:
If the user chooses to commit, use the /commits skill to commit inside the target repo directory. If they also want to push, push after committing.
Auto mode (-a / --auto): skip the prompt. Run /commits inside the target repo directory and push (equivalent to option 1) without asking. Report the commit and push result back to the user.
The following items are known and acceptable — do NOT flag them during the Step 1 scan:
hooks/notify-ifttt.sh (the key itself is in an env var)takazudo-codegrid-writing, takazudo-esa-writing in skills/agents (publicly known authorship)$HOME/repos/w/ and $HOME/repos/p/ directory structure references (personal convention, no secrets)--exclude flag inline to avoid glob expansion issues..claude-plugin/ during cleanup. Step 3 only removes commands/, skills/, agents/, hooks/, scripts/, web/, and CLAUDE.md — the plugin manifests are public-repo-only files and must persist across shares.--no-links in rsync. Symlinked skills/commands/agents point to project-local repos that do not exist on a fresh machine and would break installs from the marketplace.npx claudepluginhub takazudo/claude-resources --plugin claude-resourcesImports/exports reusable assets (skills, templates, agents) between projects and v0.2 Claude Code plugin repositories, with sanitization for secrets/paths and safety checks.
Syncs cc-settings with upstream Claude Code changelog (maintainer) or updates local cc-settings install (user).
Installs, updates, lists, and removes Claude Code skills from GitHub repos/subdirs or .skill zips. Supports user-global and project-local locations.