By submitting a pull request to this repository, you agree to the terms below.
(a) The contribution is your original work and you have the right to submit it. (b) You license your contribution under the project's current license (Apache-2.0). (c) You grant the maintainers the right to relicense your contribution as part of the project under any future open-source or commercial license.
Thank you for your interest in contributing to the Agentic Context Engine! We welcome contributions from the community.
Before creating bug reports, please check existing issues to avoid duplicates. When creating a bug report, include:
- A clear and descriptive title
- Steps to reproduce the issue
- Expected behavior vs actual behavior
- Environment details (OS, Python version, package versions)
- Any relevant error messages or logs
Enhancement suggestions are welcome! Please provide:
- A clear description of the enhancement
- Use cases and benefits
- Possible implementation approach (optional)
- Any potential drawbacks or considerations
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests to ensure nothing breaks
- Commit your changes using conventional commits (see below)
- Push to your branch
- Open a Pull Request
Use consistent prefixes for branch names:
| Prefix | Purpose | Example |
|---|---|---|
feature/ |
New features | feature/john/benchmarks |
fix/ |
Bug fixes | fix/jane/memory-leak |
docs/ |
Documentation changes | docs/john/api-reference |
refactor/ |
Code refactoring | refactor/jane/llm-client |
test/ |
Test additions/fixes | test/john/integration-suite |
chore/ |
Maintenance tasks | chore/jane/update-deps |
Format: <type>/<developer>/<description>
Rules:
- Use lowercase with hyphens (kebab-case)
- Use your GitHub username or first name as developer identifier
- Keep descriptions short but descriptive
- Include issue number if applicable:
fix/john/123-login-error - Never push directly to
main- always use feature branches
We use git worktrees to work on multiple branches simultaneously without switching. Each branch gets its own directory.
| Command | Description | Example |
|---|---|---|
/create-branch |
Create branch + worktree | /create-branch feature add-caching |
/checkout-branch |
Switch to branch (creates worktree if needed) | /checkout-branch add-caching |
/list-branches |
List branches with worktree status | /list-branches or /list-branches feature |
/remove-branch |
Remove branch + worktree | /remove-branch feature/john/add-caching |
Worktrees are created as siblings to the main worktree:
- Branch:
feature/john/add-caching - Worktree:
../feature-john-add-caching
# List all worktrees
git worktree list
# Add worktree for existing branch
git worktree add ../path-name branch-name
# Add worktree with new branch
git worktree add -b new-branch ../path-name
# Remove worktree
git worktree remove ../path-name
# Prune stale worktree references
git worktree prune- Parallel development: Work on multiple features without stashing
- Faster context switching: No need to rebuild dependencies
- Cleaner git history: No accidental commits to wrong branch
- IDE-friendly: Open each worktree in separate IDE windows
# Clone your fork
git clone https://github.com/your-username/agentic-context-engine.git
cd agentic-context-engine
# Install all dependencies (uses UV - 10-100x faster than pip)
uv sync
# Run tests
uv run pytest
# Run linting and formatting
uv run black ace/ tests/ examples/
uv run mypy ace/
# Run specific test files
uv run pytest tests/test_skillbook.py
uv run pytest -m unit # Only unit tests
uv run pytest -m integration # Only integration testsWe use Conventional Commits for clear commit history and automatic changelog generation.
Format: <type>(<scope>): <subject>
Types:
feat: New featurefix: Bug fixdocs: Documentation onlystyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding testschore: Maintenance tasks
Examples:
feat(llm): add support for new LLM provider
fix(adapter): resolve memory leak in online mode
docs(readme): update installation instructions
- Follow PEP 8
- Use type hints where possible
- Add docstrings to all public functions and classes
- Keep line length under 100 characters
- Use Black for automatic formatting
- Write tests for new features
- Ensure all tests pass before submitting PR
- Aim for good test coverage
- Use meaningful test names
- Update README.md if adding new features
- Add docstrings to new code
- Update CHANGELOG.md following Keep a Changelog format
- Include examples for new functionality
Feel free to open an issue for any questions or join the discussion in GitHub Discussions.