Thank you for your interest in contributing.
This document provides guidelines and instructions for contributing to workflow-as-list.
Want to contribute? Here is how to get started:
# 1. Fork the repository
# 2. Clone your fork
git clone https://github.com/YOUR_USERNAME/workflow-as-list.git
cd workflow-as-list
# 3. Install for development (using uv)
uv sync --dev
# 4. Create a branch (use issue/<number>-<description> format)
git checkout -b issue/19-your-feature-name
# 5. Make your changes, test, and commit (follow Conventional Commits)
# 6. Push and open a Pull Request (required - no direct pushes to main)Important: We use Pull Requests for all changes. No direct pushes to main.
We follow Conventional Commits v1.0.0.
Full Guide: See .github/COMMIT_CONVENTION.md
Type: feat(scope)
- When to Use: New product feature
- Example:
feat(cli): add check command
Type: fix(scope)
- When to Use: Product bug fix
- Example:
fix(security): handle null response
Type: chore(scope)
- When to Use: Development tools, scripts
- Example:
chore(scripts): add check-headers.py
Type: style
- When to Use: Formatting, linting
- Example:
style(tests): fix ruff linting
Type: refactor(scope)
- When to Use: Code restructuring
- Example:
refactor(executor): split into modules
Type: docs(scope)
- When to Use: Documentation
- Example:
docs(readme): update installation
Type: ci
- When to Use: CI/CD configuration
- Example:
ci: add GitHub Actions workflow
Type: test(scope)
- When to Use: Test files
- Example:
test: add unit tests for security
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
Rules:
- Type: lowercase (feat, fix, chore, ...)
- Scope: lowercase, optional (cli, scripts, tests, ...)
- Description: imperative mood (add not added)
- Body: wrap at 72 characters
- Footer: BREAKING CHANGE:, Closes #123, etc.
Good:
git commit -m "feat(cli): add check command"
git commit -m "chore(scripts): add check-headers.py"
git commit -m "style(tests): fix ruff linting"Bad (do not do this):
git commit -m "feat(scripts): add tool" # Scripts are chore, not feat
git commit -m "fix: lint errors" # Lint is style, not fix
git commit -m "Updated file" # No type, no scopeWrong: feat(scripts): ...
Correct: chore(scripts): ...
Why: Scripts are dev tools
Wrong: fix(tests): lint
Correct: style(tests): lint
Why: Lint is style, not bug
Wrong: refactor(scripts): ...
Correct: chore(scripts): ...
Why: Scripts refactor is chore
Feature branch (linked to issue):
git checkout -b issue/19-add-check-commandBug fix branch:
git checkout -b issue/42-fix-security-crashDocumentation branch:
git checkout -b docs/add-contributing-guide# Make your changes
# Run tests
uv run pytest
# Run linter
uv run ruff check .
uv run ruff format --check .
# Commit
git add .
git commit -m "feat(cli): add check command"
# Push
git push -u origin issue/19-add-check-command- Go to https://github.com/tracer-mohist/workflow-as-list
- Click New Pull Request
- Select your branch
- Fill in PR template
- Wait for CI (test + lint must pass)
- Address review comments
- Merge (squash merge preferred)
Formatter: Ruff (uv run ruff format .)
Linter: Ruff (uv run ruff check .)
Imports: Sorted automatically by Ruff
Line length: 88 characters (Ruff default)
Framework: pytest
Location: tests/ directory
Naming: test_<module>_<type>.py (e.g., test_security_unit.py)
Format: Markdown
Style: Follow 6-Layer Prompt Engineering Framework (see docs/prompt-engineering/README.md)
Location: docs/ directory
General: Open an issue
Code: Check existing issues and PRs
Conventions: See .github/COMMIT_CONVENTION.md
Last Updated: 2026-03-12 Related: workflow-as-list#19 (Conventional Commits cleanup)