First off, thank you for considering contributing! This project bridges GitHub Copilot CLI to messaging platforms, and community contributions help it reach more people and platforms.
Please send a Pull Request with a clear description of what you've done. Before submitting:
- Type-check:
npx tsc --noEmit - Run tests:
npm test - Keep PRs focused — one feature or fix per PR
Use branch prefixes: feat/, fix/, refactor/, docs/.
Always write a clear commit message. Please include Co-authored-by attribution when AI tools have been used for development. For example, with GitHub Copilot:
Add streaming retry logic for dropped connections
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Open an issue with:
- What you expected to happen
- What actually happened
- Steps to reproduce (bridge logs are helpful — set
LOG_LEVEL=debug)
New platforms implement ChannelAdapter from src/types.ts. The Mattermost adapter (src/channels/mattermost/) is the reference implementation. Place new adapters in src/channels/<platform>/adapter.ts. See architecture.md for required vs optional methods.
Start reading the code and you'll get the hang of it:
- TypeScript with ESM — all imports use
.jsextensions (required even for.tssource) - Strict mode enabled project-wide,
NodeNextmodule resolution - Vitest for tests, colocated as
*.test.tsnext to the source they test - Minimal comments — only where behavior isn't obvious from the code
- Logging via
createLogger(tag)fromsrc/logger.ts - Bots use it/its pronouns in documentation and templates
Update AGENTS.md if you change architecture, conventions, or key patterns.