Thank you for your interest in contributing to the GABBE Agentic Engineering Kit!
git clone https://github.com/andreibesleaga/GABBE
cd GABBE
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"Run the test suite:
pytest gabbe/tests/ scripts/tests/ -v
python3 agents/scripts/verify_use_cases.py
python3 agents/scripts/verify_triggers_and_mcps.pyFor a reproducible install, use the pinned, hashed lockfile:
pip install -r requirements-lock.txtrequirements-lock.txt is generated from pyproject.toml with
pip-tools. Regenerate it whenever
dependencies change:
pip install pip-tools
pip-compile --extra dev --generate-hashes --output-file requirements-lock.txt pyproject.tomlCode changes must keep the six verification gates green (API surface, CLI
--help, config schema, emitter output, benchmarks, CVE delta):
./scripts/gates/run_gates.shThe emitted client formats (.cursor/rules/*.mdc, .claude/skills/,
.github/skills/, .gemini/settings.json) are a public contract documented in
docs/SCHEMA.md and locked by
scripts/tests/test_golden_emitters.py. They evolve additive-only.
- Create a new
.skill.mdfile inagents/skills/<category>/:
---
name: my-skill
description: What this skill does in one sentence
tags: [python, testing]
---
# My Skill
## Goal
Concise statement of what the agent should accomplish.
## Steps
1. Step one
2. Step two
3. Verify with tests
## Security & Guardrails
- Keep changes focused and secure
- Run tests after every change to prevent regressions- Re-run
init.pyto distribute the skill to all configured AI tools:
python3 scripts/init.py- Add a row to the skills table in
README_FULL.mdand an entry inREADME.md.
- Create a
.mdfile inagents/templates/<category>/. - Use existing templates as reference (e.g.,
agents/templates/core/TASKS_TEMPLATE.md). - Update the templates table in
README.mdandREADME_FULL.md.
- Create a
.mdfile inagents/guides/. - Update the guides table in
README.md(Guides by Stack section) andREADME_FULL.md.
- All changes must pass
pytest gabbe/tests/ scripts/tests/ -v. - If you add a CLI feature, add or extend unit tests in
gabbe/tests/. - If you change
scripts/init.py, add or extend tests inscripts/tests/. - Run
python3 agents/scripts/verify_use_cases.pyandverify_triggers_and_mcps.pyafter skill/guide/template changes. - Follow the existing code style (PEP 8, no type annotations required but welcomed).
- Add new configurable constants to
config.pyrather than hardcoding them.
config.pyis the single source of truth for all configurable values.- Never use
shell=Trueinsubprocess.run— useshlex.split(). - Always close DB connections with
try/finallyor a context manager. - Use
_atomic_write()fromsync.pyfor any file writes that must be crash-safe.
- Tests pass:
pytest gabbe/tests/ scripts/tests/ -v - Verifiers pass:
python3 agents/scripts/verify_use_cases.pyandverify_triggers_and_mcps.py - New behaviour is covered by tests
-
CHANGELOG.mdupdated under## [Unreleased] -
README.mdcounts/tables updated if skills/templates/guides were added - No
shell=Trueintroduced - No hardcoded credentials or API keys
Open an issue at https://github.com/andreibesleaga/GABBE/issues with:
- GABBE version (
gabbe --versionor checkpyproject.toml) - Python version
- OS / AI tool being used
- Steps to reproduce