SKILL.md
Start working on a Marshroom cart issue in the current repository.
Critical Requirements
- state.json update is MANDATORY. After creating the branch, you MUST update the issue status to
runningin${MARSHROOM_STATE:-~/.config/marshroom/state.json}. If this fails, stop and report the error — do NOT silently continue.
- Use
marsh startif available; otherwise fall back to directjqatomic write (see step 10).
Steps
- Read
${MARSHROOM_STATE:-~/.config/marshroom/state.json}and parse the JSON
- Extract the
cartarray. If the cart is empty, tell the user to add issues in the Marshroom app
- Run
git remote get-url originto get the current repo's remote URL
- Extract
owner/repofrom the remote URL (handle both HTTPS and SSH formats)
- Filter cart entries where
repoCloneURL(HTTPS) orrepoSSHURL(SSH) matches the current remote. Compare by extractingowner/repofrom each
- If no matching cart entries, tell the user this repo has no cart issues
- If
$ARGUMENTScontains an issue number, find that entry; otherwise if multiple matches, list them and ask the user to pick one
- Run
git checkout main && git pull origin mainto ensure main is up to date
- Create and checkout the branch:
git checkout -b {branchName}The branch name should beFeature/#NorHotFix/#N.Nis issue number.
- Update issue status (MANDATORY):
- First try:
marsh start #{issueNumber}
- If
marshis not found in PATH, fall back to direct atomic update:
STATE_FILE="${MARSHROOM_STATE:-~/.config/marshroom/state.json}"
TMP="$(mktemp "${STATE_FILE}.XXXXXX")"
jq --argjson n ISSUE_NUMBER '.cart |= map(if .issueNumber == $n then .status = "running" else . end)' \
"$STATE_FILE" > "$TMP" && mv -f "$TMP" "$STATE_FILE"
- Verify the update succeeded by reading state.json and confirming status is
running
- Inject issue context:
- Read the
issueBodyfield from the matched cart entry
- If non-null, display it under a "## Issue Details" header
- This gives the agent full context about what needs to be done
- Confirm the branch was created and display:
- Issue: #{issueNumber} {issueTitle}
- Branch: {branchName}
- Repository: {repoFullName}
- Status: running
- Ask the user permission to start planning to resolve issue. If the user allows it, starts planning using /plan mode.