Franken Agent Detection banner
Dicklesworthstone Dicklesworthstone

Franken Agent Detection

Development community

Description

Deterministic, local filesystem-based detection of installed coding-agent connectors for Rust tooling.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

franken-agent-detection

franken-agent-detection - local deterministic coding-agent installation detection

[![crates.io](https://img.shields.io/crates/v/franken-agent-detection.svg)](https://crates.io/crates/franken-agent-detection) [![docs.rs](https://img.shields.io/docsrs/franken-agent-detection)](https://docs.rs/franken-agent-detection) [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)

A small Rust crate for deterministic, local detection of installed coding-agent tools.

cargo add franken-agent-detection

What this crate does

Many tools need to answer a simple question: which coding-agent connectors are available on this machine? This crate gives you one consistent report shape, one probe flow, and test-friendly root overrides.

Capability franken-agent-detection
Stable JSON-serializable report Yes
Explicit connector scoping Yes (only_connectors)
Deterministic fixture mode Yes (root_overrides)
Async runtime required No
Tokio dependency No

Example

use franken_agent_detection::{
    detect_installed_agents, AgentDetectOptions, AgentDetectRootOverride,
};
use std::path::PathBuf;

fn main() -> Result<(), Box> {
    let report = detect_installed_agents(&AgentDetectOptions {
        only_connectors: Some(vec!["codex".into(), "gemini".into()]),
        include_undetected: true,
        root_overrides: vec![
            AgentDetectRootOverride {
                slug: "codex".into(),
                root: PathBuf::from("/tmp/mock-codex"),
            },
            AgentDetectRootOverride {
                slug: "gemini".into(),
                root: PathBuf::from("/tmp/mock-gemini"),
            },
        ],
    })?;

    println!(
        "Detected {} of {}",
        report.summary.detected_count, report.summary.total_count
    );