File size: 5,640 Bytes
116524e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
**By submitting a pull request to this repository, you agree to the terms below.**

## Contributor Terms

(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.

---

# Contributing to ACE Framework

Thank you for your interest in contributing to the Agentic Context Engine! We welcome contributions from the community.

## How to Contribute

### Reporting Bugs

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

### Suggesting Enhancements

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

### Pull Requests

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Run tests to ensure nothing breaks
5. Commit your changes using conventional commits (see below)
6. Push to your branch
7. Open a Pull Request

## Branch Naming Convention

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

## Worktree Workflow

We use git worktrees to work on multiple branches simultaneously without switching. Each branch gets its own directory.

### Claude Code Commands

| 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` |

### Worktree Path Convention

Worktrees are created as siblings to the main worktree:
- Branch: `feature/john/add-caching`
- Worktree: `../feature-john-add-caching`

### Manual Worktree Commands

```bash

# 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

```

### Benefits

- **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

## Development Setup

```bash

# 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 tests

```

## Commit Message Format

We use [Conventional Commits](https://www.conventionalcommits.org/) for clear commit history and automatic changelog generation.

Format: `<type>(<scope>): <subject>`

Types:
- `feat`: New feature
- `fix`: Bug fix
- `docs`: Documentation only
- `style`: Code style changes (formatting, etc.)
- `refactor`: Code refactoring
- `test`: Adding tests
- `chore`: Maintenance tasks

Examples:
```

feat(llm): add support for new LLM provider

fix(adapter): resolve memory leak in online mode

docs(readme): update installation instructions

```

## Code Style

- 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

## Testing

- Write tests for new features
- Ensure all tests pass before submitting PR
- Aim for good test coverage
- Use meaningful test names

## Documentation

- 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

## Questions?

Feel free to open an issue for any questions or join the discussion in [GitHub Discussions](https://github.com/Kayba-ai/agentic-context-engine/discussions).