CONTRIBUTING.md, rendered here so it stays in one place.Contributing¶
Thanks for helping improve Clippy Pet. Whether it's a better eyebrow at 292.5°, a package recipe for your distro, or a typo in the docs, it's welcome. This file is the short version; the documentation site renders it with more context.
Setup¶
Python 3.10 or newer is recommended.
python3 -m venv .venv
. .venv/bin/activate
python3 -m pip install -r requirements-dev.txt
python3 scripts/validate.py
For packaging work: make lint (shellcheck), make dist (tarballs), ./packaging/linux/build.sh (needs nfpm), ./packaging/macos/build.sh (macOS only).
For documentation: pip install -r docs/requirements.txt then make docs-serve and open http://127.0.0.1:8000/clippy-pet/. make docs runs mkdocs build --strict, which is what CI runs; broken links fail the build.
Branching model¶
Clippy Pet uses GitFlow with two protected long-lived branches:
maincontains production-ready releases. Do not target ordinary contribution pull requests atmain.developis the integration branch for the next release. Feature, documentation, maintenance, and dependency pull requests normally targetdevelop.
Use short-lived branches named for their purpose:
feature/<description>for new behavior or assetsfix/<description>for non-urgent correctionsdocs/<description>for documentation-only changesrelease/<version>for release stabilization; branch fromdevelopand merge into bothmainanddevelophotfix/<description>for urgent production fixes; branch frommainand merge into bothmainanddevelop
Keep branches current with their target branch. Delete short-lived branches after merge. Releases from main use Semantic Versioning tags such as v1.1.0; routine development is never released directly from develop.
Pull requests¶
- Search existing issues and open one before a large compatibility or visual change. For animation or variant work, use the Pet variant / show and tell issue template.
- Branch from
developand targetdevelop, except for the documented release and hotfix flows. - Keep the change focused and explain its user impact.
- Include before/after media for visual changes (100 % and ~64 px, plus a GIF if motion changed).
- Preserve v2 geometry: 1536 by 2288 pixels, eight columns, eleven rows, and 192-by-208-pixel cells.
- Preserve transparency, unused cells, and
spriteVersionNumber: 2. - Update the
Unreleasedsection ofCHANGELOG.mdfor user-visible changes. - Run
make validate(andmake docsif you toucheddocs/ormkdocs.yml) and report the result. - Resolve every review thread and obtain the required CODEOWNER approval.
- Do not add personal data, credentials, local absolute paths, cache IDs, or assets you cannot license.
Writing style for docs and copy¶
Clippy Pet's documentation is deliberately playful (the pet talks in speech bubbles) and deliberately honest. When you write for it:
- Lead with what the reader gets; keep the joke short and after the substance.
- No manipulation: no fake urgency, no invented statistics, no testimonials, no "join thousands" without a real linked number.
- Status words are load-bearing. live means it works today; on each release means CI attaches it to every tagged release; planned means it does not exist yet. Never promote a row early.
- Every page that touches the name or likeness carries, or links to, the unofficial notice in
NOTICE.md. - Use current product names: "ChatGPT desktop app (Codex inside)", "Codex CLI", "ChatGPT on the web".
- Prefer showing (a GIF, a number from
qa/, a command) over telling.
Submitting a pet variant¶
See https://adammatthewsteinberger.github.io/clippy-pet/make/submit/. Short version: open the variant issue with a GIF, keep the geometry, run the validator, include before/after evidence, regenerate SHA256SUMS, and confirm you can license every pixel under MIT.
By submitting a contribution, you certify that you have the right to provide it under the MIT License. See NOTICE.md for limitations concerning third-party rights and trademarks.