SwipeManager

For Modders

Modding Guide

Last updated: May 2026

SwipeManager supports community-authored card packs through the documented mod system. This guide covers the card schema, the two academic frameworks the game integrates (DASH and TtA), validation, and tone constraints. The full canonical reference lives in dev_docs/44_MODDING_GUIDE.md in the game install; this page is the public mirror so search engines can find it.

File layout

A mod lives under game/mods/<your_mod_id>/. Required files:

your_mod_id/
  manifest.json        # name, version, author, target_mode, target_division
  cards/
    *.json             # card pack files
  README.md            # human description

Card schema

{
  "id": "yourmod_pack_card_01",
  "category": "ethics",
  "speaker": "Some character role",
  "prompt": "The setup for the card.",
  "left":  { "text": "...", "effects": { "morale": 2 }, "flag": "..." },
  "right": { "text": "...", "effects": { "fans": -1 }, "flag": "..." },
  "weight": 0.5,
  "cooldown": 20,
  "subtext": "Optional explicit-subtext annotation."
}

DASH framework integration

Add dashImpact to a card outcome to shift the player's D.A.S.H. Governance Index. See the DASH paper landing page for the framework background.

"left": {
  "text": "Refuse the deal.",
  "effects": { "morale": 2 },
  "dashImpact": [
    { "dimension": "D1_actor",        "delta": -1 },
    { "dimension": "D1_transparency", "delta": -1 }
  ]
}

DASH dimensions

DASH I (Entry Risk):

DASH II (Post-Capture Risk):

Delta range: -2, -1, 0, +1, +2 per outcome. The engine clamps each dimension to 0-3.

TtA framework integration

Add ttaImpact to a card outcome that affects collective learning. See the TtA paper landing page for background.

"right": {
  "text": "Restructure the engineering staff mid-season.",
  "effects": { "morale": -1 },
  "ttaImpact": [
    {
      "reset": "personnel_instability",
      "resetRiskDelta": 2,
      "readinessDelta": -2
    }
  ]
}

Reset conditions

Evaluation windows (optional)

Tone constraints (non-negotiable for shipping mods)

These rules apply to any mod intended for public distribution.

  1. No em-dashes or en-dashes. Studio style. Use commas, colons, parens, semicolons.
  2. Both frameworks are non-moralizing. A high DGI is structural, not a moral verdict. The codex explicitly states "high score doesn't mean refuse."
  3. TtA failure modes are symmetric. Both premature termination AND prolonged protection are real failures. Don't write only patience-rewarding TtA cards.
  4. No tragedy arcs for marginalized characters. If a card depicts a character from a marginalized group, the right answer protects the character. Wrong answers monetize silence. Never frame the character as the problem.
  5. Subtext field optional but encouraged. Use subtext to neutrally name dynamics. One or two sentences, third-person, no moralizing.

Validation

Run the linter on your mod before publishing:

npm run mod-lint -- mods/your_mod_id

The linter checks card IDs, required fields, dimension validity, weight and cooldown bounds, and flag-reference consistency.

Sensitivity reading

Mods that engage identity, harassment, safeguarding, or eligibility content should be reviewed by people from the affected communities before publishing. See the studio's Community Review policy for how Rusthorn handles this on first-party content.

Reference links