|
1
|
# Contributing to Hugoifier |
|
2
|
|
|
3
|
Thank you for your interest in contributing to Hugoifier! |
|
4
|
|
|
5
|
## Development Setup |
|
6
|
|
|
7
|
1. **Fork and clone the repository:** |
|
8
|
|
|
9
|
```bash |
|
10
|
git clone https://github.com/<your-username>/hugoifier.git |
|
11
|
cd hugoifier |
|
12
|
``` |
|
13
|
|
|
14
|
2. **Create a virtual environment:** |
|
15
|
|
|
16
|
```bash |
|
17
|
python3 -m venv .venv |
|
18
|
source .venv/bin/activate # On Windows: .venv\Scripts\activate |
|
19
|
``` |
|
20
|
|
|
21
|
3. **Install dependencies:** |
|
22
|
|
|
23
|
```bash |
|
24
|
pip install -r requirements.txt |
|
25
|
pip install ruff pytest |
|
26
|
``` |
|
27
|
|
|
28
|
4. **Set up at least one AI provider API key:** |
|
29
|
|
|
30
|
```bash |
|
31
|
export ANTHROPIC_API_KEY="sk-ant-..." |
|
32
|
# or |
|
33
|
export OPENAI_API_KEY="sk-..." |
|
34
|
# or |
|
35
|
export GOOGLE_API_KEY="..." |
|
36
|
``` |
|
37
|
|
|
38
|
## Running Tests |
|
39
|
|
|
40
|
```bash |
|
41
|
pytest tests/ |
|
42
|
``` |
|
43
|
|
|
44
|
Tests are written to avoid real AI calls — they mock the `call_ai` function or test pure functions only. Keep it that way. |
|
45
|
|
|
46
|
## Code Style |
|
47
|
|
|
48
|
This project uses [Ruff](https://docs.astral.sh/ruff/) for linting. |
|
49
|
|
|
50
|
```bash |
|
51
|
# Check for issues |
|
52
|
ruff check src/ tests/ |
|
53
|
|
|
54
|
# Auto-fix |
|
55
|
ruff check --fix src/ tests/ |
|
56
|
``` |
|
57
|
|
|
58
|
All contributions must pass `ruff check` with no errors before merging. |
|
59
|
|
|
60
|
## Commit Conventions |
|
61
|
|
|
62
|
Use the imperative mood, prefix with a type: |
|
63
|
|
|
64
|
- `fix(module): description` — bug fixes |
|
65
|
- `feat(module): description` — new features |
|
66
|
- `docs: description` — documentation only |
|
67
|
- `test: description` — tests only |
|
68
|
- `chore: description` — maintenance, deps, tooling |
|
69
|
|
|
70
|
Keep subject lines under 72 characters. |
|
71
|
|
|
72
|
## Pull Request Process |
|
73
|
|
|
74
|
1. Branch from `main` |
|
75
|
2. Write or update tests for your changes |
|
76
|
3. Run `pytest tests/` and `ruff check src/ tests/` — both must be clean |
|
77
|
4. Open a PR against `main` and fill out the template |
|
78
|
5. A maintainer will review within a few business days |
|
79
|
|
|
80
|
## Reporting Bugs and Requesting Features |
|
81
|
|
|
82
|
- **Bugs:** [Bug Report](https://github.com/ConflictHQ/hugoifier/issues/new?template=bug_report.yml) |
|
83
|
- **Features:** [Feature Request](https://github.com/ConflictHQ/hugoifier/issues/new?template=feature_request.yml) |
|
84
|
- **Questions:** [Discussions](https://github.com/ConflictHQ/hugoifier/discussions) |
|
85
|
|
|
86
|
## Security |
|
87
|
|
|
88
|
Do **not** open a public issue for security vulnerabilities. See [SECURITY.md](SECURITY.md). |
|
89
|
|
|
90
|
## License |
|
91
|
|
|
92
|
By contributing to Hugoifier, you agree that your contributions will be licensed under the [MIT License](../LICENSE). |
|
93
|
|