Tooling Reference
AgilePlus is a Phenotype-org spec-driven project-management platform. The repo is polyglot: Rust is the long-term workspace scaffold, Python hosts the dispatch-mcp MCP server, and Go is present in sibling tooling such as pheno-cli. This page is the local tooling map for the repo.
Overview
- Rust: root Cargo workspace is scaffolded for future AgilePlus crates.
- Python:
dispatch-mcp/is a standalone MCP server package. - Go:
pheno-cli/is a separate CLI in the wider workspace shelf.
For broader repo context, read:
Existing Tooling
The repo already has the following structure and automation surface:
ARCHITECTURE.mddescribes AgilePlus as the work-tracking spine for the Phenotype shelf.AGENTS.mddefines the repo-wide commands, quality gates, and branch discipline.CLAUDE.mdadds the protected-main / PR-only workflow and the worktree convention..github/workflows/contains the current CI and security jobs.
Use this document as the quick-start index; use the source docs above for policy and deeper context.
dispatch-mcp
dispatch-mcp/ is a Python MCP server for tier-based dispatch delegation via OmniRoute.
Package layout
dispatch-mcp/pyproject.tomldispatch-mcp/src/dispatch_mcp/server.pydispatch-mcp/tests/test_server.py
Run
Install in editable mode:
cd dispatch-mcp
python -m pip install -e .2
Start the server via the entry point:
dispatch-mcpOr run the module directly:
python -m dispatch_mcp.serverConfig
OMNIROUTE_URLis required.LOG_LEVELis optional.
See dispatch-mcp/README.md for the full tool list and runtime constraints.
CI Workflows
The repo-level GitHub Actions directory is .github/workflows/.
Relevant workflows and config:
trufflehog.yml- secrets scanning.semgrep- Semgrep SAST is wired into the repo security checks in the workflow set.security-guard.yml- pre-commit guard checks..github/dependabot.yml- automated dependency update policy.
Related workflow files currently present in the repo include ci.yml, rust-security.yml, cargo-audit.yml, cargo-machete.yml, sast-quick.yml (Semgrep), and quality-gate.yml.
Cargo Workspace
The root Rust workspace is scaffolded but not yet populated with first-class source crates.
Current shape:
- Root
Cargo.tomldeclares a workspace. crates/contains scaffolded crate directories.- There is no populated Rust source tree yet.
To add the first real crate:
- Create a new crate directory under
crates/, for examplecrates/agileplus-domain/. - Add a
Cargo.tomlwith a[package]section and workspace-qualified metadata. - Add
src/lib.rsorsrc/main.rs. - Make sure the crate name matches the workspace include pattern in the root
Cargo.toml. - Run
cargo testonce the crate has source.
If you are introducing the first shared crate, keep the scope small and avoid pulling in unrelated workspace members until the new crate is stable.
Testing
Python: run
pytestunderdispatch-mcp/.powershellcd dispatch-mcp python -m pytest1
2Rust: use
cargo testwhen the workspace has populated Rust source.powershellcargo test1
For style and quality checks, the repo guidance still applies:
cargo fmt --allcargo clippy --allruff check python/
Branch Discipline
Follow the branch rules from CLAUDE.md:
- Use feature branches with
feat/,fix/,chore/,ci/, ordocs/prefixes. - Keep work in a dedicated worktree, following the
<repo>-wtrees/<subject>/convention. - Do not commit directly to
main. - Keep PRs small and focused to the owning component.
For AgilePlus specifically, the tracked workspace is agileplus/ and the canonical repo is protected for PR-based merges only.