skein_reparent
Move an EXISTING issue under a new parent. This is THE tool for re-parenting — skein_dep_add(type="parent-child") only ADDS a parent and rejects a second one with parent_already_set; setting the parent at creation uses parentId on skein_create. skein_reparent atomically replaces the issue's single parent-child edge in one SERIALIZABLE transaction (self-healing a double-parented child to exactly one edge), bumps the issue version, and emits issue.reparented plus the per-edge dependency.deleted / dependency.created audit rows. ANSWERS WITH AN ACKNOWLEDGEMENT by default — the id, the applied state and the new version, no issue card and no prose — so the expectedVersion cycle continues without a re-read; pass verbose for the full IssueDetail.
Required: id (the issue to move), newParentId (the new parent), and expectedVersion for optimistic concurrency. On version mismatch returns {error:"version_conflict", currentVersion:<int>} — re-read with skein_show and retry. The new parent must be in the SAME project (reparent_cross_project otherwise) and must not already be a descendant of the issue (dependency_cycle). An issue cannot be its own parent (reparent_self).
NOT lock-gated: reparent moves a graph edge (like skein_dep_add / skein_dep_remove), so a lock held by another session does not block it — concurrency is guarded by expectedVersion alone.
NOT idempotent: re-running with the same newParentId still performs a real move (DELETE+INSERT) and bumps the version — compare parentIdCurrent first if you want to avoid a no-op move. On success returns the acknowledgement (id, status, the new version); pass verbose for the full IssueDetail.
Post-action summary: report ✓ <id> re-parented under <newParentId> so the user can scan the move.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"id": "<id>",
"newParentId": "<newParentId>",
"expectedVersion": "<expectedVersion>"
},
"name": "skein_reparent"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Full hierarchical id of the issue to move (e.g. "demo-42" or "demo-42.1"). | |
| verbose | No | Return the full IssueDetail, prose included. Default false = acknowledgement: `id`, `ok`, `version` plus the post-state stamps that apply (`status`, `assignee`, lock / claim / close stamps) — no issue card and no free text. The version is always there, so the expectedVersion cycle needs no extra read. Details: skein_get_instructions. | |
| newParentId | Yes | Full hierarchical id of the new parent. Must be in the same project and must not be a descendant of the issue. | |
| expectedVersion | Yes | The version the agent expects on the issue. The move only proceeds when the live version matches; otherwise returns version_conflict with the live version. |