The Problem

Agents repeatedly rebuild identical capabilities from scratch rather than reusing existing skills. SkillNet addresses this by providing infrastructure to treat agent skills as searchable, installable, evaluable software assets—enabling discovery, creation, evaluation, and composition of reusable capabilities across agent systems.

What This Does

SkillNet is organized as four semi-independent projects within one repository. The core skillnet-ai package (82 files, 15 code files) provides the SDK and CLI for skill search, creation, evaluation, and orchestration. The experiments directory (281 files) contains run scripts for specific domains like AlfWorld, ScienceWorld, and WebShop, along with domain-specific skill templates and data. The examples folder (7 files) offers demo scripts and Jupyter notebooks for common workflows, while skills (6 files) holds structured skill definitions. Central capabilities span search and GitHub installation (credential-free), skill generation from repositories/traces/prompts, quality evaluation for safety and executability, scenario graph analysis, and orchestration for scene-specific skill selection. The README documents integration with OpenAI-compatible endpoints for creation and evaluation, and Claude Agent SDK for orchestration.

How It Is Wired

Execution begins at CLI entry points in skillnet-ai/src/skillnet_ai/cli.py: main reaches 183 functions; _create_from_github, _create_from_office, _create_from_prompt, and _create_from_trajectory each reach 116 functions. The analyze function at line 589 reaches 116 functions from 6 call sites. The internal call graph contains 609 resolved edges between self-contained functions; scan_text is called from 26 places, rule_ids from 17, SkillNetClient from 9, and evaluate from 14. Traced paths show main -> evaluate initiates a model call via self.client.chat.completions.create; _create_from_office flows through _get_llm_response for model inference; analyze reaches analyze_local_skills which writes to the filesystem via output_path.mkdir. Key files bear wide blast radius: skillnet-ai/src/skillnet_ai/analyzer.py defines 80 functions and calls a model, performs cryptographic operations, reads/writes files, and makes outbound network calls; skillnet-ai/src/skillnet_ai/evaluator.py has 55 functions and runs external commands; skillnet-ai/src/skillnet_ai/orchestrator.py coordinates 63 functions across 12 classes. cli.py serves as the primary entry point with 13 functions called from 8 other files.

How To Use It

Setup: Install the SDK via pip install skillnet-ai, which resolves from skillnet-ai/pyproject.toml.

Configuration: No API key is required for search or public GitHub downloads. For creation, evaluation, and orchestration, set API_KEY, BASE_URL, and SKILLNET_MODEL environment variables for OpenAI-compatible endpoints.

Running it: Search and install a skill via Python API:

from skillnet_ai import SkillNetClient

client = SkillNetClient()
results = client.search("pdf understanding", limit=5)
print(results[0].skill_name)
client.download(results[0].skill_url, target_dir="./my_skills")

Or via CLI:

skillnet search "pdf understanding" --limit 5
skillnet download <skill_url> -d ./my_skills

Real-World Use

In a multi-agent system, a research agent can discover a "pdf understanding" skill via client.search(), download it to the local workspace, and compose it into a workflow without reimplementing document parsing. The evaluator scores the skill's executability and safety before handoff, and the orchestrator selects scene-specific skills for the downstream execution agent. The scenario graph analyzer infers handoff relationships between local skills, enabling automatic pipeline composition.

Code Health & Issues

Static analysis identified 28 findings across 5 distinct categories: 6 high and 22 medium severity. Key issues include duplicated code blocks (206 repeated 6-line segments across 13 files such as experiments/alfworld_run.py, experiments/scienceworld_run.py, experiments/webshop_run.py"); deep nesting up to depth 10 in skillnet-ai/src/skillnet_ai/analyzer.py, skillnet-ai/src/skillnet_ai/evaluator.py; oversized files at 1964 lines in analyzer.py, creator.py, evaluator.py; broad exception handling in alfworld_run.py, scienceworld_run.py, webshop_run.py; and high branching density (33 points over 107 lines) in skills/skillnet/scripts/skillnet_validate.py. SDLC gaps: no CI/CD pipeline, no lockfile beside skillnet-ai/pyproject.toml, no Dependabot/Renovate configuration, and outbound requests in skillnet-ai/src/skillnet_ai/analyzer.py` lack a timeout, risking worker hangs with a small pool.

The Bottom Line

SkillNet delivers practical infrastructure for skill reuse with a functional CLI and Python SDK, clear entry points, and domain-specific experiment scripts. The codebase shows signs of rapid prototyping— duplicated logic, deep nesting, and outsized files—but the measured issues are concrete and addressable. Teams looking to integrate reusable agent skills will find immediate value in the search/install workflow; organizations needing production reliability should prioritize lockfile management, CI configuration, and timeout hardening before scaling.