skein_commits_attach
Attach git commit refs to an existing issue without touching status, closed_reason, closed_at, version or locked_by. Use this — NOT a second skein_close — when the original close forgot commits[] or a closing commit landed afterwards: re-closing silently overwrites the original closed_reason, this tool is the additive path. 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.
Issue may be in any status. Re-attaching the same hash is a silent no-op; the issue.commits_attached event is still emitted for the audit trail. Caller must hold the lock OR pass force=true (force_unlock: project owner, space owner, instance admin) — unlocked issues are open to any agent. No expectedVersion: the attach does not bump version.
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": {
"issueId": "<issueId>",
"commits": "<commits>"
},
"name": "skein_commits_attach"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Bypass lock predicate. Needs force_unlock on the issue's project (project owner, space owner, instance admin); others get `force_unlock_forbidden`. Default: false. | |
| commits | Yes | Commit-refs to link to this issue. Max 10. Each needs `hash`; identify the repo with `repoId` or `repoUrl` from the project's gitRepos[], or omit both when the project has exactly one repo. Re-sends dedup silently per (issue, repo, hash). See skein_get_instructions ("Commit refs"). Must be non-empty. | |
| issueId | Yes | Full hierarchical issue id (e.g. "demo-42"). | |
| 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. |