Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/phase-rs/phase/bug-triagenpx skills add phase-rs/phase --skill bug-triagegit clone --depth 1 https://github.com/phase-rs/phaseWhat 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 | $0.00043 | $0.16291 |
| Opus 5 | $0.00022 | $0.08145 |
| Sonnet 5 | $0.00009 | $0.03258 |
| Haiku 4.5 | $0.00004 | $0.01629 |
Grade A, and why
bug-triage scanned grade A with 1 finding 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 2d 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
curl -sf -X PUT -H "Authorization: Bot $DISCORD_BOT_TOKEN" \ How it starts
The opening of the file, as written. The whole thing — 959 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Bug Triage System — Operator Reference
Quick Commands
Working directory — run everything from the repo root (/Users/matt/dev/forge.rs),
NOT from this skill directory. The triage script lives at ./scripts/sync-bug-reports.ts
and every path it reads/writes (triage/…, client/public/card-data.json) is resolved
relative to the current working directory. Running from .claude/skills/bug-triage/
fails with Module not found "scripts/sync-bug-reports.ts".
# Full pipeline (fetch new Discord messages → extract → triage → render)
bun scripts/sync-bug-reports.ts fetch
bun scripts/sync-bug-reports.ts extract
bun scripts/sync-bug-reports.ts triage # also emits triage/triage-delta.jsonl
bun scripts/sync-bug-reports.ts render
# Full-drain queue — REQUIRED unless the user explicitly asks for latest-delta-only.
# `pending` is the durable unpublished backlog; it is not a diagnostic optional extra.
bun scripts/sync-bug-reports.ts pending --limit=500
# Review the delta as the authoritative latest-fetch slice. Never infer
# latest work from the full triage-items.jsonl; this review is in addition to
# the default `pending` backlog drain.
bun scripts/sync-bug-reports.ts delta # re-emit delta without re-classifying
# CRITICAL — the script does NOT dedup against GitHub and does NOT pre-judge
# duplicates (only `create_issue` / `skip` / `needs_human_review` exist). YOU are
# the arbiter: for each non-skip delta item, decide whether it is a new bug, a
# duplicate of an existing issue, or already-known, then act on it. `publish`
# only files the threads you pass via `--thread`; every other non-skip delta item
# (`needs_human_review`, or a `create_issue` thread you did not publish) must
# still be resolved inline — see *Delta Completion Invariant* below.
# Publish: for each --thread, CREATE a new GH issue from the triage item,
# include machine-readable Discord thread/message ids in the issue body, AND
# react 👀 + post a tracking link inside the originating Discord thread.
# IMPORTANT: `publish` ALWAYS creates a NEW issue (resolveIssue(..., "created"))
# — it has NO reconcile / write-back-only mode, despite older doc claims. The
# ONLY dedup gate is `published_threads` in triage/sync-state.json: a thread
# already recorded there is skipped entirely (no issue, no write-back). So use
# `publish` ONLY for threads that have NO GH issue yet. If an issue already
# exists (incl. one you filed by hand), do NOT run `publish` — it would create
# a duplicate. Use the manual write-back procedure below instead.
bun scripts/sync-bug-reports.ts publish --thread=<id>[,<id>...] --dry-run # preview without side effects
bun scripts/sync-bug-reports.ts publish --thread=<id>[,<id>...] # create GH issue + Discord write-back
# If a previous publish created the GH issue but Discord write-back failed,
# rerun the same publish command. It repairs the missing reaction/reply from
# published_threads instead of creating a duplicate issue.
# Check a specific card's parser status
jq '.["card name"]' client/public/card-data.json
jq '.["card name"] | {abilities: [.abilities[]? | select(.effect.type == "Unimplemented")], triggers: [.triggers[]? | select(.mode == "Unknown")]}' client/public/card-data.json
# Regenerate card data (after parser changes)
./scripts/gen-card-data.sh
# Single card debug
cargo run --bin oracle-gen -- data --filter "card name"
# Active cluster trackers (open thematic workstreams) — see Cluster Tracking with Sub-Issues below
gh issue list --repo phase-rs/phase --label "collector" --state open
# View a tracker and its sub-issues
gh issue view <N> --repo phase-rs/phase --json subIssues,title,body
# Browse closed trackers (retrospective archive)
gh issue list --repo phase-rs/phase --label "collector" --state closed --limit 50 --json number,title,closedAt
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.
- 2d ago First seen · 959 lines · 43 tokens per session scan A 9a8a84eb1456
bug-triage is a skill published in the GitHub repository phase-rs/phase (259 stars, last pushed 2d ago), licensed Apache-2.0. It adds 43 tokens to every session and 16,291 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
verify-set
Prove a Magic set is actually finished — card-for-card complete, field-for-field faithful to Scryfall, scripts that match their oracle text, tokens that resolve the set's own art, behaviourally sound — then archive its backlog. Builds the Scryfall dump and CardFieldVerificationTest, fans the per-card DSL and token…
create-backlog-for-set
Create the backlog/sets/ / entry for a Magic set — download the whole set from Scryfall (cached alongside Assay's cache), write cards.md as a per-colour checklist with the already-implemented cards ticked, scaffold the set's definitions/ / module if it doesn't exist, and write mechanics.md ordering every mechanic the…
add-random-card
Pick a random unimplemented card from a set and implement it. Accepts either a backlog cards.md path or a set name/code.
task-manager
Capture actionable user requests as persistent tasks, update task status as work progresses, and keep a shared task store in sync. Use when a user asks an agent to do work, check progress, block a task, complete a task, or manage the Kanban board.
todo
Maintain a shared workspace TODO list with blocked tasks.
task-manager
Capture actionable user requests as persistent tasks, update task status as work progresses, and keep a shared task store in sync. Use when a user asks an agent to do work, check progress, block a task, complete a task, or manage the Kanban board.