@@ -11,7 +11,13 @@ A skill is a self-contained folder that provides an AI capability to [SharpAI Ae
1111```
1212skills/<category>/<skill-name>/
1313├── SKILL.md # Manifest + setup instructions
14- ├── requirements.txt # Python dependencies
14+ ├── config.yaml # Configuration schema for Aegis UI
15+ ├── deploy.sh # Zero-assumption installer
16+ ├── requirements.txt # Default Python dependencies
17+ ├── requirements_cuda.txt # NVIDIA GPU dependencies
18+ ├── requirements_rocm.txt # AMD GPU dependencies
19+ ├── requirements_mps.txt # Apple Silicon dependencies
20+ ├── requirements_cpu.txt # CPU-only dependencies
1521├── scripts/
1622│ └── main.py # Entry point
1723├── assets/
@@ -68,6 +74,70 @@ LLM agent can read and execute.
6874| ` url ` | URL input with validation | Server address |
6975| ` camera_select ` | Camera picker | Target cameras |
7076
77+ ## config.yaml — Configuration Schema
78+
79+ Defines user-configurable options shown in the Aegis Skills UI. Parsed by ` parseConfigYaml() ` .
80+
81+ ``` yaml
82+ params :
83+ - key : auto_start
84+ label : Auto Start
85+ type : boolean
86+ default : false
87+ description : " Start automatically on Aegis launch"
88+
89+ - key : model_size
90+ label : Model Size
91+ type : select
92+ default : nano
93+ description : " Choose model variant"
94+ options :
95+ - { value: nano, label: "Nano (fastest)" }
96+ - { value: small, label: "Small (balanced)" }
97+
98+ - key : confidence
99+ label : Confidence
100+ type : number
101+ default : 0.5
102+ description : " Min confidence (0.1–1.0)"
103+ ` ` `
104+
105+ ### Reserved Keys
106+
107+ | Key | Type | Behavior |
108+ |-----|------|----------|
109+ | ` auto_start` | boolean | Aegis auto-starts the skill on boot when `true` |
110+
111+ # # deploy.sh — Zero-Assumption Installer
112+
113+ Bootstraps the environment from scratch. Must handle :
114+
115+ 1. **Find Python** — check system → conda → pyenv
116+ 2. **Create venv** — isolated `.venv/` inside skill directory
117+ 3. **Detect GPU** — CUDA → ROCm → MPS → CPU fallback
118+ 4. **Install deps** — from matching `requirements_<backend>.txt`
119+ 5. **Verify** — import test
120+
121+ Emit JSONL progress for Aegis UI :
122+ ` ` ` bash
123+ echo '{"event": "progress", "stage": "gpu", "backend": "mps"}'
124+ echo '{"event": "complete", "backend": "mps", "message": "Installed!"}'
125+ ` ` `
126+
127+ # # Environment Variables
128+
129+ Aegis injects these into every skill process :
130+
131+ | Variable | Description |
132+ |----------|-------------|
133+ | `AEGIS_SKILL_ID` | Skill identifier |
134+ | `AEGIS_SKILL_PARAMS` | JSON string of user config values |
135+ | `AEGIS_GATEWAY_URL` | LLM gateway URL |
136+ | `AEGIS_VLM_URL` | VLM server URL |
137+ | `AEGIS_LLM_MODEL` | Active LLM model name |
138+ | `AEGIS_VLM_MODEL` | Active VLM model name |
139+ | `PYTHONUNBUFFERED` | Set to `1` for real-time output |
140+
71141# # JSON Lines Protocol
72142
73143Scripts communicate with Aegis via stdin/stdout. Each line is a JSON object.
@@ -108,6 +178,36 @@ Scripts communicate with Aegis via stdin/stdout. Each line is a JSON object.
108178echo '{"event": "frame", "camera_id": "test", "frame_path": "/tmp/test.jpg"}' | python scripts/main.py
109179` ` `
110180
181+ # # skills.json — Catalog Registration
182+
183+ Register skills in the repo root `skills.json` :
184+
185+ ` ` ` json
186+ {
187+ "skills": [
188+ {
189+ "id": "my-skill",
190+ "name": "My Skill",
191+ "description": "What it does",
192+ "category": "detection",
193+ "tags": ["tag1"],
194+ "path": "skills/detection/my-skill",
195+ "status": "testing",
196+ "platforms": ["darwin-arm64", "linux-x64"]
197+ }
198+ ]
199+ }
200+ ` ` `
201+
202+ # ## Status Values
203+
204+ | Status | Emoji | Meaning |
205+ |--------|-------|---------|
206+ | `ready` | ✅ | Production-quality, tested |
207+ | `testing` | 🧪 | Functional, needs validation |
208+ | `experimental` | ⚗️ | Proof of concept |
209+ | `planned` | 📐 | Not yet implemented |
210+
111211# # Reference
112212
113213See [`skills/detection/yolo-detection-2026/`](../skills/detection/yolo-detection-2026/) for a complete working example.
0 commit comments