Consolidated Rust workspace for Phenotype-org developer tooling. It replaces duplicated shell and Python scripts scattered across repos with a focused set of clap-based CLIs aligned to the scripting language hierarchy (Rust default; no new Bash).
phenotype-tooling centralizes build verification, code-quality checks,
documentation validation, release support, and software-bill-of-materials
generation into a single Rust workspace. Each crate is independently usable and
can be adopted by other Phenotype repos without copying implementation logic.
| Crate | Purpose | Replaces |
|---|---|---|
docs-health |
Markdown vale/markdownlint + broken-link scanner | phenodocs/.airlock/lint.sh, phenodocs/scripts/check_docs_links.py |
fr-trace |
FR-NNN -> test traceability scanner | repos/scripts/traceability-check.py (+3 duplicates) |
quality-gate |
Aggregates cargo fmt/clippy/test pass-fail |
30+ duplicated scripts/quality-gate.sh files |
legacy-scan |
Detects shell/Python anti-patterns per scripting policy | docs/governance/scripting_policy.md rubric |
| Crate | Purpose | Source |
|---|---|---|
agent-orchestrator |
Multi-lane agent task dispatcher and state tracker | FocalPoint tooling/agent-orchestrator/ |
audit-privacy |
iOS privacy manifest auditing (scope: Apple plist analysis) | FocalPoint apps/ios/FocalPoint/scripts/audit-privacy/ |
bench-guard |
Benchmark regression detection and thresholds | FocalPoint tooling/bench-guard/ |
commit-msg-check |
Enforces conventional commits + linkage rules | FocalPoint tooling/commit-msg-check/ |
doc-link-check |
Validates markdown links without crawling | FocalPoint tooling/doc-link-check/ |
fr-coverage |
Functional Requirement test coverage analyzer | FocalPoint tooling/fr-coverage/ |
release-cut |
Automated semver release and changelog generation | FocalPoint tooling/release-cut/ |
sbom-gen |
SBOM (CycloneDX/SPDX) generation from Cargo.lock | FocalPoint tooling/sbom-gen/ |
fuzz-setup |
Fuzzing corpus reference and setup templates | FocalPoint fuzz/ |
- Scaffold (this repo): clap skeletons emitting stub JSON reports.
- Port logic: port each source script into its crate, preserving exit codes and expected output; retain the shell script as a thin wrapper calling the Rust binary during the transition.
- Roll out: replace
scripts/quality-gate.shin each consumer repo with a one-line shim that invokes the releasedquality-gatebinary; then delete the shim once CI is green. - Decommission: remove the Python
traceability-check.pyandcheck_docs_links.pyvariants.
Target consumer repos (partial list):
AgilePlus, HexaKit, PhenoKits, heliosApp, Civis, PolicyStack,
thegent, portage, phenodocs, Pyron, phenoDesign.
Each binary can be installed independently via cargo install:
# Install a single tool
cargo install --path crates/quality-gate
# Or install all tools
for crate in agent-orchestrator bench-guard commit-msg-check doc-link-check fr-coverage release-cut sbom-gen fuzz-setup; do
cargo install --path crates/$crate
done
# Verify installed
cargo install --listUse the provided scripts/adopt-tooling.sh to symlink phenotype-tooling binaries into any Phenotype repo:
# In your target repo
cd /path/to/my-repo
bash /path/to/phenotype-tooling/scripts/adopt-tooling.sh
# Now you can use tools from tooling/ symlinks
./tooling/quality-gate
./tooling/fr-coverage --helpcargo check --workspace
cargo test --workspace
cargo clippy --workspace -- -D warnings
cargo fmt --check
cargo build --release --workspaceCLAUDE.mddocuments repo-specific conventions and workspace rules.AGENTS.mdgives AI agents the local routing and quality-gate pointers.worklogs/captures repo-local research, architecture, and governance notes.CHANGELOG.mdtracks release-visible changes.
MIT. See LICENSE.