{"id":50902782,"url":"https://github.com/rfizzle/concord","last_synced_at":"2026-06-16T04:30:45.899Z","repository":{"id":363856670,"uuid":"1265228446","full_name":"rfizzle/concord","owner":"rfizzle","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-10T16:19:36.000Z","size":68,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-10T18:05:31.233Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Nunjucks","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rfizzle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-10T15:25:34.000Z","updated_at":"2026-06-10T16:19:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rfizzle/concord","commit_stats":null,"previous_names":["rfizzle/concord"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/rfizzle/concord","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rfizzle%2Fconcord","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rfizzle%2Fconcord/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rfizzle%2Fconcord/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rfizzle%2Fconcord/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rfizzle","download_url":"https://codeload.github.com/rfizzle/concord/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rfizzle%2Fconcord/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34391702,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-16T04:30:41.594Z","updated_at":"2026-06-16T04:30:45.892Z","avatar_url":"https://github.com/rfizzle.png","language":"Nunjucks","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Concord\n\n*A Vanilla+ collection — the depth vanilla deserved.*\n\nConcord is a collection of independent Minecraft 1.21.1 Fabric mods, each overhauling\nexactly one vanilla system. Every mod is fully functional standalone; when siblings are\ninstalled together they detect each other and light up extra integration — never a hard\ndependency, never a shared jar.\n\n| Mod | Domain | Tagline | Status |\n|---|---|---|---|\n| **[Tribulation](https://tribulation.rfizzle.com)** | Difficulty \u0026 scaling | \"Survive what comes next.\" | Released |\n| **[Meridian](https://meridian.rfizzle.com)** | Enchanting | \"Chart your enchantments.\" | Released |\n| **[Mercantile](https://mercantile.rfizzle.com)** | Villagers \u0026 trade | \"Every villager remembers.\" | Released |\n| **Prosperity** | Loot \u0026 containers | \"Every chest, yours to discover.\" | In design (spec complete) |\n\nInstall any. Combine all.\n\n## What this repo is\n\nConcord's single source of truth: the collection's vision, the suite-wide standards\nevery member mod conforms to, and (eventually) the collection landing site served from\n`docs/`. Mod repos **link to these documents — they never copy them.**\n\n| Document | What it governs |\n|---|---|\n| [`VISION.md`](VISION.md) | The collective vision, narrative, integration matrix, per-mod and cross-cutting roadmaps |\n| [`API-STANDARD.md`](API-STANDARD.md) | The public-API + event pattern every mod's `api` package follows |\n| [`HUD-STANDARD.md`](HUD-STANDARD.md) | The shared HUD element spec: slots, stacking, visibility, coordination |\n| [`REPO-LAYOUT.md`](REPO-LAYOUT.md) | The common repository layout all mod repos mirror |\n| [`AGENTS-COMMON.md`](AGENTS-COMMON.md) | The Concord-owned regions shared by every member's `AGENTS.md` (skills pointer, dev lifecycle, version scheme) — proposed to each member via the `concord-sync` PR by `propagate.yml`; edit shared agent guidance HERE |\n| [`design/DESIGN-SYSTEM.md`](design/DESIGN-SYSTEM.md) | Color tokens, per-mod palettes, typography, logo formula |\n| [`docs/tokens.css`](docs/tokens.css) | The shared design tokens as consumable CSS — mod sites hot-link this |\n| [`template/`](template/README.md) | The shared website template — mod repos hold only `site/` content; CI builds and deploys via [`build-site.yml`](.github/workflows/build-site.yml) |\n| [`members.json`](members.json) | The member registry — per-member `status` and `conformance` (standard versions, layout migration) plus name/tagline/url; drives every site's cross-mod footer and the propagate workflow |\n| [`propagate/`](propagate) | Canonical concord-owned files (currently the `.github/ISSUE_TEMPLATE/` forms) proposed verbatim to every member repo via a `concord-sync` PR by `propagate.yml` (member default branches are protected) — edit HERE, never in a mod repo |\n| [`.github/workflows/`](.github/workflows) | Reusable CI for all members: `mod-ci`, `mod-release`, `mod-build-artifact`, `claude-review`, `claude-spec`, `claude-mention`, `build-site` — mod repos carry only thin trigger stubs |\n| [`.ai/`](.ai) | Suite-default Claude prompts (`code-reviewer`, `spec-writer`) and `review-criteria.yml` — generic, mod identity comes from each repo's AGENTS.md. Resolution: explicit `prompt-file`/`criteria-file` workflow input → repo-local `.ai/` file (whole-file override) → these defaults |\n| [`.ai/skills/`](.ai/skills) | Canonical `mc-*` domain skills for all member repos. Mod repos keep vendored copies (so Claude Code, Jules, and bare clones all work) and refresh them with `make sync-skills` — edit skills HERE, never in a mod repo. The generated [`CATALOG.md`](.ai/skills/CATALOG.md) (`make catalog`) indexes them — one row per skill, summary + when to read it — and rides the same sync, so each `AGENTS.md` points at it instead of carrying its own table |\n\n### The CI contract\n\nThe reusable workflows assume every member repo provides: repo name == mod id ==\njar prefix (`build/libs/\u003cmod\u003e-\u003cversion\u003e.jar`), and gradle tasks `build` (compile +\nunit tests + jar), `jacocoTestReport` (XML at\n`build/reports/jacoco/test/jacocoTestReport.xml`), `runGametest` (JUnit XML at\n`build/junit-gametest.xml`), and `printVersion`. Secrets per repo:\n`CODECOV_TOKEN` (optional), `CLAUDE_CODE_OAUTH_TOKEN` (for the Claude workflows).\nEach mod repo's stubs declare only triggers, concurrency, and permissions — the\nstub bodies are documented at the top of each reusable workflow.\n\n### Syncing skills\n\nSkills are edited in this repo and vendored into each mod repo. The standard\nMakefile target (copy into new member repos):\n\n```make\nCONCORD_DIR ?= ../concord\n\nsync-skills:\n\t@test -d $(CONCORD_DIR)/.ai/skills || { echo \"concord checkout not found at $(CONCORD_DIR) (set CONCORD_DIR=...)\"; exit 1; }\n\trsync -a --delete $(CONCORD_DIR)/.ai/skills/ .ai/skills/\n\t@git -C $(CONCORD_DIR) rev-parse HEAD \u003e .ai/skills/.concord-rev\n\t@echo \"synced .ai/skills from concord @ $$(git -C $(CONCORD_DIR) rev-parse --short HEAD)\"\n```\n\n`.ai/skills/` in a mod repo is wholly owned by the sync (`--delete` propagates\nremovals); `.concord-rev` records provenance. A repo needing a repo-local\nskill puts it outside the synced directory and wires `.claude/skills`\naccordingly.\n\n## How mod repos reference Concord\n\nEach mod's `AGENTS.md` carries this section (and nothing more — content lives here):\n\n```markdown\n## Suite standards (Concord)\n\nThis mod is a member of Concord, the Vanilla+ collection. Suite-wide standards live in\nthe [concord repo](https://github.com/rfizzle/concord) — checked out at `../concord/`\nin the local workspace. Normative for this repo:\n\n- [API-STANDARD.md](https://github.com/rfizzle/concord/blob/master/API-STANDARD.md) — the `api` package conventions (conforms to v1)\n- [HUD-STANDARD.md](https://github.com/rfizzle/concord/blob/master/HUD-STANDARD.md) — HUD slot, stacking, accessors (conforms to v1)\n- [DESIGN-SYSTEM.md](https://github.com/rfizzle/concord/blob/master/design/DESIGN-SYSTEM.md) — palette, typography, logo rules\n- [REPO-LAYOUT.md](https://github.com/rfizzle/concord/blob/master/REPO-LAYOUT.md) — where non-code files live\n```\n\nConformance is **declared, not copied**: a mod states the standard version it conforms\nto in one line and bumps it deliberately. The only mechanically *consumed* artifact is\n`docs/tokens.css`, which the mod websites hot-link once the Concord site is on Pages.\n\n### Shared AGENTS.md regions\n\nMost of a member's `AGENTS.md` is mod-specific (overview, mod id, entrypoints, assets,\ncompat, commit-scope examples) and stays repo-owned. But a few sections are byte-identical\nacross every mod — the domain-skills pointer, the development lifecycle, and the version\nscheme. Those live once in [`AGENTS-COMMON.md`](AGENTS-COMMON.md), delimited by\n`\u003c!-- concord:NAME:start --\u003e` / `\u003c!-- concord:NAME:end --\u003e` markers, and `propagate.yml`\nopens a `concord-sync` PR rewriting the matching marked region in each member's `AGENTS.md`\nwhenever the canonical copy changes (direct commits — issue templates and these regions\nalike — go through a PR because member default branches are protected). Only the marked\nregions move; prose outside them is never touched, and a repo that hasn't seeded the markers\nis skipped. To opt a repo in, paste the marker pairs around the corresponding sections once\n(or run `make agents-sync` locally against a sibling checkout). Edit shared agent guidance in\n`AGENTS-COMMON.md`, never in a mod repo.\n\nWhat stays deliberately duplicated in each mod: the ~80 lines of HUD offset logic and\nthe `api` package code itself. Concord rejects a shared runtime library on principle\n(see `VISION.md` §8.1) — convention over dependency, in standards as in code.\n\n## The principles (the reason this is a collection and not a modpack)\n\n1. **Independent gates** — every mod works alone; cross-mod behavior is guarded by\n   `FabricLoader.getInstance().isModLoaded(...)`.\n2. **Siloed functionality** — each mod owns exactly one vanilla system; no scope bleed.\n3. **Exposed public APIs** — each mod publishes a stable, read-only-by-default\n   `com.rfizzle.\u003cmod\u003e.api` package and event surface (see `API-STANDARD.md`).\n4. **Vanilla+ throughout** — everything could plausibly have shipped in vanilla;\n   server-friendly and multiplayer-fair.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frfizzle%2Fconcord","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frfizzle%2Fconcord","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frfizzle%2Fconcord/lists"}