

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1# mtg-utils – Copilot Instructions23Python CLI tool (Click + Poetry, Python ≥ 3.13) for managing Magic: The Gathering card collections and decks, backed by the Moxfield API.45## Build & Test67```sh8poetry install # install dependencies9poetry run mtg-utils # run the CLI10make test # fast test run (no coverage) — for inner-loop dev11make coverage # full test run with coverage enforcement + HTML report12make ci # lint + coverage — mirrors what GitHub Actions runs13make lint # ruff check only14```1516Tests pass on a clean checkout. Always run `make coverage` (or `poetry run pytest`) after changes to confirm 100% coverage is maintained. CI runs on every push/PR via `.github/workflows/ci.yml`.1718## Architecture1920```21mtg_utils/22 main.py # Click group; registers all commands23 commands/24 check_missing_cards.py # check-missing-cards command25 compare_decks.py # compare-decks command26 update_card_library.py # update-library command27 utils/28 config.py # load_config(), DEFAULT_CONFIG_FILE29 readers.py # read_list() – strips blank lines30 moxfield_api.py # get_deck_list(), get_library() via cloudscraper31```3233All external HTTP goes through `moxfield_api.py`. Mock it in tests with `unittest.mock.patch`.3435## Key Conventions3637- **Card format** (everywhere): `{quantity} {card name}` per line, e.g. `2 Lightning Bolt`.38- **Config** (`config.json`): defines `binder_id`, `purchased_file`, and `decks` map with `id` and `file` per deck. Optional `shared_decks` list per deck re-uses cards from sibling decks without double-counting from the library pool.39- **Data files** live under `card_library/` and `decklists/`; sorting order is preserved by `library_sort_key` (snow lands last, then alphabetical).40- **CWD matters**: commands resolve paths relative to the process CWD. Tests use `monkeypatch.chdir(tmp_path)` to isolate file I/O.4142## Testing Patterns4344- Use `click.testing.CliRunner` for end-to-end CLI tests.45- Use `tmp_path` for all file I/O; never write to real `card_library/` in tests.46- Use the `repo` fixture from `tests/conftest.py` (chdir + `make_config` helper) for new CLI/filesystem tests.47- Test files follow `tests/test_<module>.py` naming.48- Mock network calls: `patch("mtg_utils.commands.<cmd>.get_deck_list", ...)`.49- Mark tests: `@pytest.mark.unit` (pure logic) or `@pytest.mark.integration` (CLI + filesystem). Run a subset with `pytest -m unit` or `pytest -m integration`.5051## Agents & Skills5253| Name | Purpose |54|---|---|55| [Product Designer](.github/agents/product-designer.agent.md) | Feature design, user stories, acceptance criteria, CLI UX specs |56| [Software Engineer](.github/agents/software-engineer.agent.md) | Collection data, deck files, config, command implementation |57| [QA Engineer](.github/agents/qa-engineer.agent.md) | Write and run pytest tests only |58| [Facilitator](.github/agents/facilitator.agent.md) | End-to-end tasks spanning both implementation and tests |59| [CI Engineer](.github/agents/ci-engineer.agent.md) | GitHub Actions workflows, Makefile CI targets |6061For feature work or bug fixes that need tests, prefer the **Facilitator** agent.62
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| gasbasd/mtg-utils.clinerules/06-version-control.md · 0 | Cline rules | testlint-formatstyletypes+4 | 62/100 | 8 days ago | |
| gasbasd/mtg-utils.clinerules/memory-bank.md · 0 | Cline rules | archperformancedocs | 58/100 | 8 days ago | |
| gasbasd/mtg-utils.clinerules/01-project-overview.md · 0 | Cline rules | setuptestlint-formatarch | 89/100 | 8 days ago | |
| gasbasd/mtg-utils.clinerules/02-coding-standards.md · 0 | Cline rules | lint-formatstyletypesdependencies+1 | 77/100 | 8 days ago | |
| gasbasd/mtg-utils.clinerules/03-testing-standards.md · 0 | Cline rules | testarchtypestesting-strategy+1 | 66/100 | 8 days ago | |
| gasbasd/mtg-utils.clinerules/04-security-practices.md · 0 | Cline rules | setupstylesecuritydo-not | 61/100 | 8 days ago | |
| gasbasd/mtg-utils.clinerules/05-cli-workflows.md · 0 | Cline rules | setuparch | 54/100 | 8 days ago |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| pytorch/pytorch.github/copilot-instructions.md · 102k | Copilot instructions | setupbuildteststyle+5 | 100/100 | 14 days ago | |
| hiyouga/LlamaFactory.github/copilot-instructions.md · 74k | Copilot instructions | setupbuildtestlint-format+5 | 97/100 | 13 days ago | |
| darkmatter/nixmac.github/copilot-instructions.md · 25 | Copilot instructions | setupbuildtestlint-format+8 | 96/100 | 14 days ago | |
| iloveitaly/llm-ide-rules.github/copilot-instructions.md · 13 | Copilot instructions | teststyledo-notagent-behaviour+1 | 92/100 | 14 days ago | |
| bytedance/deer-flow.github/copilot-instructions.md · 80k | Copilot instructions | setupbuildtestlint-format+6 | 89/100 | 14 days ago | |
| Significant-Gravitas/AutoGPT.github/copilot-instructions.md · 186k | Copilot instructions | setupbuildtestlint-format+10 | 88/100 | 9 days ago | |
| iloveitaly/llm-ide-rules.github/instructions/python.instructions.md · 13 | Copilot instructions | setupstyletypesdo-not | 88/100 | 14 days ago | |
| u9401066/nsforge-mcp.github/copilot-instructions.md · 4 | Copilot instructions | setuptestlint-formatgit+2 | 85/100 | 14 days ago |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/gasbasd-mtg-utils-github-copilot-instructions)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.