Skip to content
Agentmart
Submit a tool

fulcra-sister-cities

Run or facilitate Sister Cities, an asynchronous city-trade social game for 3–10 players.

Skill by fulcradynamics

IndexedMIT★ 3
Write a review

Chalk Labs

Need help deploying fulcra-sister-cities?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/fulcradynamics-fulcra-sister-cities

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Run or facilitate Sister Cities, an asynchronous city-trade social game for 3–10 players. Cities are light social-game flavour; players trade everyday imports such as candy, soft drinks, books, games, plants, and small comforts, with automatic redacted round editions.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/fulcra-sister-cities

What's inside

Skill name
fulcra-sister-cities
Description
Run or facilitate Sister Cities, an asynchronous city-trade social game for 3–10 players. Cities are light social-game flavour; players trade everyday imports such as candy, soft drinks, books, games, plants, and small comforts, with automatic redacted round editions.
License
MIT
Instructions
233 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (135)

  • .gitignore
  • NAME.md
  • README.md
  • SKILL.md
  • config.json
  • README.md · content/
  • gazetteer.json · content/
  • import_needs.json · content/
  • newspaper.json · content/
  • questions.json · content/
  • site.css · content/
  • image-upgrader.md · docs/
  • m10-reading-experience.md · docs/
  • m11-everyday-imports.md · docs/
  • m12-current-trade-priority.md · docs/
  • m2-engine.md · docs/
  • m3-economy.md · docs/
  • m4-questions.md · docs/
  • m5-newspaper.md · docs/
  • m6-hosting.md · docs/
  • m7-endgame.md · docs/
  • m8-integration.md · docs/
  • m9-imports-and-publication.md · docs/
  • __init__.py · engine/
  • aggregate.py · engine/
  • audit.py · engine/
  • ballot.py · engine/
  • clock.py · engine/
  • config.py · engine/
  • content.py · engine/
  • dice.py · engine/
  • economy.py · engine/
  • endgame.py · engine/
  • errors.py · engine/
  • game.py · engine/
  • join.py · engine/
  • money.py · engine/
  • persistence.py · engine/
  • rotation.py · engine/
  • state.py · engine/
  • trade.py · engine/
  • views.py · engine/
  • __init__.py · facilitator/
  • transaction.py · facilitator/
  • __init__.py · hosting/
  • build.py · hosting/
  • guard.py · hosting/
  • identity.py · hosting/
  • manifest.py · hosting/
  • page.py · hosting/
  • serve.py · hosting/
  • __init__.py · newspaper/
  • copy.py · newspaper/
  • departments.py · newspaper/
  • edition.py · newspaper/
  • endgame.py · newspaper/
  • imagery.py · newspaper/
  • portrait.py · newspaper/
  • prose.py · newspaper/
  • publish.py · newspaper/
  • …and 75 more

SKILL.md (first lines)

# Sister Cities

**Sister Cities** is an asynchronous social game. Players are mayors of
unique cities. Each shared round combines city import needs, anonymous export
offers, blind winner choice, profit, mayor questions, and a newspaper-style
edition of **The Daily Manifest**.

This skill vendors the runnable v1 engine and content. It is not a thin link
to a private project repo: another agent can install, test, inspect, and
extend the same code directly.

## Before hosting a real game

1. Create or join one shared Fulcra Workspace team:
   ```text
   team/sister-cities-<game-id>/
   ```
2. Give each participating agent a normal `fulcra-workspaces` member
   directory/inbox. The facilitator is also a player and uses the same game
   rules as everyone else.
3. Keep actual identity mapping private to the player agents/facilitator.
   Published material uses city/mayor identity only.
4. Confirm that all players understand publication: the newspaper is shared
   to the group but must not expose non-winning export origins.

## Install and verify

From this skill directory:

```bash
uv venv .venv
uv pip install --python .venv/bin/python -e .
.venv/bin/python run_tests.py
.venv/bin/python -m playtest.run --check
```

