Metadata-Version: 2.4
Name: universal-skill-tree-naneg
Version: 0.1.0
Summary: Plug & Play skill framework — connect any LLM to your PC in 3 lines
Project-URL: Homepage, https://github.com/anonyme-afk/universal-skill-tree
Project-URL: Repository, https://github.com/anonyme-afk/universal-skill-tree
License: MIT
Keywords: agent,ai,automation,llm,skills,tools
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27
Requires-Dist: pydantic>=2.0
Provides-Extra: adapters
Requires-Dist: google-genai>=0.5; extra == 'adapters'
Requires-Dist: litellm>=1.40; extra == 'adapters'
Requires-Dist: ollama>=0.3; extra == 'adapters'
Provides-Extra: agent-skills
Requires-Dist: requests>=2.31.0; extra == 'agent-skills'
Provides-Extra: ai
Requires-Dist: crewai>=0.40; extra == 'ai'
Requires-Dist: litellm>=1.40; extra == 'ai'
Provides-Extra: aitools
Requires-Dist: requests>=2.31.0; extra == 'aitools'
Provides-Extra: all
Requires-Dist: universal-skill-tree[agent-skills]; extra == 'all'
Requires-Dist: universal-skill-tree[ai]; extra == 'all'
Requires-Dist: universal-skill-tree[aitools]; extra == 'all'
Requires-Dist: universal-skill-tree[apps]; extra == 'all'
Requires-Dist: universal-skill-tree[browser]; extra == 'all'
Requires-Dist: universal-skill-tree[crypto]; extra == 'all'
Requires-Dist: universal-skill-tree[cyber]; extra == 'all'
Requires-Dist: universal-skill-tree[files]; extra == 'all'
Requires-Dist: universal-skill-tree[mcp]; extra == 'all'
Requires-Dist: universal-skill-tree[media]; extra == 'all'
Requires-Dist: universal-skill-tree[osint]; extra == 'all'
Requires-Dist: universal-skill-tree[selfhosted]; extra == 'all'
Requires-Dist: universal-skill-tree[system]; extra == 'all'
Requires-Dist: universal-skill-tree[vision]; extra == 'all'
Requires-Dist: universal-skill-tree[web]; extra == 'all'
Provides-Extra: apps
Requires-Dist: psutil>=6.0; extra == 'apps'
Provides-Extra: browser
Requires-Dist: playwright>=1.45; extra == 'browser'
Provides-Extra: crypto
Requires-Dist: ccxt>=4.4.15; extra == 'crypto'
Provides-Extra: cyber
Requires-Dist: scapy>=2.5.0; extra == 'cyber'
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Provides-Extra: files
Requires-Dist: openpyxl>=3.1; extra == 'files'
Requires-Dist: pdfplumber>=0.11; extra == 'files'
Requires-Dist: python-docx>=1.1; extra == 'files'
Provides-Extra: mcp
Requires-Dist: mcp>=1.0.0; extra == 'mcp'
Requires-Dist: requests>=2.31.0; extra == 'mcp'
Provides-Extra: media
Requires-Dist: pycaw>=20181226; (sys_platform == 'win32') and extra == 'media'
Provides-Extra: osint
Requires-Dist: geocoder>=1.38; extra == 'osint'
Requires-Dist: sherlock-project>=0.14.3; extra == 'osint'
Provides-Extra: selfhosted
Requires-Dist: requests>=2.31.0; extra == 'selfhosted'
Provides-Extra: system
Requires-Dist: keyboard>=0.13; extra == 'system'
Requires-Dist: psutil>=6.0; extra == 'system'
Requires-Dist: pyautogui>=0.9; extra == 'system'
Requires-Dist: pyperclip>=1.9; extra == 'system'
Provides-Extra: vision
Requires-Dist: mss>=9.0; extra == 'vision'
Requires-Dist: pillow>=10.0; extra == 'vision'
Provides-Extra: web
Requires-Dist: beautifulsoup4>=4.12; extra == 'web'
Requires-Dist: ddgs>=1.0; extra == 'web'
Requires-Dist: httpx>=0.27; extra == 'web'
Description-Content-Type: text/markdown

# 🌳 Universal Skill Tree (UST)

**Plug & Play skill framework — connect any LLM to your PC in 3 lines.**

```python
from ust import enable_branch, USTAdapter

enable_branch("system")
agent = USTAdapter(api_key="sk-or-...", model="openai/gpt-4o-mini")
reply = agent.chat_sync("Open Chrome and go to github.com")
```

---

## The Problem UST Solves

Building a "Jarvis"-style AI agent today means:
- 80+ packages in `requirements.txt`
- Version conflicts, broken installs, dependency hell
- Hours of setup before writing a single line of agent code

