Produces a single beta typings package that combines several in-flight PRs, so backend/QA can test a flow that needs changes from more than one open feature branch at once. Builds a disposable "DO NOT MERGE" branch that merges the selected PRs on top of main, opens a labeled PR to fire the Types Bindings workflow, captures the exact published beta tag, and returns the version backend pins.
SkillScore73Maintained
Automatic
◆DevOps & SRE pack
Last verified 9/29/2026
What it changes
Passed 14 of 19 test cases with the skill, and 4 of 19 without it.
Without skill23%
With skill73%
Checks it passed that the model alone missed
Add the requires-types label explicitly using gh pr edit.
Refrain from using the --delete-branch option on gh pr close.
Retry searching for the run ID in a loop before executing gh run watch.
and 10 more in the full report
12 fixed4 passed either way5 still failing1 broke
Pass-rate lift
+50 pp
Tokens
+85%
Agent turns
0%
Response time
-45%
Model gemini-3.6-flashMeasured 9/29/2026v116 of 22 cases passed with skill · 19 comparable
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 12 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 12
Prompt
What exact JSON line should I provide to backend developers to put in package.json for testing published beta typings tag 'v2.4.0-beta'?
What was checked, without and with the skill
Checked
Without skill
With skill
Format the package line as "lifi-contract-typings": "lifinance/lifi-contract-types#v2.4.0-beta".
Missed
Passed
case-17 · gemini-3.6-flash · 9/29/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
Each feature branch publishes a -beta typings tag generated from that branch alone
(types.yaml → lifinance/lifi-contract-types). The -beta version is a single global
counter, so no published beta ever contains two in-flight branches together. When backend/QA
needs to test a flow that spans two unmerged branches, they need one package with both.
This command builds a throwaway branch that merges the selected PRs on top of main, lets the
existing Types Bindings workflow publish one combined beta tag, hands that tag back, then tears
the throwaway branch down. The tag lives in lifi-contract-types independently and keeps
working after the throwaway branch is gone.
When NOT to use
A single PR is enough → that PR already publishes its own beta on every push; just give
backend its tag. This command is only for combining two or more.
You want a permanent release → that is the push to main path, not a throwaway branch.
Phase 1 — Resolve the change set
Goal: end with a confirmed list of open PRs and their head branches.
Fetch open PRs once (never loop gh pr view per PR):
gh pr list --repo lifinance/contracts --state open \
--json number,title,headRefName,isDraft,url --limit 100
Select from that list based on what the user gave you:
PR numbers / URLs → match directly.
Topic / facet keywords → case-insensitive match on title + headRefName; if a
keyword matches more than one or zero PRs, show the candidates and ask which.
Nothing → print the list (number · title · branch) and ask the user to pick.
Echo the resolved set (number, title, head branch) and get an explicit confirm before
Deploys a facet/periphery contract (the version currently in the repo) to one or more networks and registers it in each network's LiFiDiamond — deploy, explorer-verify, diamondCut (facets) or diamondUpdatePeriphery (periphery), plus the diamond allowlist sync for diamond-called periphery. Use whenever the user wants to "deploy <Contract> to <networks>", "redeploy <Facet> on staging", "push <Periphery> to base/optimism", or otherwise get a contract on-chain and into the diamond WITHOUT the Safe-p