Development Workflow Guide
Use this skill when working on AG3NT: testing, Git workflow, code contributions, and quality standards.
Starting AG3NT for Development
powershell
# Windows .\start.ps1 # Unix ./start.sh
This starts both Gateway (port 18789) and Agent Worker (port 18790).
To stop:
powershell
.\stop.ps1 # Windows - kills all AG3NT processes
Testing
Python Tests (Agent Worker)
bash
cd apps/agent # Run all tests uv run pytest # Run with coverage uv run pytest --cov=ag3nt_agent --cov-report=html # Run only unit tests uv run pytest -m unit # Run specific test file uv run pytest tests/unit/test_shell_security.py -v
TypeScript Tests (Gateway)
bash
cd apps/gateway # Run all tests npm test # Run with coverage npm run test:coverage # Watch mode npm run test:watch
Test Categories
| Category | Marker/Pattern | Speed | I/O |
|---|---|---|---|
| Unit | @pytest.mark.unit | Fast | No |
| Integration | @pytest.mark.integration | Medium | Yes |
| E2E | @pytest.mark.e2e | Slow | Yes |
Coverage Targets
| Sprint | Target |
|---|---|
| Sprint 1 | 40% |
| Sprint 2 | 55% |
| Sprint 5 | 80%+ |
Building
Gateway Build
bash
cd apps/gateway npm run build # Build TypeScript npm run lint # Run ESLint npm run typecheck # Type checking only
Agent Build
bash
cd apps/agent uv run ruff check . # Linting uv run mypy . # Type checking
Code Quality Standards
Python (Agent Worker)
- •Style: Ruff formatter + linter
- •Types: Full type hints required
- •Docstrings: Google style for public APIs
- •Naming: snake_case for functions/variables, PascalCase for classes
TypeScript (Gateway)
- •Style: Prettier + ESLint
- •Types: Strict mode, no
any - •Comments: JSDoc for public APIs
- •Naming: camelCase for functions/variables, PascalCase for classes
Git Workflow
Branch Naming
code
feature/{task-id}-{short-description}
fix/{issue-id}-{short-description}
refactor/{area}-{description}
Commit Messages
code
{type}: {short description}
{optional body with more details}
Types: feat, fix, refactor, test, docs, chore
Example:
code
feat: add web search tool with Tavily integration - Implements WebSearchTool with multi-provider support - Adds caching with configurable TTL - Falls back to DuckDuckGo when Tavily unavailable
Before Pushing
- •Run tests:
uv run pytestandnpm test - •Check types:
uv run mypy .andnpm run typecheck - •Format code:
uv run ruff format . - •Review changes:
git diff --staged
Adding New Features
Adding a New Tool (Agent)
- •Create tool in
apps/agent/ag3nt_agent/tools/ - •Register in
deepagents_runtime.py - •Add unit tests in
tests/unit/ - •Update tool list in docs if public
Adding a New Channel (Gateway)
- •Create adapter in
apps/gateway/src/channels/ - •Register in channel factory
- •Add configuration schema in
config/ - •Add integration tests
Adding a New Skill
- •Create folder in
skills/{skill-name}/ - •Add
SKILL.mdwith YAML frontmatter - •Add optional
scripts/andreferences/ - •Test via Control Panel
Troubleshooting
| Problem | Solution |
|---|---|
| Port in use | .\stop.ps1 to kill processes |
| Tests fail | Check if AG3NT is running (some tests need it) |
| Type errors | Run typecheck command to see all errors |
| Import errors | Check virtual env is activated |
Further Reading
- •Testing guide:
/docs/guides/TESTING.md - •Skill development:
/docs/guides/SKILL_DEVELOPMENT.md - •Configuration:
/docs/reference/CONFIGURATION.md