Compose the PR body from templates/pr-body.md and open the PR — the UZF-26 evidence table, the completion checklist, every associated issue and the agent-attribution ledger — then check it by verb and return the PR to mukai, which offers it to /en (or starts En under mukai.autoEn). Use when /mukai reaches its eighth step, or the maintainer invokes /shibari directly. It opens exactly one PR from the last pushed commit against the workflow's base, derives the gate but never labels one, requests reviewers, and never merges.
Install
npx skillscat add zheref/hatsu/surfaces-antigravity-skills-shibari Install via the SkillsCat registry.
Shibari — the work becomes a request for attention
Nature: Manipulator. Turn everything the run proved into one body a reviewer can act on, open the
PR on it, and hand it to `en`; the authoring nature is named inside the body, in
Why, never adopted here. Shibari is step 8 of `mukai`, the last step that
writes anything and the only one writing to GitHub, and it proves nothing of its own: a
section with no fact behind it says so. The landing report is rendered after this step, from what is on the PR.
0. Standalone entry
Already total (`docs/STANDALONE-ENTRY.md` § 4): cold entry adds
P1 and P2, carrying the one precondition a cold call can fail — the branch must already be
pushed. State the branch, whether it is published and how many commits are unpushed; a PR would
omit them, so stop and name `aka`, never pushing for the maintainer. Evidence that does not exist because hanten, kotoamatsukami orbyakugan did not run is stated unavailable, with why — never a plausible table.
1. Invocation and authority
P1 — this run opens with /ten shibari (`ten` § 6 catches up this phase's
missing prerequisites under its own name; the phases this run calls skip theirs).
/shibariNo arguments, so no nen parse: the branch is the input, the base comes from
the workflow file (§ 2), the issue from the branch's own commits. The maintainer's /mukai
or /shibari call is this run's authorization: opening a PR is a human call
(`docs/WORKFLOW.md` § 4) no agent proposes and no composite reaches
unasked, and that call covers the evidence mechanism's publish step, not asked again per scene — in
Hatsu's terms (zheref/hatsu#101): the harness's own permission classifier is a separate layer reading-y as a blind apply, so the publish command carries -y only because its own confirmation would block a
non-interactive tool, this run says before the call what it publishes and that the harness may ask once,
and where the consumer has not declared the grant (on Claude Code, a tracked .claude/settings.json allow
row for that one script, added by the maintainer — `mukai` § 1) the stop there is
expected and named in § 5's line, never a G5.
One call, one PR — a run that finds two efforts opens neither, names
`jujisho` and stops.
2. The parameters, defaults stated
| Key | File | Used for | Default |
|---|---|---|---|
branch.base |
nen/workflow.json |
the PR's base, and the origin/<base>...HEAD range every section is computed over |
main |
commits.allowedAttributionTrailers |
nen/workflow.json |
the truthful canonical persona/plane trailer | Hatsu-Agent, Akatsuki-Agent |
coverage.* |
nen/workflow.json |
the band the checklist quotes from byakugan |
80/85/90 |
project.evidence.globs/.scene/.mechanism |
nen/contract.json |
the UZF-26 rows, scene naming, and which mechanism the stack is on |
no globs is the no-evidence case, stated in the body; {suite}-{scene}; the committed-path mechanism, never the mirror |
- A missing configuration item is asked for and set up inline (
missing-configuration;
`WORKFLOW.md` § 4 Ask, set up, continue); both files are read and
validated as `PROCESS.md` § Invocation and parsing says. - The range is
origin/<branch.base>...HEAD, aftergit -C <path> fetch origin <branch.base>—
nothing fast-forwards localmain, andnen gate deriveandnen changelog fragment-requiredtake--files, so a wrong set gives a confident wrong answer. nen shu evidence --repo <path> --base <ref>readsproject.evidence, but the rows come frommukaistep 7 and shibari re-uses them, never re-derives them.
3. The body
A published injected attribution trailer (`aka` § 7, zheref/hatsu#66) is
disclosed as its own ## Completion checklist line — injected attribution trailer: <sha> <key>, published before the switch; not rewritten — not in the ledger.
The body is `templates/pr-body.md`, filled — its parts in order,
the optional ones as its own comments say, § 4's three checks commented at its top. The target's own
template governs the section names where it has one, and the UZF-26 evidence shape is
`docs/WORKFLOW.md` § The UZF-26 evidence shape. Every screenshot is a
cell of that section's table — states as named columns, variants as labelled rows, one fixed-width
labelled image per cell — and "$hatsu_root/scripts/pr_body_evidence_check.sh" --body <file> passes before the
body is written, on the first write and on every rewrite after a review, which re-renders the whole
Evidence section and never appends below it.
Associated issues — body AND Development (ruling 2026-09-12), which shibari enforces:
- Every issue the PR addresses appears in both, on single-issue and combined PRs, at creation,
at every scope amendment and at handover; the body table carries each canonical URL, the scope this
PR implements, and whether merging completes it or delivers part, with prerequisites listed
separately and a PR with no associated issue saying so. - After opening or editing, compare the expected set against live Development associations — a
body mention alone is not proof. A separate
supported closing clause per issue creates it on a default-branch PR; otherwise use GitHub's own
linking interface and verify. Never invent a Nen link verb; never assumePart of #Nlinks.
Non-default bases, cross-repository links and the UI's link-count limit need live checks. - Linking and completion are different claims: never mislabel partial work as complete to tidy the
sidebar, never change auto-close settings, preserve a partial issue's remaining scope, and report an
auto-close conflict for the maintainer's disposition before merge.
Agent attribution is the final heading, exactly as
`docs/AGENT-ATTRIBUTION.md` specifies: every and only the
agents that actually participated, never one inferred from the branch, a reviewer request or a model
label.
4. Open it, check it, write it back
git -C <path> fetch origin <branch>
git -C <path> rev-parse HEAD refs/remotes/origin/<branch> # the two MUST be equal
nen repo resolve --repo <path> --from <path> # -> <owner>/<name> (<CODE>)
nen ref format --code <CODE> --kind PR --number <n>
nen pr open --target <owner/name> --base <branch.base> --title-file <abs> --body-file <abs> \
[--head <branch>] [--draft] [--dry-run] [--json] # title-file: the one commit's subject
nen pr body-check --body-from <abs path> --requirements-from <path>
nen changelog fragment-required --spec-paths "CONSTITUTION.md,handbooks/,nen/,schemas/,agents/,.github/workflows/" \
--fragment-dir changelog.d --files <the changed paths> --head-changelog <path to CHANGELOG.md> \
[--body-from <abs path>]
nen pr edit-body --target <owner/name> --pr <n> --body-file <abs path> [--dry-run] [--json]- The two refs must be equal; if not, the run stops and says which is ahead.
pr openrefuses a head that is not on the remote at
exit2and exits1naming an open PR for the branch; it opens once, draft or ready
being the repository's convention. body-checkreports every requirement; exit1is a finding to fix.fragment-requiredhas four verdicts —not-applicable,required(exit1),fragment-present, andopt-outwhere--body-fromcarries ano CHANGELOG entry: <reason>line.
Keep bothnen/andschemas/; a missing--head-changelogis exit2;fragment-presentneeds the fragment on disk at head as well as in--files.- The gate is derived as `docs/WORKFLOW.md` § Gate derivation
says, and the body names it as a FORECAST, never a status — a PR just opened is not ready.
Shibari derives the gate and never labels one: a label is a readiness
claim, and readiness isnen pr ready's verdict inside `en`, after this run (inzheref/hatsu,pr-readiness.ymlpublishes it as thereadinesscheck; shibari never
writes that either). - The body is written back only after all three checks have run. The create is the first write and
every later revision is an edit:nen pr edit-bodyreplaces the body outright and certifies
the number before any write, refusing a 404/410. A relative--body-fileresolves against--repo's root, so the body is written to an absolute path.
5. Reviewers, and the hand to en
nen pr request-reviews --target <owner/name> --pr <n> --add-reviewers <a,b> [--add-bots <id,...>]The reviewer-round policy is `sharingan` § 6's — one Copilot round after
`hanten` settles, never before — and this skill makes only the first request.
The request's mechanics are PROCESS.md § Reviewer rounds and review
threads: the maintainer's token, Copilot through --add-bots <node id>, and success read from
the mutation's own response, never from the ids sent.
Then one line, and stop: the notation, the base, the gate forecast, whether the three checks
passed, the evidence mechanism — and, where the harness classifier stopped its publish step, the fieldpermission stop: expected — <consumer> declares no allow row for <script> naming the missing grant
(§ 1; zheref/hatsu#101), never a G5 — who was requested, and — from mukai — its offer of `en` on the PR
(En has it already only under mukai.autoEn). No nen stop banner — opening a PR is not a gate event, anden's own `jutaisho` step rings at Ready.
6. Residue, authority and hard limits
Named raw calls: `PROCESS.md` § Residue and owned dependencies.
- Permitted, only on the maintainer's own
/mukaior/shibaricall: read the working
copy and its history; write the body file; open one PR againstbranch.basefrom the last
pushed commit; edit that PR's body; request reviewers; run the target's own declared
evidence-publish step onpublic-mirror. The delegation is one run wide. - Not permitted: any merge, label, review vote or commit; any push, force-push or
--no-verify,
even to satisfy its own precondition; a second PR, or one for a branch whoseHEADis ahead oforigin/<branch>; touching a PR this run did not open. - Never opens a PR without
# What this changes for you,## How to verify, the final## Agent attribution, and thechangelog.d/fragment where one is owed — all decided by verb. - Never writes a section with no fact behind it, and never ticks a completion box by assertion.
- Never stages a capture that is not one of the branch's re-recorded test artifacts, and never
treats an untracked evidence gap as a sanctioned incompleteness. - Never passes a body as an inline
--bodystring, reports a reviewer as requested when the call
no-opped, or reports a missing Development link as present. - Never fires the
nen stopbanner, and never presents by-handgit/ghas a verb's output.