Browse Source

feat: Initial release of claude-mods

Custom commands, skills, and agents for Claude Code.

Structure:
- commands/ - Slash commands (g-slave included as submodule)
- skills/ - Custom skills
- agents/ - Custom subagents

Includes install scripts for Linux/macOS and Windows.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
0xDarkMatter 4 months ago
commit
7663d6c2ba
8 changed files with 294 additions and 0 deletions
  1. 3 0
      .gitmodules
  2. 21 0
      LICENSE
  3. 90 0
      README.md
  4. 0 0
      agents/.gitkeep
  5. 1 0
      commands/g-slave
  6. 101 0
      install.ps1
  7. 78 0
      install.sh
  8. 0 0
      skills/.gitkeep

+ 3 - 0
.gitmodules

@@ -0,0 +1,3 @@
+[submodule "commands/g-slave"]
+	path = commands/g-slave
+	url = https://github.com/0xDarkMatter/g-slave.git

+ 21 - 0
LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 0xDarkMatter
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 90 - 0
README.md

@@ -0,0 +1,90 @@
+# claude-mods
+
+Custom commands, skills, and agents for [Claude Code](https://docs.anthropic.com/en/docs/claude-code).
+
+## Structure
+
+```
+claude-mods/
+├── commands/           # Slash commands
+│   └── g-slave/        # Make Gemini do Claude's dirty work
+├── skills/             # Custom skills
+├── agents/             # Custom subagents
+├── install.sh          # Linux/macOS installer
+└── install.ps1         # Windows installer
+```
+
+## Installation
+
+### Quick Install
+
+**Linux/macOS:**
+```bash
+git clone --recursive https://github.com/0xDarkMatter/claude-mods.git
+cd claude-mods
+./install.sh
+```
+
+**Windows (PowerShell):**
+```powershell
+git clone --recursive https://github.com/0xDarkMatter/claude-mods.git
+cd claude-mods
+.\install.ps1
+```
+
+### Manual Install
+
+Clone with submodules:
+```bash
+git clone --recursive https://github.com/0xDarkMatter/claude-mods.git
+```
+
+Then symlink or copy to your Claude directories:
+- Commands → `~/.claude/commands/`
+- Skills → `~/.claude/skills/`
+- Agents → `~/.claude/agents/`
+
+## What's Included
+
+### Commands
+
+| Command | Description |
+|---------|-------------|
+| [g-slave](commands/g-slave/) | Dispatch Gemini CLI to analyze large codebases. Gemini does the grunt work, Claude gets the summary. |
+
+### Skills
+
+*Coming soon*
+
+### Agents
+
+*Coming soon*
+
+## Updating
+
+Pull updates including submodules:
+```bash
+git pull --recurse-submodules
+git submodule update --remote
+```
+
+Then re-run the install script.
+
+## Adding Your Own
+
+### Commands
+Create a `.md` file in `commands/` following Claude Code's [slash command format](https://docs.anthropic.com/en/docs/claude-code).
+
+### Skills
+Create a directory in `skills/` with a `SKILL.md` file.
+
+### Agents
+Create a `.md` file in `agents/` with frontmatter defining the agent.
+
+## License
+
+MIT
+
+---
+
+*Extend Claude Code. Your way.*

+ 0 - 0
agents/.gitkeep


+ 1 - 0
commands/g-slave

@@ -0,0 +1 @@
+Subproject commit 02b083bc92caf4ae13a4483d2a176003b43ca2fc

+ 101 - 0
install.ps1

@@ -0,0 +1,101 @@
+# claude-mods installer for Windows
+# Creates symlinks to Claude Code directories (requires admin or developer mode)
+
+$ErrorActionPreference = "Stop"
+
+$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
+$ClaudeDir = Join-Path $env:USERPROFILE ".claude"
+
+Write-Host "Installing claude-mods..." -ForegroundColor Cyan
+Write-Host "Source: $ScriptDir"
+Write-Host "Target: $ClaudeDir"
+Write-Host ""
+
+# Create Claude directories if they don't exist
+$dirs = @("commands", "skills", "agents")
+foreach ($dir in $dirs) {
+    $path = Join-Path $ClaudeDir $dir
+    if (!(Test-Path $path)) {
+        New-Item -ItemType Directory -Path $path -Force | Out-Null
+    }
+}
+
+# Install commands
+Write-Host "Installing commands..." -ForegroundColor Yellow
+$commandsDir = Join-Path $ScriptDir "commands"
+if (Test-Path $commandsDir) {
+    Get-ChildItem -Path $commandsDir -Directory | ForEach-Object {
+        $cmdName = $_.Name
+        $cmdFile = Join-Path $_.FullName "$cmdName.md"
+        if (Test-Path $cmdFile) {
+            $target = Join-Path $ClaudeDir "commands\$cmdName.md"
+            if (Test-Path $target) {
+                Write-Host "  Updating: $cmdName.md"
+                Remove-Item $target -Force
+            } else {
+                Write-Host "  Installing: $cmdName.md"
+            }
+            # Try symlink first, fall back to copy
+            try {
+                New-Item -ItemType SymbolicLink -Path $target -Target $cmdFile -Force | Out-Null
+            } catch {
+                Copy-Item $cmdFile $target -Force
+                Write-Host "    (copied - enable Developer Mode for symlinks)" -ForegroundColor DarkGray
+            }
+        }
+    }
+}
+
+# Install skills
+Write-Host "Installing skills..." -ForegroundColor Yellow
+$skillsDir = Join-Path $ScriptDir "skills"
+if (Test-Path $skillsDir) {
+    Get-ChildItem -Path $skillsDir -Directory | ForEach-Object {
+        $skillName = $_.Name
+        $target = Join-Path $ClaudeDir "skills\$skillName"
+        if (Test-Path $target) {
+            Write-Host "  Updating: $skillName"
+            Remove-Item $target -Recurse -Force
+        } else {
+            Write-Host "  Installing: $skillName"
+        }
+        # Try symlink first, fall back to copy
+        try {
+            New-Item -ItemType SymbolicLink -Path $target -Target $_.FullName -Force | Out-Null
+        } catch {
+            Copy-Item $_.FullName $target -Recurse -Force
+            Write-Host "    (copied - enable Developer Mode for symlinks)" -ForegroundColor DarkGray
+        }
+    }
+}
+
+# Install agents
+Write-Host "Installing agents..." -ForegroundColor Yellow
+$agentsDir = Join-Path $ScriptDir "agents"
+if (Test-Path $agentsDir) {
+    Get-ChildItem -Path $agentsDir -Filter "*.md" | ForEach-Object {
+        $agentName = $_.Name
+        $target = Join-Path $ClaudeDir "agents\$agentName"
+        if (Test-Path $target) {
+            Write-Host "  Updating: $agentName"
+            Remove-Item $target -Force
+        } else {
+            Write-Host "  Installing: $agentName"
+        }
+        # Try symlink first, fall back to copy
+        try {
+            New-Item -ItemType SymbolicLink -Path $target -Target $_.FullName -Force | Out-Null
+        } catch {
+            Copy-Item $_.FullName $target -Force
+            Write-Host "    (copied - enable Developer Mode for symlinks)" -ForegroundColor DarkGray
+        }
+    }
+}
+
+Write-Host ""
+Write-Host "Installation complete!" -ForegroundColor Green
+Write-Host ""
+Write-Host "Installed to:"
+Write-Host "  Commands: $ClaudeDir\commands\"
+Write-Host "  Skills:   $ClaudeDir\skills\"
+Write-Host "  Agents:   $ClaudeDir\agents\"

+ 78 - 0
install.sh

@@ -0,0 +1,78 @@
+#!/bin/bash
+
+# claude-mods installer for Linux/macOS
+# Creates symlinks to Claude Code directories
+
+set -e
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+CLAUDE_DIR="$HOME/.claude"
+
+echo "Installing claude-mods..."
+echo "Source: $SCRIPT_DIR"
+echo "Target: $CLAUDE_DIR"
+echo ""
+
+# Create Claude directories if they don't exist
+mkdir -p "$CLAUDE_DIR/commands"
+mkdir -p "$CLAUDE_DIR/skills"
+mkdir -p "$CLAUDE_DIR/agents"
+
+# Install commands
+echo "Installing commands..."
+for cmd_dir in "$SCRIPT_DIR/commands"/*/; do
+    if [ -d "$cmd_dir" ]; then
+        cmd_name=$(basename "$cmd_dir")
+        # Look for the main .md file
+        if [ -f "$cmd_dir/$cmd_name.md" ]; then
+            target="$CLAUDE_DIR/commands/$cmd_name.md"
+            if [ -L "$target" ] || [ -f "$target" ]; then
+                echo "  Updating: $cmd_name.md"
+                rm -f "$target"
+            else
+                echo "  Installing: $cmd_name.md"
+            fi
+            ln -s "$cmd_dir/$cmd_name.md" "$target"
+        fi
+    fi
+done
+
+# Install skills
+echo "Installing skills..."
+for skill_dir in "$SCRIPT_DIR/skills"/*/; do
+    if [ -d "$skill_dir" ]; then
+        skill_name=$(basename "$skill_dir")
+        target="$CLAUDE_DIR/skills/$skill_name"
+        if [ -L "$target" ] || [ -d "$target" ]; then
+            echo "  Updating: $skill_name"
+            rm -rf "$target"
+        else
+            echo "  Installing: $skill_name"
+        fi
+        ln -s "$skill_dir" "$target"
+    fi
+done
+
+# Install agents
+echo "Installing agents..."
+for agent_file in "$SCRIPT_DIR/agents"/*.md; do
+    if [ -f "$agent_file" ]; then
+        agent_name=$(basename "$agent_file")
+        target="$CLAUDE_DIR/agents/$agent_name"
+        if [ -L "$target" ] || [ -f "$target" ]; then
+            echo "  Updating: $agent_name"
+            rm -f "$target"
+        else
+            echo "  Installing: $agent_name"
+        fi
+        ln -s "$agent_file" "$target"
+    fi
+done
+
+echo ""
+echo "Installation complete!"
+echo ""
+echo "Installed to:"
+echo "  Commands: $CLAUDE_DIR/commands/"
+echo "  Skills:   $CLAUDE_DIR/skills/"
+echo "  Agents:   $CLAUDE_DIR/agents/"

+ 0 - 0
skills/.gitkeep