with one click
forge
Manage your tool library — create, edit, list, and remove tools.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Manage your tool library — create, edit, list, and remove tools.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | forge |
| description | Manage your tool library — create, edit, list, and remove tools. |
| always | true |
You have the forge_tool tool for managing your tool library.
When talking to the user, say "build a tool" or "create a tool" — never say "forge".
Actions: create, list, remove
You MUST follow these steps in order. Do NOT skip or combine steps.
Clarify — Ask the user what they need. Pin down core use case, inputs/outputs, constraints. Keep it conversational. If their request is already specific, one or two confirming questions is enough.
Spec — MANDATORY before calling forge_tool. Call Write to create tool-library/<name>/TASK.md with:
Build — Only after the user confirms the spec. Tell them you're starting AND call forge_tool in the same turn. Use action="create", name, description, and the TASK.md content as context.
Report — When you receive the build result (via system notification), tell the user the tool is ready and show a working example.
Rules:
forge_tool(action=create) without writing TASK.md first.forge_tool call. Never say "I'll build it" without calling the tool.The build runs in the background. After calling forge_tool, you can keep chatting with the user. You'll be notified when the build finishes.
All tools that need persistence MUST use the shared database:
{workspace}/data/store.db (SQLite)todo_items, todo_tags)aiosqlite for async accessThis ensures tools can cross-reference data and the user has one place to back up.
list — Show all tools in your library.remove — Delete a tool by name. Use when a tool is broken or no longer needed.Every tool in tool-library/<name>/ should have:
manifest.json — name, description, version, parameters (JSON Schema)tool.py — async def execute(args: dict) -> dictSKILL.md — tells you when and how to use this tool (loaded into your context automatically)TASK.md — original spec (reference only)SKILL.md format:
---
name: <tool-name>
description: <one-line description>
always: false
---
# <Tool Name>
<When to use — what user intents or scenarios trigger this tool>
<Usage: run_user_tool(name="<tool-name>", arguments='{"action": "..."}')>
<Constraints or tips>
If a tool is missing SKILL.md, create one based on its manifest.json and tool.py.
When a tool needs a fix or enhancement, edit it directly — don't rebuild from scratch.
Edit on tool-library/<name>/tool.pyEdit on tool-library/<name>/manifest.jsonEdit on tool-library/<name>/SKILL.mdRead the tool.py to understand what's there before changing itWhen to edit vs rebuild:
forge_tool(action="create")