FlutterSDK AI skill registry — distributes AI coding skills, MCP servers, and commands for Wind UI, Magic Framework, etc. across OpenCode, Claude Code, Cursor, Gemini CLI, and VS Code Copilot.
Hosted via GitHub Pages at fluttersdk.github.io/ai/
| Command | Description |
|---|---|
npm run build |
Compile MCP server (from mcps/fluttersdk-mcp/) |
npm run lint |
ESLint check (MCP server) |
npm test |
Run MCP server tests |
node -e "JSON.parse(require('fs').readFileSync('skills/index.json','utf8'))" |
Validate registry JSON |
bash scripts/install.sh --dry-run |
Preview multi-tool installation |
skills/— GitHub Pages root. Each skill =<name>/SKILL.md+<name>/references/*.mdskills/index.json— OpenCode discovery manifest. Source of truth for file listing.claude-plugin/— Plugin manifest (plugin.json) + marketplace catalog (marketplace.json)mcps/— MCP servers (TypeScript, stdio transport, Zod schemas)commands/— Reusable command templates per tool (opencode/,claude/,gemini/,cursor/).github/workflows/deploy-registry.yml— Auto-deploysskills/to Pages on push to main
SKILL.md uses YAML frontmatter with two required fields:
name: 1-64 chars, lowercase, alphanumeric + hyphensdescription: 1-1024 chars, must include trigger keywords for agent activation
Reference files go in references/ — pure Markdown, no frontmatter, loaded on-demand.
After ANY skill change, ALL of the following must stay in sync:
- Every file on disk under
skills/<name>/must be listed inindex.jsonfilesarray index.jsondescriptionmust match SKILL.md frontmatterdescription.claude-plugin/plugin.jsonversion must be bumped (patch for content updates).claude-plugin/marketplace.jsonversion must match — both top-level ANDplugins[0].version
Use /sync-skills command to automate this checklist.
Missing from
index.json= OpenCode users won't get the file. Missing version bump = Claude Code users won't get the update.
- Never put skills inside
.claude-plugin/— skills live atskills/root - Never use inline single-line arrays — multi-line with trailing commas
- Never create MCP tools without Zod input schemas
- Never hardcode paths in install script — use
$HOME/$XDG_CONFIG_HOME - Skill names: lowercase, hyphen-separated only (
wind-ui, notWindUI)
- Markdown: ATX headers, fenced code blocks with language ID, tables for structured data
- TypeScript (MCP): 4-space indent, 120-char width,
constoverlet, noany - JSON: 4-space indent, trailing newline, hyphen-separated keys for skills