Contributing¶
Contributions to pan-scm-cli are welcome and appreciated. Whether you are fixing a bug, adding a feature, improving documentation, or providing suggestions, every contribution is valuable.
Getting Started¶
Before you begin, make sure you have a GitHub account and are familiar with Git and GitHub workflows. If you are new to these tools, check out GitHub's Help pages.
Setting Up Your Environment¶
Fork and Clone¶
Install Dependencies¶
The project uses Poetry for dependency management:
Create a Branch¶
Create a branch for your changes:
Contributing Guidelines¶
Code Style¶
The project follows PEP 8 standards for Python code. Refer to the style guides in the .claude/ directory for project-specific conventions:
.claude/STYLE_GUIDE.mdfor command modules and general standards.claude/SDK_CLIENT_STYLE_GUIDE.mdfor SDK client patterns.claude/VALIDATORS_STYLE_GUIDE.mdfor validator patterns
Pull Request Process¶
-
Update Your Fork: Sync your fork with the upstream repository before making changes.
-
Make Your Changes: Create your feature branch and make changes. Ensure your code passes all tests and linting checks.
-
Commit Your Changes: Use a clear and descriptive commit message.
-
Push to Your Fork: Push your changes to your fork on GitHub.
-
Create a Pull Request: Go to the pan-scm-cli repository and create a new pull request from your feature branch.
-
Address Review Feedback: Respond to any feedback and make necessary changes.
Running Tests¶
The project uses pytest for testing:
Run a specific test:
Running Quality Checks¶
Run all quality checks before submitting a pull request:
This runs linting, formatting, type checking, and tests.
Documentation¶
If you are adding or modifying functionality, update the documentation to reflect the changes. The project uses MkDocs with the Material theme.
Preview documentation changes locally:
Tip
Follow the documentation style guide in .claude/skills/docs-style/SKILL.md
when writing or modifying documentation pages.
Adding New Commands¶
When adding new CLI commands:
- Follow existing patterns in the appropriate command module under
src/scm_cli/commands/ - Add Pydantic validators in
utils/validators.pyif needed - Register the command in
main.py - Include helpful error messages and proper input validation
- Add tests in
tests/ - Document the command with examples in
docs/cli/
Bug Reports and Feature Requests¶
If you find a bug or have a feature request, create an issue on the GitHub repository using the provided templates.
Code of Conduct¶
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code.