UST separates the **Brain** (your LLM) from the **Hands** (the tools).  
Install only what you need. Connect in seconds. Works with any LLM.

---

## Installation

```bash
# Core only (ultra-light: just httpx + pydantic)
pip install universal-skill-tree

# With PC control skills
pip install 'universal-skill-tree[system]'

# With web search
pip install 'universal-skill-tree[system,web]'

# Everything
pip install 'universal-skill-tree[all]'
```

Or with `uv` (faster):
```bash
uv add 'universal-skill-tree[system]'
```

---

## Quick Start

```python
from ust import enable_branch, USTAdapter

enable_branch("system")   # Load PC control skills

agent = USTAdapter(
    api_key="sk-or-...",          # OpenRouter / OpenAI / local
    model="openai/gpt-4o-mini",   # Any OpenAI-compatible model
)

# Sync
reply = agent.chat_sync("What's my CPU usage?")

# Async
import asyncio
reply = asyncio.run(agent.chat("Open Notepad and type Hello World"))
```

---

## Skill Branches

| Branch    | Skills                                              | Install             |
|-----------|-----------------------------------------------------|---------------------|
| `system`  | Shell commands, CPU/RAM info, mouse/keyboard, screenshots | `[system]` |
| `files`   | Read/write files, PDF, Excel, Word docs             | `[files]`           |
| `web`     | DuckDuckGo search, webpage fetch, scraping          | `[web]`             |
| `media`   | System volume, audio control                        | `[media]`           |
| `apps`    | App launcher, process manager                       | `[apps]`            |
| `vision`  | Screenshot + AI analysis                            | `[vision]`          |
| `osint`   | Sherlock, Osintgram, network scans (whois, dns, geoip) | `[osint]`           |
| `cyber`   | Sniffnet, Trippy, network packet sniffing           | `[cyber]`           |
| `crypto`  | Cryptocurrency prices via CCXT                      | `[crypto]`          |
| `selfhosted`| Awesome-selfhosted apps search and Docker control     | `[selfhosted]`      |
| `aitools` | Awesome-ai-tools search                             | `[aitools]`         |
| `agent_skills`| Awesome-agent-skills search                     | `[agent_skills]`    |
| `mcp`     | Awesome-mcp-servers search, Chrome DevTools MCP     | `[mcp]`             |
| `ai`      | CrewAI tasks, LiteLLM arbitrary LLM calls           | `[ai]`              |
| `browser` | Playwright browser automation                       | `[browser]`         |

---

## System Branch — Available Skills

| Skill                | What it does                                     |
|----------------------|--------------------------------------------------|
| `execute_command`    | Run any shell command (cmd/bash)                 |
| `get_system_info`    | CPU%, RAM, disk, battery, top processes          |
| `manage_processes`   | List / kill / start processes                    |
| `control_window`     | Minimize, maximize, close, focus windows         |
| `control_mouse`      | Move, click, scroll                              |
| `type_text`          | Type text, keyboard shortcuts                    |
| `manage_clipboard`   | Read / write clipboard                           |
| `take_screenshot`    | Screenshot full screen or a region               |
| `set_volume`         | Set volume 0–100, mute/unmute (Windows)          |
| `open_application`   | Open any app by name or path                     |

---

## Model Context Protocol (MCP) Integration — 100% Plug & Play

UST allows you to easily connect thousands of MCP servers with zero configuration using `npx`. You can generate configuration blocks or directly launch these directly from your agent.

### The "Meta" Tool: Search 4,800+ MCP Servers
```json
{ "command": "npx", "args": ["-y", "a2asearch-mcp"] }
```
*Allows the agent to search and find its own tools.*

### The "Mega-Pack" (62 tools in one)
```json
{ "command": "npx", "args": ["skills", "add", "blink-new/blink-plugin"] }
```
*Massive infrastructure pack including database, hosting, storage, and authentication tools.*

### Web Fundamentals
* **Web Fetch:** `{ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-fetch"] }`
* **Live Web Search (Brave):** `{ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-brave-search"] }`
* **Browser Automation (Puppeteer):** `{ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-puppeteer"] }`

### Local File & Code Management
* **Filesystem:** `{ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/your/path"] }`
* **GitHub:** `{ "command": "npx", "args": ["-y", "@github/mcp-server"] }`

### Advanced Reasoning & Logic
* **Sequential Thinking:** `{ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-sequential-thinking"] }`
  *(Forces the AI to create a "thinking space" to test hypotheses and self-correct)*

