Thanks for your interest in contributing! This document will help you get started.
- Set up the repository
git clone https://github.com/antiwork/shortest.git
cd shortest
pnpm install
- Link CLI for local development
cd packages/shortest && pnpm link --global
cd ../.. && pnpm link --global shortest
- Configure environment
cp .env.example .env.local
# Add your ANTHROPIC_API_KEY to .env.local
We prioritize issues from the current milestone. Check the roadmap to see which issues we're focusing on right now.
- Scoping needed: The issue requires an implementation plan before development can start. If you want to work on this issue, first create an implementation plan outlining the approach.
- Building needed: The issue has been scoped and is ready for development. You can start implementing it immediately. If you have any clarifying questions, post a comment on the issue.
To have an issue moved from Scoping needed to Building needed, create an implementation plan that outlines:
- technical approach
- key components and interfaces
- potential challenges
- testing strategy
Create a discussion to get feedback on the implementation plan from maintainers before beginning development.
Important
We recommend waiting until an issue has moved to Building needed before submitting a PR. PRs for issues in the Scoping needed state might need significant rework or may be put on hold until proper scoping is complete.
- Create your feature branch
git checkout -b feature/your-feature
- Run the test suite
pnpm test:unit
- Build the CLI package
pnpm build
- Test your changes
pnpm shortest --help
- To test in another project:
pnpm pack
# In your test project
npm install /path/to/antiwork-shortest-{version}.tgz
npx shortest -h
- Update documentation as needed
- Add or update tests for your changes
- Make sure all tests pass
- Request a review from maintainers
- After reviews begin, avoid force-pushing to your branch
- Force-pushing rewrites history and makes review threads hard to follow
- Don't worry about messy commits - we squash everything when merging to
main
- Follow the existing code patterns
- Use clear, descriptive variable names
- Don't add inline comments unless necessary (code should document itself)
We use the Conventional Commits specification.
A commit message should be structured as follows:
type(scope): title
description
Where type can be:
feat
: new feature or enhancementfix
: bug fixesdocs
: documentation-only changestest
: test-only changesrefactor
: code improvements without behaviour changeschore
: maintenance/anything else
Example:
feat(cli): Add mobile testing support
- Check existing discussions/issues/PRs before creating new ones
- Start a discussion for questions or ideas
- Open an issue for bugs or problems