بنقرة واحدة
itx-execute
Execute the plan for an issue (parent or subtask)
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Execute the plan for an issue (parent or subtask)
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Cut a new clawrium release — bump version, sync docs, tag, trigger PyPI publish
Record a CLI demo (GIF or MP4) using VHS, with storyboard support for long-form / YouTube demos
Watch ric03uec/clawrium release tags; draft a short blog post per user-visible feature as a PR against blog/.
Detect user-visible changes from the last 24h of commits on main and propose doc and scenario updates as PRs.
Know the clawctl CLI and manage your Clawrium fleet (hosts, agents, providers, channels, integrations, skills, secrets)
Check hermes / openclaw / zeroclaw upstream releases and open GitHub issues for each agent that has a newer stable than what the manifest pins
| name | itx:execute |
| description | Execute the plan for an issue (parent or subtask) |
| argument-hint | [orchestrate] <issue-number> [in a subtree|--worktree] |
name: itx:execute
Execute the implementation plan for a GitHub issue.
Triggered by orchestrate as the first token in arguments
(e.g. /itx:execute orchestrate 112). Use when the issue is a parent
with linked subtasks and you want a hands-off, stacked-PR pipeline
across all subtasks.
addSubIssue). Detect via:
gh issue view <parent> --json title,body,labels && \
gh api graphql -f query='query($owner: String!, $repo: String!, $num: Int!) {
repository(owner: $owner, name: $repo) {
issue(number: $num) {
subIssues(first: 50) { nodes { number title state } }
}
}
}' -f owner="$OWNER" -f repo="$REPO" -F num=<parent>
tmux available on the host. If not, fail with a clear message —
orchestrate mode requires tmux..claude/itx-config.json mcp.review_enabled: true. If review is
not enabled, fail — orchestrate mode requires ATX to gate handoffs..itx/<parent>/00_PLAN.md (created by
/itx:plan-create). Refuse to start otherwise.The orchestrator (the claude session that runs orchestrate mode) does only these things:
claude --dangerously-skip-permissions '/itx:execute <N>' in the
subtask's worktree.The orchestrator does NOT:
--no-verify.Given subtasks A, B, C, D (in dependency order from sub-issue metadata), the orchestrator opens each child's PR against the predecessor's branch, not main:
| Sub | Branch | PR base |
|---|---|---|
| A | issue-<A>-<slug> | main |
| B | issue-<B>-<slug> | issue-<A>-<slug> |
| C | issue-<C>-<slug> | issue-<B>-<slug> |
| D | issue-<D>-<slug> | issue-<C>-<slug> |
As predecessors merge, GitHub auto-updates downstream PR bases to main.
itx/<parent> (e.g. itx/112).subtask-<letter> or
issue-<N> if subtasks have no obvious ordering letter.tmux attach -t itx/<parent>.Parse args. Extract orchestrate token + parent issue number.
Fall through to regular execution mode if orchestrate absent.
Verify preconditions (above). On failure, exit with a clear message citing the missing precondition.
Enumerate subtasks. Order by sub-issue number (creation order). Treat order as dependency order unless the plan file specifies otherwise.
Create tmux session:
tmux has-session -t "itx/${PARENT}" 2>/dev/null || \
tmux new-session -d -s "itx/${PARENT}"
Spawn subtask A:
REPO_NAME=$(basename $(git rev-parse --show-toplevel))
REPO_PARENT=$(dirname $(git rev-parse --show-toplevel))
WORKTREE_A="${REPO_PARENT}/${REPO_NAME}-issue-${A_NUM}"
BRANCH_A="issue-${A_NUM}-<slug>"
git worktree add "$WORKTREE_A" -b "$BRANCH_A" main
tmux new-window -t "itx/${PARENT}" -n "subtask-A" -c "$WORKTREE_A"
tmux send-keys -t "itx/${PARENT}:subtask-A" \
"claude --dangerously-skip-permissions '/itx:execute ${A_NUM}'" Enter
Poll predecessor PR state every 5 minutes:
gh pr list --repo "$OWNER/$REPO" --head "$BRANCH_A" \
--json number,state,reviewDecision,body --jq '.[0]'
The child claude opens its PR only after its internal ATX loop reaches Rating > 3/5 with no blockers. PR existence ⇒ ATX cleared.
Do not poll faster than 5 minutes. ATX iterations take minutes; faster polling burns cache without changing outcomes.
On predecessor PR open, spawn next subtask:
${REPO_PARENT}/${REPO_NAME}-issue-${NEXT_NUM}.claude --dangerously-skip-permissions \
"/itx:execute ${NEXT_NUM} --pr-base=${PREV_BRANCH}"
(Child sessions in standard mode must honor --pr-base — see
"PR base override" below.)Repeat until all subtasks have open PRs.
Final state. Orchestrator reports a summary table with each subtask's PR URL, ATX rating, and base branch. Then stands down. Merging is the user's decision; merging happens bottom-up.
A child session that fails to clear Rating > 3/5 after 3 ATX iterations
writes a marker comment on its own PR (or its issue if no PR exists
yet) with body starting [ITX-STUCK] and pauses.
The orchestrator's polling loop also matches [ITX-STUCK] comments on
the predecessor's issue. On detection:
When a child receives --pr-base=<branch>, it MUST:
main.Stacked on top of <branch> in the PR body so reviewers know
the dependency chain.authored-by:* label that matches the model which
actually produced the PR.If the child's mode does not support --pr-base, the orchestrator
falls back to opening the PR itself after the child finishes:
gh pr edit <pr-num> --base "$PREV_BRANCH"
Every PR opened by /itx:execute (directly or through a spawned child
session) MUST carry exactly one authored-by label.
Available labels:
authored-by:claudeauthored-by:gptauthored-by:geminiauthored-by:qwenauthored-by:local_qwenauthored-by:glmauthored-by:deepseekauthored-by:kimiSelection rules:
authored-by:local_qwen when the PR was produced by a local Qwen
run (for example local Hermes/opencode/Qwen execution), not the generic
authored-by:qwen label.gh pr edit.authored-by:* labels to the same PR./itx:execute <N> (without orchestrate) for direct execution.".claude/itx-config.json — gating signal missing.Triggered by in a subtree or --worktree in arguments. Enables working on multiple issues simultaneously.
<repo-parent>/<repo-name>-issue-<number>/
Example:
~/projects/clawrium/ # Main repo
~/projects/clawrium-issue-35/ # Worktree for issue 35
~/projects/clawrium-issue-42/ # Worktree for issue 42
Create Worktree:
REPO_NAME=$(basename $(git rev-parse --show-toplevel))
REPO_PARENT=$(dirname $(git rev-parse --show-toplevel))
WORKTREE_PATH="${REPO_PARENT}/${REPO_NAME}-issue-${NUMBER}"
git worktree add "${WORKTREE_PATH}" -b issue-${NUMBER}-<slug> main
Launch Execution:
If tmux available (autonomous execution):
# Create session if not exists
tmux has-session -t "itx/exec" 2>/dev/null || tmux new-session -d -s "itx/exec"
# Create window and run claude autonomously
tmux new-window -t "itx/exec" -n "issue-${NUMBER}" -c "${WORKTREE_PATH}"
tmux send-keys -t "itx/exec:issue-${NUMBER}" \
"claude --dangerously-skip-permissions -p '/itx:execute ${NUMBER}'" Enter
echo "Spawned in tmux 'itx/exec:issue-${NUMBER}'"
echo "Attach: tmux attach -t itx/exec"
If tmux not available (fallback):
Use AskUserQuestion to ask:
Exit: After spawning tmux window, exit current execution (work continues in tmux)
After PR is merged:
# Remove worktree
git worktree remove ../clawrium-issue-35
# Or force remove if dirty
git worktree remove --force ../clawrium-issue-35
# Clean up tmux window
tmux kill-window -t "itx/exec:issue-35"
Project ID: PVT_kwHOABDzzM4BSDdU
Status Field ID: PVTSSF_lAHOABDzzM4BSDdUzg_s1SU
Status Options:
d1b8c82de68a5cf447fc9ee4e78b7dd84aea9290# Get issue node ID
NODE_ID=$(gh api repos/ric03uec/clawrium/issues/<number> --jq '.node_id')
# Add to project (returns item ID)
ITEM_ID=$(gh api graphql -f query='
mutation {
addProjectV2ItemById(input: {
projectId: "PVT_kwHOABDzzM4BSDdU"
contentId: "'"$NODE_ID"'"
}) { item { id } }
}
' --jq '.data.addProjectV2ItemById.item.id')
# Set status
gh project item-edit --project-id PVT_kwHOABDzzM4BSDdU --id "$ITEM_ID" \
--field-id PVTSSF_lAHOABDzzM4BSDdUzg_s1SU --single-select-option-id 47fc9ee4
Fetch Issue: Get full issue details
gh issue view <number> --json number,title,body,labels,comments
Identify Issue Type:
[Parent #N]Route Execution:
[Parent #<number>] in titleLog Start: Add execution start comment
## Execution Started
Beginning implementation...
---
<details>
<summary>Prompt Log</summary>
**Stage**: execution
**Skill**: /itx:execute
**Timestamp**: <ISO timestamp>
**Model**: <model>
```prompt
<user prompt that triggered execution>
```
Update Status to Executing: Use the project board commands at top of file
Read Plan: Find the implementation plan in issue comments
Create Execution Checklist:
CRITICAL: ALWAYS create task checklist before any execution. Do not skip this step.
Parse the implementation plan and create tasks for tracking:
a. Create Implementation Tasks: For each phase/step in the plan, create a task:
TaskCreate(
subject="Implement: <phase/step description>",
description="<detailed requirements from plan>",
activeForm="Implementing <phase/step>"
)
b. Create Verification Tasks:
TaskCreate(
subject="Run test suite",
description="Execute 'make test' and ensure all tests pass",
activeForm="Running tests"
)
TaskCreate(
subject="Run linter",
description="Execute 'make lint' and fix any issues",
activeForm="Running linter"
)
TaskCreate(
subject="Verify ATX review requirements",
description="Request ATX review and address all blocking issues",
activeForm="Running ATX review"
)
c. Set Dependencies (if needed):
TaskUpdate(
taskId="<later-task-id>",
addBlockedBy=["<prerequisite-task-id>"]
)
d. Review Task List:
TaskList() # Confirm all tasks created correctly
Execute Tasks Systematically:
a. Get Next Task: TaskList() - Find first pending task with no blockedBy
b. Start Task: TaskUpdate(taskId="<task-id>", status="in_progress")
c. Execute Changes: Implement the task requirements
d. Complete Task: TaskUpdate(taskId="<task-id>", status="completed")
e. Check Progress: TaskList() - See remaining tasks
f. Repeat until all implementation tasks are completed
Execute Verification Tasks:
Follow the same pattern as implementation:
Create PR:
First choose the correct authored-by label for the model that created
the PR (for example authored-by:claude or authored-by:local_qwen).
If in worktree mode: Branch already exists (created during worktree setup)
git add <files>
git commit -m "<message>"
git push -u origin issue-<number>-<slug>
gh pr create --title "<title>" --body "Closes #<number>" --label "<authored-by-label>"
If in regular mode: Create branch first
git checkout -b issue-<number>-<slug>
git add <files>
git commit -m "<message>"
git push -u origin issue-<number>-<slug>
gh pr create --title "<title>" --body "Closes #<number>" --label "<authored-by-label>"
If the PR was created without the label, fix it immediately:
gh pr edit <number> --add-label "<authored-by-label>"
WARNING: Never push to main. Always push to feature branch and create PR.
When reading the implementation plan, extract:
subject: "Implement: <what>"
description: "<detailed requirements>"
activeForm: "Implementing <what>"
Examples:
subject: "Implement: Update CLI help text for agent terminology"
description: "Update all help text in src/clawrium/cli/agent.py to use 'agent' instead of 'claw'"
activeForm: "Updating CLI help text"
subject: "Implement: Refactor lifecycle.py function names"
description: "Rename functions: start_claw → start_agent, stop_claw → stop_agent"
activeForm: "Refactoring lifecycle.py"
Always create these verification tasks:
make test)make lint)If execution feels unclear or you lose track of progress:
TaskList() to see current stateUse the Task tool to spawn subagents:
Task(
subagent_type="general-purpose",
prompt="Execute /itx:execute <subtask-number>",
description="Execute subtask #<number>"
)
Execute subtasks sequentially to avoid conflicts.
After completing a subtask, check if all sibling subtasks are done:
# Find parent number from title [Parent #N]
# List all subtasks for that parent
# If all closed, close the parent