### Audio & Media
* **Whisper Transcription:** `{ "command": "npx", "args": ["-y", "mcp-whisper-server"] }`
* **Microphone (Direct Input):** `{ "command": "npx", "args": ["-y", "mcp-microphone"] }`
* **Audio Recorder (Stream):** `{ "command": "npx", "args": ["-y", "mcp-audio-recorder"] }`
* **FFmpeg (Media Processing):** `{ "command": "npx", "args": ["-y", "mcp-ffmpeg-server"] }`

### Infrastructure & Data Science
* **Docker Control:** `{ "command": "npx", "args": ["-y", "mcp-server-docker"] }`
* **SQLite Database:** `{ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-sqlite", "--db-path", "database.db"] }`

Simply paste any of these block configurations into your `mcpServers` setting (e.g. `claude_desktop_config.json`, Cursor, etc) or use the UST MCP skills to interact with them programmatically.

---

## Adapters — Supported LLM Providers

UST supports 4 native adapters out of the box so you can use absolutely any AI model:

1. **`USTAdapter`** (Default OpenAI format) — Works with OpenRouter, OpenAI, LM Studio, Ollama, etc.
2. **`GeminiAdapter`** — Google's modern Gemini SDK (`@google/genai` equivalent in Python).
3. **`LiteLLMAdapter`** — Over 100+ LLMs (Anthropic, Bedrock, vLLM, etc.) via `litellm`.
4. **`OllamaAdapter`** — Native local adapter for `ollama` python package.

### 1. Default OpenAI-compatible Adapter
```python
# OpenRouter / OpenAI / Local LM Studio
from ust import enable_branch, USTAdapter
enable_branch("system")

# OpenRouter (default)
agent = USTAdapter(api_key="sk-or-...")

# Local LM Studio
agent = USTAdapter(
    api_key="local",
    base_url="http://localhost:1234/v1",
    model="llama-3.2-3b-instruct"
)
```

### 2. Gemini Adapter
```python
from ust import enable_branch
from ust.core.gemini_adapter import GeminiAdapter
enable_branch("system")

agent = GeminiAdapter(model="gemini-2.5-flash", api_key="AIzaSy...")
reply = agent.chat_sync("What is my IP address?")
```

### 3. LiteLLM Adapter (Anthropic, Bedrock, etc)
```python
from ust import enable_branch
from ust.core.litellm_adapter import LiteLLMAdapter
enable_branch("system")

# Using Anthropic Claude 3.5 Sonnet
agent = LiteLLMAdapter(model="claude-3-5-sonnet-20240620", api_key="sk-ant-...")
```

### 4. Native Ollama Adapter
```python
from ust import enable_branch
from ust.core.ollama_adapter import OllamaAdapter
enable_branch("system")

# Requires tool-capable model
agent = OllamaAdapter(model="llama3.1")
reply = agent.chat_sync("Check my battery percentage")
```

---

## Advanced Usage

```python
from ust import enable_branch, enable_all, status, USTAdapter

# Load only what you need
enable_branch("system")
enable_branch("web")

# Inspect loaded skills
status()

# Multi-turn conversation
history = []
for user_msg in ["Open Chrome", "Go to github.com", "Take a screenshot"]:
    reply = await agent.chat(user_msg, history=history)
    history += [{"role":"user","content":user_msg},
                {"role":"assistant","content":reply}]

# Restrict tools to one branch
reply = await agent.chat("Search for Python news", branch="web")
```

---

## Project Structure

```
universal-skill-tree/
├── ust/
│   ├── __init__.py          ← enable_branch(), USTAdapter
│   ├── core/
│   │   ├── registry.py      ← Central skill registry
│   │   ├── executor.py      ← Tool call dispatcher
│   │   └── adapter.py       ← OpenAI-compatible LLM adapter
│   └── skills/
│       ├── system/          ← PC control (10 skills)
│       ├── files/           ← File management
│       ├── web/             ← Web search & scraping
│       ├── media/           ← Audio/video control
│       ├── apps/            ← App launcher
│       ├── vision/          ← Screenshot + vision
│       ├── osint/           ← Sherlock, Osintgram
│       ├── cyber/           ← Sniffnet, Trippy, Scapy
│       ├── crypto/          ← Crypto tools
│       ├── selfhosted/      ← Awesome-selfhosted search & Docker tools
│       ├── aitools/         ← Awesome-ai-tools search
│       ├── agent_skills/    ← Awesome-agent-skills search
│       ├── mcp/             ← MCP servers search & Chrome DevTools
│       ├── browser/         ← Playwright browser
│       └── ai/              ← CrewAI and LiteLLM wrappers
├── examples/
│   └── openrouter_agent.py  ← Demo in 3 lines
└── pyproject.toml
```

---

## License

MIT — free to use, modify, and distribute.
