Skip to content
Agentmart
Submit a tool

unassign

Release an assignment claim WITHOUT merging — agent changed mind, assignment re-classified, deps blocked indefinitely.

Skill by MarcinSufa

IndexedMIT★ 1
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/marcinsufa-unassign

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Release an assignment claim WITHOUT merging — agent changed mind, assignment re-classified, deps blocked indefinitely. Removes worktree, deletes branch, resets ExoVault task to `todo`. Confirms destructively (requires AskUserQuestion). Symmetric counterpart to `/assign`. Use when - "abandon this assignment", "release the claim", "I'm not working on X anymore".

Use cases: productivity, agent-building

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/unassign

What's inside

Skill name
unassign
Description
Release an assignment claim WITHOUT merging — agent changed mind, assignment re-classified, deps blocked indefinitely. Removes worktree, deletes branch, resets ExoVault task to `todo`. Confirms destructively (requires AskUserQuestion). Symmetric counterpart to `/assign`. Use when - "abandon this assignment", "release the claim", "I'm not working on X anymore".
License
MIT
Instructions
102 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# /pr-autopilot:unassign <ASSIGNMENT_ID>

Housekeeping skill. Symmetric counterpart to `/assign`. **Destructive** — requires interactive user confirmation.

## Pre-flight

- Claim file or remote branch matching `<assignment-id>` exists.
- Run from main worktree or anywhere outside the target's worktree (worktree removal can't be done from inside the worktree being removed).

## Steps

1. **Read claim file** (from worktree path if accessible, else from remote branch via `git show <branch>:.claude/assignment-claims/<id>.json`).
   - If `subStatus == merged` → reject: "Assignment <id> is already merged. Use git revert workflows, not `/unassign`."
   - If claim file missing but ExoVault task `in_progress` → orphan recovery: proceed but with explicit warning.

2. **AskUserQuestion (MANDATORY — destructive action):**
   - **Question:** `"Unassign '<id>'? This will DELETE the worktree, local branch '<branch>', and reset the ExoVault task to 'todo' for re-claim."`
   - **Header:** `"Unassign"`
   - **Options:**
     - `"❌ Cancel — keep claim"` (default safe option)
     - `"⚠️ Unassign — delete worktree + branch"` with description: `"Destructive. Lost: <N> uncommitted edits (if any), <M> commits not in any other branch. Sub-status was: <current>. Approved by: <approvedBy or 'never'>."`
     - `"📋 Show current state first"` with description: `"Print claim file + git status + git log of this branch, then re-run /unassign."`

3. **Branch on response:**

   **Cancel:** no-op, exit gracefully.

   **Show state:** print:
   ```
   claim file: <full json>
   git log <branch> --oneline | head -20
   git status (if worktree accessible)
   ```
   Exit. User re-runs `/unassign` when ready.

   **Unassign — proceed:**

4. **`cd` to main worktree root** (outside target's worktree):
   ```bash
   # first "worktree <path>" entry is the primary worktree; sed keeps paths with spaces intact
   MAIN=$(git worktree list --porcelain | sed -n 's/^worktree //p' | head -1)
   cd "$MAIN"
   ```

5. **Remove worktree:**
   ```bash
   git worktree remove ".claude/worktrees/<id>" 2>&1 || \
     git worktree remove --force ".claude/worktrees/<id>" 2>&1 || \
     echo "⚠️ Worktree at .claude/worktrees/<id> not removable. Inspect manually."
   ```

6. **Delete local branch:**
   ```bash
   git branch -D "<branch>" 2>&1 || echo "Branch <branch> not present locally (already deleted?)"
   ```

7. **Delete remote branch (if pushed):**
   ```bash
   if git ls-remote --heads origin "<branch>" | grep -q .; then
     echo "Branch was pushed. Delete remote: git push origin --delete <branch>"
     # Optionally auto-execute if user pre-confirmed in step 2; default = prompt first
   fi
   ```

8. **Reset ExoVault task:**
   ```
   mcp__exo-vault__update_task(taskId, status='todo', assignedAgentId=null)
   ```
   This re-opens the assignment for any agent to claim.

9. **`assignments.yaml` on main (P2 note — usually no-op):**
   - If yaml says `status: in_progress` for this id → reset to `todo` and commit. (Shouldn't happen post P0-3 v2 fix, but defensive.)
   - If yaml says `blocked` → preserve (block is intentional).
   - If yaml already `todo` → no-op (most common case after P0-3 truth model).

10. **Echo confirmation:**
    ```
    ✅ Assignment <id> released.

    Worktree: removed
    Local branch: deleted
    Remote branch: <still exists | deleted>
    ExoVault task: reset to todo

    /pr-autopilot:assign <id> may be invoked by any agent now.
    ```

## Why interactive confirmation is mandatory

Unlike `/assign` (creative, low-risk), `/unassign` is destructive:
- Deletes work-in-progress (uncommitted edits in worktree)
- Removes audit trail (local branch git history)
- Resets ExoVault task

AskUserQuestion enforces that a human (not just the agent acting autonomously) authorized the destruction.

## Recovery

If `/unassign` partially completed (e.g. worktree removed but ExoVault update failed):
- Re-run `/unassign <id>` → idempotent steps 5–9 will skip what's done and complete what's not.
- Or manually clean: `git branch -D <branch>`, `mcp__exo-vault__update_task(...)`.

From MarcinSufa/claude-pr-autopilot, MIT.

Signals

Stars
1
Forks
0
Open issues
0
Last commit (this folder)
May 28, 2026 (5 months ago)
Last release
May 28, 2026 (5 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from MarcinSufa

Cite this page

unassign skill. Agent Mart. https://agentmart.dev/skills/marcinsufa-unassign (last updated 2026-10-24)