Skip to content

Repository files navigation

Skillify

License: MIT Python 3.9+ Status: v0.1 (proposed)

Convert agents to skills. Decompose agent sprawl into reusable primitives.

Skillify is an open-source CLI that takes an agent manifest (Microsoft Copilot Studio, Microsoft Agent Framework, Microsoft Foundry, MCP, or generic YAML/JSON) and produces:

  • An agent-ness score — pure skill / skill bundle / true agent
  • A decomposition plan — every distinct capability + the personality shell (if any)
  • Native-format output — Claude Skills (SKILL.md), Copilot Studio Skills manifest, Foundry Toolbox entries, MCP tool descriptors
  • A migration plan in Markdown — the artifact a human reads to do the actual migration

It exists because the industry has converged (Anthropic Oct 2025, Microsoft Power Platform Dec 2025, Foundry Mar 2026) on skills + tools + a thin orchestrator as the right primitive — but no tool exists to classify and convert the thousands of agents enterprises already built.

Read the RFC →


Why Skillify?

A typical 2025 enterprise has 200-500 declarative agents. Most are skills pretending to be agents — single prompts with a handful of connector calls, paying Copilot-credit overhead for what should be a Claude Skill or an MCP tool. A few are actual agents — state machines, planners, persistent memory.

Skillify tells you which is which, and converts it accordingly.

If your agent is... Skillify produces...
A single prompt + 2-4 connector calls A SKILL.md you can invoke from any personal agent at need
A composite orchestration graph with state The same graph wrapped as a Skill Bundle, with each leaf node exposed as an MCP tool
A real state-machine planner A recommendation: keep as agent. Skillify extracts the leaf skills + tools anyway, so the orchestrator's dependencies are reusable elsewhere.

Prerequisites

  • Python 3.9+
  • (Optional) An OpenAI-compatible LLM endpoint for LLM-assisted decomposition. Supports Anthropic, OpenAI, Ollama, Foundry Local, Kimi-K2.6, anything that exposes the /v1/chat/completions shape.
  • No LLM? Skillify's deterministic fallback decomposer still works.

Install

git clone https://github.com/Novesai/skillify.git
cd skillify
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

(Will be on PyPI as pip install skillify once v0.2 ships.)


Quick start

1. Configure (optional — for LLM-assisted decomposition)

cp .env.example .env

Edit .env:

OPENAI_API_KEY=sk-...
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o

Using Ollama locally? Set:

OPENAI_API_KEY=ollama
OPENAI_BASE_URL=http://localhost:11434/v1
OPENAI_MODEL=qwen2.5:14b

Using Anthropic directly?

OPENAI_API_KEY=sk-ant-...
OPENAI_BASE_URL=https://api.anthropic.com/v1
OPENAI_MODEL=claude-sonnet-4-6

No LLM? Skip the file. Skillify falls back to a deterministic heuristic decomposer.

2. Try it on a sample

# Full migration pipeline
skillify migrate examples/copilot_triage_agent.yaml

# Just classify (no LLM, deterministic)
skillify assess examples/copilot_triage_agent.yaml

# Just parse → JSON view of the IR
skillify parse examples/copilot_triage_agent.yaml --output ir.json

# Just decompose
skillify decompose examples/copilot_triage_agent.yaml

Output lands in ./skillify-out/<agent-name>/:

skillify-out/copilot-triage-agent/
├── MIGRATION.md                 # human-readable migration plan
├── claude-skills/
│   ├── email-triage/
│   │   ├── SKILL.md
│   │   └── scripts/main.py
│   └── escalation-router/
│       ├── SKILL.md
│       └── scripts/main.py
├── copilot-skills-manifest.json
├── foundry-toolbox-entries.yaml
├── mcp-tools.json
└── ir.json                      # the intermediate representation

3. Read the migration plan

cat skillify-out/copilot-triage-agent/MIGRATION.md

You'll see the agent-ness score, the rationale, the proposed skills with their I/O, and a recommended target format for each.


Commands

Command Purpose LLM required?
skillify parse <path> Parse a manifest, emit the IR as JSON No
skillify assess <path> Run the agent-ness scorer, print verdict + signal breakdown No
skillify decompose <path> Decompose into skills + tools Falls back to heuristic if no LLM
skillify migrate <path> Full pipeline: parse → decompose → score → write everything Falls back to heuristic if no LLM
skillify explain <path> (v0.2) Interactive rationale viewer No

