Borrowing it
Nothing to install: this file belongs to phase-rs/phase. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/phase-rs/phase/main/.claude/skills/add-interactive-effect/SKILL.mdgit clone --depth 1 https://github.com/phase-rs/phaseWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/phase-rs/phase/add-interactive-effect)<a href="https://agentmods.dev/skills/phase-rs/phase/add-interactive-effect"><img src="https://agentmods.dev/badge/skills/phase-rs/phase/add-interactive-effect/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/phase-rs/phase/add-interactive-effect"><img src="https://agentmods.dev/badge/skills/phase-rs/phase/add-interactive-effect.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 2 findings, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Rogue Agent · line 406 Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.Fix: Prevent the skill from modifying its own code, SKILL.md, or configuration files. Treat skill files as read-only at runtime.
- medium Excessive Agency · line 378 Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.Fix: Add human-in-the-loop confirmation for destructive, irreversible, or high-impact operations. Never auto-execute commands that modify files, send data, or alter system state.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00055 | $0.05778 |
| Opus 5.5 | $0.00022 | $0.02311 |
| Sonnet 5.5 | $0.00011 | $0.01156 |
| Haiku 4.5 | $0.00006 | $0.00578 |
Grade A, and why
add-interactive-effect scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 320 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Adding an Interactive Effect
Interactive effects pause game resolution to wait for player input, then resume. Examples: Scry (choose top/bottom), Dig (choose cards to keep), Surveil (choose graveyard/library), Search (choose from library), Reveal+Choose (pick opponent's card).
The core mechanism is the continuation pattern: resolve_ability_chain() parks remaining instructions in typed frames on GameState::resolution_stack. A public action completes the choice, then the shared resume path drains the owning frame until completion or another prompt.
Before you start: Trace Scry end-to-end as the simplest example:
- Resolver:
effects/scry.rs— setsWaitingFor::ScryChoice - Engine handler:
engine_resolution_choices.rs::handle_resolution_choice—(WaitingFor::ScryChoice, GameAction::SelectCards)arm - Continuation:
finish_with_continuation→engine::resume_pending_continuation_if_priority - AI:
ai_support/candidates.rs— generates legal card selections - Frontend:
CardChoiceModal→ScryModal
CR Verification Rule: Every CR number in annotations MUST be verified by grepping
docs/MagicCompRules.txtbefore writing. Do NOT rely on memory — 701.x and 702.x numbers are arbitrary sequential assignments that LLMs consistently hallucinate. Rungrep -n "^701.22" docs/MagicCompRules.txt(etc.) for every number. If you cannot find it, do not write the annotation.
The Continuation Pattern
This is the most important architectural concept for interactive effects.
Problem
A card says "Scry 2, then draw a card." This is parsed as Scry { count: 2 } with sub_ability: Draw { count: 1 }. But Scry requires player input — the engine can't just barrel through to Draw.
Owners and APIs
Read the live implementations below rather than copying a hand-written continuation:
| Responsibility | Existing authority |
|---|---|
| Recognize a resolution pause and retain the remaining instructions | game/effects/mod.rs::waits_for_resolution_choice and resolve_ability_chain |
| Capture continuation context | types/game_state.rs::PendingContinuation::new |
| Park or inspect the active continuation | GameState::park_ability_continuation, active_ability_continuation, active_ability_continuation_frame_mut |
| Preserve an existing parent/child nesting relationship | The append_to_pending_continuation and prepend_to_pending_continuation paths in game/effects/mod.rs; trace the analogous caller before choosing a frame operation |
| Validate and deliver a resolution choice | game/engine_resolution_choices.rs::handle_resolution_choice |
| Resume after that choice settles | finish_with_continuation → engine::resume_pending_continuation_if_priority → effects::drain_pending_continuation / resume_resolution_frames |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 9d ago Changed · -88 lines b2c67670987f
- 2mo ago First seen · 408 lines · 55 tokens per session scan A 05e5854404b6
add-interactive-effect is a skill published in the GitHub repository phase-rs/phase (312 stars, last pushed today), licensed Apache-2.0. It adds 55 tokens to every session and 5,778 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
job-match-standards
How real ATS (Workday/Greenhouse/Lever/Taleo/iCIMS/Ashby) parse, score and rank in 2026; evidence-based matching; and the legal limits on automated screening (EU AI Act high-risk, NYC LL144, EEOC Title VII, GDPR Art. 22). Load for changes under commands/matchresume.rs, coverletter.rs, validate/, documents/embed.
anarlog
Query Anarlog meetings, notes, summaries, transcripts, participants, action items, and recurring history, or import a local recording. Use when a user asks about their Anarlog meeting data or needs meeting context for another task.
graphify-windows
Turn any folder of files into a navigable knowledge graph with community detection, an honest audit trail, and three outputs: interactive HTML, GraphRAG-ready JSON, and a plain-language GRAPHREPORT.md.
lessons
How to propose and query distilled lessons (the experiential memory). Only project-steward persists; every other agent proposes/queries. Use when you discover a durable lesson or need prior experience for the current task.
webgl-standards
DORMANT (ADR-0017, 2026-07-20) - the TERMINAL VELOCITY scroll-film was retired and apps/landing is a static site with no GL surface; this skill is preserved for any future WebGL rebuild (conventions, verified version pins, playhead/scroll-rig/VAT/Gerstner/post-chain patterns, budgets, gate + semantic-layer machinery).…
agent-cli-standards
Agent-facing CLI standards — the argv-sentinel binary mode, the thin-client-over-the-bridge rule, allowlist projections, prompt-fencing third-party text, the stable machine-readable output contract, exit codes, throttling, and destructive-command operability. Load for changes under extensionbridge/agentcli.rs…