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):
D1_actor— External Actor ProfileD1_influence— Influence GainD1_reversibility— ReversibilityD1_community— Community ImpactD1_transparency— Transparency
DASH II (Post-Capture Risk):
D2_narrative— Narrative DominanceD2_governance— Governance DependenceD2_market— Market ClosureD2_data— Data and Revenue LeverageD2_remedies— Rights and Remedies
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
tactical_churn— Frequent changes to the game modelinstructional_inconsistency— Conflicting messages from staffnon_representative_training— Training tasks don't reflect real conditionsprinciple_abandonment— Core principles dropped under pressurepersonnel_instability— Staff, driver, or principal turnover
Evaluation windows (optional)
process— Process Integrity Window (early)progress— Progress Direction Window (mid)results— Results Accountability Window (late)
Tone constraints (non-negotiable for shipping mods)
These rules apply to any mod intended for public distribution.
- No em-dashes or en-dashes. Studio style. Use commas, colons, parens, semicolons.
- Both frameworks are non-moralizing. A high DGI is structural, not a moral verdict. The codex explicitly states "high score doesn't mean refuse."
- TtA failure modes are symmetric. Both premature termination AND prolonged protection are real failures. Don't write only patience-rewarding TtA cards.
- 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.
- Subtext field optional but encouraged. Use
subtextto 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.