{"id":"125a3f7a-c1ad-4f08-8ef9-5ecd3650a797","shortId":"cgEL9W","kind":"skill","title":"consensus","tagline":"Use when comparing architectural choices, technology options, build-vs-buy decisions, feature proposals, high-impact tradeoffs, multi-team decisions, hard-to-reverse choices, or risk-heavy alternatives.","description":"# Consensus\n\nStructured decision evaluation through stance rotation — analyze from advocate, critic, and neutral perspectives, then synthesize into a confidence-rated recommendation with concrete next steps.\n\n<workflow>\n\n## Workflow\n\n### Step 1: Select Mode\n\n| Decision Scope | Mode | Reason |\n| -------------- | ---- | ------ |\n| Bounded, reversible | **Sequential** (default) | All perspectives in one pass — fast |\n| Multi-month or irreversible | **Subagent** | Three isolated subagents prevent cross-contamination |\n| Perspectives suspiciously aligned | Escalate to **Subagent** | Lack of genuine disagreement signals contamination |\n\n**Use subagent mode when:** the decision impacts more than 3 months of work, multiple teams are affected, or sequential perspectives align too easily (suspiciously low disagreement likely signals contamination — isolated subagents are required to get genuine divergence).\n\nSee `references/consensus-strategy.md` for full escalation criteria.\n\n### Step 2: Stance Rotation\n\nRotate through three perspectives (see `references/stance-rotation.md` for detailed prompts):\n\n1. **Neutral** — state the decision, list all factors (technical, organizational, timeline, risk), note missing information, present assessment without leaning toward a conclusion.\n2. **Advocate** — build the strongest case FOR: what problems does it solve, what synergies does it create, how can challenges be overcome? Subject to ethical guardrails — refuse to advocate if fundamentally harmful.\n3. **Critic** — rigorous scrutiny: real risks, overlooked complexities, simpler alternatives, flawed assumptions? Subject to ethical guardrails — acknowledge if the proposal is genuinely sound.\n\nIn **subagent mode**, dispatch three isolated subagents (one per stance) with identical context. Subagents must NOT see each other's output.\n\n### Step 3: Synthesize\n\nWeigh all three perspectives and produce a recommendation:\n\n1. **Points of agreement** — where all perspectives align (strong signal)\n2. **Points of disagreement** — where they diverge and why\n3. **Recommendation** — with confidence level: **low** / **medium** / **high**\n4. **Would change if** — conditions that would flip the recommendation\n5. **Next steps** — concrete actions based on the recommendation\n\n</workflow>\n\n<validation>\n\n### Validation Checkpoint\n\nBefore delivering the synthesis, verify:\n\n- [ ] Each perspective contributed at least one unique point not raised by the others\n- [ ] The critic identified at least one genuine risk (not manufactured disagreement)\n- [ ] The recommendation confidence level is justified by the degree of inter-perspective agreement\n- [ ] If all three perspectives agree too easily, escalate to subagent mode\n\n</validation>\n\n<example>\n\n## Example\n\n**Decision:** \"Should we migrate from REST to GraphQL?\"\n\n| Perspective | Key Finding |\n|-------------|-------------|\n| Neutral | Current REST API has 47 endpoints; clients use ad-hoc field filtering. GraphQL would reduce over-fetching but adds schema maintenance. |\n| Advocate | Mobile clients would cut payload size ~60%. Single endpoint simplifies versioning. Strong ecosystem tooling available. |\n| Critic | Team has no GraphQL experience — 2-3 month learning curve. Caching is harder. Existing REST clients need migration path. |\n\n**Synthesis:**\n\n- Agreement: Current API has over-fetching problems worth solving.\n- Disagreement: Whether the learning curve cost is justified given timeline.\n- Recommendation: **Adopt GraphQL for new endpoints only** (confidence: **medium**).\n- Would change if: Team had prior GraphQL experience (→ high confidence, full migration) or deadline is <3 months (→ stay REST).\n- Next steps: 1) Prototype one high-traffic endpoint. 2) Measure payload reduction. 3) Decide on full migration after prototype.\n\n</example>\n\n## References\n\n- **[Consensus Strategy](references/consensus-strategy.md)** — Mode selection and escalation criteria\n- **[Stance Rotation](references/stance-rotation.md)** — Detailed rotation steps, subagent dispatch, synthesis framework\n- **[Stance Prompts](../perspectives/references/stances.md)** — Advocate, critic, neutral prompts with ethical guardrails (from perspectives skill)\n\n<guardrails>\n## Guardrails\n\nAdd guardrails instructions here.\n</guardrails>","tags":["consensus","flow","cofin","agent-skills","ai-agents","beads","claude-code","codex","cursor","developer-tools","gemini-cli","opencode"],"capabilities":["skill","source-cofin","skill-consensus","topic-agent-skills","topic-ai-agents","topic-beads","topic-claude-code","topic-codex","topic-cursor","topic-developer-tools","topic-gemini-cli","topic-opencode","topic-plugin","topic-slash-commands","topic-spec-driven-development"],"categories":["flow"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cofin/flow/consensus","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cofin/flow","source_repo":"https://github.com/cofin/flow","install_from":"skills.sh"}},"qualityScore":"0.455","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 11 github stars · SKILL.md body (4,270 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:07:35.896Z","embedding":null,"createdAt":"2026-04-23T13:03:58.445Z","updatedAt":"2026-05-18T19:07:35.896Z","lastSeenAt":"2026-05-18T19:07:35.896Z","tsv":"'-3':430 '/perspectives/references/stances.md':533 '1':62,160,269,494 '2':148,182,279,429,501 '3':113,214,259,288,488,505 '4':296 '47':388 '5':306 '60':414 'acknowledg':230 'action':310 'ad':393 'ad-hoc':392 'add':404,545 'adopt':465 'advoc':43,183,210,407,534 'affect':120 'agre':364 'agreement':272,359,444 'align':94,124,276 'altern':33,223 'analyz':41 'api':386,446 'architectur':5 'assess':176 'assumpt':225 'avail':422 'base':311 'bound':69 'build':10,184 'build-vs-buy':9 'buy':12 'cach':434 'case':187 'challeng':201 'chang':298,474 'checkpoint':316 'choic':6,28 'client':390,409,439 'compar':4 'complex':221 'conclus':181 'concret':57,309 'condit':300 'confid':53,291,348,471,482 'confidence-r':52 'consensus':1,34,513 'contamin':91,103,132 'context':249 'contribut':324 'cost':459 'creat':198 'criteria':146,520 'critic':44,215,336,423,535 'cross':90 'cross-contamin':89 'current':384,445 'curv':433,458 'cut':411 'deadlin':486 'decid':506 'decis':13,23,36,65,109,164,372 'default':72 'degre':354 'deliv':318 'detail':158,524 'disagr':101,129,282,345,454 'dispatch':240,528 'diverg':140,285 'easili':126,366 'ecosystem':420 'endpoint':389,416,469,500 'escal':95,145,367,519 'ethic':206,228,539 'evalu':37 'exampl':371 'exist':437 'experi':428,480 'factor':167 'fast':78 'featur':14 'fetch':402,450 'field':395 'filter':396 'find':382 'flaw':224 'flip':303 'framework':530 'full':144,483,508 'fundament':212 'genuin':100,139,235,341 'get':138 'given':462 'graphql':379,397,427,466,479 'guardrail':207,229,540,544,546 'hard':25 'hard-to-revers':24 'harder':436 'harm':213 'heavi':32 'high':17,295,481,498 'high-impact':16 'high-traff':497 'hoc':394 'ident':248 'identifi':337 'impact':18,110 'inform':174 'instruct':547 'inter':357 'inter-perspect':356 'irrevers':83 'isol':86,133,242 'justifi':351,461 'key':381 'lack':98 'lean':178 'learn':432,457 'least':326,339 'level':292,349 'like':130 'list':165 'low':128,293 'mainten':406 'manufactur':344 'measur':502 'medium':294,472 'migrat':375,441,484,509 'miss':173 'mobil':408 'mode':64,67,106,239,370,516 'month':81,114,431,489 'multi':21,80 'multi-month':79 'multi-team':20 'multipl':117 'must':251 'need':440 'neutral':46,161,383,536 'new':468 'next':58,307,492 'note':172 'one':76,244,327,340,496 'option':8 'organiz':169 'other':334 'output':257 'over-fetch':400,448 'overcom':203 'overlook':220 'pass':77 'path':442 'payload':412,503 'per':245 'perspect':47,74,92,123,154,264,275,323,358,363,380,542 'point':270,280,329 'present':175 'prevent':88 'prior':478 'problem':190,451 'produc':266 'prompt':159,532,537 'propos':15,233 'prototyp':495,511 'rais':331 'rate':54 'real':218 'reason':68 'recommend':55,268,289,305,314,347,464 'reduc':399 'reduct':504 'refer':512 'references/consensus-strategy.md':142,515 'references/stance-rotation.md':156,523 'refus':208 'requir':136 'rest':377,385,438,491 'revers':27,70 'rigor':216 'risk':31,171,219,342 'risk-heavi':30 'rotat':40,150,151,522,525 'schema':405 'scope':66 'scrutini':217 'see':141,155,253 'select':63,517 'sequenti':71,122 'signal':102,131,278 'simpler':222 'simplifi':417 'singl':415 'size':413 'skill':543 'skill-consensus' 'solv':193,453 'sound':236 'source-cofin' 'stanc':39,149,246,521,531 'state':162 'stay':490 'step':59,61,147,258,308,493,526 'strategi':514 'strong':277,419 'strongest':186 'structur':35 'subag':84,87,97,105,134,238,243,250,369,527 'subject':204,226 'suspici':93,127 'synergi':195 'synthes':49,260 'synthesi':320,443,529 'team':22,118,424,476 'technic':168 'technolog':7 'three':85,153,241,263,362 'timelin':170,463 'tool':421 'topic-agent-skills' 'topic-ai-agents' 'topic-beads' 'topic-claude-code' 'topic-codex' 'topic-cursor' 'topic-developer-tools' 'topic-gemini-cli' 'topic-opencode' 'topic-plugin' 'topic-slash-commands' 'topic-spec-driven-development' 'toward':179 'tradeoff':19 'traffic':499 'uniqu':328 'use':2,104,391 'valid':315 'verifi':321 'version':418 'vs':11 'weigh':261 'whether':455 'without':177 'work':116 'workflow':60 'worth':452 'would':297,302,398,410,473","prices":[{"id":"3391664f-d9b5-4a71-b858-1742316becb3","listingId":"125a3f7a-c1ad-4f08-8ef9-5ecd3650a797","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cofin","category":"flow","install_from":"skills.sh"},"createdAt":"2026-04-23T13:03:58.445Z"}],"sources":[{"listingId":"125a3f7a-c1ad-4f08-8ef9-5ecd3650a797","source":"github","sourceId":"cofin/flow/consensus","sourceUrl":"https://github.com/cofin/flow/tree/main/skills/consensus","isPrimary":false,"firstSeenAt":"2026-04-23T13:03:58.445Z","lastSeenAt":"2026-05-18T19:07:35.896Z"}],"details":{"listingId":"125a3f7a-c1ad-4f08-8ef9-5ecd3650a797","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cofin","slug":"consensus","github":{"repo":"cofin/flow","stars":11,"topics":["agent-skills","ai-agents","beads","claude-code","codex","context-driven-development","cursor","developer-tools","gemini-cli","opencode","plugin","slash-commands","spec-driven-development","subagents","tdd","workflow"],"license":"apache-2.0","html_url":"https://github.com/cofin/flow","pushed_at":"2026-04-27T19:07:26Z","description":"Context-Driven Development toolkit for AI agents — spec-first planning, TDD workflow, and Beads integration.","skill_md_sha":"3d954886484bb46d1c084abcc8777ce9b2b5699a","skill_md_path":"skills/consensus/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cofin/flow/tree/main/skills/consensus"},"layout":"multi","source":"github","category":"flow","frontmatter":{"name":"consensus","description":"Use when comparing architectural choices, technology options, build-vs-buy decisions, feature proposals, high-impact tradeoffs, multi-team decisions, hard-to-reverse choices, or risk-heavy alternatives."},"skills_sh_url":"https://skills.sh/cofin/flow/consensus"},"updatedAt":"2026-05-18T19:07:35.896Z"}}