Thanks for your interest! This guide covers everything you need to send a PR.
- Fork → branch from
dev→ make your change → PR back todev. - Sign your commits (
git commit -s) and follow conventional-commit subjects. pre-commitand CI must be green before review.
This project follows the Contributor Covenant. By participating you agree to uphold it.
- Questions / discussion → GitHub Discussions (or open a
questionissue) - Bugs → Bug report issue template
- Security issues → see SECURITY.md (do not open a public issue)
Prereqs: Python 3.12+, Node.js 24+, git, uv (pip install uv).
git clone https://github.com/dataseeek/MagesticAI.git
cd MagesticAI
npm run install:all # backend + web-server + frontend deps
cp apps/backend/.env.example apps/backend/.env # add provider keys
cp apps/web-server/.env.example apps/web-server/.env # optional overrides
claude setup-token # OAuth token for Claude SDKRun the stack:
# Terminal 1
cd apps/web-server && .venv/bin/python -m server.main
# Terminal 2
cd apps/frontend-web && npm run devOpen https://localhost:3100.
| Branch | Purpose | PR target |
|---|---|---|
feature/*, fix/*, chore/* |
Your work | dev |
dev |
Integration branch — pre-release work | main |
main |
Stable; tagged releases cut from here | — |
Hotfixes can PR straight to main but require a maintainer review.
git checkout dev && git pull
git checkout -b fix/short-description
# work
git commit -s -m "fix: brief subject in imperative voice"
git push -u origin fix/short-description
gh pr create --base devConventional commits, single-line subject ≤ 72 chars, imperative voice.
feat: add task-creation wizard
fix: handle empty SDK response in insight extractor
docs: clarify Docker macvlan setup
chore: bump dependabot cadence to weekly
Sign every commit with the Developer Certificate of Origin (-s). PRs without sign-off will be asked to amend.
Enforced by pre-commit and the CI workflow (.github/workflows/ci.yml):
- Python —
ruff check+pytest - TypeScript / React — ESLint +
tsc --noEmit - Versions —
package.jsonis the source of truth;.husky/pre-commitsyncs the others
Install hooks once:
npm install # installs husky
pre-commit install # if you also want the python pre-commit framework# Backend
apps/backend/.venv/bin/pytest tests/ -v
# Skip slow ones
apps/backend/.venv/bin/pytest tests/ -m "not slow"
# Frontend
cd apps/frontend-web && npm run lint && npx tsc --noEmitAdd coverage with the change. Bug fixes need a regression test.
The full template lives in .github/PULL_REQUEST_TEMPLATE.md — TL;DR:
- Targets
dev(ormainfor hotfix) - Subject follows conventional commits, body explains why
- Pre-commit + CI pass
- Tests added or updated
- Behind a feature flag if incomplete
- Breaking changes called out
Keep PRs focused and < 400 lines when you can — easier to review, faster to merge.
See RELEASE.md — version bumps via node scripts/bump-version.js {patch|minor|major} on a branch, then PR to main triggers tag + GitHub Release.
After a fresh clone of the repo, run:
bash scripts/setup-branch-protection.sh…to (re)apply branch-protection rules on main and dev via gh api. Idempotent.
By contributing you agree your work is licensed under AGPL-3.0.