Flags (common)

Flag Purpose
--output-dir <dir> Where to write outputs (default ./skillify-out/)
--target <format> Restrict output formats (e.g., claude_skill, copilot_skill, mcp, migration_plan). Default: all.
--no-llm Force deterministic decomposer, even if OPENAI_API_KEY is set
--json Emit machine-readable JSON instead of pretty text
--verbose Print every step

How the heuristic works (read this before trusting the score)

Every signal in the agent-ness rubric is a simple bucket on the IR:

Signal Pure Skill Bundle True Agent
Distinct capabilities (decomposer output) 1 2-3 ≥4
Unique tool families 1-2 3-6 ≥7
Has explicit orchestration no soft yes
Has persistent memory no working only long-term or episodic
Instructions complexity (chars × tools) <2k 2k-10k >10k
Identity vs capability separation no soft yes

The score is deterministic. The same IR always produces the same score. We never score with an LLM; we only decompose with one. That keeps the rubric explainable and reproducible.

The rubric is intentionally transparent. Every assessment prints the rationale[] so you can see exactly which bucket each signal landed in. If you disagree with a bucket, that's a parser bug or a rubric bug — file an issue, please.

Full agent-ness spec →


Supported manifest formats

Format Parser Ship
Microsoft Copilot Studio (*.csdl.yaml, *.csdl.json, *.json) parsers/copilot_studio.py v0.1 ✅
Generic YAML / JSON (catch-all) parsers/generic.py v0.1 ✅
Microsoft Agent Framework (MAF) parsers/maf.py v0.2
Microsoft Foundry YAML parsers/foundry.py v0.2
MCP server descriptor parsers/mcp.py v0.2

Adding a new format is a single PR. See docs/adding-a-parser.md


Supported output formats

Format Module Notes
Claude Skills (SKILL.md + scripts/) formatters/claude_skill.py Per Anthropic Skills spec
Copilot Studio Skills manifest formatters/copilot_skill.py JSON, written for manual upload
Foundry Toolbox entries formatters/foundry_toolbox.py YAML entries
MCP tool descriptors formatters/mcp.py JSON
Migration Plan formatters/migration_plan.py Always emitted

Programmatic use

Skillify is a library, not just a CLI.

from skillify.parsers import parse_manifest
from skillify.decomposer import decompose
from skillify.scorer import score
from skillify.formatters import write_all

ir = parse_manifest("agent.yaml")
plan = decompose(ir)  # uses LLM if configured, else heuristic
verdict = score(ir, plan)
write_all(ir, plan, verdict, output_dir="./out")

Every public function takes and returns Pydantic models. The IR is the contract.


Contributing

We welcome parsers. The clearest contribution path:

  1. Open an issue describing the manifest format with a sample.
  2. Skim docs/adding-a-parser.md and copy skillify/parsers/generic.py as a template.
  3. Submit a PR with parser + ≥5 tests + a sample manifest in examples/.

Contributing guide → · All Novesai contribution rules →


Project status & roadmap

Version Status What ships
v0.1 In progress (this repo) Copilot Studio + generic YAML/JSON parsers; Claude Skills + Copilot Skills + Foundry Toolbox + MCP formatters; deterministic scorer; heuristic + LLM decomposers
v0.2 Planned MAF + Foundry + MCP parsers; explain command
v0.3 Planned diff command; CI integration

Full RFC → for the strategic argument, the rubric derivation, and the long-term positioning.


Sibling Novesai projects

Project What it does
ai-business-plan-generator Generate an 8-section consulting-grade business plan PDF, locally
skillify (this) Decompose agent manifests into reusable skills + tools
Project Cortex (in development) Shared agent context + Company Brain
Project Watchdog (in development) Zero-trust security for AI agents
Project Aegis (in development) AI compliance / governance
Project Prism (in development) AI FinOps / cost-quality benchmarking

All MIT. All built on the same principle: open-source core, managed-service tier.

noves.ai →


License

MIT — see LICENSE and DISCLAIMER.md.

About

Open-source agent-to-skill decomposition & migration utility. Part of the Novesai AI Incubation Lab.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages