Compose the pull request 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 hatsu:en (or starts En under mukai.autoEn). Use when hatsu:mukai reaches its eighth step, or when the maintainer invokes hatsu:shibari directly. It opens exactly one PR, from the last pushed commit, against the workflow's base; it derives the gate but never labels one, requests reviewers, and never merges.
Install
npx skillscat add zheref/hatsu/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 that writes 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 hatsu:ten shibari (`ten` § 6 catches up this phase's
missing prerequisites under its own name; the phases this run calls skip theirs).
hatsu: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 hatsu:mukai
or hatsu: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 that reads-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 nine parts in
order, § 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; andfragment-presentneeds the fragment on disk at head as well as in--files.- The gate is derived exactly 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
hatsu:mukaiorhatsu: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.