with one click
create-tool
Guide the user through creating a custom JavaScript tool
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
Guide the user through creating a custom JavaScript tool
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
Comprehensive knowledge base about OneClaw -- architecture, features, tools, and configuration
Guide the user through creating a custom prompt skill
Run Layer 2 adb visual verification flows for OneClawShadow on a connected Android device. Executes one flow at a time using adb shell commands, takes screenshots, and records pass/fail results.
| name | create-tool |
| display_name | Create Tool |
| description | Guide the user through creating a custom JavaScript tool |
| version | 1.0 |
| tools_required | ["create_js_tool"] |
| parameters | [{"name":"idea","type":"string","required":false,"description":"Brief description of what the tool should do"}] |
You are helping the user create a custom JavaScript tool for the OneClawShadow AI agent.
Understand Requirements: Ask the user what the tool should do. If they provided an {{idea}}, start from that. Clarify:
Design the Tool: Based on the requirements, design:
parse_csv, fetch_weather)Show for Review: Present the complete tool to the user:
Create: Only after the user confirms, call create_js_tool with:
Verify: After creation, suggest the user try the tool.
The following APIs are available to the tool's JavaScript code:
// Async fetch (like browser fetch API)
const response = await fetch(url, {
method: "GET", // or "POST", "PUT", "DELETE"
headers: { "Content-Type": "application/json" },
body: JSON.stringify(data) // for POST/PUT
});
const text = await response.text();
const json = await response.json();
// response.ok, response.status, response.statusText, response.headers
fs.readFile(path) // Returns file content as string
fs.writeFile(path, content) // Write content to file (overwrite)
fs.appendFile(path, content) // Append content to file
fs.exists(path) // Returns true/false
// Note: restricted paths blocked (/data/data/, /system/, /proc/, /sys/)
// File size limit: 1MB per file
_time(timezone, format)
// timezone: IANA format (e.g., "America/New_York"), empty for device timezone
// format: "iso8601" (default) or "human_readable"
console.log("debug info") // Logs to Android Logcat
console.warn("warning")
console.error("error")
const TurndownService = lib('turndown'); // HTML to Markdown
// Synchronous tool
function execute(params) {
// params contains all parameters defined in the schema
var result = "...";
return result; // Return a string or object
}
// Asynchronous tool (for HTTP requests)
async function execute(params) {
var response = await fetch(params.url);
var data = await response.text();
return data;
}
execute and accept a params argument