|
1 | | -# Skills powered by coderunner, running locally on your Mac |
| 1 | +# Run Claude Skills Locally on Your Mac (No Cloud Upload Required) |
2 | 2 |
|
3 | | -> [!NOTE] |
4 | | -> [CodeRunner](https://github.com/instavm/coderunner) executes AI-generated code in a truly isolated sandboxed environment on your Mac using Apple's native containers. |
| 3 | +Anthropic recently announced [Skills for Claude](https://www.anthropic.com/news/skills) - reusable folders with instructions, scripts, and resources that make Claude better at specialized tasks. CodeRunner lets you run these skills **entirely on your local machine** in a sandboxed environment. |
| 4 | + |
| 5 | +**What this means:** Claude can now process your files (documents, spreadsheets, presentations, images) using these specialized skills while keeping all data on your Mac. No uploads, complete privacy. |
| 6 | + |
| 7 | +> **About CodeRunner:** [CodeRunner](https://github.com/instavm/coderunner) executes AI-generated code in a truly isolated sandboxed environment on your Mac using Apple's native containers. |
| 8 | +
|
| 9 | +## Why Run Skills Locally? |
| 10 | + |
| 11 | +- **Privacy:** Process sensitive documents, financial data, or proprietary files without cloud upload |
| 12 | +- **Full Control:** Skills execute in an isolated container with VM-level isolation |
| 13 | +- **Compatibility:** Works with Claude Desktop, Gemini CLI, Qwen CLI, or any MCP-compatible tool |
| 14 | +- **Extensibility:** Import Anthropic's official skills or create your own custom skills |
| 15 | + |
| 16 | +## Prerequisites |
| 17 | + |
| 18 | +* Mac with Apple Silicon (M1/M2/M3/M4/M5) |
| 19 | +* Install the latest `coderunner` by running the `./install.sh` script from the [main repository](https://github.com/instavm/coderunner) |
5 | 20 |
|
6 | | -# Pre-requisite |
7 | | -* `Mac` with a `M-series` chip. |
8 | | -* Install the latest`coderunner` by running the `./install.sh` script from the main repository. |
9 | 21 | ```shell |
10 | | -./install.sh |
| 22 | +git clone https://github.com/instavm/coderunner.git |
| 23 | +cd coderunner |
| 24 | +chmod +x install.sh |
| 25 | +sudo ./install.sh |
11 | 26 | ``` |
12 | 27 |
|
13 | | -# How To Use Skills |
14 | | -* `coderunner` is exposed as an MCP and can be connected to tools like `gemini cli` or `qwen cli` or `claude desktop` or anything that supports MCP. The execution is completely local, done on your Mac. |
| 28 | +Installation takes ~2 minutes. The MCP server will be available at `http://coderunner.local:8222/mcp` |
15 | 29 |
|
16 | | -*For example, for Gemini CLI, you can edit* `~/.gemini/settings.json` |
17 | | - ```json |
18 | | - { |
| 30 | +## Setup: Connect Your AI Tool |
| 31 | + |
| 32 | +CodeRunner is exposed as an MCP server and works with any MCP-compatible tool. All execution happens locally on your Mac. |
| 33 | + |
| 34 | +### Example: Gemini CLI Configuration |
| 35 | + |
| 36 | +Edit `~/.gemini/settings.json`: |
| 37 | + |
| 38 | +```json |
| 39 | +{ |
19 | 40 | "theme": "Default", |
20 | 41 | "selectedAuthType": "oauth-personal", |
21 | 42 | "mcpServers": { |
|
26 | 47 | } |
27 | 48 | ``` |
28 | 49 |
|
29 | | - And for system instructions, replace the `~/.gemini/GEMINI.md` with the [GEMINI.md](https://github.com/instavm/coderunner/examples/gemini/GEMINI.md) |
| 50 | +For system instructions, replace `~/.gemini/GEMINI.md` with [GEMINI.md](https://github.com/instavm/coderunner/blob/main/examples/gemini/GEMINI.md) |
| 51 | + |
| 52 | +### Other Supported Tools |
| 53 | + |
| 54 | +- **Claude Desktop:** See [configuration guide](https://github.com/instavm/coderunner#option-1-claude-desktop-integration) |
| 55 | +- **Qwen CLI:** Configure similar to Gemini CLI |
| 56 | +- **Any MCP client:** Point to `http://coderunner.local:8222/mcp` |
30 | 57 |
|
| 58 | +## Example Use Cases |
31 | 59 |
|
32 | | -# How To Add New Skills |
| 60 | +Once configured, you can ask your AI to: |
33 | 61 |
|
34 | | -## Option 1: Import from Claude |
| 62 | +- "Create a professional PowerPoint presentation from this markdown outline" |
| 63 | +- "Extract all tables from these 10 PDFs and combine into one Excel spreadsheet" |
| 64 | +- "Generate ASCII art logo for my project" |
| 65 | +- "Fill out this tax form PDF with data from my CSV file" |
| 66 | +- "Batch process these 100 images: crop to 16:9 and rotate 90 degrees" |
35 | 67 |
|
36 | | -You can either download and copy the folder from Anthropic skills's [github repo](https://github.com/anthropics/skills/) to `~/.coderunner/assets/skills/user/<new-skill-folder>` |
37 | 68 |
|
38 | | -For example, I have added 4 skills in the user folder as: |
| 69 | +## Adding New Skills |
| 70 | + |
| 71 | +You can extend CodeRunner with additional skills in two ways: |
| 72 | + |
| 73 | +### Option 1: Import Anthropic's Official Skills |
| 74 | + |
| 75 | +Download skills from [Anthropic's skills repository](https://github.com/anthropics/skills/) and copy to: |
| 76 | + |
| 77 | +``` |
| 78 | +~/.coderunner/assets/skills/user/<new-skill-folder> |
| 79 | +``` |
| 80 | + |
| 81 | +**Available Official Skills:** |
| 82 | +- Microsoft Word (docx) |
| 83 | +- Microsoft PowerPoint (pptx) |
| 84 | +- Microsoft Excel (xlsx) |
| 85 | +- PDF manipulation |
| 86 | +- Image processing |
| 87 | +- Slack GIF creator |
| 88 | +- And more... |
| 89 | + |
| 90 | +### Skills Directory Structure |
| 91 | + |
| 92 | +Here's an example with 4 imported skills: |
39 | 93 | ```shell |
40 | 94 | /Users/manish/.coderunner/assets/skills/ |
41 | 95 | ├── public |
@@ -73,13 +127,49 @@ For example, I have added 4 skills in the user folder as: |
73 | 127 | ``` |
74 | 128 |
|
75 | 129 |
|
76 | | -## Option 2: Write Your Own Skills |
| 130 | +### Option 2: Create Your Own Skills |
| 131 | + |
| 132 | +Create a folder matching the structure shown above. The only mandatory file is `SKILL.md`. See [Anthropic's skills documentation](https://docs.claude.com/en/docs/agents-and-tools/agent-skills/overview) for details. |
| 133 | + |
| 134 | +**Quick Method:** |
| 135 | +Ask Claude to generate a skill for you: |
| 136 | + |
| 137 | +> "Can you write a skill which creates ASCII art of words?" |
77 | 138 |
|
78 | | -* You can create a folder in the similar structure as above, where only mandatory file is the `SKILL.md`. [Docs](https://docs.claude.com/en/docs/agents-and-tools/agent-skills/overview) |
79 | | -* You can also ask claude to generate one like `Can you write a skill which creates ascii art of words given one.` |
80 | | - After it creates the skill, it will let you download a `ZIP` file which you can place directly (no need to expand) in `~/.coderunner/assets/skills/user` |
| 139 | +Claude will create the skill and offer a ZIP download. Place the ZIP file directly in `~/.coderunner/assets/skills/user` (no need to expand). |
81 | 140 |
|
82 | | -Test drive with Gemini CLI |
| 141 | +**Manual Method:** |
| 142 | +Create your own skill folder structure: |
| 143 | + |
| 144 | +``` |
| 145 | +~/.coderunner/assets/skills/user/my-custom-skill/ |
| 146 | +├── SKILL.md # Documentation and usage examples |
| 147 | +├── scripts/ # Your Python/bash scripts |
| 148 | +│ └── process.py |
| 149 | +└── requirements.txt # (optional) Python dependencies |
| 150 | +``` |
| 151 | + |
| 152 | +## How Folder Mapping Works |
| 153 | + |
| 154 | +CodeRunner provides a compatibility layer that lets you run Claude's skills locally without modification: |
| 155 | + |
| 156 | +**Path Translation:** |
| 157 | +- Claude's path: `/mnt/user-data` → CodeRunner's path: `/app/uploads` |
| 158 | +- Skills designed for Claude work locally without any changes |
| 159 | + |
| 160 | +**Accessing Your Local Files:** |
| 161 | +- Place files in `~/.coderunner/assets/outputs` on your Mac |
| 162 | +- They become available to skills inside the container via volume mounts |
| 163 | +- The mapping is automatic - skills can access your files without cloud upload |
| 164 | + |
| 165 | +**Skill Structure:** |
| 166 | +- No changes needed to imported skills |
| 167 | +- Original folder hierarchy and file organization remain identical |
| 168 | +- Import Claude skills and use them directly |
| 169 | + |
| 170 | +## Live Demo: ASCII Art Skill |
| 171 | + |
| 172 | +Here's a real example using Gemini CLI: |
83 | 173 |
|
84 | 174 | ``` |
85 | 175 | > /mcp |
@@ -115,3 +205,41 @@ Configured MCP servers: |
115 | 205 |
|
116 | 206 | Using: 1 GEMINI.md file | 3 MCP servers (ctrl+t to view) |
117 | 207 | ``` |
| 208 | + |
| 209 | +**What happened:** |
| 210 | +1. AI discovered available skills via `list_skills` |
| 211 | +2. Found the relevant `ascii-art` skill |
| 212 | +3. Retrieved skill instructions with `get_skill_info` |
| 213 | +4. Executed the skill locally in the sandbox |
| 214 | +5. Returned results - all without uploading any data to the cloud |
| 215 | + |
| 216 | + |
| 217 | + |
| 218 | +From [@apple/container](https://github.com/apple/container/blob/main/docs/technical-overview.md): |
| 219 | +> Each container has the isolation properties of a full VM, using a minimal set of core utilities and dynamic libraries to reduce resource utilization and attack surface. |
| 220 | +
|
| 221 | +## Available MCP Tools |
| 222 | + |
| 223 | +When connected, CodeRunner exposes these tools to your AI: |
| 224 | + |
| 225 | +- `execute_python_code` - Execute code in the sandbox |
| 226 | +- `get_skill_file` - Read skill files |
| 227 | +- `get_skill_info` - Get skill documentation |
| 228 | +- `list_skills` - List all available skills |
| 229 | +- `navigate_and_get_all_visible_text` - Web scraping with Playwright |
| 230 | + |
| 231 | +## Learn More |
| 232 | + |
| 233 | +- **Main Repository:** [github.com/instavm/coderunner](https://github.com/instavm/coderunner) |
| 234 | +- **Anthropic Skills:** [github.com/anthropics/skills](https://github.com/anthropics/skills) |
| 235 | +- **Skills Documentation:** [docs.claude.com/skills](https://docs.claude.com/en/docs/agents-and-tools/agent-skills/overview) |
| 236 | +- **Blog: Building Offline Workspace:** [instavm.io/blog/building-my-offline-workspace-part-2-skills](https://instavm.io/blog/building-my-offline-workspace-part-2-skills) |
| 237 | +- **Report Issues:** [github.com/instavm/coderunner/issues](https://github.com/instavm/coderunner/issues) |
| 238 | + |
| 239 | +## Contributing |
| 240 | + |
| 241 | +We welcome contributions! If you create useful skills or improve the coderunner implementation, please share them with the community. |
| 242 | + |
| 243 | +## License |
| 244 | + |
| 245 | +This project is licensed under the Apache 2.0 License - see the [LICENSE](https://github.com/instavm/coderunner/blob/main/LICENSE) file for details. |
0 commit comments