Thank you for your interest in contributing to the AEA (Agentic Economic Activity) Protocol! This document provides guidelines for contributing to the project.
- Code of Conduct
- Getting Started
- Development Workflow
- Testing
- Documentation
- Submitting Changes
- Style Guidelines
Be respectful, constructive, and collaborative. We're all here to improve inter-agent communication.
bash4.0+jqfor JSON parsingopenssl(optional, for cryptographic features)- Git for version control
git clone <repository-url>
cd aea
# Verify scripts work
bash aea.sh test
# Create test scenarios
bash scripts/create-test-scenarios.sh all
bash aea.sh checkThis repository has a dual purpose:
- Protocol source - Scripts, specs, and tools for developing AEA
- Self-hosting - Uses
.aea/subdirectory to dogfood the protocol
Key files:
CLAUDE.md- For working ON the protocol (development context)templates/CLAUDE_INSTALLED.md- For working IN repos using AEAPROTOCOL.md- Protocol specificationscripts/- Core operational scriptsscripts/install-aea.sh- Installation script.aea/- Self-testing area (dogfooding)
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes to scripts, documentation, or protocol
-
Test locally:
# Test in this repo bash scripts/create-test-scenarios.sh all bash aea.sh check bash aea.sh test # Test installation mkdir -p /tmp/test-install bash scripts/install-aea.sh /tmp/test-install cd /tmp/test-install && bash .aea/scripts/aea-check.sh
-
Update documentation if needed:
CLAUDE.mdif changing development workflowstemplates/CLAUDE_INSTALLED.mdif changing usagePROTOCOL.mdif changing protocol specificationREADME.mdif changing user-facing features
-
Commit your changes:
git add . git commit -m "feat: Add feature description"
# Run all tests
bash aea.sh test
# Should see: Tests Passed: 16+/17# Create individual scenarios
bash scripts/create-test-scenarios.sh simple-question
bash scripts/create-test-scenarios.sh urgent-issue
# Create all scenarios
bash scripts/create-test-scenarios.sh all# Test in a fresh directory
mkdir -p /tmp/test-aea-install
bash scripts/install-aea.sh /tmp/test-aea-install
# Verify installation
cd /tmp/test-aea-install
ls -la .aea/
cat .aea/CLAUDE.md # Should be CLAUDE_INSTALLED.md content
bash .aea/scripts/aea-check.sh # Should workWhen adding features:
- Add test to
scripts/test-features.sh - Follow existing pattern (Test X.Y format)
- Use
print_resultandadd_test_result - Ensure JSON validation between operations
| File | Update When... |
|---|---|
CLAUDE.md |
Changing development workflows, testing, or installation |
templates/CLAUDE_INSTALLED.md |
Changing how users interact with installed AEA |
PROTOCOL.md |
Changing message format, protocol rules, or versioning |
README.md |
Changing user-facing features or quick start |
CHANGELOG.md |
Adding features, fixing bugs, or making changes |
- Use clear, concise language
- Include code examples where helpful
- Separate development context from usage context
- Reference files with line numbers where applicable
- Update examples to match current protocol version
-
Ensure all tests pass:
bash aea.sh test -
Update documentation:
- Update
CHANGELOG.mdwith your changes - Update relevant docs if features changed
- Add examples if introducing new features
- Update
-
Create pull request:
- Clear title describing the change
- Reference any related issues
- Include test results
- Describe what was changed and why
-
PR template (if applicable):
## Description Brief description of changes ## Type of Change - [ ] Bug fix - [ ] New feature - [ ] Documentation update - [ ] Breaking change ## Testing - [ ] Ran test suite (X/17 passing) - [ ] Tested installation in fresh directory - [ ] Tested commands in both contexts ## Documentation - [ ] Updated CLAUDE.md (if dev workflow changed) - [ ] Updated CLAUDE_INSTALLED.md (if usage changed) - [ ] Updated PROTOCOL.md (if protocol changed) - [ ] Updated CHANGELOG.md
- Use
#!/usr/bin/env bashshebang - Use
set -efor error handling - Quote variables:
"$variable" - Use relative paths (for portability)
- Add comments for complex logic
- Use functions for reusability
Example:
#!/usr/bin/env bash
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
my_function() {
local arg="$1"
echo "Processing: $arg"
}- Use 2-space indentation
- Include required fields per PROTOCOL.md
- Use ISO 8601 timestamps (UTC)
- Validate with
jq '.' file.json
- Use ATX-style headers (
#) - Code blocks with language tags
- One sentence per line (for diffs)
- Add blank lines between sections
- API-based Claude instance triggering
- Message threading support
- Performance benchmarking
- Windows compatibility testing
- Additional test scenarios
- Web UI for monitoring
- GitHub Actions integration
- Docker containerization
- Message analytics/metrics
- Example multi-repo setup
- Alternative message transports
- Plugin system
- Message templates library
- Visual flow diagrams
- Video tutorials
- Protocol questions: See
PROTOCOL.mdordocs/aea-rules.md - Development questions: See
CLAUDE.md - Usage questions: See
README.mdortemplates/CLAUDE_INSTALLED.md - Installation issues: Check
scripts/install-aea.sh
By contributing, you agree that your contributions will be licensed under the MIT License (see LICENSE file).
Thank you for contributing to AEA Protocol! 🚀