Skills Repo Push
Updates local Claude skills at ~/.claude/skills from the skills repo
(github.com/Theycallmeholla/skills, local clone: /Users/cursivemedia/skills), treating
the repo as the source of truth.
Direction
Repo → Local — opposite of skills-repo-sync which goes local → repo.
What it does
- Scans the repo's
skills/directory for all skill folders. - Compares each repo skill against
~/.claude/skills:- NEW: skill exists in repo but not locally
- CHANGED: skill exists in both but content differs
- IDENTICAL: skill matches exactly (skipped)
- Preserves local-only skills — never deletes or modifies skills that exist only locally (e.g., adapt, polish, typeset, harden).
- Reports what would change with file counts and diff sizes.
- Applies changes only with
--applyflag (dry-run by default). - Packages NEW+CHANGED skills into
/tmp/skills-push-TIMESTAMP.tar.gzfor manual Claude app upload.
Usage
# Dry run — see what would change
scripts/push.sh
# Apply changes to local skills
scripts/push.sh --apply
# Limit to specific skills
scripts/push.sh --apply skill1 skill2
# Custom paths via environment
REPO_DIR=/path/to/repo LOCAL_DIR=/path/to/local scripts/push.sh
Safety
- Dry-run by default — requires explicit
--applyto write. - Never deletes — local-only skills are left completely alone.
- Protects local state — some files accumulate real user data locally while the repo
carries only a blank template.
blog-topic-interview/references/opinion-bank.mdis the live example: locally it holds the author's actual positions, in the repo it is placeholders. Overwriting it is silent data loss. Files matchingPRESERVE_GLOBSare stashed before the update and restored on top of the fresh copy. Dry-run prints every file it will keep. - Backs up before writing — each replaced skill folder is copied to
/tmp/skills-push-backup-<timestamp>/before anything is removed. - Shows diffs — see exactly what changes before applying.
Add a pattern to PRESERVE_GLOBS whenever a skill starts writing state into its own folder.
The default list is references/opinion-bank.md references/*-bank.md state.json.
Output
Dry-run mode shows:
- Count of NEW, CHANGED, IDENTICAL skills
- Per-skill change summary with file/line counts
- Tarball path for manual app upload
- Exact command to apply changes
Apply mode additionally:
- Copies NEW skills to local
- Updates CHANGED skills in place
- Reports final sync status
Environment
REPO_DIR: Skills repo path (default:/Users/cursivemedia/skills)LOCAL_DIR: Local skills path (default:~/.claude/skills)
Notes
- Compares only
SKILL.mdand subdirectory contents; ignores hidden files. - Tarball includes only NEW+CHANGED skills for efficient app upload.
- Run after
git pullin the repo to distribute updates locally. - Claude app upload remains manual — extract tarball and upload through UI.