.claude/skills/consensus-voting/SKILL.md
Byzantine consensus voting for multi-agent decision making. Implements voting protocols, conflict resolution, and agreement algorithms for reaching consensus among multiple agents.
npx skillsauth add oimiragieo/agent-studio consensus-votingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Set up the voting session:
voting_session:
topic: 'Which database to use for the new service'
options:
- PostgreSQL
- MongoDB
- DynamoDB
quorum: 3 # Minimum votes required
threshold: 0.6 # 60% agreement needed
weights:
database-architect: 2.0 # Expert gets 2x weight
security-architect: 1.0
devops: 1.5
Gather agent recommendations:
## Vote Collection
### database-architect (weight: 2.0)
- Vote: PostgreSQL
- Rationale: Strong ACID guarantees, mature ecosystem
- Confidence: 0.9
### security-architect (weight: 1.0)
- Vote: PostgreSQL
- Rationale: Better encryption at rest, audit logging
- Confidence: 0.8
### devops (weight: 1.5)
- Vote: DynamoDB
- Rationale: Managed service, auto-scaling
- Confidence: 0.7
Apply weighted voting:
PostgreSQL: (2.0 * 0.9) + (1.0 * 0.8) = 2.6
DynamoDB: (1.5 * 0.7) = 1.05
MongoDB: 0
Total weight: 4.5
PostgreSQL: 2.6 / 4.5 = 57.8%
DynamoDB: 1.05 / 4.5 = 23.3%
Threshold: 60% → No clear consensus
When no consensus is reached:
Strategy 1: Expert Override
Strategy 2: Discussion Round
Strategy 3: Escalation
Record the final decision:
## Decision Record
### Topic
Which database to use for the new service
### Decision
PostgreSQL
### Voting Summary
- PostgreSQL: 57.8% (2 votes)
- DynamoDB: 23.3% (1 vote)
- Consensus: NOT REACHED (below 60% threshold)
### Resolution Method
Expert override - database-architect (domain expert)
had 0.9 confidence in PostgreSQL
### Dissenting Opinion
DevOps preferred DynamoDB for operational simplicity.
Mitigation: Will use managed PostgreSQL (RDS) to
reduce operational burden.
### Decision Date
2026-01-23
</execution_process>
<best_practices>
</best_practices> </instructions>
<examples> <usage_example> **Conflict Resolution Request**:The architect wants microservices but the developer prefers monolith.
Resolve this conflict.
Voting Process:
## Voting: Architecture Style
### Votes
- architect: Microservices (weight 1.5, confidence 0.8)
- developer: Monolith (weight 1.0, confidence 0.9)
- devops: Microservices (weight 1.0, confidence 0.6)
### Calculation
Microservices: (1.5 _ 0.8) + (1.0 _ 0.6) = 1.8
Monolith: (1.0 \* 0.9) = 0.9
Microservices: 66.7% → CONSENSUS REACHED
### Decision
Microservices, with modular monolith as migration path
### Dissent Mitigation
Start with modular monolith, extract services incrementally
to address developer's maintainability concerns.
</usage_example> </examples>
Prevents premature closure of council or multi-agent tasks by requiring 2+ agents to independently confirm task completion before the session closes.
A single agent signaling "done" can produce incomplete results -- the agent may have finished its own subtask but the overall task is not complete. The dual-completion gate requires consensus on completion itself.
{ agent_id, timestamp, signal: "complete" }min_completions (default: 2) signals within a window_seconds time window (default: 60s)nudge_after_seconds (default: 30s)fallback_timeout (default: 120s) with only 1 completion, accept single-agent completion with a warning: "single_agent_completion" flagcompletion_gate:
min_completions: 2 # minimum agents that must signal done
window_seconds: 60 # time window for completion consensus
nudge_after_seconds: 30 # send nudge to remaining agents after first completion
fallback_timeout: 120 # accept single completion after this timeout (with warning)
completions = []
on_agent_complete(agent_id):
completions.push({ agent_id, timestamp: now() })
if completions.length >= min_completions:
window_start = completions[0].timestamp
window_end = completions[-1].timestamp
if (window_end - window_start) <= window_seconds:
return CLOSE_SESSION(status: "consensus_complete")
if completions.length == 1:
schedule_nudge(nudge_after_seconds)
schedule_fallback(fallback_timeout)
on_nudge_timeout():
send_to_remaining_agents("A team member has signaled completion. Please confirm if the task is done.")
on_fallback_timeout():
if completions.length < min_completions:
return CLOSE_SESSION(status: "single_agent_complete", warning: "single_agent_completion")
The dual-completion gate is invoked by the llm-council skill before closing a council session:
min_completions "complete" signals before closing| Protocol | Use Case | Threshold | Quorum | | ------------------- | ------------------------------- | -------------------- | -------- | | Simple Majority | Routine decisions | >50% | 50% | | Supermajority | Significant changes | >=66% | 75% | | Unanimous | Critical/irreversible decisions | 100% | 100% | | Weighted | Specialized expertise required | Variable | 66% | | Ranked Choice | Multiple alternatives | Runoff | 75% | | Dual Completion | Council task closure | 2 agents confirm | 100% |
This skill has a corresponding workflow for complex multi-agent scenarios:
.claude/workflows/consensus-voting-skill-workflow.mdThis skill enables decision-making in multi-agent orchestration:
Router Decision: .claude/workflows/core/router-decision.md
Artifact Lifecycle: .claude/workflows/core/skill-lifecycle.md
Related Workflows:
swarm-coordination skill for parallel agent spawning before voting.claude/workflows/enterprise/ require security-architect consensus| Anti-Pattern | Why It Fails | Correct Approach | | ------------------------------------------ | -------------------------------------------------- | -------------------------------------------------------------------- | | No quorum requirement | Tiny group decides for all; illegitimate consensus | Set minimum participation threshold per decision type | | Equal weights for all agents | Ignores domain expertise; reduces signal quality | Weight by domain expertise relevance (1.0–2.0 range) | | Discarding dissenting rationales | Loses edge case awareness and risk signals | Document all votes and rationales, majority and minority | | Immediate escalation on split vote | Skips deliberation that could resolve disagreement | Require deliberation + re-vote before human escalation | | Allowing abstentions on critical decisions | Agents avoid accountability on hard decisions | Require participation from all eligible voters on CRITICAL decisions |
Before starting:
cat .claude/context/memory/learnings.md
After completing:
.claude/context/memory/learnings.md.claude/context/memory/issues.md.claude/context/memory/decisions.mdASSUME INTERRUPTION: Your context may reset. If it's not in memory, it didn't happen.
tools
Comprehensive biosignal processing toolkit for analyzing physiological data including ECG, EEG, EDA, RSP, PPG, EMG, and EOG signals. Use this skill when processing cardiovascular signals, brain activity, electrodermal responses, respiratory patterns, muscle activity, or eye movements. Applicable for heart rate variability analysis, event-related potentials, complexity measures, autonomic nervous system assessment, psychophysiology research, and multi-modal physiological signal integration.
tools
Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python. Use when working with network/graph data structures, analyzing relationships between entities, computing graph algorithms (shortest paths, centrality, clustering), detecting communities, generating synthetic networks, or visualizing network topologies. Applicable to social networks, biological networks, transportation systems, citation networks, and any domain involving pairwise relationships.
data-ai
Molecular featurization for ML (100+ featurizers). ECFP, MACCS, descriptors, pretrained models (ChemBERTa), convert SMILES to features, for QSAR and molecular ML.
development
Run Python code in the cloud with serverless containers, GPUs, and autoscaling. Use when deploying ML models, running batch processing jobs, scheduling compute-intensive tasks, or serving APIs that require GPU acceleration or dynamic scaling.