faffter-noon-ship

Merges gate-cleared pull requests through the faff merge-gate interlock and emits a delivery-outcome contract block.

3|Updated Apr 16, 2026
One-click install
npx skills add https://github.com/shftwst/faff --skill faffter-noon-ship-shftwst
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: faffter-noon-ship
Source: https://github.com/shftwst/faff/tree/main/plugin/skills/faffter-noon-ship
Command: npx skills add https://github.com/shftwst/faff --skill faffter-noon-ship-shftwst

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? It provides a safe, deterministic default for the final delivery step of an autonomous software pipeline: merging a pull request only after the integrity floor (AC-verified, CI-green, review pass) has been re-verified, and reporting the result in a machine-parseable form instead of an ambiguous free-text summary. ## Core Features & Use Cases - Interlocked merging: Merges exclusively through faff merge-gate (never a raw gh pr merge), which re-verifies the integrity floor and observes CI on the PR head sha before merging. - Precondition probing: Runs read-only checks for push access, token workflow scope, merge-method availability, and Actions policy, emitting a specific not-ready:precondition:<kind> deferral with a remedy instead of a silent failure. - Contract emission: Appends a faff-contract:delivery-outcome JSON block that the consuming workflow parses deterministically, with an honesty rule that coerces uncorroborated success claims to failure. - Use Case: In an unattended L3 delivery run, after a change passes review and CI, this producer merges the PR with squash and delete-branch, then declares shipped with corroborated: true so the orchestrator can route the outcome without re-reading raw gh output. ## Quick Start Configure the ship slot in your faff slots config to use faffter-noon-ship and let faff-graft invoke it automatically after the merge-confidence gate passes.

Frequently Asked Questions about faffter-noon-ship

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I merge a pull request safely in an autonomous delivery pipeline?▼

Route the merge through the faff merge-gate interlock with the PR number, issue ID, run directory, and autonomy level. It re-verifies the integrity floor and observes CI on the head sha, running gh pr merge only when the result is merge-ok.

What is the faff delivery-outcome contract block?▼

It is a single fenced JSON block tagged faff-contract:delivery-outcome appended as the last output, containing outcome, reason, and corroborated fields. The consuming workflow parses it deterministically via faff contract delivery-outcome instead of re-reading raw merge output.

Can I use this ship producer without a GitHub remote?▼

Yes, git-only mode invokes faff merge-gate --local instead of --pr. It re-verifies the same AC and review floor legs, runs its own gates as the CI equivalent, and lands the merge as a local base-ref move with identical exit codes.

Why does the ship step report not-ready:precondition instead of merging?▼

A read-only precondition probe detected a mechanical blocker such as missing push access, absent workflow token scope, a disabled merge method, or an Actions policy conflict. The producer reports the specific kind and remedy; an operator applies the one-time fix and re-runs.

When should I replace the default ship producer with a deploy-capable one?▼

Swap it when delivery means more than a merge, such as running real deploy-readiness checks, deploying after merge, and cleaning up deploy artifacts. Any replacement must honor the fixed delivery-outcome contract and the non-delegable integrity floor.