agent-tools-interface 0.7.11

Agent Tools Interface — secure CLI for AI agent tool execution
Documentation
use assert_cmd::Command;
use predicates::str::contains;
use std::fs;

#[test]
fn skillati_build_index_writes_manifest_file() {
    let dir = tempfile::tempdir().unwrap();
    let skill_dir = dir.path().join("demo-skill");
    fs::create_dir_all(&skill_dir).unwrap();
    fs::write(
        skill_dir.join("SKILL.md"),
        "# Demo Skill

Details",
    )
    .unwrap();
    fs::write(
        skill_dir.join("skill.toml"),
        r#"[skill]
name="demo-skill"
description="Demo"
"#,
    )
    .unwrap();

    let output = dir.path().join("catalog.json");

    Command::new(env!("CARGO_BIN_EXE_ati"))
        .args([
            "skill",
            "fetch",
            "build-index",
            skill_dir.to_str().unwrap(),
            "--output-file",
            output.to_str().unwrap(),
        ])
        .assert()
        .success()
        .stdout(contains("\"skills\": 1"));

    let manifest = fs::read_to_string(&output).unwrap();
    assert!(manifest.contains("\"name\": \"demo-skill\""));
}

#[test]
fn skillati_build_index_prints_json_when_no_output_file() {
    let dir = tempfile::tempdir().unwrap();
    let skill_dir = dir.path().join("demo-skill-2");
    fs::create_dir_all(&skill_dir).unwrap();
    fs::write(
        skill_dir.join("SKILL.md"),
        "# Demo Skill 2

Details",
    )
    .unwrap();
    fs::write(
        skill_dir.join("skill.toml"),
        r#"[skill]
name="demo-skill-2"
description="Demo 2"
"#,
    )
    .unwrap();

    Command::new(env!("CARGO_BIN_EXE_ati"))
        .args(["skill", "fetch", "build-index", skill_dir.to_str().unwrap()])
        .assert()
        .success()
        .stdout(contains("\"name\": \"demo-skill-2\""));
}