Thank you for your interest in contributing to the Spec Kit Partner plugin! This document provides guidelines and information about our development workflows.
-
Clone the repository
git clone https://github.com/jcmrs/claude-code-spec-kit-subagent-plugin.git cd claude-code-spec-kit-subagent-plugin -
Install Python dependencies
pip install flake8 pylint pytest
-
Install Node.js tools (for Markdown linting)
npm install -g markdownlint-cli
This repository uses GitHub Actions to automatically validate all contributions. The following workflows run on every push and pull request:
Purpose: Ensures Python code in spec-kit-partner/src/ follows syntax and style guidelines.
Tools:
- flake8 - Checks for syntax errors and undefined names (fails on errors)
- pylint - Additional code quality checks (warnings only)
Run locally:
flake8 spec-kit-partner/src --count --select=E9,F63,F7,F82 --show-source --statistics
flake8 spec-kit-partner/src --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
pylint spec-kit-partner/src --exit-zero --max-line-length=127Purpose: Validates that plugin manifests exist, are valid JSON, and contain all required fields.
Checks:
.claude-plugin/plugin.jsonexists and is valid JSON.claude-plugin/marketplace.jsonexists and is valid JSON- Required fields are present in both files
Required fields in plugin.json:
name,version,description,author,license
Required fields in marketplace.json:
display_name,summary,description,categories,icon,publisher,license,version
Run locally:
python3 -m json.tool .claude-plugin/plugin.json > /dev/null
python3 -m json.tool .claude-plugin/marketplace.json > /dev/nullPurpose: Ensures all assets referenced in manifests actually exist in the repository.
Checks:
- Icon file exists (
assets/icon.png) - README file exists (
README.md) - Screenshot files exist (as listed in
marketplace.json)
Run locally:
# Check if referenced assets exist
test -f assets/icon.png && echo "✓ Icon found"
test -f README.md && echo "✓ README found"
test -f assets/screenshot1.png && echo "✓ Screenshot 1 found"
test -f assets/screenshot2.png && echo "✓ Screenshot 2 found"Purpose: Validates Markdown syntax and Mermaid diagram syntax (not content completeness).
Tools:
- markdownlint-cli - Checks Markdown formatting (warnings only)
- Python validator - Basic Mermaid syntax validation
Run locally:
# Lint Markdown
markdownlint '**/*.md' --ignore node_modules
# Validate Mermaid diagrams
find . -name "*.mermaid" -o -name "*.mmd"Purpose: Runs automated tests to verify Python code functionality.
Current tests:
- Module import validation
- Constants and class existence checks
- Basic functionality tests
Run locally:
python tests/test_basic.py
pytest tests/ -v-
Fork and create a branch
git checkout -b feature/your-feature-name
-
Make your changes
- Follow existing code style
- Keep changes minimal and focused
- Update documentation as needed
-
Test locally
# Run linting flake8 spec-kit-partner/src # Run tests python tests/test_basic.py # Validate JSON python3 -m json.tool .claude-plugin/plugin.json > /dev/null
-
Commit and push
git add . git commit -m "Description of your changes" git push origin feature/your-feature-name
-
Create Pull Request
- All workflows must pass before merging
- Request review from maintainers
- Address any feedback
- Maximum line length: 127 characters
- Use PEP 8 style guide
- Add docstrings to functions and classes
- Keep complexity reasonable (max-complexity=10)
- Use consistent heading levels
- Include blank lines around code blocks and lists
- Keep line length reasonable (no strict limit)
- Use 2-space indentation
- No trailing commas
- No comments (JSON doesn't support them)
claude-code-spec-kit-subagent-plugin/
├── .github/workflows/ # GitHub Actions workflows
├── .claude-plugin/ # Plugin manifests
├── agents/ # Agent documentation
├── assets/ # Images and static files
├── spec-kit-partner/
│ ├── src/ # Python source code
│ ├── project-data/ # Runtime data files
│ ├── diagrams/ # Mermaid diagrams
│ └── spec/ # Specification files
└── tests/ # Test files
If you need to add a new workflow:
- Create a new YAML file in
.github/workflows/ - Follow the existing workflow structure
- Test locally before committing
- Document the workflow in this file
- Open an issue: GitHub Issues
- Check the README for general information
- Review the ROADMAP for planned features
By contributing, you agree that your contributions will be licensed under the MIT License.