Install
$ agentstack add skill-yrzhe-claude-skills-vote-predict ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ● Filesystem access Used
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Vote Predict
Thin scenario wrapper for opinion/vote simulation. Unlike product-feedback which scores 1-10, vote-predict uses categorical choices and post-stratification so the distribution maps to population-level prediction.
Recipe
import sys, json
sys.path.insert(0, str(__import__('pathlib').Path.home() / '.claude/skills/persona-sim'))
from lib import sampler, ipf, aggregator
from lib.sim_engine import SYSTEM_PROMPT, _persona_card
from lib.llm_router import generate
# 1. Sample a large panel (census-matched after IPF)
panel = sampler.sample_personas(n=100, source="nemotron_usa", mode="stream")
# 2. Compute IPF weights to match target population marginals
weights = ipf.ipf_weights(
panel,
targets={
"age": {""}}')
resp = generate(system=SYSTEM_PROMPT, persona_card=_persona_card(persona),
task=task, tier="default", max_tokens=100)
# parse JSON (see eval/run_eval._parse_json_answer)
...
# 4. Aggregate with weights
# Option-wise: weighted_share[option] = sum(weights[i] for i where vote[i]==option) / sum(weights)
Core rules
- NEVER output a single "winner" percentage as the answer. Output the full distribution + margin of uncertainty.
- Always apply IPF weights when the base panel doesn't match the target population (almost always for Nemotron).
- Report segment breakdowns (age × vote, education × vote) — even if the topline says 52/48, the story is in the segments.
- Attach bias audit warning from
lib/bias_audit.py— humans show acquiescence and framing biases that LLM personas do not. Flag the prediction as "LLM-synthetic, not a replacement for real polling". - Flag multi-modal results — if
aggregator._dip_test_proxysays multi-modal, the population is split and averaging misleads.
Calibration priors
Known US baselines from eval/gss_20q.json can sanity-check predictions. If your simulated distribution is >0.2 JS-divergence from the reference for a similar question, the simulation is not trustworthy for this topic. Run eval first.
Do NOT use this skill for
- Real election forecasting (use prediction markets + polling aggregators)
- High-stakes policy decisions on single outcome (use this for hypothesis generation only)
- Issues where real-world events have shifted distributions after the Nemotron training cutoff (2024 or earlier)
See also
persona-sim/lib/ipf.py— post-stratification implementationpersona-sim/lib/bias_audit.py— run before publishing any predictionpersona-sim/eval/gss_20q.json— baseline attitude distributions
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Yrzhe
- Source: Yrzhe/claude-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.