Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/skills | List all skills with filtering and pagination |
GET | /api/skills/:id | Fetch a single skill by UUID or name |
POST | /api/skills/activate | Stimulus propagation: find best skills for a task |
POST | /api/skills/search | Full-text skill search |
GET | /api/skills/:id/related | Get related skills for a given skill |
Skills are stored in the
agent_skills Directus collection and served via the serviceClient (MCP_SERVICE_TOKEN). No user auth is required to read skills — the collection is read-accessible to the service token.GET /api/skills
Returns a paginated, filterable list of all agent skills.Query parameters
Filter by skill category. See the categories table below for valid values.
Comma-separated list of tags to filter by. Returns skills that have any of the listed tags.
Example:
tags=authentication,jwt,expressNumber of results to return. Default:
50. Maximum: 500.Pagination offset. Default:
0.Sort field. Default:
-date_updated (most recently updated first).Response
GET /api/skills/:id
Returns a single skill by UUID or by name slug.Query parameters
When
true, the response includes a related_skills array with abbreviated records for each related skill. Default: false.Response
POST /api/skills/activate
Stimulus propagation: given a task description, finds and ranks the most relevant skills using a weighted scoring algorithm across tags, concepts, and description text. This is the primary method used by the Genie agent and Goose CLI at session start — it surfaces the most applicable skills for JIT hydration into the agent’s context.Body
A natural-language description of the task to activate skills for. The endpoint scores all 191 skills against this description and returns the top matches.
Maximum number of skills to return. Default:
5.Scoring algorithm
Each skill receives a score based on three factors:| Signal | Weight | Method |
|---|---|---|
| Tag match | +0.3 per matching tag | Checks if any skill tag appears in the task string |
| Concept match | +0.4 per matching concept | Checks if any skill concept appears in the task string |
| Description overlap | +0.5 per word overlap | Tokenizes both strings, scores shared terms |
limit skills are returned.
Response
true when activation ran successfully.Array of skill objects, sorted by relevance score descending.
Skill categories
| Category key | Domain |
|---|---|
01-core-development | Backend, frontend, React, JavaScript, Python |
02-language-specialist | TypeScript, Node.js deep-dives |
03-infrastructure | DevOps, Docker, PM2, databases, deployment |
04-quality-security | Security auditing, code review, QA, testing |
05-data-ai | LLM architecture, prompt engineering, NLP, ML |
06-developer-experience | MCP development, documentation, Git, build tooling |
07-specialized-domains | Per-task specialist roles |
08-business-product | Content marketing, SEO, legal |
09-meta-orchestration | Multi-agent coordination, error rollup |
10-research-analysis | Research, trend analysis, market intelligence |
11-genie-user-skills | GenieHelper platform execution skills |
Skill object fields
Directus UUID for the skill record.
Slug identifier. Used for lookup by name (e.g.,
backend-developer).One of the 11 category keys above.
Short description of the skill’s domain and expertise.
The full skill prompt content injected into the agent’s context window during JIT hydration.
Array of tag strings used for filtering and scoring.
Higher-level concept terms used by the stimulus propagation scorer.
Baseline activation score (0–1). Used as a tie-breaker in stimulus propagation.