- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 24
Skills #12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Skills #12
Changes from all commits
971310a
              a673621
              2c37d4d
              f8c4bf1
              cabecbb
              4f131c4
              File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | 
|---|---|---|
|  | @@ -41,6 +41,16 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| libgbm1 \ | ||
| libxshmfence1 \ | ||
| libasound2 \ | ||
| unzip \ | ||
| p7zip-full \ | ||
| bc \ | ||
| ripgrep \ | ||
| fd-find \ | ||
| sqlite3 \ | ||
| libsqlite3-dev \ | ||
| wkhtmltopdf \ | ||
| poppler-utils \ | ||
| default-jre \ | ||
| && apt-get clean && rm -rf /var/lib/apt/lists/* | ||
|  | ||
|  | ||
|  | @@ -64,6 +74,12 @@ COPY ./server.py /app/server.py | |
| # Create application/jupyter directories | ||
| RUN mkdir -p /app/uploads /app/jupyter_runtime | ||
|  | ||
| # Copy skills directory structure into the container | ||
| # Public skills are baked into the image | ||
| # User skills directory is created as mount point for user-added skills | ||
| COPY ./skills/public /app/uploads/skills/public | ||
| RUN mkdir -p /app/uploads/skills/user | ||
|  | ||
| # # Generate SSH host keys | ||
| # RUN ssh-keygen -A | ||
|  | ||
|  | @@ -81,20 +97,26 @@ EXPOSE 8222 | |
| # Start the FastAPI application | ||
| # CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8002", "--workers", "1", "--no-access-log"] | ||
|  | ||
| RUN apt-get --fix-broken install | ||
| # Ensure Node.js, npm (and npx) are set up | ||
| RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - | ||
| RUN apt-get install -y nodejs | ||
| 
      Comment on lines
    
      +102
     to 
      +103
    
   There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. | ||
|  | ||
|  | ||
|  | ||
| ENV PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | ||
| RUN npm install playwright@1.53.0 -g | ||
| RUN npx playwright@1.53.0 install | ||
| 
      Comment on lines
    
      +108
     to 
      +109
    
   There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Similar to the Node.js installation, you can combine the   | ||
|  | ||
| # Copy the entrypoint script into the image | ||
| COPY entrypoint.sh /entrypoint.sh | ||
|  | ||
| # Make the entrypoint script executable | ||
| RUN chmod +x /entrypoint.sh | ||
|  | ||
| # Ensure Node.js, npm (and npx) are set up | ||
| RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - | ||
| RUN apt-get install -y nodejs | ||
|  | ||
| ENV PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | ||
| RUN npm install playwright@1.53.0 -g | ||
| RUN npx playwright@1.53.0 install | ||
|  | ||
|  | ||
|  | ||
|  | ||
| # Use the entrypoint script | ||
|  | ||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,117 @@ | ||||||
| # Skills powered by coderunner, running locally on your Mac | ||||||
|  | ||||||
| > [!NOTE] | ||||||
| > [CodeRunner](https://github.com/instavm/coderunner) executes AI-generated code in a truly isolated sandboxed environment on your Mac using Apple's native containers. | ||||||
| # Pre-requisite | ||||||
| * `Mac` with a `M-series` chip. | ||||||
| * Install the latest`coderunner` by running the `./install.sh` script from the main repository. | ||||||
| ```shell | ||||||
| ./install.sh | ||||||
| ``` | ||||||
|  | ||||||
| # How To Use Skills | ||||||
| * `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. | ||||||
|  | ||||||
| *For example, for Gemini CLI, you can edit* `~/.gemini/settings.json` | ||||||
| ```json | ||||||
| { | ||||||
| "theme": "Default", | ||||||
| "selectedAuthType": "oauth-personal", | ||||||
| "mcpServers": { | ||||||
| "coderunner": { | ||||||
| "httpUrl": "http://coderunner.local:8222/mcp" | ||||||
| } | ||||||
| } | ||||||
| } | ||||||
| ``` | ||||||
|  | ||||||
| And for system instructions, replace the `~/.gemini/GEMINI.md` with the [GEMINI.md](https://github.com/instavm/coderunner/examples/gemini/GEMINI.md) | ||||||
|  | ||||||
|  | ||||||
| # How To Add New Skills | ||||||
|  | ||||||
| ## Option 1: Import from Claude | ||||||
|  | ||||||
| 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>` | ||||||
|  | ||||||
| For example, I have added 4 skills in the user folder as: | ||||||
| ```shell | ||||||
| /Users/manish/.coderunner/assets/skills/ | ||||||
| There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The example directory structure includes a hardcoded, user-specific path ( 
        Suggested change
       
 | ||||||
| ├── public | ||||||
| │ ├── image-crop-rotate | ||||||
| │ │ ├── scripts | ||||||
| │ │ └── SKILL.md | ||||||
| │ └── pdf-text-replace | ||||||
| │ ├── scripts | ||||||
| │ └── SKILL.md | ||||||
| └── user | ||||||
| ├── docx | ||||||
| │ ├── docx-js.md | ||||||
| │ ├── LICENSE.txt | ||||||
| │ ├── ooxml | ||||||
| │ ├── ooxml.md | ||||||
| │ ├── scripts | ||||||
| │ └── SKILL.md | ||||||
| ├── pptx | ||||||
| │ ├── html2pptx.md | ||||||
| │ ├── LICENSE.txt | ||||||
| │ ├── ooxml | ||||||
| │ ├── ooxml.md | ||||||
| │ ├── scripts | ||||||
| │ └── SKILL.md | ||||||
| ├── slack-gif-creator | ||||||
| │ ├── core | ||||||
| │ ├── LICENSE.txt | ||||||
| │ ├── requirements.txt | ||||||
| │ ├── SKILL.md | ||||||
| │ └── templates | ||||||
| └── xlsx | ||||||
| ├── LICENSE.txt | ||||||
| ├── recalc.py | ||||||
| └── SKILL.md | ||||||
| ``` | ||||||
|  | ||||||
|  | ||||||
| ## Option 2: Write Your Own Skills | ||||||
|  | ||||||
| * 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) | ||||||
| * You can also ask claude to generate one like `Can you write a skill which creates ascii art of words given one.` | ||||||
| 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` | ||||||
|  | ||||||
| Test drive with Gemini CLI | ||||||
|  | ||||||
| ``` | ||||||
| > /mcp | ||||||
| Configured MCP servers: | ||||||
| 🟢 coderunner - Ready (5 tools) | ||||||
| Tools: | ||||||
| - execute_python_code | ||||||
| - get_skill_file | ||||||
| - get_skill_info | ||||||
| - list_skills | ||||||
| - navigate_and_get_all_visible_text | ||||||
| > can you generate ascii art for "CODERUNNER" | ||||||
| ✦ I will generate the ASCII art you desire. First, I must survey my available skills. | ||||||
| ✓ list_skills (coderunner MCP Server) | ||||||
| ✦ I have located a relevant skill: ascii-art. I will now retrieve its instructions. | ||||||
| ✓ get_skill_info (coderunner MCP Server) {"skill_name":"ascii-art"} | ||||||
| ✦ Your ASCII art is ready: | ||||||
| 1 ____ ___ ____ _____ ____ _ _ _ _ _ _ _____ ____ | ||||||
| 2 / ___/ _ \| _ \| ____| _ \| | | | \ | | \ | | ____| _ \ | ||||||
| 3 | | | | | | | | | _| | |_) | | | | \| | \| | _| | |_) | | ||||||
| 4 | |__| |_| | |_| | |___| _ <| |_| | |\\ | |\\ | |___| _ < | ||||||
| 5 \____\___/|____/|_____|_| \_\\___/|_| \_|_| \_|_____|_| \_\ | ||||||
| 6 | ||||||
| Using: 1 GEMINI.md file | 3 MCP servers (ctrl+t to view) | ||||||
| ``` | ||||||
| Original file line number | Diff line number | Diff line change | 
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| always start answer by calling me lord voldemort. | ||
|  | ||
| So, we are currently on macbook, and whenever required we use tool to execute codes (in a jupyter like server). the code is executed in a container (you wouldn't notice but just know this). | ||
|  | ||
| The paths on local machine is ~/.coderunner/assets/skills/user is mapped to /app/uploads/skills/user inside container. | ||
|  | ||
| ~/.coderunner/assets/outputs (in the host machine) is mapped to /app/uploads/outputs inside conatiner. This is where user will puts their files they want to edit like some png, pdf, txt etc. You should also use it to output your artifacts generated. | ||
|  | ||
| So that will help whenever we need a file inside a container to work on it via the execute code tool. | ||
|  | ||
| There are also "skills" which can do jobs by executing scripts already residing in /app/uploads/skills/<public|user>/<skill-name> . There are tools available to check what skills are avaialble, after checking you can decide wchihc specific skill you wantg to use and then get info about that skill using tool. That will have instructions on how to call execute code with stuff like `!python /path/to/script.py <input> <output>`\ | ||
|  | ||
| Whenever I ask you to do a task, alwasys check if there are skills available in the list which can do it. | ||
|  | ||
| Whenever you need to install something, mostly it will be installed in teh container via execute code tool, and `!pip install pyfiglet` command etc. | ||
|  | ||
| 
      Comment on lines
    
      +1
     to 
      +16
    
   There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This prompt file contains several typos. Correcting them will improve clarity and ensure the LLM interprets the instructions as intended. 
 | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The
RUN apt-get --fix-broken installcommand is concerning. It lacks the-yflag, which will cause it to fail in non-interactive Docker builds by waiting for user confirmation. Additionally, its presence suggests an underlying issue with package dependencies that should ideally be resolved directly, rather than patched with--fix-broken. If this command is essential, please add the-yflag.