`run_tests.py` verifies engine/newspaper/hosting behavior. The bundled
`playtest/` fixture is a synthetic eight-mayor integration run used for
regression testing; it contains no real participant data.

## Core game contract

- 3–10 configurable players; each city is unique.
- Fixed facilitator, first in city order, but their user plays normally.
- One shared round timer (24 hours by default, configurable).
- Each importing mayor files the city's next order from eligible suggestions or
  as a freeform request; no city is silently assigned a random need.
- Imports and exports are relatable everyday things -- candy, soft drinks,
  books, snacks, music, games, clothes, plants, pets, and small comforts --
  not civic procurement, specialist work, or generic advice prompts.
- Cities are social-game flavour, not a demand that players role-play real
  mayors or solve complex municipal problems.
- Each player gets one combined check-in per round, with up to two slots.
- A current open-trade export is never displaced by a future import-order
  prompt; in a three-city game, import choices arrive every three rounds, on
  the city's own turn.
- Import turns rotate by city order; players join that queue after their
  first export.
- Exports are freeform and capped per player per need per round.
- Importer chooses blindly in the following round; losing export origin/text
  is never published.
- Player-entered export text is quoted as player voice, not rewritten or blocked
  by the newspaper's editorial tone gate. A winning quote may name its mayor;
  non-winning origins remain permanently withheld.
- No offers: importing city ramps up domestic industry and receives profit.
- No winner pick: submitted cities split profit as configured.
- Profit is 2d6-style and accumulates on the visible city leaderboard.
- Mayor questions are freeform/getting-to-know-you prompts and appear in
  clever aggregate newspaper language.
- Completing a round automatically renders its redacted edition, rebuilds the
  curated archive, and produces a group-availability notice.
- Every edition has an image: raster preferred when a provider exists,
  game-state-informed SVG/procedural fallback otherwise.
- The stable paper URL opens the newest issue; each permanent issue has clear
  latest, archive, and adjacent-issue navigation.

`config.json` is the single source of tunable game policy.

## Agent-facing play

The engine is transport-neutral: players may talk to their own agents, or a
facilitator may relay for a player without an agent. Do not have one agent
role-play every mayor in a real test; use separate agent sessions and the
records below so privacy/order failures are observable.

### Canonical state and Workspace contract

The **facilitator's private local engine snapshot is canonical**, not the
Workspace. Create `state/game.snapshot` on the facilitator's durable local
storage and use `engine.persistence.SnapshotStore` around every transaction:

```python
from engine import GameEngine
from engine.persistence import SnapshotError, SnapshotStore
from facilitator import Facilitator

store = SnapshotStore("state/game.snapshot")
with store.locked():
    try:
        game = store.load()
    except SnapshotError:     # first transaction only: create/configure/start it
        game = GameEngine()
    # Attach once per loaded runtime, before any tick/advance.  This is the
    # public automatic-publication API; it runs on every completed round.
    desk = Facilitator.attach(game)
    # perform one engine action (join, submit, pick, or tick)
    store.save(game)
```

`SnapshotStore` uses a separate exclusive lock and atomic replace, so there is
one writer even if a facilitator restarts or a second session is accidentally
started. The snapshot contains the real handle-to-city routing, exporter ledger,
RNG seed, counters, timer, queue, and used check-ins. Keep it local to the
facilitator; it is ignored by Git and must never be copied into Workspace.

After each committed transaction, the facilitator writes these **redacted
Workspace records** (JSON or Markdown with the same fields):

| Record | Required fields | May not contain |

From fulcradynamics/community-skills, MIT.

More from fulcradynamics/community-skills

Signals

Stars
3
Forks
6
Open issues
4
Last commit (this folder)
Sep 10, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from fulcradynamics

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get fulcra-sister-cities running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying fulcra-sister-cities?

CallGet help
Cite this page

fulcra-sister-cities skill. Agent Mart. https://agentmart.dev/skills/fulcradynamics-fulcra-sister-cities (last updated 2026-10-24)