omh-systematic-review
Installation
SKILL.md
Systematic Review
This is a Hermes-native systematic-review workflow skill.
Why This Exists
Two reviewers screening the same records only count as dual review when neither sees the other's answers and the merge is mechanical. This workflow freezes the criteria first, keeps each reviewer blind, and never turns a missing answer into an exclusion.
First Steps
- Records must be deduplicated across databases first (DOI or PMID, else normalized title plus year); record the identified, duplicate-removed and screened counts, because the PRISMA flow needs them and this workflow does not deduplicate.
- Agree the inclusion and exclusion criteria and the ordered exclusion codes with the person before any record is read; nothing is frozen until they say the criteria are final. To pilot the criteria, freeze a throwaway DIR, prepare it on 25 to 50 records, review the conflicts, then freeze the real DIR.
- Call
omh research screening freeze --criteria FILE --codes FILE --out DIR. The protocol is write-once: a criteria change after freeze means a new DIR, never an edited protocol.json. - Call
omh research screening prepare --dir DIR --records FILE --seed N, then read DIR/manifest.json for the batch list. - When
delegate_taskis in your tool list or tool_search finds it, dispatch two children, A and B: give each only its ownDIR/tasks/<A|B>/files and tell it to write answer lines toDIR/answers/<A|B>/. Never pass one child the other's tasks, answers or name; without the tool, ask the person to run the two reviewers separately. By default a child runs on the session's model (or thedelegation.modelpin) anddelegate_tasktakes no per-child model, so A and B are then recorded as the same model: pass the real model for both and reportbroken_independence. Where the host routes each delegated task to a different model (a delegation backend oromh_delegate_route), give B another route and record the model it reports; otherwise ask the person to run reviewer B in a session on another model. Never write a model name you did not observe. - Call
omh research screening merge --dir DIR --answers-a DIR/answers/A --answers-b DIR/answers/B --reviewer-models A=<model>,B=<model> --json. Exit 1 means conflicts or pending records remain; exit 2 is an input error to fix, not a result. - Show the conflict and pending ids to the person, or give a third child only the conflict records and the frozen criteria; pass its lines with
--adjudicationand merge again.