# myclaude CLI tool to manage Claude Code skills across projects. Instead of copy-pasting skills from one project to another, `myclaude` syncs them from a central git repository. ## Requirements - Python 3.12+ - Git with SSH key configured for your Gitea instance ## Installation ```bash pip install gitpython typer pip install -e . myclaude --install-completion # optional: enable shell autocompletion ``` ## Central repository structure Your Gitea repository must follow this layout: ``` your-repo/ ├── CLAUDE.md └── skills/ ├── skill_name_1/ │ └── SKILL.md └── skill_name_2/ └── SKILL.md ``` ## Commands ### `myclaude init ` Copies `CLAUDE.md` and skills from the central repo into the target project. ```bash # First use: provide the repo URL (saved to ~/.myclaude/config.json) myclaude init . --repo git@gitea.example.com:user/claude-skills.git # Subsequent uses myclaude init . # Install specific skills only myclaude init . --skill skill_name_1 skill_name_2 # Overwrite existing .claude/skills/ myclaude init . --force # Keep the temporary clone for inspection (debug) myclaude init . --keep-tmp ``` The project will receive: - `./CLAUDE.md` - `./.claude/skills//SKILL.md` ### `myclaude push` Pushes local skills back to the central repository. ```bash # Push all local skills myclaude push # Push specific skills only myclaude push --skill skill_name_1 skill_name_2 # Also push CLAUDE.md myclaude push --claude-md ``` ### `myclaude status` Compares local skills with the central repository. ```bash myclaude status ``` Example output: ``` Installed: [ok] skill_name_1 Local only (not pushed): [+] skill_name_2 Remote only (not installed): [-] skill_name_3 ``` ### `myclaude list` Lists all skills available in the central repository. ```bash myclaude list ``` ## Configuration The repo URL is stored in `~/.myclaude/config.json` after the first `init --repo` call. ```json { "repo_url": "git@gitea.example.com:user/claude-skills.git" } ``` ## Running tests ```bash pytest ```