一键导入
cli-tool-creator
Create, update, validate, and review Batshit CLI Tools from an outside coding agent using a Portable Skill Token.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Create, update, validate, and review Batshit CLI Tools from an outside coding agent using a Portable Skill Token.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Build, configure, and publish persistent mini-app artifacts in Batshit.
Create, update, test, and review Batshit CLI tools through a light Fabric-driven workflow.
Create, update, and refine Batshit skills and prompts that work well with any AI model.
Install, verify, and register Batshit TTS/STT speech engines through the server-owned Engine Manager.
Build, validate, update, and publish Batshit artifacts from an outside coding agent using a Portable Skill Token.
Create, update, and import Batshit skills or prompt commands from an outside coding agent using a Portable Skill Token.
| name | cli-tool-creator |
| description | Create, update, validate, and review Batshit CLI Tools from an outside coding agent using a Portable Skill Token. |
| metadata | {"version":"0.1.0","batshitPortableSkill":true,"family":"cli-tools"} |
You are running outside Batshit. Your job is to help the user turn an installed command, script, or local program into a clean Batshit CLI Tool record.
This portable skill uses Batshit's Fabric controls over HTTP. Do not write Redis directly. Do not edit Batshit app source. Do not use BATSHIT_TOKEN, user passwords, copied browser cookies, or n8n callback tokens.
Before doing real work, establish:
http://127.0.0.1:5620CLI Tools scopeIf the user has not provided the token, ask them to create one in Batshit Settings -> Skills & Prompts -> Portable Skills and grant CLI Tools. A multi-scope token may be stored once in ~/.batshit/portable-skills/portable-skills.env; a skill-specific file such as cli-tool-creator.env is only needed when the user wants a narrower override token.
Use environment variables for shell calls so the token is not repeated in every command:
PORTABLE_SKILL_ENV_DIR="${BATSHIT_PORTABLE_SKILL_ENV_DIR:-$HOME/.batshit/portable-skills}"
PORTABLE_SKILL_ENV_FILE="${BATSHIT_PORTABLE_SKILL_ENV_FILE:-$PORTABLE_SKILL_ENV_DIR/portable-skills.env}"
if [ -z "${BATSHIT_PORTABLE_TOKEN:-${BATSHIT_PORTABLE_SKILL_TOKEN:-}}" ]; then
if [ -f "$PORTABLE_SKILL_ENV_FILE" ]; then
set -a
. "$PORTABLE_SKILL_ENV_FILE"
set +a
elif [ -f "$PORTABLE_SKILL_ENV_DIR/cli-tool-creator.env" ]; then
set -a
. "$PORTABLE_SKILL_ENV_DIR/cli-tool-creator.env"
set +a
fi
fi
export BATSHIT_BASE_URL="${BATSHIT_BASE_URL:-http://127.0.0.1:5620}"
export BATSHIT_PORTABLE_TOKEN="${BATSHIT_PORTABLE_TOKEN:-${BATSHIT_PORTABLE_SKILL_TOKEN:-}}"
If BATSHIT_PORTABLE_TOKEN is missing or still equals the placeholder value, stop and ask the user for the token or env-file path before making API calls.
Run this before any tool mutation.
curl -sS "$BATSHIT_BASE_URL/api/health"
Require ok: true. If Batshit is not reachable, stop and tell the user to start Batshit or provide the correct base URL.
curl -sS "$BATSHIT_BASE_URL/api/controls/use" \
-H "Content-Type: application/json" \
-H "x-batshit-portable-token: $BATSHIT_PORTABLE_TOKEN" \
--data '{"controlId":"sys.cli_tool.list","input":{}}'
Require a successful response. If the response says the token lacks scope, stop and tell the user to rotate or create a token with CLI Tools.
Any in-app instruction to call a Fabric control maps to this portable HTTP shape:
curl -sS "$BATSHIT_BASE_URL/api/controls/use" \
-H "Content-Type: application/json" \
-H "x-batshit-portable-token: $BATSHIT_PORTABLE_TOKEN" \
--data '{
"controlId": "sys.cli_tool.create",
"input": {}
}'
Use /api/controls/find when you need current schema details:
curl -sS "$BATSHIT_BASE_URL/api/controls/find" \
-H "Content-Type: application/json" \
-H "x-batshit-portable-token: $BATSHIT_PORTABLE_TOKEN" \
--data '{"query":"sys.cli_tool.create","includeSchema":true,"limit":5}'
Portable Skill Tokens are the standing approval for the granted family. Confirm-level controls such as sys.cli_tool.test run through the same endpoint after scope passes.
command -v, which, --help, -h, --version, or direct file reads.sys.cli_tool.test unless the user explicitly says not to.Follow this order:
titledescriptionexecutableargsTemplateinputSchemaoutputModeparseModesys.cli_tool.list and update an existing matching tool when appropriate.sys.cli_tool.create or sys.cli_tool.update.sys.cli_tool.test with the saved toolId.Use structured entries, not one raw shell string:
{ "kind": "literal", "value": "--json" }{ "kind": "input", "field": "inputFile", "required": true }{ "kind": "option", "flag": "--format", "field": "format" }{ "kind": "flag", "flag": "--verbose", "field": "verbose" }{ "kind": "repeat", "field": "files", "flag": "-i" }Path inputs should use JSON Schema "format": "path" when Batshit path safety matters.
sys.cli_tool.listsys.cli_tool.getsys.cli_tool.createsys.cli_tool.updatesys.cli_tool.testsys.cli_tool.archivesys.cli_tool.deleteEnd with:
toolIdDo not call the tool done if the saved record cannot be validated.