| title | Skills — Source of Truth |
|---|---|
| description | Skills are the callable surface that any operator (FlowPilot, OpenClaw, Claude Desktop, custom MCP client) uses to act on FlowWink. |
| category | reference |
Skills are the callable surface that any operator (FlowPilot, OpenClaw, Claude Desktop, custom MCP client) uses to act on FlowWink.
Each module declares its skills in skillSeeds on its defineModule() manifest:
src/lib/modules/<module>-module.ts → skillSeeds: SkillSeed[]
When a module is enabled, the bootstrap seeds those rows into public.agent_skills with mcp_exposed=true (unless the module marks them operator-internal). The database table is the runtime registry — hot-reloadable, RLS-protected, and the single thing agent-execute and the MCP server read.
| Surface | How |
|---|---|
| In-app admin | /admin/developer → Skills tab — full catalog with descriptions, schemas, gating |
| MCP (external agents) | `GET /functions/v1/mcp-server/rest/tools[?groups=marketing |
| Per-module reference | Every page in ../modules/ lists that module's skills with handler + scope |
| Live count | select count(*) from agent_skills where enabled and mcp_exposed |
- Add a
SkillSeedto the module'sskillSeedsarray. - Pass
Agent Contract Integrity— every NOT NULL DB column the action writes must be in the JSON schema (bun run lint:skills). - Write
descriptionwith explicitUse when:andNOT for:markers (Law 2 — skills are self-describing). - Disable & re-enable the module, or run the "Sync Skills" action in
/admin/developer.
agent-reason provides a small set of hardcoded operator-internal tools (memory ops, objective planning, reflection, soul, skill-pack management, delegation). These are FlowPilot-only and are not stored in agent_skills — they are the operator's own brain primitives, not platform capabilities.
See also: Module API · MCP as Platform · Agent Contract Integrity