oxios_kernel/skill/skills_sh/mod.rs
1//! Skills.sh marketplace integration.
2//!
3//! Provides a client for searching and fetching skills from the [skills.sh]
4//! registry, plus an installer that writes skill files directly (no zip
5//! extraction needed — skills.sh provides file contents via JSON API).
6//!
7//! # Comparison with ClawHub
8//!
9//! | Aspect | ClawHub | Skills.sh |
10//! |--------------|--------------------------------|----------------------------------|
11//! | Distribution | Zip archive download | JSON API with file contents |
12//! | Discovery | ClawHub search API | Skills.sh search + leaderboard |
13//! | Source | `clawhub.ai` | GitHub repos via skills.sh |
14//! | Auth | `CLAWHUB_TOKEN` env var | `SKILLS_SH_TOKEN` env var |
15//!
16//! # Directory Layout
17//!
18//! ```text
19//! workspace/
20//! skills/
21//! frontend-design/
22//! SKILL.md
23//! .skills_sh/
24//! origin.json ← per-skill origin metadata
25//! ```
26//!
27//! # Example
28//!
29//! ```ignore
30//! use oxios_kernel::skill::skills_sh::{SkillsShInstaller, SkillsShInstallResult};
31//! use std::path::PathBuf;
32//!
33//! # async fn example() -> anyhow::Result<()> {
34//! let installer = SkillsShInstaller::new(
35//! PathBuf::from("/home/user/.oxios/skills"),
36//! None, // default base URL
37//! None, // no API key (reads SKILLS_SH_TOKEN env var)
38//! );
39//!
40//! let result = installer
41//! .install("vercel-labs/agent-skills/frontend-design")
42//! .await?;
43//! println!("Installed {} files to {}", result.file_count, result.target_dir.display());
44//! # Ok(())
45//! # }
46//! ```
47
48pub mod client;
49pub mod installer;
50pub mod types;
51
52pub use client::SkillsShClient;
53pub use installer::{SkillsShInstallResult, SkillsShInstaller, SkillsShOrigin};
54pub use types::{
55 SkillsShAuditEntry, SkillsShAuditResponse, SkillsShCuratedOwner, SkillsShCuratedResponse,
56 SkillsShFile, SkillsShListResponse, SkillsShPagination, SkillsShSearchResponse, SkillsShSkill,
57 SkillsShSkillDetail,
58};