Contributing to ALP
Thank you for your interest in contributing to the Autonomous Lifecycle Protocol! This guide will help you get started.
Code of Conduct
By participating in this project, you agree to abide by the Contributor Covenant Code of Conduct.
How to Contribute
Reporting Bugs
Before creating a bug report:
- Check the existing issues to avoid duplicates
- Collect relevant information (version, OS, steps to reproduce)
Create a bug report with:
- Clear, descriptive title
- Steps to reproduce
- Expected vs actual behavior
- ALP version (
alp --version) - OS and Node.js version
Suggesting Features
Feature requests are welcome! Please:
- Check existing issues and discussions
- Describe the problem you're solving
- Propose a solution with examples
- Consider backward compatibility
Pull Requests
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Make your changes
- Run tests (
npm test) - Commit with a clear message (
git commit -m "feat: add my feature") - Push to your fork (
git push origin feature/my-feature) - Open a Pull Request
Development Setup
Prerequisites
- Node.js 24+ and npm 10+
- Git
- A code editor (VS Code recommended)
Clone and Install
bash
git clone https://github.com/Autonomous-Lifecycle-Protocol-ALP/Autonomous-Lifecycle-Protocol-ALP.git
cd Autonomous-Lifecycle-Protocol-ALP
npm ciBuild
bash
# Build all workspaces
npm run build
# Build specific workspace
npm run build --workspace @autonomous-lifecycle-protocol-alp/parser
npm run build --workspace @autonomous-lifecycle-protocol-alp/cli
npm run build --workspace @autonomous-lifecycle-protocol-alp/sdkRun Tests
bash
# Run all tests
npm test
# Run tests for specific workspace
npm test --workspace @autonomous-lifecycle-protocol-alp/parser
npm test --workspace @autonomous-lifecycle-protocol-alp/cliProject Structure
Autonomous-Lifecycle-Protocol-ALP/
├── parser/ # TypeScript ALP parser
│ ├── src/
│ │ ├── parser.ts
│ │ ├── graph.ts
│ │ ├── loop.ts
│ │ └── ...
│ └── tests/
├── cli/ # CLI tool
│ ├── src/
│ │ ├── commands/
│ │ └── index.ts
│ └── tests/
├── sdk/
│ ├── typescript/ # TypeScript SDK
│ ├── python/ # Python SDK
│ ├── java/ # Java SDK
│ ├── rust/ # Rust SDK
│ └── go/ # Go SDK
├── mcp-server/ # MCP server
├── docs-site/ # Documentation
├── integrations/ # IDE integrations
│ ├── claude-code/
│ ├── cursor/
│ └── github/
└── sham/ # SHAM IDECoding Standards
TypeScript
- Use TypeScript strict mode
- Follow Effective TypeScript patterns
- Write tests for all new features
- Use meaningful variable and function names
Python
- Follow PEP 8
- Use type hints
- Write tests using pytest
- Use docstrings for public APIs
General
- Write clear, self-documenting code
- Add comments only when necessary
- Keep functions small and focused
- Use descriptive commit messages
Commit Message Convention
We use Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer]Types
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Examples
feat(parser): add support for @timeline objects
fix(cli): resolve race condition in LockManager
docs(spec): update versioning section for v80.0.0
test(sdk): add integration tests for Go SDKTesting
All contributions must include tests:
bash
# Run parser tests
npm test --workspace @autonomous-lifecycle-protocol-alp/parser
# Run CLI tests
npm test --workspace @autonomous-lifecycle-protocol-alp/cli
# Run Python SDK tests
cd sdk/python && pytest
# Run Go SDK tests
cd sdk/go && go test -v ./...Documentation
- Update
docs-site/src/for user-facing changes - Update JSDoc/docstrings for API changes
- Add examples for new features
- Update the changelog if applicable
Release Process
Releases are tagged with semantic versions:
- Update version numbers in
package.jsonfiles - Update
docs-site/src/releases.md - Create a git tag:
git tag -a vX.Y.Z -m "Release vX.Y.Z" - Push the tag:
git push origin vX.Y.Z - The publish workflow will handle the rest
Getting Help
- Read the documentation
- Join GitHub Discussions
- Report issues in GitHub Issues
- Reach out to maintainers via GitHub
Recognition
Contributors are recognized in:
- Release notes
- The documentation
- GitHub contributors graph
Thank you for contributing to ALP!