Skip to content
Back to skills

GEO INFER CIV

ASecurity

Civic engagement analytics and policy appraisal. Use when analyzing meeting attendance, public comments, voter turnout, participation indices, demographic representation, or cost-benefit / stakeholder / equity analysis of policy proposals.

  • 17 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 1, 2026
businesspythongo

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned September 22, 2026

npx -y skills add ActiveInferenceInstitute/GEO-INFER --skill GEO-INFER-CIV --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of GEO INFER CIV?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for GEO INFER CIV
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/activeinferenceinstitute-geo-infer-civ/badge)](https://www.skillsdirectory.com/skills/activeinferenceinstitute-geo-infer-civ)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: geo-infer-civ
description: Civic engagement analytics and policy appraisal. Use when analyzing meeting attendance, public comments, voter turnout, participation indices, demographic representation, or cost-benefit / stakeholder / equity analysis of policy proposals.
prerequisites:
  recommended:
    - geo-infer-space
    - geo-infer-data
    - geo-infer-econ
difficulty: intermediate
estimated_time: 45min
examples_dir: ../GEO-INFER-EXAMPLES/examples/
---

# GEO-INFER-CIV

## Instructions

### Core Capabilities

- **Attendance tracking** (`AttendanceTracker`): registered vs. actual attendance across meeting types, linear trend analysis, per-meeting effectiveness.
- **Public comment analysis** (`PublicCommentAnalyzer`): comment categorization, Shannon-entropy engagement depth, unique submitter ratios.
- **Voter turnout modeling** (`VoterTurnoutModel`): historical turnout summary and prediction with contestedness / media-coverage adjustments.
- **Participation analysis** (`ParticipationAnalyzer`): engagement scoring across eight participation methods, participation index relative to a baseline, demographic representation reports.
- **Policy appraisal** (`CostBenefitAnalyzer`, `StakeholderImpactAnalyzer`, `EquityAnalyzer`): discounted NPV, benefit-cost ratio, IRR, payback period, risk-adjusted NPV, stakeholder impact matrices, and Gini / disparate-impact equity scoring.

### Key Imports

```python
from geo_infer_civ import (
    AttendanceTracker,
    PublicCommentAnalyzer,
    VoterTurnoutModel,
    ParticipationAnalyzer,
    ParticipantRecord,
    ParticipationMethod,
    CostBenefitAnalyzer,
    CostBenefitItem,
    StakeholderImpactAnalyzer,
    EquityAnalyzer,
)
```

The full public surface also includes the enums (`MeetingType`, `CommentCategory`, `ImpactLevel`, `PolicyDomain`), the record dataclasses (`MeetingRecord`, `PublicComment`), and the result dataclasses (`AttendanceTrend`, `CommentAnalysis`, `EngagementScore`, `RepresentationReport`, `CostBenefitResult`, `StakeholderImpact`, `EquityScore`).

## Examples

```python
from geo_infer_civ import (
    CostBenefitAnalyzer,
    CostBenefitItem,
    ParticipantRecord,
    ParticipationAnalyzer,
    ParticipationMethod,
)

# Participation analysis
analyzer = ParticipationAnalyzer()
analyzer.add_records(
    [
        ParticipantRecord("p01", ParticipationMethod.TOWN_HALL, 1705276800.0, "group_a"),
        ParticipantRecord("p02", ParticipationMethod.SURVEY, 1705363200.0, "group_a"),
        ParticipantRecord("p03", ParticipationMethod.PUBLIC_COMMENT, 1705449600.0, "group_b"),
    ]
)
score = analyzer.compute_engagement_score(target_population=5000)
index = analyzer.compute_participation_index(target_population=10_000, baseline_rate=0.10)
report = analyzer.analyze_representation({"group_a": 0.5, "group_b": 0.5})

# Cost-benefit appraisal
cba = CostBenefitAnalyzer(discount_rate=0.05)
cba.add_items(
    [
        CostBenefitItem("construction", 250_000.0, is_benefit=False),
        CostBenefitItem("flood avoidance", 900_000.0, is_benefit=True, time_horizon_years=10),
    ]
)
result = cba.analyze()
print(result.net_present_value, result.benefit_cost_ratio, result.payback_period_years)
```

## Guidelines

- `compute_participation_index` returns `actual_rate / baseline_rate`: 1.0 means participation exactly at the baseline, values above 1.0 mean the baseline was exceeded. It is not bounded to [0, 1].
- `CostBenefitResult.internal_rate_of_return` is `nan` when NPV never crosses zero (all-cost or all-benefit item sets); `payback_period_years` is `inf` when break-even is never reached within the modeled horizon.

### Integrations

- No cross-module `geo_infer_*` imports exist in the code today; `geo-infer-space`, `geo-infer-data`, and `geo-infer-econ` are recommended companions only. The core runs on the standard library alone.
- Test: `uv run python GEO-INFER-TEST/run_unified_tests.py --module CIV`

Files in this skill

  • AGENTS.md1.3 KB
  • README.md900 B
  • SKILL.md1.6 KB
  • docs/api_reference.md10.9 KB
  • docs/examples/advanced_example.md13.3 KB
  • docs/examples/basic_example.md8.2 KB
  • docs/getting_started.md9.7 KB
  • docs/index.md5.1 KB
  • examples/AGENTS.md1.2 KB
  • examples/README.md731 B
  • examples/basic_civic_engagement.py2.7 KB
  • pyproject.toml3.2 KB
  • requirements.txt75 B
  • setup.py1.5 KB
  • src/AGENTS.md1.1 KB
  • src/README.md731 B
  • src/geo_infer_civ/AGENTS.md1.2 KB
  • src/geo_infer_civ/README.md794 B
  • src/geo_infer_civ/__init__.py1.3 KB
  • src/geo_infer_civ/api/AGENTS.md1.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.