Thanks for considering a contribution. Patina is a pattern-based tool, so the most impactful contributions are usually new patterns, better examples, or profile refinements.
-
Pick the right pack. Patterns live in
patterns/{lang}-{category}.md. Categories: content, language, style, structure, communication, filler. -
Follow the template. Each pattern needs:
- Number (next available, e.g. #30)
- Watch words
- Fire condition (when should it trigger?)
- Exclusion condition (when should it NOT trigger?)
- Problem description
- Before/after example
-
Add to all languages you can. We have 4 language packs (ko, en, zh, ja). If you only know one, that's fine — file the PR for that language and note the others need translation.
-
Update counts. After adding a pattern:
- Pack header: increment
patterns:count - README.md and README_KR.md: update pattern tables and totals
- SKILL.md description: update total if hardcoded
- Pack header: increment
-
Add an example. If possible, add
examples/{lang}-{number}-success-01.mdandexamples/{lang}-{number}-failure-01.md(false positive case).
The most common improvement: better before/after examples. The "after" text should preserve the original meaning — not rewrite it into something different.
Good test: if someone read only the "after" text, would they get the same takeaway as the "before"? If the sentiment flips, the example is bad.
Profiles live in profiles/{name}.md. Copy an existing one (e.g. blog.md) and adjust:
voice-overrides: which voice dimensions to amplify/suppresspattern-overrides: per-language pattern severity adjustments
AI writing patterns evolve as models get fine-tuned. Some patterns decay (e.g. "delve" after it became a meme), while new ones emerge.
How we handle this:
- Community reporting: If you notice a pattern that's no longer a reliable signal, open an issue
- New pattern proposals: If you spot a new AI tell, file an issue with 3+ real-world examples
- Version notes: Each pattern pack has a
versionfield — bump it when patterns change - No deletion without replacement: We don't remove patterns outright; we mark them as
lowseverity or move them toreducein profiles
Be helpful. Don't be a jerk. AI writing patterns are not moral failings — we're building a tool, not a tribunal.
- Fork and branch from
main - Make your changes
- Verify pattern counts are consistent
- Open a PR with a clear description
- Bonus: include before/after examples that demonstrate your change