Thanks for your interest in contributing! 🎉
# Clone the repo
git clone https://github.com/ghostcli/ghost
cd ghost
# Install dependencies
bun install
# Run in dev mode
bun run dev
# Run tests
bun test
# Build binary
bun run buildsrc/
├── commands/ # CLI command implementations
│ ├── init.ts # ghost init
│ ├── invite.ts # ghost invite
│ ├── push.ts # ghost push
│ ├── pull.ts # ghost pull
│ └── ...
├── core/ # Core crypto logic
│ └── crypto.ts
├── utils/ # Helper utilities
│ ├── config.ts # ghost.yaml management
│ ├── git.ts # Git integration
│ ├── github.ts # GitHub API
│ └── files.ts # File operations
├── types/ # TypeScript types
└── index.ts # Main CLI entry
- TypeScript: Use strict typing
- Tests: Add tests for new features
- Formatting: Use
bun fmtbefore committing - Commits: Use conventional commits (feat:, fix:, docs:, etc.)
# Run all tests
bun test
# Run specific test
bun test tests/crypto.test.ts
# Watch mode
bun test --watch# Build for current platform
bun run build
# The binary will be in dist/ghost
./dist/ghost --help- Fork the repo
- Create a feature branch:
git checkout -b feat/amazing-feature - Make your changes
- Add tests
- Run tests:
bun test - Commit:
git commit -m "feat: add amazing feature" - Push:
git push origin feat/amazing-feature - Open a Pull Request
We use Bun's built-in formatter:
bun fmtOpen an issue or join our Discord: discord.gg/ghost