Developer Guide
September 7, 2026 · View on GitHub
This guide provides essential information for developers working on the Agent Kernel project.
Table of Contents
Prerequisites
Before you begin development, ensure you have the following installed:
- Python 3.12 or higher
- uv - Fast Python package installer and resolver
- Git
- Make
Setup Your Development Environment
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/<your-username>/agent-kernel.git cd agent-kernel -
Add the upstream repository:
git remote add upstream https://github.com/yaalalabs/agent-kernel.git -
Create a branch for your changes:
git checkout -b feature/your-feature-name
Development
-
Run the dev setup script from the repo root to install prerequisites (pyenv, Python 3.12, uv) and sync the
ak-pyvirtual environment:make dev-setupor directly:
./scripts/dev-setup.shAlternatively, set things up manually:
cd ak-py ./build.sh
Makefile Commands
The project includes a Makefile with several useful commands for code formatting and quality checks. All commands should be run from the root directory of the project.
Available Commands
To see all available Makefile commands:
make help
Code Quality
Formatting Standards
Agent Kernel uses the following tools to maintain code quality:
Pre-commit Workflow
Before committing code, run:
make lint-check-all
This ensures your code meets the project's formatting standards without making changes. If issues are found, run:
make lint-all
to automatically fix formatting issues.
Lint and Commit Workflow (CI)
For applying formatting on a remote branch without running the tools locally, use the
Lint and Commit GitHub Actions workflow (.github/workflows/lint-fix.yml). Trigger it
manually from the Actions tab (workflow_dispatch) with two inputs:
lint_target: which Makefile target to run —lint,lint-examples, orlint-all(default).branch: the branch to format and commit the changes to.
The workflow runs the selected target and pushes a chore: commit with any formatting
changes back to the chosen branch. Protected branches (currently develop) are rejected —
the workflow fails before making any changes.
Pull Request Automation (CI)
Three small workflows run on every pull request without any manual step:
- PR Title Check (
.github/workflows/pr-title-check.yaml): fails unless the PR title follows Conventional Commits (type: descriptionortype(scope): description, with the types listed in CONTRIBUTING.md).developaccepts squash merges only, so the title becomes the commit subject. Fix a failure by editing the title; the check re-runs on the edit. - Request Copilot Review (
.github/workflows/copilot-review-request.yaml): requests a GitHub Copilot code review when a PR is opened, reopened, or marked ready for review, using theCOPILOT_REVIEW_PATsecret. The develop ruleset's own Copilot rule only fires for authors who hold a license, which is why this workflow exists. Bot-authored PRs are skipped. It can also be run from the Actions tab (workflow_dispatch) with a PR number.COPILOT_REVIEW_PATis a fine-grained PAT created by a licensed maintainer with resource owneryaalalabs, access to this repository, and "Pull requests: Read and write". It is separate fromCOPILOT_REQUEST_TOKEN(used by the docs-sync workflow) because GitHub only allows the account-level Copilot Requests permission on user-owned tokens, and a user-owned token cannot hold repository permissions on an organization repo. - Reset Reviewed Label (
.github/workflows/reviewed-label-reset.yaml): maintainers add theReviewedlabel after going through a PR; any new push removes it again so the PR reappears in the review queue (is:pr is:open -label:Reviewed).
The last two use pull_request_target so they also work for fork PRs. Neither checks out PR
code; they only call the GitHub API. Keep it that way when editing them.
Contributing
Development Workflow
-
Create a feature branch
git checkout -b feature/your-feature-name -
Make your changes
- Write code following the project's conventions
- Add tests for new functionality
-
Verify formatting
make lint-check-all -
Format your code
make lint-all -
Run tests
cd ak-py uv run pytest -
Commit your changes
git add . git commit -m "feat: describe your changes" -
Push to your branch
git push origin feature/your-feature-name
Commit Message Convention
Follow conventional commit format:
feat:- New featurefix:- Bug fixdocs:- Documentation changeschore:- Maintenance tasksrefactor:- Code refactoringtest:- Test additions or modifications
Code Review
- Ensure all formatting checks pass
- Add appropriate tests
- Ensure all CI tests pass
- Update documentation if needed
- Request review from maintainers
Additional Resources
- Main README - Project overview and usage
- AGENTS.md - Guidance for AI coding agents contributing to this repo (architecture pointers, agent-specific gotchas)
- Documentation Setup - Setting up the documentation site
- Examples - Sample implementations
- Use Cases - End-to-end agents built from
SPEC.mdusing Agent Kernel skills - e2e - Messaging integration e2e harness (deployable app + Terraform + pytest suite) driven against real Slack, Telegram, WhatsApp, Messenger, Instagram, and Gmail accounts