Gated protein design campaign
Three branches, one core. Pick the branch at G0; the gates, evidence rules and
deliverable discipline below hold for all three.
| Branch |
Read |
For |
| binder design |
workflows/binder-design.md |
miniprotein binders against a protein target |
| structure prediction |
workflows/structure-prediction.md |
folds or complexes with calibrated confidence |
| protein engineering |
workflows/protein-design-general.md |
stability, enzyme, interface, scaffold redesign |
Provenance and rationale: docs/ and NOTICE.md, relative to this skill.
Non-negotiables
These hold at every depth, including inside sub-agents, and bind hardest on the
steps nobody is watching.
- State only what you established. Every claim in a report, update or
manifest traces to an executed computation or a saved artifact you can point
at. Verified means you ran the check and hold its output.
- Every external identifier is fetched. DOIs, PMIDs, PDB IDs, UniProt
accessions, residue ranges and URLs in any deliverable are the literal output
of a lookup executed in this session.
- Anomalies are bugs until investigated. A score of exactly zero, a gate
that passes everything, a gate that fails everything, a constant metric, a
perfect metric, an impossible runtime, zero variance across seeds: halt that
stage, diagnose, then proceed.
- Cheapest falsifying check first. Run the seconds-scale check that could
kill a plan before committing hours of GPU to it.
- Lead with the unfavourable reading. Headline the worst defensible
interpretation of your own data. Disclose deviations from the stated method,
and name analyses tuned after seeing results along with how many
configurations you tried. Report inconclusive results as inconclusive.
- The instrument is a filter, never an oracle. In silico confidence ranks
designs within a target. It does not tell you whether a target will work,
and it relates only weakly to affinity — measured, not assumed
(
references/failure-modes.md §1). Every summary you write says so.
- Verify inherited inputs. Check target structures, construct definitions
and hotspot numbering against their primary source before building on them.
- Scope. This protocol is in silico and it ends at the design sheet.
Validation is in vitro, by the user or a CRO; analysing returned assay data
is a different task and does not run under these gates. Results from an
earlier round enter here as operator input at G0, never as something this
protocol goes and fetches. Work on select agents or toxins, and enhancement
of pathogen function, is out of scope: stop and say so. See
docs/responsible-use.md.
Gates
A gate is a hard stop. Present the material checklists/gate-checklists.md
lists for it, in the format it lists, then wait. Read that file at the gate
rather than reconstructing it from memory, and keep the presentation and the
next action in separate messages.
| Gate |
Decides |
Blocks |
| G0 |
targets, backend, scale, licence regime, deliverables |
everything |
| G1 |
assay construct, reference structure, cofactors |
epitope selection |
| G2 |
epitope and hotspot residues |
any generation |
| G3 |
that the instrument separates binders from noise on this target |
all production scoring |
| G4 |
compute allocation per target |
the production waves |
| G5 |
the ranked set to be ordered |
delivery |
| G6 |
acceptance, checked from artifacts |
declaring completion |
Two carry most of the risk:
- G2 decides most of the outcome. Epitope choice dominates model choice.
- G3 is mechanical. Until
state/gates/<target>.json reads status: PASS,
the submit gate refuses every production scoring job. A stated belief that the
instrument works leaves it refusing.
Gates also fire mid-run, not only in sequence. Changing the assay
construct, a catalytic or otherwise load-bearing residue, the off-target
definition, or the endpoint the campaign is aimed at changes the scientific
question — so each returns to the gate that owns it for a fresh signature, and
none of them is a deviation you log and continue past.
Completion bar for the whole campaign: every gate passed, with the human's
decision recorded in state/decisions.jsonl.
Between gates
You work on your own here, subject to five standing obligations.
- Ledger before narrative. Every job appends one row to the JSONL ledger
(
scripts/ledger.py). Every count you state anywhere is an aggregation over
that ledger computed at report time.
- Nothing is discarded. If it was computed, it is saved: the exact config
that produced it (model, version, weights checksum, environment id, command
line, contig or epitope spec, seeds, input paths), every structure file, every
metric at the level it was computed, the run manifest, stdout and stderr.
- Canary before fan-out. Any fan-out past roughly 10 jobs follows one canary
from the same spec, confirmed past startup with sane output.
- Progress, not liveness. A job alive and producing nothing is a failure in
progress. Gate completion on output counts and explicit markers.
- Surface a blocker when it blocks, not at the next gate.
Campaign spine
G0 scope -> setup + tool bring-up -> G1 dossier -> G2 epitope
-> G3 instrument validation -> G4 scale -> generate & screen
-> optimisation -> final-tier scoring -> G5 selection -> G6 delivery
Bring-up runs before G1 because it is slow and its outcome constrains what you
can honestly promise at G2 and G4. A tool joins the roster only after
running end to end on a real campaign target, in the environment and flags
production will use, with its output consumed by the next stage — the handoff,
not the tool alone (references/tool-catalog.md §1).
Sub-agents
Where the runtime offers parallel sub-tasks, split by (target x stage) or
(target x model); each brief inherits the non-negotiables and owns only its
scope. Where it does not, run the same decomposition serially and say so — the
protocol depends on the decomposition, not on the parallelism.
Adversarial review is part of the protocol. Before G6, one reviewer re-derives a
sample of scores from raw inputs, and one forms its verdict from raw data
without reading your conclusions. Every finding ships with the query or script
that produced its numbers.
Reference index
| File |
Read it |
checklists/gate-checklists.md |
at every gate — G0 also sets the scale preset |
references/target-dossier-guide.md |
building the dossier, before G1 |
references/failure-modes.md |
before G2, before G5, and whenever a result looks too good |
references/validation-gates.md |
at G3, or when a control fails |
references/scoring-instrument.md |
defining, running or changing the score |
templates/scoring_policy.yaml |
the ranking formula itself — frozen at G3, and the only place it is written |
references/thresholds.md |
choosing absolute cutoffs, or diagnosing a low pass rate |
references/tool-catalog.md |
choosing, sizing, installing or dropping a tool |
references/compute-backends.md |
wiring the scheduler, at G0 |
references/deliverables-spec.md |
building any deliverable |
templates/ |
starting a dossier, config, sheet schema or report |
scripts/ |
before G5, and against the as-shipped artifacts before G6 |
Tool names, flags, weight URLs and licence facts here were correct at their
recorded date and are re-verified against the upstream README, model card or
paper before use; upstream wins, and the discrepancy goes in the campaign log.
1---2name: binder-design-campaign3description: Gated protein design campaign: each expert judgement is a checkpoint a human signs off before compute is spent. Branches: de novo binder design (epitope choice, generation, co-folding ensemble ranking, ranked order sheet); structure and complex prediction with calibrated confidence; protein engineering (stability, enzyme, interface). Fires on designing binders or miniproteins, picking an epitope or hotspots, running RFdiffusion, BindCraft, BoltzGen, ProteinMPNN, ESMFold2 or Protenix, computing ipSAE or DockQ, ranking designs to order, auditing such a campaign, or 蛋白结合子设计, 表位选择, 结构预测.4license: MIT5---67# Gated protein design campaign89Three branches, one core. Pick the branch at G0; the gates, evidence rules and10deliverable discipline below hold for all three.1112| Branch | Read | For |13|---|---|---|14| binder design | `workflows/binder-design.md` | miniprotein binders against a protein target |15| structure prediction | `workflows/structure-prediction.md` | folds or complexes with calibrated confidence |16| protein engineering | `workflows/protein-design-general.md` | stability, enzyme, interface, scaffold redesign |1718Provenance and rationale: `docs/` and `NOTICE.md`, relative to this skill.1920## Non-negotiables2122These hold at every depth, including inside sub-agents, and bind hardest on the23steps nobody is watching.24251. **State only what you established.** Every claim in a report, update or26 manifest traces to an executed computation or a saved artifact you can point27 at. *Verified* means you ran the check and hold its output.282. **Every external identifier is fetched.** DOIs, PMIDs, PDB IDs, UniProt29 accessions, residue ranges and URLs in any deliverable are the literal output30 of a lookup executed in this session.313. **Anomalies are bugs until investigated.** A score of exactly zero, a gate32 that passes everything, a gate that fails everything, a constant metric, a33 perfect metric, an impossible runtime, zero variance across seeds: halt that34 stage, diagnose, then proceed.354. **Cheapest falsifying check first.** Run the seconds-scale check that could36 kill a plan before committing hours of GPU to it.375. **Lead with the unfavourable reading.** Headline the worst defensible38 interpretation of your own data. Disclose deviations from the stated method,39 and name analyses tuned after seeing results along with how many40 configurations you tried. Report inconclusive results as inconclusive.416. **The instrument is a filter, never an oracle.** In silico confidence ranks42 designs *within* a target. It does not tell you whether a target will work,43 and it relates only weakly to affinity — measured, not assumed44 (`references/failure-modes.md` §1). Every summary you write says so.457. **Verify inherited inputs.** Check target structures, construct definitions46 and hotspot numbering against their primary source before building on them.478. **Scope.** This protocol is in silico and it **ends at the design sheet**.48 Validation is in vitro, by the user or a CRO; analysing returned assay data49 is a different task and does not run under these gates. Results from an50 earlier round enter here as operator input at G0, never as something this51 protocol goes and fetches. Work on select agents or toxins, and enhancement52 of pathogen function, is out of scope: stop and say so. See53 `docs/responsible-use.md`.5455## Gates5657A gate is a hard stop. Present the material `checklists/gate-checklists.md`58lists for it, in the format it lists, then wait. Read that file at the gate59rather than reconstructing it from memory, and keep the presentation and the60next action in separate messages.6162| Gate | Decides | Blocks |63|---|---|---|64| G0 | targets, backend, scale, licence regime, deliverables | everything |65| G1 | assay construct, reference structure, cofactors | epitope selection |66| G2 | epitope and hotspot residues | any generation |67| G3 | that the instrument separates binders from noise on this target | all production scoring |68| G4 | compute allocation per target | the production waves |69| G5 | the ranked set to be ordered | delivery |70| G6 | acceptance, checked from artifacts | declaring completion |7172Two carry most of the risk:7374- **G2 decides most of the outcome.** Epitope choice dominates model choice.75- **G3 is mechanical.** Until `state/gates/<target>.json` reads `status: PASS`,76 the submit gate refuses every production scoring job. A stated belief that the77 instrument works leaves it refusing.7879Gates also fire **mid-run**, not only in sequence. Changing the assay80construct, a catalytic or otherwise load-bearing residue, the off-target81definition, or the endpoint the campaign is aimed at changes the scientific82question — so each returns to the gate that owns it for a fresh signature, and83none of them is a deviation you log and continue past.8485**Completion bar for the whole campaign: every gate passed, with the human's86decision recorded in `state/decisions.jsonl`.**8788## Between gates8990You work on your own here, subject to five standing obligations.9192- **Ledger before narrative.** Every job appends one row to the JSONL ledger93 (`scripts/ledger.py`). Every count you state anywhere is an aggregation over94 that ledger computed at report time.95- **Nothing is discarded.** If it was computed, it is saved: the exact config96 that produced it (model, version, weights checksum, environment id, command97 line, contig or epitope spec, seeds, input paths), every structure file, every98 metric at the level it was computed, the run manifest, stdout and stderr.99- **Canary before fan-out.** Any fan-out past roughly 10 jobs follows one canary100 from the same spec, confirmed past startup with sane output.101- **Progress, not liveness.** A job alive and producing nothing is a failure in102 progress. Gate completion on output counts and explicit markers.103- **Surface a blocker when it blocks**, not at the next gate.104105## Campaign spine106107```108G0 scope -> setup + tool bring-up -> G1 dossier -> G2 epitope109 -> G3 instrument validation -> G4 scale -> generate & screen110 -> optimisation -> final-tier scoring -> G5 selection -> G6 delivery111```112113Bring-up runs before G1 because it is slow and its outcome constrains what you114can honestly promise at G2 and G4. A tool joins the **roster** only after115running end to end on a real campaign target, in the environment and flags116production will use, with its output consumed by the next stage — the handoff,117not the tool alone (`references/tool-catalog.md` §1).118119## Sub-agents120121Where the runtime offers parallel sub-tasks, split by (target x stage) or122(target x model); each brief inherits the non-negotiables and owns only its123scope. Where it does not, run the same decomposition serially and say so — the124protocol depends on the decomposition, not on the parallelism.125126Adversarial review is part of the protocol. Before G6, one reviewer re-derives a127sample of scores from raw inputs, and one forms its verdict from raw data128without reading your conclusions. Every finding ships with the query or script129that produced its numbers.130131## Reference index132133| File | Read it |134|---|---|135| `checklists/gate-checklists.md` | at every gate — G0 also sets the scale preset |136| `references/target-dossier-guide.md` | building the dossier, before G1 |137| `references/failure-modes.md` | before G2, before G5, and whenever a result looks too good |138| `references/validation-gates.md` | at G3, or when a control fails |139| `references/scoring-instrument.md` | defining, running or changing the score |140| `templates/scoring_policy.yaml` | the ranking formula itself — frozen at G3, and the only place it is written |141| `references/thresholds.md` | choosing absolute cutoffs, or diagnosing a low pass rate |142| `references/tool-catalog.md` | choosing, sizing, installing or dropping a tool |143| `references/compute-backends.md` | wiring the scheduler, at G0 |144| `references/deliverables-spec.md` | building any deliverable |145| `templates/` | starting a dossier, config, sheet schema or report |146| `scripts/` | before G5, and against the as-shipped artifacts before G6 |147148Tool names, flags, weight URLs and licence facts here were correct at their149recorded date and are re-verified against the upstream README, model card or150paper before use; upstream wins, and the discrepancy goes in the campaign log.