How Skills Work
When a phase runs, Skaro builds a system prompt for the LLM. Skills are injected between the constitution and architectural invariants:implement + coder won’t appear in the tests phase run by the reviewer role.
Skill Sources
Skills come from three places, in priority order (last wins on name conflicts):| Source | Location | Description |
|---|---|---|
| Bundled | templates/skills/ (inside the package) | 28 skills shipped with Skaro, covering all 12 constitution presets |
| Global | ~/.skaro/skills/ | Your personal skills, shared across all projects |
| Project | .skaro/skills/ | Skills specific to one project |
Activation
A skill must be explicitly activated to take effect. There are two ways:Preset Activation
When you select a constitution preset (e.g., React, FastAPI), Skaro automatically activates the skills linked to that preset. The mapping is defined intemplates/skills/_registry.yaml.
For example, selecting the React preset activates:
typescript-strict— strict TypeScript practicesreact-components— component design patternsreact-testing— testing with Vitest + Testing Libraryreact-state— state management patterns
Manual Activation
From the dashboard (Settings → Skills) or CLI, you can enable any skill from the full catalog — regardless of which preset is active. This is useful when:- Your project doesn’t use a preset (you wrote the constitution manually)
- You need skills from multiple presets (e.g., React frontend + FastAPI backend)
- You created custom skills
Browsing the Catalog
Dashboard
Go to Settings → Skills to see all available skills. Each entry shows:- Status icon — ✓ active, ✗ disabled, ○ available
- Name — skill identifier
- Source badge —
preset,global,project, or framework badges (react,fastapi, …) - Phases — which phases the skill applies to
CLI
Bundled Skills Reference
Skaro ships 28 skills organized by stack:Shared Skills
These are reused across multiple presets:| Skill | Used By | Phases |
|---|---|---|
typescript-strict | react, vue, sveltekit, nextjs, angular, express, nestjs, react-native | implement, plan, fix |
python-standards | fastapi, django | implement, plan, fix |
pytest-patterns | fastapi, django | implement, tests, plan |
nodejs-backend | express, nestjs | implement, plan, fix |
react-components | react, nextjs | implement, plan |
react-testing | react, nextjs | implement, tests, plan |
Per-Preset Skills
| Preset | Skills |
|---|---|
| react | typescript-strict, react-components, react-testing, react-state |
| vue | typescript-strict, vue-composition, vue-testing |
| sveltekit | typescript-strict, svelte-patterns, svelte-testing |
| nextjs | typescript-strict, react-components, react-testing, nextjs-app-router |
| angular | typescript-strict, angular-architecture, angular-testing |
| fastapi | python-standards, fastapi-endpoints, fastapi-sqlalchemy, pytest-patterns |
| django | python-standards, django-patterns, django-testing, pytest-patterns |
| express | typescript-strict, nodejs-backend, express-patterns, express-testing |
| nestjs | typescript-strict, nodejs-backend, nestjs-architecture, nestjs-testing |
| react-native | typescript-strict, react-native-patterns, react-native-testing |
| flutter | flutter-architecture, flutter-testing |
| kotlin-mp | kotlin-mp-architecture, kotlin-mp-testing |
Configuration in config.yaml
The skills state is stored in.skaro/config.yaml:
preset— set automatically when you select a constitution presetactive— skills you enabled manually (bundled, global, or project)disabled— preset skills you turned off