clanker-agent/CONTRIBUTING.md
Harivansh Rathi 536241053c refactor: finish companion rename migration
Complete the remaining pi-to-companion rename across companion-os, web, vm-orchestrator, docker, and archived fixtures.

Verification:
- semantic rg sweeps for Pi/piConfig/getPi/.pi runtime references
- npm run check in apps/companion-os (fails in this worktree: biome not found)

Co-authored-by: Codex <noreply@openai.com>
2026-03-10 07:39:32 -05:00

1.7 KiB

Contributing to companion

Thanks for wanting to contribute! This guide exists to save both of us time.

The One Rule

You must understand your code. If you can't explain what your changes do and how they interact with the rest of the system, your PR will be closed.

Using AI to write code is fine. You can gain understanding by interrogating an agent with access to the codebase until you grasp all edge cases and effects of your changes. What's not fine is submitting agent-generated slop without that understanding.

If you use an agent, run it from the companion root directory so it picks up AGENTS.md automatically. Your agent must follow the rules and guidelines in that file.

First-Time Contributors

We use an approval gate for new contributors:

  1. Open an issue describing what you want to change and why
  2. Keep it concise (if it doesn't fit on one screen, it's too long)
  3. Write in your own voice, at least for the intro
  4. A maintainer will comment lgtm if approved
  5. Once approved, you can submit PRs

This exists because AI makes it trivial to generate plausible-looking but low-quality contributions. The issue step lets us filter early.

Before Submitting a PR

npm run check  # must pass with no errors
./test.sh      # must pass

Do not edit CHANGELOG.md. Changelog entries are added by maintainers.

If you're adding a new provider to packages/ai, see AGENTS.md for required tests.

Philosophy

companion's core is minimal. If your feature doesn't belong in the core, it should be an extension. PRs that bloat the core will likely be rejected.

Questions?

Open an issue or ask on Discord.