

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
12345678# mtg-utils Project Overview910## Objective1112mtg-utils is a command-line utility designed for managing Magic: The Gathering card collections, decks, and performing various analyses. It helps users track their card collections from Moxfield, manage multiple decks, check missing cards, and monitor newly purchased cards.1314---1516## Technology Stack1718| Component | Technology |19|-----------|-----------|20| Python Version | >=3.13 |21| Package Manager | Poetry |22| CLI Framework | Click |23| HTTP Requests | Requests + Cloudscraper |24| Data Validation | Pydantic |25| Console Output | Rich |26| Testing | pytest + pytest-cov |27| Linting | Ruff + Pyright |2829---3031## Directory Structure3233```34mtg-utils/35├── mtg_utils/ # Main package36│ ├── __init__.py37│ ├── main.py # CLI entry point with Click38│ ├── commands/ # CLI command modules39│ │ ├── __init__.py40│ │ ├── compare_decks.py41│ │ ├── list_decks.py42│ │ └── check_missing_cards/43│ │ │ ├── __init__.py44│ │ │ ├── command.py # CLI command wrapper45│ │ │ ├── logic.py # Business logic46│ │ │ └── render.py # Console output47│ │ └── update_card_library/48│ │ ├── __init__.py49│ │ ├── command.py50│ │ ├── logic.py51│ │ └── render.py52│ └── utils/ # Shared utilities53│ ├── __init__.py54│ ├── cards.py # Card data models and processing55│ ├── config.py # Configuration loading56│ ├── console.py # Rich console setup57│ ├── moxfield_api.py # Moxfield API integration58│ ├── panels.py # Console panel rendering59│ └── readers.py # File reading utilities60├── tests/ # Test suite61├── card_library/ # Data directory (generated at runtime)62│ ├── owned_cards.txt63│ ├── available_cards.txt64│ ├── purchased.txt65│ ├── purchased_formatted.txt66│ └── decks/67├── config.json # User configuration68├── pyproject.toml # Poetry configuration69├── .clinerules/ # AI assistant rules70└── README.md71```7273---7475## CLI Commands7677| Command | Description |78|---------|-------------|79| `mtg-utils update-library` | Update card collection and decks from Moxfield |80| `mtg-utils check-missing-cards` | Check missing cards for a deck |81| `mtg-utils compare-decks` | Compare two decks for card differences |82| `mtg-utils list-decks` | List configured decks |8384---8586## Core Concepts8788### Card Library8990The `card_library/` directory stores all card data:9192- `owned_cards.txt` - Your complete Moxfield collection93- `available_cards.txt` - Cards available (owned + purchased - used)94- `purchased.txt` - Recently purchased cards95- `decks/` - Individual decklist files9697### Configuration9899Users configure the tool via `config.json`:100101```json102{103 "binder_id": "your-moxfield-binder-id",104 "decks": {105 "deck1": {106 "file": "card_library/decks/deck1.txt",107 "id": "moxfield-deck-id-1"108 }109 },110 "purchased_file": "card_library/purchased.txt"111}112```113114---115116## Development Setup117118### Prerequisites119120- Python 3.13+121- Poetry (recommended) or virtualenv122123### Installation (Poetry)124125```bash126git clone https://github.com/yourusername/mtg-utils.git127cd mtg-utils128poetry install129poetry shell130```131132### Running Tests133134```bash135poetry run pytest136```137138### Linting139140```bash141poetry run ruff check .142poetry run pyright143144```
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/05-cli-workflows.md · 0 | Cline rules | setuparch | 54/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/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.github/copilot-instructions.md · 0 | Copilot instructions | setupbuildtestlint-format+3 | 89/100 | 8 days ago |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| enuno/unifi-mcp-server.clinerules · 226 | Cline rules | setuptestlint-formatstyle+10 | 96/100 | today | |
| u9401066/pubmed-search-mcp.clinerules/50-pubmed-project.md · 25 | Cline rules | testlint-formatstylearch+1 | 94/100 | 14 days ago | |
| u9401066/zotero-keeper.clinerules/50-pubmed-project.md · 6 | Cline rules | testlint-formatstylearch+1 | 94/100 | 14 days ago | |
| u9401066/zotero-keepervscode-extension/resources/repo-assets/pubmed-search-mcp/.clinerules/50-pubmed-project.md · 6 | Cline rules | testlint-formatstylearch+1 | 94/100 | 14 days ago | |
| ryok/python-boilerplate.clinerules/common-commands.md · 0 | Cline rules | setupbuildtestlint-format+3 | 90/100 | 13 days ago | |
| u9401066/zotero-keeper.clinerules/60-pubmed-python.md · 6 | Cline rules | setuptestlint-formatstyle+2 | 86/100 | 14 days ago | |
| u9401066/pubmed-search-mcp.clinerules/60-pubmed-python.md · 25 | Cline rules | setuptestlint-formatstyle+2 | 86/100 | 14 days ago | |
| u9401066/pubmed-search-mcp.clinerules/00-project.md · 25 | Cline rules | testlint-formatstylearch+1 | 86/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-clinerules-01-project-overview)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.