Pattern = prescriptive, reusable solution to a recurring problem. "When you face X, do Y." Language-scoped. Has When-to-Use, When-Not-to-Use, and Why. These are what you follow.
Convention = descriptive reference material showing how a specific project/framework structures things. Study for ideas, don't copy blindly. Applying the wrong framework's conventions to your codebase causes active harm.
Pattern repos (prescriptive — follow these)
elixir-patterns — how to write Elixir
go-patterns — how to write Go
rust-patterns — how to write Rust
Convention repos (reference — study, don't copy)
kubernetes-conventions — system architecture at scale
cockroachdb-conventions — distributed system architecture
phoenix-conventions — web framework opinions (don't apply to non-Phoenix code)
ecto-conventions — data layer opinions (don't apply to non-Ecto code)
temporal-conventions — workflow engine patterns
Fold into language patterns (too thin to be standalone)
oban-conventions → merge into elixir-patterns as source citations
prometheus-conventions → merge into go-patterns as source citations
Delete or archive (duplicates of patterns repos)
elixir-conventions — merge any unique content into elixir-patterns, then archive
golang-conventions — merge any unique content into go-patterns, then archive
Key principle
"Use it for ideas; don't get tempted to do something just because Phoenix does it."
Conventions are a reference to understand why a project made certain choices. Not a template to follow. Your context is different from theirs.
Actions
Add a README or top-level doc to each repo clarifying which category it is
Merge thin convention repos into corresponding pattern repos
Archive duplicates
Update patterns-vs-guidelines repo with this taxonomy
## Definitions
**Pattern** = prescriptive, reusable solution to a recurring problem. "When you face X, do Y." Language-scoped. Has When-to-Use, When-Not-to-Use, and Why. These are what you follow.
**Convention** = descriptive reference material showing how a specific project/framework structures things. Study for ideas, don't copy blindly. Applying the wrong framework's conventions to your codebase causes active harm.
## Pattern repos (prescriptive — follow these)
- `elixir-patterns` — how to write Elixir
- `go-patterns` — how to write Go
- `rust-patterns` — how to write Rust
## Convention repos (reference — study, don't copy)
- `kubernetes-conventions` — system architecture at scale
- `cockroachdb-conventions` — distributed system architecture
- `phoenix-conventions` — web framework opinions (don't apply to non-Phoenix code)
- `ecto-conventions` — data layer opinions (don't apply to non-Ecto code)
- `temporal-conventions` — workflow engine patterns
## Fold into language patterns (too thin to be standalone)
- `oban-conventions` → merge into `elixir-patterns` as source citations
- `prometheus-conventions` → merge into `go-patterns` as source citations
## Delete or archive (duplicates of patterns repos)
- `elixir-conventions` — merge any unique content into `elixir-patterns`, then archive
- `golang-conventions` — merge any unique content into `go-patterns`, then archive
## Key principle
"Use it for ideas; don't get tempted to do something just because Phoenix does it."
Conventions are a reference to understand *why* a project made certain choices. Not a template to follow. Your context is different from theirs.
## Actions
1. Add a README or top-level doc to each repo clarifying which category it is
2. Merge thin convention repos into corresponding pattern repos
3. Archive duplicates
4. Update `patterns-vs-guidelines` repo with this taxonomy
Cleanup tasks (file as individual issues or handle during free time)
Audit elixir-conventions — extract anything unique into elixir-patterns, archive the repo
Audit golang-conventions — extract anything unique into go-patterns, archive the repo
Merge oban-conventions content into elixir-patterns as source citations, archive
Merge prometheus-conventions into go-patterns as source citations, archive
Add README header to each surviving convention repo: "Reference material. Study for ideas, don't copy."
Add README header to each pattern repo: "Prescriptive. Follow these."
Update MEMORY.md to reference the taxonomy
Evaluate patterns-vs-guidelines repo — does it still serve a purpose with clear taxonomy?
## Cleanup tasks (file as individual issues or handle during free time)
- [ ] Audit `elixir-conventions` — extract anything unique into `elixir-patterns`, archive the repo
- [ ] Audit `golang-conventions` — extract anything unique into `go-patterns`, archive the repo
- [ ] Merge `oban-conventions` content into `elixir-patterns` as source citations, archive
- [ ] Merge `prometheus-conventions` into `go-patterns` as source citations, archive
- [ ] Add README header to each surviving convention repo: "Reference material. Study for ideas, don't copy."
- [ ] Add README header to each pattern repo: "Prescriptive. Follow these."
- [ ] Update MEMORY.md to reference the taxonomy
- [ ] Evaluate `patterns-vs-guidelines` repo — does it still serve a purpose with clear taxonomy?
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Definitions
Pattern = prescriptive, reusable solution to a recurring problem. "When you face X, do Y." Language-scoped. Has When-to-Use, When-Not-to-Use, and Why. These are what you follow.
Convention = descriptive reference material showing how a specific project/framework structures things. Study for ideas, don't copy blindly. Applying the wrong framework's conventions to your codebase causes active harm.
Pattern repos (prescriptive — follow these)
elixir-patterns— how to write Elixirgo-patterns— how to write Gorust-patterns— how to write RustConvention repos (reference — study, don't copy)
kubernetes-conventions— system architecture at scalecockroachdb-conventions— distributed system architecturephoenix-conventions— web framework opinions (don't apply to non-Phoenix code)ecto-conventions— data layer opinions (don't apply to non-Ecto code)temporal-conventions— workflow engine patternsFold into language patterns (too thin to be standalone)
oban-conventions→ merge intoelixir-patternsas source citationsprometheus-conventions→ merge intogo-patternsas source citationsDelete or archive (duplicates of patterns repos)
elixir-conventions— merge any unique content intoelixir-patterns, then archivegolang-conventions— merge any unique content intogo-patterns, then archiveKey principle
"Use it for ideas; don't get tempted to do something just because Phoenix does it."
Conventions are a reference to understand why a project made certain choices. Not a template to follow. Your context is different from theirs.
Actions
patterns-vs-guidelinesrepo with this taxonomyCleanup tasks (file as individual issues or handle during free time)
elixir-conventions— extract anything unique intoelixir-patterns, archive the repogolang-conventions— extract anything unique intogo-patterns, archive the repooban-conventionscontent intoelixir-patternsas source citations, archiveprometheus-conventionsintogo-patternsas source citations, archivepatterns-vs-guidelinesrepo — does it still serve a purpose with clear taxonomy?