Skills
Pre-built skill definitions that agents can use when working with Hudson.
hudson-app-creator
When to use: When asked to create a new app for the Hudson platform.
Steps:
- Read
packages/frame-ui/src/types/app.tsto understand the HudsonApp interface - Read
app/apps/shaper/index.tsas the reference implementation - Follow the task template in
docs/prompts/create-app.md - Create all required files (Provider, Content, hooks, index.ts)
- Register in workspace and test with
bun dev
Key rules:
- Every app needs at minimum: id, name, mode, Provider, slots.Content, hooks.useCommands, hooks.useStatus
- Provider must use React context pattern
- Hooks are called inside Provider scope by the shell
- Never use purple, never use library UI components
hudson-intent-author
When to use: When asked to add LLM/voice intents to an existing app.
Steps:
- Read the app's
hooks.tsto find all command IDs - Follow
docs/prompts/add-intents.mdtemplate - Create
intents.tswith AppIntent[] matching each command - Add
intentsfield to the HudsonApp definition
Key rules:
- Every intent
commandIdmust match aCommandOption.idfromuseCommands() - Include diverse keywords for fuzzy matching
- Mark destructive actions as
dangerous: true
hudson-workspace-builder
When to use: When asked to create or modify a workspace.
Steps:
- Read
packages/frame-ui/src/types/workspace.tsfor the HudsonWorkspace interface - Read
app/workspaces/hudsonOS.tsas reference - Create workspace file in
app/workspaces/ - Register in
app/page.tsxworkspaces array
Key rules:
- Each workspace has a mode (canvas or panel)
- Apps specify canvasMode: 'native' or 'windowed'
- Windowed apps need defaultWindowBounds: { x, y, w, h }
hudson-frame-ui-contributor
When to use: When asked to add or modify frame-ui components.
Steps:
- Read
packages/frame-ui/src/index.tsfor current exports - Check
packages/frame-ui/src/lib/chrome.tsfor design tokens - Follow existing component patterns (stateless, callback-based)
- Export from
packages/frame-ui/src/index.ts
Key rules:
- Components are stateless — apps manage all state
- Use callback pattern (props in, events out)
- Dark theme only (hardcoded)
- Use Tailwind v4 for styling
- Use lucide-react for icons