agentleFS
ordinary9843ordinary9843/claude-gitizens/skills/propose/SKILL.md

propose

Skill0 starsChanged 5 months agoMITView on GitHub

Submit a law proposal to the Gitizens civilization. Must output === CHECK OK. If it fails, tell the user to run gh auth login. Fetch and display the world state: Show the user: - Era, laws enacted, treasury balance - Policy metrics: education / industry / welfare / green_policy / defense (all /100) - Dynamic metrics: population, pollution, stability - World summary sentence Also fetch and check for an active event: If title field is non-empty, tell the user: ⚡…

10 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

11 rules. 0 are common, 8 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 9 edited versions we read keep these.

  • 8

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Must output === CHECK OK. If it fails, tell the user to run gh auth login.

    line 19
  2. Very specific:

    If title field is non-empty, tell the user:

    line 43
  3. Very specific:

    Wait for their answer. Store as PROPOSAL_TITLE.

    line 51
  4. Distinctive:

    Ask: "Which metrics do you want to change, and by how much?

    line 79
  5. Distinctive:

    Ask: "Which entity ID? (e.g.

    line 102
  6. Distinctive:

    Ask: "What fields do you want to change?

    line 103
  7. Distinctive:

    Ask: "What world state fields do you want to update?" Build the YAML:

    line 114
  8. Distinctive:

    No YAML needed. Optionally ask if this is a constitutional law:

    line 124
  9. Distinctive:

    Ask: "Submit this proposal?

    line 151
  10. Distinctive:

    Write the body to a temp file, then submit:

    line 157
  11. Distinctive:

    Delete the temp file after submission:

    line 172

“Common” is measured: kept by at least 6 in 10 of the 9 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Skill: gitizens:propose

Submit a law proposal to the Gitizens civilization.

Setup

GITIZENS_REPO="ordinary9843/gitizens"

Steps

Step 1 — Check GitHub CLI access

bash scripts/check-access.sh

Must output === CHECK OK. If it fails, tell the user to run gh auth login.

Step 2 — Show current world state

Fetch and display the world state:

gh api repos/ordinary9843/gitizens/contents/world/state.json \
  --jq '.content' | python3 -c "import sys,base64; sys.stdout.write(base64.b64decode(sys.stdin.read().strip()).decode())"

Show the user:

  • Era, laws enacted, treasury balance
  • Policy metrics: education / industry / welfare / green_policy / defense (all /100)
  • Dynamic metrics: population, pollution, stability
  • World summary sentence

Also fetch and check for an active event:

gh api repos/ordinary9843/gitizens/contents/world/active_event.json \
  --jq '.content' | python3 -c "import sys,base64; sys.stdout.write(base64.b64decode(sys.stdin.read().strip()).decode())"

If title field is non-empty, tell the user:

⚡ Active event: {title} — passing any law within 4 hours triggers the response outcome instead of the default consequence.

Step 3 — Get proposal title

Ask the user:

What do you want to propose? Give it a short title (the part after [PROPOSAL]).

Wait for their answer. Store as PROPOSAL_TITLE.

Step 4 — Get description

Ask the user:

Describe your proposal in detail. What should it do or change? Why should citizens vote for it?

Wait for their answer. Store as PROPOSAL_DESC.

The description must be at least 30 characters and clearly state the voting intent. If too vague, ask for more detail.

Step 5 — Choose effect type

Ask the user:

What kind of effect does this proposal have?

  • policy — change one or more policy metrics (education / industry / welfare / green_policy / defense). This is the primary type. Costs 100 Git Coins.
  • declaration — text-only law, no world effect. Free.
  • evolve — rename or annotate an existing auto-generated entity.
  • state_patch — directly override a world state field (treasury, era, etc.). Use sparingly.

Press Enter for declaration.

Step 6 — Collect effect details

If policy:

Show the current policy metric values from Step 2. Ask: "Which metrics do you want to change, and by how much? (e.g. education +20, welfare +15)"

Rules:

  • Valid metrics: education, industry, welfare, green_policy, defense
  • Each change must be an integer (positive or negative)
  • Max ±50 per metric per proposal
  • The world engine will auto-generate or remove structures based on the resulting values

Build the YAML:

type: policy
changes:
  {metric}: {delta}
  {metric}: {delta}

If evolve:

Fetch current entities:

gh api repos/ordinary9843/gitizens/contents/world/WORLD.md \
  --jq '.content' | python3 -c "import sys,base64; sys.stdout.write(base64.b64decode(sys.stdin.read().strip()).decode())"

Ask: "Which entity ID? (e.g. bld-001)" Ask: "What fields do you want to change? (e.g. rename it, add a description)" Build the YAML:

type: evolve
id: {id}
changes:
  {field}: {value}

If state_patch:

Ask: "What world state fields do you want to update?" Build the YAML:

type: state_patch
patch:
  {field}: {value}

If declaration:

No YAML needed. Optionally ask if this is a constitutional law:

Should this carry a constitutional tag? (e.g. constitution/founding-charter) — press Enter to skip.

If yes, add:

type: declaration
tag: "constitution/{slug}"

Step 7 — Compose and confirm

Show the user the full issue body:

Title: [PROPOSAL] {PROPOSAL_TITLE}

## Description

{PROPOSAL_DESC}

## Effect        ← omit entirely if declaration with no tag

```yaml
{EFFECT_YAML}

Ask: "Submit this proposal? (yes/no)"

If no: stop.

### Step 8 — Submit

Write the body to a temp file, then submit:

```python
# Use the Write tool:
path: skills/propose/_tmp_body.txt
content: {full body text}
gh issue create `
  --repo "ordinary9843/gitizens" `
  --title "[PROPOSAL] {PROPOSAL_TITLE}" `
  --body-file skills/propose/_tmp_body.txt

Delete the temp file after submission:

Remove-Item skills/propose/_tmp_body.txt -ErrorAction SilentlyContinue

Step 9 — Confirm

Show the user the Issue URL returned by gh issue create. Tell them:

Your proposal is live. Voting closes in 24 hours. Watch the city: https://ordinary9843.github.io/gitizens/

World engine reference

Buildings, districts, institutions, and sectors are auto-generated by the world engine based on policy metric thresholds. Players do not place them directly.

MetricThresholdEntity created
education25Public School
education55National University
education80Academy of Sciences
industry25Manufacturing District
industry55Industrial Complex
industry80Heavy Industry Zone
welfare30Community Center
welfare60Social Housing District
green_policy35City Park
green_policy65Nature Reserve
green_policy85Eco-Research Center
defense30Military Barracks
defense65Defense Ministry
pollution60Smog Zone (negative)

Era progression

EraCondition
Founding Eradefault
Industrial Eraindustry > 60 AND education > 50
Modern Eraall policy metrics > 65
Golden Ageall policy metrics > 80 AND stability > 80
Crisis Agepollution > 75 OR stability < 25

Notes

  • policy is the main gameplay type. Most proposals should use it.
  • The world ticks every 4 hours: population grows, pollution drifts, stability shifts, treasury earns idle income.
  • Random events fire at 15% chance per tick — if one is active, any law passed within 4h = response.
  • The validator checks format and metric names within minutes of submission.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.