unassign
Release an assignment claim WITHOUT merging — agent changed mind, assignment re-classified, deps blocked indefinitely.
Skill by MarcinSufa
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.
About
Use cases: productivity, agent-building
Reviews
Write a reviewNo 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.
More from MarcinSufa/claude-pr-autopilot
- 0.497score
review-spec
MarcinSufa
Dispatch the pre-PR adapter layer against a spec markdown file.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
assign
MarcinSufa
Atomically claim an assignment from `assignments.yaml`, create a worktree off `origin/main`, write the claim file, and brief the agent.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
automerge
MarcinSufa
Opt a repo into pr-autopilot safe auto-merge.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
finish
MarcinSufa
Post-merge cleanup.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
pr-opened
MarcinSufa
Bridge from pre-PR (v0.5) to post-PR (v0.4 step loop).
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
approve-spec
MarcinSufa
User-only gate from spec to TDD.
SkillCFreshness: C★ 1Claude Code +9 - 0.494score
allow
MarcinSufa
Add a repo to the pr-autopilot auto-trigger allowlist.
SkillCFreshness: C★ 1Claude Code +9 - 0.489score
pause
MarcinSufa
Temporarily suppress pr-autopilot auto-trigger without changing the allowlist.
SkillCFreshness: C★ 1Claude Code +9 - 0.486score
resume
MarcinSufa
Re-enable pr-autopilot auto-trigger after a pause.
SkillCFreshness: C★ 1Claude Code +9 - 0.261score
step
MarcinSufa
No description from the publisher yet.
SkillCFreshness: C★ 1Claude Code +9
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
- Source
- GitHubgithub-graphql
More from MarcinSufa
- 0.497score
review-spec
MarcinSufa
Dispatch the pre-PR adapter layer against a spec markdown file.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
approve-spec
MarcinSufa
User-only gate from spec to TDD.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
assign
MarcinSufa
Atomically claim an assignment from `assignments.yaml`, create a worktree off `origin/main`, write the claim file, and brief the agent.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
automerge
MarcinSufa
Opt a repo into pr-autopilot safe auto-merge.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
finish
MarcinSufa
Post-merge cleanup.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
pr-opened
MarcinSufa
Bridge from pre-PR (v0.5) to post-PR (v0.4 step loop).
SkillCFreshness: C★ 1Claude Code +9
Cite this page
unassign skill. Agent Mart. https://agentmart.dev/skills/marcinsufa-unassign (last updated 2026-10-24)