Thank you for contributing to devorch! This guide will help you get started.
- π Local Development Guide - Setting up your development environment
- π οΈ Extending devorch - Creating custom commands, subagents, and skills
- π Template Creation - Detailed guide for creating commands, subagents, and skills
- π Issue Tracker - Report bugs or request features
Choose your path based on what you want to do:
| What you want to do | Time | Docs to read | Steps |
|---|---|---|---|
| Fix a typo or improve docs | 10 min | Just this file | Edit β Commit β PR |
| Add an example to a skill | 20 min | Template Guide | Find skill β Add example β PR |
| Report a bug | 15 min | None | Create issue with repro steps |
| Fix a bug in CLI code | 1-2 hrs | DEVELOPMENT.md | Setup β Fix β Test β PR |
| Add a new command/subagent/skill | 2-4 hrs | Template Guide + EXTENDING.md | Create β Test β PR |
| Major feature or refactor | Plan first! | All docs below | Start a discussion first |
No setup needed! Just use GitHub's web interface:
- Browse to the file with the typo
- Click the edit (pencil) icon
- Make your change
- Scroll down β "Propose changes"
- Click "Create pull request"
Done! We'll review and merge quickly.
Good first contributions:
- Fix typos or improve documentation
- Add examples to existing skills (see
templates/skills/*/references/examples.md) - Report bugs with clear reproduction steps
- Suggest new features in discussions
Browse existing issues or create a new one.
Looking for "good first issue"? Filter issues by the good first issue label.
Prerequisites:
- Bun (not npm/yarn/pnpm)
- GitHub CLI
- Git
Clone and install:
gh repo clone guicheffer/devorch
cd devorch
bun installVerify setup:
bun run test # Run all tests (excludes eval fixtures)
bun run dev # Run CLI in development modeSee DEVELOPMENT.md for complete setup instructions.
Branch naming:
git checkout -b fix/description # Bug fixes
git checkout -b feat/description # New features
git checkout -b docs/description # DocumentationBefore committing:
bun run test # All tests pass (excludes eval fixtures)
bun run lint:fix # Auto-fix lint issues
bun run format # Format codePre-commit hooks will automatically run linting and formatting.
- Push your branch:
git push origin your-branch-name - Open a pull request on GitHub
- Fill out the PR template (describes what changed and why)
- Wait for review - we'll provide feedback and may request changes
- Create an issue describing the bug
- Reference the issue in your PR: "Fixes #123"
- Include test cases that verify the fix
- Start a discussion first
- Get feedback on the approach
- Implement with tests and documentation
- Submit PR referencing the discussion
Documentation improvements are always welcome! No need for discussion first.
Areas to improve:
- Fix typos or unclear explanations
- Add missing examples
- Improve getting started guides
- Document undocumented features
Creating new templates is a great contribution! See the detailed Template Creation Guide.
Quick overview:
- Commands - User-invoked slash commands (e.g.,
/new-spec) - Subagents - Specialized agents called by multi-agent commands
- Skills - Knowledge modules with codebase patterns and examples
Creation process:
- Study existing examples in
templates/ - Follow the Template Creation Guide
- Test locally with
--localflag - Submit PR with your template
Working on the CLI itself? See DEVELOPMENT.md for:
- Project structure and architecture
- Testing strategies
- Debugging tips
- Release process
bun run test # All tests (excludes eval fixtures)
bun run test:unit # Unit tests only
bun run test:integration # Integration tests only
bun run test:watch # Watch mode
bun test --coverage # With coverage (use direct bun test for coverage)Important: Always use bun run test instead of bun test directly. The bun run test command uses package.json scripts that exclude eval fixtures in tests/evals. Running bun test directly will incorrectly include these fixtures.
Snapshot tests for templates:
Every command and subagent has a dedicated snapshot test in tests/snapshots/. These tests ensure that template compilation produces consistent output.
# Run all snapshot tests
bun test tests/snapshots/
# Run specific snapshot test
bun test tests/snapshots/commands/panic.test.ts
# Update snapshots after template changes
bun test tests/snapshots/ --update-snapshotsCoverage test:
The tests/snapshots/coverage.test.ts automatically verifies that every command and subagent template has a corresponding snapshot test. This runs with the regular test suite.
See tests/snapshots/README.md for more details on snapshot testing.
Method 1: In test-project
cd test-project
bun ../src/cli/index.ts install --local=../Method 2: Global install
bun run compile
./devorch install --local=$(pwd)See Testing Local Changes for more details.
This project uses:
- Bun for runtime and package management (required)
- TypeScript for type safety
- Biome for linting and formatting
- Husky for pre-commit hooks
Style guidelines:
- Use
@/path alias for imports (never relative paths) - Use custom error classes from
@/utils/errors.js - Use custom logger from
@/utils/logger.js - Follow existing patterns in the codebase
See DEVELOPMENT.md for complete style guidelines.
devorch/
βββ src/
β βββ cli/ # CLI application
β β βββ commands/ # CLI command implementations
β β βββ lib/ # Core libraries
β βββ updater/ # Auto-updater system
β βββ schemas/ # Zod schema definitions
β βββ utils/ # Shared utilities
βββ templates/ # Commands, subagents, skills, workflows
β βββ commands/ # User-invoked slash commands
β βββ subagents/ # Specialized agents
β βββ skills/ # Knowledge modules
β βββ standards/ # Standards presets
β βββ shared/workflows/ # Reusable instruction snippets
βββ tests/ # Test suite
β βββ integration/ # Integration tests
β βββ unit/ # Unit tests (colocated with source)
βββ docs/ # Documentation
- π¬ Discussions - Ask questions
- π Issues - Report bugs
- π Documentation - Read guides
- Be respectful and inclusive
- Provide constructive feedback
- Focus on what's best for the project
- Welcome newcomers and help them learn
By contributing, you agree that your contributions will be licensed under the same license as the project.
Still have questions? Check out our detailed documentation or ask in discussions.