BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
덱 파일이 진실 기준인 커맨더 덱 구성 실험실, 모든 카드가 자리 근거 필요
A Commander deckbuilding lab where the deck file is the source of truth and every card must justify its slot. Monte Carlo simulation, a validation gate over Scryfall data, generated primers — and a ha
게임Go · TypeScriptGitHub @aasquier온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A Commander deckbuilding lab where the deck file is the source of truth and every card must justify its slot. Monte Carlo simulation, a validation gate over Scryfall data, generated primers — and a hard line between what deterministic code decides and what Claude advises. One Go binary, a React frontend, free forever.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A Commander deckbuilding lab where the deck file is the source of truth, every
card has to justify its slot, and every claim about a deck is traceable to the
system that made it.
Live at sylvan-libraries.com — invite-only,
because accounts exist to share decks with a playgroup rather than to sign the
public up. Free forever, and it will stay that way.
Most deckbuilding tools are lists. This one is an argument.README 전문 보기 ↗A Commander deckbuilding lab where the deck file is the source of truth, every card has to justify its slot, and every claim about a deck is traceable to the system that made it.
Live at sylvan-libraries.com — invite-only, because accounts exist to share decks with a playgroup rather than to sign the public up. Free forever, and it will stay that way.
Most deckbuilding tools are lists. This one is an argument.
A deck is one YAML file. Each of the 99 cards carries a category and a why —
the reason it is in the deck rather than something else. Nothing generates that
sentence for you, and no write path accepts an empty one: a card you cannot
justify is a card to cut. The documents a deck ships with — two primers, an
annotated list, an import file, and a diff of what changed since the last build
— are generated from that file and never edited by hand.
Around it sit three things, each answering a different kind of question:
{W}{U} is not castable, since the dual cannot tap twice. Tier 3 drives
Forge headless for real games under
real rules.why that lands in the file. That boundary
is enforced structurally: no module in the Claude package may so much as
name a deck-write function, checked over the syntax tree, so the commit that
adds one fails before a prompt is ever written.Decks. Import a pasted decklist, validate it against the gate, get ranked replacements for whatever it flagged, and apply edits that re-run the gate on the result. Every edit lands in the deck's activity log.
Simulation. Tier 1 with a result cache keyed on the compiled deck, so the same question asked twice is answered instantly and says that it was. Tier 3 plays real games on a worker machine that exists only while it is working.
A web app. Deck library with real card art, the annotated 99, deterministic stats, card search over the whole printed history, the simulator with live progress, a teaching layer for Magic's colours and vocabulary — and a fortune-teller's table where a tarot spread asks about films and family rather than about Magic, and reads a set of colours out of the answers.
| Go 1.26 | One static binary — HTTP server, CLI, simulator, and every API route. CGO is on; the card pool rides DuckDB. |
| DuckDB | The card pool: Scryfall's daily bulk files loaded locally, ~35k oracle cards and ~107k printings. Fetched on demand, never committed, never redistributed. |
| SQLite | Accounts, sessions, invites, the activity log, the match ledger. |
| React + TypeScript | The frontend, built with Vite and Tailwind. The bundle is committed, so the binary serves the app with no Node anywhere near it. |
| Claude | The Anthropic API behind the advisory surfaces, each one a mode with a declared scope and no write access. |
| Fly.io | One machine, one volume. A green merge to main deploys itself. |
The binary and CLI are named mtglab; the repository is sylvan-library. The
project's remaining Python lives in tools/ — a local pipeline that renders
the site's committed art and card motion. It never ships and never serves.
cd go && go build -o ../mtglab ./cmd/mtglab && cd ..
./mtglab data refresh # Scryfall bulk -> DuckDB
./mtglab ui # http://127.0.0.1:8765
Go 1.26+ with CGO enabled is the only requirement. The Claude surfaces want an
ANTHROPIC_API_KEY in the environment; everything else — the gate, the mana
solver, the simulator — needs neither an account nor a network.
Setup in full, the command reference and the deck workflow are in CONTRIBUTING.md; standing up your own instance is docs/HOSTING.md.
In daily use against a curated library of Commander decks. The hosted
instance is the product — mtglab ui runs the same app on a laptop, as a
development harness and for anyone who would rather keep their decks on their
own machine.
Built: the gate, the mana solver, both simulator tiers, the artifact generator, the web app, accounts with invites and email password resets, deck ownership and sharing, and the Claude surfaces.
Not built, stated plainly so nothing here reads as a promise: the pod simulator and the deck tier list that would depend on it, free-form deck conversation with Claude, card-level spoiler scanning, and anything resembling a checkout. Prices are shown; nothing is ever bought.
One deck in that library deliberately fails the gate, on a card banned in Commander that has been left where it is. That is the gate working, and picking the replacement is a human's call.
| File | What it is |
|---|---|
| CONTRIBUTING.md | Setup, the command reference, the deck workflow |
| ROADMAP.md | What is being built next, and the open questions |
| docs/ENGINEERING.md | Testing rigor, containers, CI/CD — with the measurements behind each call, including the ones that say don't |
| docs/HOSTING.md | The maintainer's runbook: deploying, refreshing, backing up, rolling back |
| docs/FORGE.md | The Tier 3 bridge: setup, coverage, measured timings |
| docs/HISTORY.md | How it was designed, kept for the reasoning rather than as a changelog |
| docs/adr/ | 38 architecture decision records — context, options, decision, consequences. Immutable once accepted |
Unofficial Fan Content permitted under the Wizards of the Coast Fan Content Policy. Not approved or endorsed by Wizards. Portions of the materials used are property of Wizards of the Coast. ©Wizards of the Coast LLC.
The Fan Content Policy permits noncommercial use only — this stays free, including in forks. Card data comes from Scryfall at runtime and is never committed. See NOTICE.md for full attribution.
Do not commit collection, wishlist, or purchase data. A public inventory of expensive cards tied to a real identity is a targeting list, and CI fails the build if one is committed.