Use when working on the qol-tray task runner IDE checkout API contract, actions, and execution flow.
How this skill is triggered — by the user, by Claude, or both
Slash command
/qol-plugin-ide-checkout:qol-tray-task-runner-ide-checkoutThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A generic HTTP API standard for browser extensions to execute arbitrary tasks via a local daemon.
A generic HTTP API standard for browser extensions to execute arbitrary tasks via a local daemon.
The Task Runner daemon exposes a REST-like API on 127.0.0.1:{PORT}. Browser extensions can:
GET /actionsPOST /executeGET /healthHealth check endpoint.
Response (200):
{
"status": "ok",
"version": "1.0.0"
}
Discover available actions and their schemas.
Response (200):
{
"actions": [
{
"id": "git-checkout",
"name": "Git Checkout",
"description": "Clone/checkout a git branch to a temp directory",
"params": {
"projectPath": { "type": "string", "required": true, "description": "Path to local git repo" },
"branch": { "type": "string", "required": true, "description": "Branch name to checkout" }
},
"returns": {
"tempPath": { "type": "string", "description": "Path to the checked-out temp repo" }
}
},
{
"id": "open-app",
"name": "Open Application",
"description": "Open a file or directory in a configured application",
"params": {
"app": { "type": "string", "required": true, "description": "App ID from config (e.g., 'idea', 'vscode', 'cursor')" },
"path": { "type": "string", "required": true, "description": "Path to open" }
},
"returns": {}
},
{
"id": "run-script",
"name": "Run Script",
"description": "Execute a registered script with arguments",
"params": {
"script": { "type": "string", "required": true, "description": "Script ID from config" },
"args": { "type": "object", "required": false, "description": "Key-value arguments passed as env vars" }
},
"returns": {
"stdout": { "type": "string", "description": "Script output" },
"exitCode": { "type": "number", "description": "Exit code" }
}
}
]
}
Execute an action.
Request:
{
"action": "git-checkout",
"params": {
"projectPath": "/path/to/repo",
"branch": "feature/foo"
}
}
Response (200):
{
"success": true,
"action": "git-checkout",
"result": {
"tempPath": "/tmp/task-runner/repo_feature-foo"
}
}
Error Response (4xx/5xx):
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "Missing required parameter: projectPath"
}
}
Execute multiple actions in sequence. Each action can reference results from previous actions.
Request:
{
"chain": [
{
"id": "checkout",
"action": "git-checkout",
"params": {
"projectPath": "/path/to/repo",
"branch": "feature/foo"
}
},
{
"id": "open",
"action": "open-app",
"params": {
"app": "idea",
"path": "{{checkout.tempPath}}"
}
}
]
}
Response (200):
{
"success": true,
"results": {
"checkout": { "tempPath": "/tmp/task-runner/repo_feature-foo" },
"open": {}
}
}
{
"apps": {
"idea": {
"name": "IntelliJ IDEA",
"paths": [
"/opt/homebrew/bin/idea",
"/usr/local/bin/idea",
"/snap/bin/idea-ultimate",
"~/.local/share/JetBrains/Toolbox/scripts/idea"
]
},
"vscode": {
"name": "VS Code",
"paths": [
"/usr/bin/code",
"/opt/homebrew/bin/code",
"/snap/bin/code"
]
},
"cursor": {
"name": "Cursor",
"paths": [
"/opt/homebrew/bin/cursor",
"/usr/bin/cursor"
]
}
},
"scripts": {
"build": {
"name": "Build Project",
"command": "./build.sh",
"cwd": "{{params.path}}",
"timeout": 300
}
},
"tempDir": "/tmp/task-runner"
}
| Code | Description |
|---|---|
INVALID_ACTION | Action ID not found |
INVALID_PARAMS | Missing or invalid parameters |
APP_NOT_FOUND | Configured app not found on system |
SCRIPT_NOT_FOUND | Script ID not registered |
EXECUTION_FAILED | Action execution failed |
TIMEOUT | Action exceeded timeout |
Clones a git repository to a temp directory and checks out a specific branch.
Behavior:
projectPath{tempDir}/{repoName}_{safeBranch}Opens a path in a configured application.
Behavior:
app in configpath as argumentExecutes a registered script.
Behavior:
script in config{{params.x}} in command and cwdargs as environment variablesconst DAEMON_URL = 'http://127.0.0.1:42710';
async function checkoutAndOpen(projectPath, branch, ide = 'idea') {
const response = await fetch(`${DAEMON_URL}/execute`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
chain: [
{
id: 'checkout',
action: 'git-checkout',
params: { projectPath, branch }
},
{
id: 'open',
action: 'open-app',
params: { app: ide, path: '{{checkout.tempPath}}' }
}
]
})
});
return response.json();
}
async function getAvailableIDEs() {
const response = await fetch(`${DAEMON_URL}/actions`);
const { actions } = await response.json();
const openApp = actions.find(a => a.id === 'open-app');
// Extension can now show dropdown of available apps
}
npx claudepluginhub qol-tools/qol-skills --plugin qol-plugin-ide-checkoutCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.