Sandboxed.sh Library Management
The Sandboxed.sh Library is a Git-backed configuration repo that stores reusable skills, agents,
commands, tools, rules, MCP servers, and workspace templates. Use the library-* tools to
read and update that repo.
When to Use
- Creating or updating skills, agents, commands, tools, rules, or MCPs
- Syncing library git state (status/sync/commit/push)
- Updating workspace templates or plugins in the library
When NOT to Use
- Local file operations unrelated to the library
- Running missions or managing workspace lifecycle
Tool Map (file name + export)
Tool names follow the pattern <filename>_<export>.
Skills (library-skills.ts)
library-skills_list_skills
library-skills_get_skill
library-skills_save_skill
library-skills_delete_skill
Agents (library-agents.ts)
library-agents_list_agents
library-agents_get_agent
library-agents_save_agent
library-agents_delete_agent
Commands / Tools / Rules (library-commands.ts)
- Commands:
library-commands_list_commands, library-commands_get_command, library-commands_save_command, library-commands_delete_command
- Tools:
library-commands_list_tools, library-commands_get_tool, library-commands_save_tool, library-commands_delete_tool
- Rules:
library-commands_list_rules, library-commands_get_rule, library-commands_save_rule, library-commands_delete_rule
MCPs + Git (library-git.ts)
- MCPs:
library-git_get_mcps, library-git_save_mcps
- Git:
library-git_status, library-git_sync, library-git_commit, library-git_push
Procedure
- List existing items
- Get current content before editing
- Save the full updated content (frontmatter + body)
- Commit with a clear message
- Push to sync the library remote
File Formats
Skill (skill/<name>/SKILL.md)
---
name: skill-name
description: What this skill does
---
Instructions for using this skill...
Agent (agent/<name>.md)
---
description: Agent description
mode: primary | subagent
model: provider/model-id
hidden: true | false
color: "#44BA81"
tools:
"*": false
"read": true
"write": true
permission:
edit: ask | allow | deny
bash:
"*": ask
rules:
- rule-name
---
Agent system prompt...
Command (command/<name>.md)
---
description: Command description
model: provider/model-id
subtask: true | false
agent: agent-name
---
Command prompt template. Use $ARGUMENTS for user input.
Tool (tool/<name>.ts)
import { tool } from "@opencode-ai/plugin"
export const my_tool = tool({
description: "What it does",
args: { param: tool.schema.string().describe("Param description") },
async execute(args) {
return "result"
},
})
Rule (rule/<name>.md)
---
description: Rule description
---
Rule instructions applied to agents referencing this rule.
MCPs (mcp/servers.json)
{
"server-name": {
"type": "local",
"command": ["npx", "package-name"],
"env": { "KEY": "value" },
"enabled": true
},
"remote-server": {
"type": "remote",
"url": "https://mcp.example.com",
"headers": { "Authorization": "Bearer token" },
"enabled": true
}
}
Guardrails
- Always read before updating to avoid overwrites
- Keep names lowercase (hyphens allowed) and within 1-64 chars
- Use descriptive commit messages
- Check
library-git_status before pushing
1---2name: library-management-23description: Manage the Sandboxed.sh library (skills, agents, commands, tools, rules, MCPs) via Library API tools. Trigger terms: library, skill, agent, command, tool, rule, MCP, save skill, create skill.4---56# Sandboxed.sh Library Management78The Sandboxed.sh Library is a Git-backed configuration repo that stores reusable skills, agents,9commands, tools, rules, MCP servers, and workspace templates. Use the `library-*` tools to10read and update that repo.1112## When to Use13- Creating or updating skills, agents, commands, tools, rules, or MCPs14- Syncing library git state (status/sync/commit/push)15- Updating workspace templates or plugins in the library1617## When NOT to Use18- Local file operations unrelated to the library19- Running missions or managing workspace lifecycle2021## Tool Map (file name + export)22Tool names follow the pattern `<filename>_<export>`.2324### Skills (`library-skills.ts`)25- `library-skills_list_skills`26- `library-skills_get_skill`27- `library-skills_save_skill`28- `library-skills_delete_skill`2930### Agents (`library-agents.ts`)31- `library-agents_list_agents`32- `library-agents_get_agent`33- `library-agents_save_agent`34- `library-agents_delete_agent`3536### Commands / Tools / Rules (`library-commands.ts`)37- Commands: `library-commands_list_commands`, `library-commands_get_command`, `library-commands_save_command`, `library-commands_delete_command`38- Tools: `library-commands_list_tools`, `library-commands_get_tool`, `library-commands_save_tool`, `library-commands_delete_tool`39- Rules: `library-commands_list_rules`, `library-commands_get_rule`, `library-commands_save_rule`, `library-commands_delete_rule`4041### MCPs + Git (`library-git.ts`)42- MCPs: `library-git_get_mcps`, `library-git_save_mcps`43- Git: `library-git_status`, `library-git_sync`, `library-git_commit`, `library-git_push`4445## Procedure461. **List** existing items472. **Get** current content before editing483. **Save** the full updated content (frontmatter + body)494. **Commit** with a clear message505. **Push** to sync the library remote5152## File Formats5354### Skill (`skill/<name>/SKILL.md`)55```yaml56---57name: skill-name58description: What this skill does59---60Instructions for using this skill...61```6263### Agent (`agent/<name>.md`)64```yaml65---66description: Agent description67mode: primary | subagent68model: provider/model-id69hidden: true | false70color: "#44BA81"71tools:72 "*": false73 "read": true74 "write": true75permission:76 edit: ask | allow | deny77 bash:78 "*": ask79rules:80 - rule-name81---82Agent system prompt...83```8485### Command (`command/<name>.md`)86```yaml87---88description: Command description89model: provider/model-id90subtask: true | false91agent: agent-name92---93Command prompt template. Use $ARGUMENTS for user input.94```9596### Tool (`tool/<name>.ts`)97```typescript98import { tool } from "@opencode-ai/plugin"99100export const my_tool = tool({101 description: "What it does",102 args: { param: tool.schema.string().describe("Param description") },103 async execute(args) {104 return "result"105 },106})107```108109### Rule (`rule/<name>.md`)110```yaml111---112description: Rule description113---114Rule instructions applied to agents referencing this rule.115```116117### MCPs (`mcp/servers.json`)118```json119{120 "server-name": {121 "type": "local",122 "command": ["npx", "package-name"],123 "env": { "KEY": "value" },124 "enabled": true125 },126 "remote-server": {127 "type": "remote",128 "url": "https://mcp.example.com",129 "headers": { "Authorization": "Bearer token" },130 "enabled": true131 }132}133```134135## Guardrails136- Always read before updating to avoid overwrites137- Keep names lowercase (hyphens allowed) and within 1-64 chars138- Use descriptive commit messages139- Check `library-git_status` before pushing