一键导入
generate-scenario
Generate a test scenario JSON for the DevScenarioController. Takes a description of what you want to test and produces a valid scenario file.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Generate a test scenario JSON for the DevScenarioController. Takes a description of what you want to test and produces a valid scenario file.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Adds a new feature or mechanic to the Argentum Engine (SDK primitive, effect, trigger, condition, static/replacement ability, server/client capability) following the project's architecture and SDK-elegance principles. Use when implementing engine/SDK/server/client functionality that isn't a single card — e.g. "add an effect type", "support a new keyword", "add a decision UI", "make the engine handle X".
Implements new Magic: The Gathering cards for the Argentum Engine. Use when adding a new card, the user provides a card name to implement, or asks to implement a specific MTG card.
Review pending changes (a branch, PR, or working tree) for the Argentum Engine. Optimizes for an elegant, reusable SDK — flags one-off effects/abilities that should compose existing primitives — and checks correctness, projection use, tests, and architectural fit. Use when the user says "review this PR", "review this branch", "review my changes", or asks for a code review of pending work.
Pick a random unimplemented card from a set and implement it. Accepts either a backlog cards.md path or a set name/code.
Pick the next unchecked Bloomburrow card from the AI advisor checklist, evaluate if it needs an advisor, create one if needed, and check it off.
| name | generate-scenario |
| description | Generate a test scenario JSON for the DevScenarioController. Takes a description of what you want to test and produces a valid scenario file. |
| argument-hint | <description of what you want to test> |
Generate a test scenario JSON file based on the user's request: $ARGUMENTS
Parse what the user wants to test. Common scenarios:
The scenario API only accepts cards registered in the card registry. To find available cards:
List all card definition files to see what's available:
ls mtg-sets/src/main/kotlin/com/wingedsheep/mtg/sets/definitions/*/cards/
Search for specific card types if needed (e.g., creatures with flying, red instants):
PortalSet.kt, OnslaughtSet.kt, ScourgeSet.kt, LegionsSet.kt, KhansOfTarkirSet.kt) to see card listsVerify card names exactly match — the API uses exact name matching. Read the card definition file to get the exact cardDef("Name") string.
Available sets: Portal, Onslaught, Scourge, Legions, Khans of Tarkir
If the scenario is about testing a specific card, read the card definition file and enumerate every ability the card has:
For each ability, verify the scenario enables testing it:
| Ability type | Scenario requirement |
|---|---|
| Spell effect / ETB trigger | Card in hand + enough mana to cast it |
| Activated ability (tap cost) | Card on battlefield without summoning sickness (or with haste) |
| Activated ability (sacrifice cost) | Card on battlefield + valid sacrifice targets |
| Activated ability (mana cost) | Card on battlefield + enough untapped lands |
| Triggered ability (on attack) | Card on battlefield ready to attack + combat phase accessible |
| Triggered ability (on damage) | Card on battlefield + combat or damage source available |
| Triggered ability (on death/dies) | Card on battlefield + a way to destroy it (opponent has removal, or combat) |
| Triggered ability (on upkeep/end step) | Use stopAtSteps: ["UPKEEP"] or ["END"] and set appropriate phase |
| Triggered ability (on cycle) | Card with cycling in hand + mana for cycling cost |
| Static/lord ability | Card on battlefield + other creatures it affects |
| Keyword (flying, trample, etc.) | Creatures on both sides for meaningful combat |
| Morph / face-down | Card in hand + 3 generic mana available; morph-up cost mana on battlefield |
If the scenario cannot cover an ability, adjust the board state (add lands, creatures, move card to correct zone, change phase, add stop-at-steps). If a single scenario genuinely cannot test all abilities (e.g., both "ETB" and "dies" triggers require different starting positions), note this to the user and suggest generating a second scenario, or set up the board so the card can be cast and then destroyed in the same game sequence.
Create a valid ScenarioRequest JSON matching this schema:
{
"player1Name": "Alice",
"player2Name": "Bob",
"player1": {
"lifeTotal": 20,
"hand": ["Card Name", "Card Name"],
"battlefield": [
{"name": "Card Name"},
{"name": "Card Name", "tapped": true},
{"name": "Card Name", "summoningSickness": true},
{"name": "Card Name", "counters": {"PLUS_ONE_PLUS_ONE": 2}},
{"name": "Aura Name", "attachedTo": "Host Creature Name"}
],
"graveyard": ["Card Name"],
"library": ["Card Name", "Card Name"]
},
"player2": {
"lifeTotal": 20,
"hand": [],
"battlefield": [
{"name": "Card Name"}
],
"graveyard": [],
"library": ["Card Name", "Card Name"]
},
"phase": "PRECOMBAT_MAIN",
"activePlayer": 1,
"priorityPlayer": 1,
"player1StopAtSteps": [],
"player2StopAtSteps": [],
"player1OpponentStopAtSteps": [],
"player2OpponentStopAtSteps": []
}
BEGINNING, PRECOMBAT_MAIN, COMBAT, POSTCOMBAT_MAIN, ENDINGUNTAP, UPKEEP, DRAW, PRECOMBAT_MAIN, BEGIN_COMBAT, DECLARE_ATTACKERS, DECLARE_BLOCKERS, COMBAT_DAMAGE, END_COMBAT, POSTCOMBAT_MAIN, END, CLEANUP1 or 2tapped, summoningSickness, counters, attachedToPLUS_ONE_PLUS_ONE, MINUS_ONE_MINUS_ONE, CHARGE, LOYALTY, etc.tapped: false (default) for lands the player should be able to usesummoningSickness: false (default) for creatures that should be able to attackplayer1StopAtSteps / player2StopAtSteps if the scenario needs to stop at specific steps (e.g., ["UPKEEP"] for upkeep trigger testing).json extension)manual-scenarios/<filename>.json (use the cards/<first-letter>/ subdir for single-card scenarios; mechanics/, bugs/, or ui/ for non-card scenarios)curl -X POST http://localhost:8080/api/dev/scenarios -H "Content-Type: application/json" -d @manual-scenarios/<path>/<filename>.jsonhttp://localhost:8080/swagger-ui.htmlBefore saving, verify that every card name used in the scenario exists in the card registry by checking the card definition files. Card names must match exactly (case-sensitive).
cardDef("...") string preciselylifeTotal, phase, activePlayer for clarity