slickit 0.1.0

Semantic, LLM-Interpretable Component Kit — typed component system
Documentation
  • Coverage
  • 69.23%
    9 out of 13 items documented1 out of 1 items with examples
  • Size
  • Source code size: 47.43 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 2.58 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 25s Average build duration of successful builds.
  • all releases: 28s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • mox-labs/slick
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • mox-nexus

slickit

Semantic, LLM-Interpretable Component Kit. Foundation types for composable components.

What

Four types that let components describe themselves and be discovered, composed, and instantiated across languages:

  • Kind — Agent, Capability, Skill, Flow
  • Manifest — component descriptor (identity, kind, invoke, contracts)
  • TypedConfig — config envelope (type_url + opaque JSON)
  • TypedRegistry — type_url → factory → instance

One Rust core, two crusts: Python (PyO3) and TypeScript (wasm-bindgen).

Install

# Rust
cargo add slickit --features manifest

# Python
pip install slickit

# TypeScript
bun add slickit

Usage

Rust

use slick::{Kind, Manifest, TypedConfig, TypedRegistryBuilder};

// Describe a component
let manifest = Manifest {
    kind: Kind::Capability,
    type_url: "mox.tools.v1.Recon".into(),
    description: "Reconnaissance and information gathering".into(),
    invoke: Some("uvx mox/tools/recon".into()),
    consumes: vec!["mox.v1.Target".into()],
    produces: Some("mox.v1.ReconReport".into()),
};

// Register and instantiate
let registry = TypedRegistryBuilder::<String, String>::new()
    .register("example.v1", |value| {
        serde_json::from_value::<String>(value.clone())
            .map_err(|e| e.to_string())
    })
    .build();

let instance = registry.create("example.v1", &serde_json::json!("hello")).unwrap();

Python

from slickit import Kind, Manifest, TypedConfig

manifest = Manifest(
    kind=Kind.Capability,
    type_url="mox.tools.v1.Recon",
    description="Reconnaissance and information gathering",
    invoke="uvx mox/tools/recon",
)

# Serialize / deserialize
json_str = manifest.to_json()
manifest2 = Manifest.from_json(json_str)

TypeScript

import { Kind, Manifest } from "slickit";

const manifest = Manifest.fromObject({
    kind: "capability",
    type_url: "mox.tools.v1.Recon",
    description: "Reconnaissance and information gathering",
    invoke: "uvx mox/tools/recon",
    consumes: ["mox.v1.Target"],
    produces: "mox.v1.ReconReport",
});

console.log(manifest.typeUrl); // "mox.tools.v1.Recon"

The Four Kinds

Kind Contract Example
Agent Autonomous reasoning, session-based Code review agent
Capability Stateless function, single invocation Access control processor
Skill Knowledge/context, no execution Design tokens
Flow Orchestrated DAG of components CI pipeline

Dependencies

serde + serde_json. Nothing else.

License

Apache-2.0 — see LICENSE.