# Contribute a buddy

Help end users find a character that feels like theirs. Contributions can be art, accessibility fixes, runtime improvements, adapters or documentation.

## Artists / non-coders

Open the **New character submission** issue form. Share an original master PNG, description, author attribution, CC-BY-4.0 or CC0 choice, and AI-generation disclosure. If anchors and expression edits are unfamiliar, request packaging help. Maintainers will review and validate before adding the character to the catalog.

## Character pull requests

1. Read [the house style and generator guide](docs/STYLE.md) and copy [the template](templates/character/README.md).
2. Run `node scripts/cli.mjs new "description" --id my-buddy`. Use the generated brief with Codex image generation, or supply your own original illustration. Generate several candidates; select and record the best.
3. Normalize a transparent 1024×1024 master. Run `finish --id my-buddy --master master.png`; inspect and correct detected regions with `--regions` if needed.
4. Provide all nine expression assets, `character.json`, plus PNG/WebP 2x renditions (generated by finish). Only eye/mouth and small overlay regions may change. No whole-image regeneration, crossfade or silhouette drift.
5. Set `author` to the desired public credit, `license` to CC-BY-4.0 (default) or CC0-1.0, and `ai_generated` accurately. Include a short provenance description, never private data or personal paths.
6. Run `npm run check`, `swift test`, and `npm run media`. Review the contact sheet and GIFs for cuteness, state clarity and eye remnants. Include a candidate-selection note and runtime-size screenshot in the PR.
7. Regenerate `catalog.json`; no manual catalog entries. Maintainers review originality, quality, disclosure, accessibility and licensing before merging.

Original characters only. No existing commercial/game/anime characters, celebrity likenesses, unlicensed references or derivative lookalikes. Tori and Bori are explicitly excluded. You must have authority to offer the artwork under the selected license; disclosing AI generation is mandatory when used. Code is contributed under MIT; artwork keeps its declared per-character terms. Include attribution when copying CC-BY art.

## Code contributions

Use Node 22+ and Swift 6. `npm ci && npm run check` covers TypeScript, builds, unit fixtures, image validation and static gallery generation. `swift test` covers the native package. No SDK credentials, remote API calls or live-session input belong in tests. Keep the core free of SDK dependencies. Add representative fixtures for adapter changes; preserve reduced motion, caching, offline fallback and atomic image swaps. Follow the [Code of Conduct](CODE_OF_CONDUCT.md).

Runtime packs contain only character.json and PNG/WebP files. Put candidate notes outside the pack. Art terms and attribution are in the manifest plus LICENSE-ART.md. All 512px renditions must be <=60KB. Read CONTENT_POLICY.md and docs/SECURITY.md before submitting.
