Webiny-js webiny-skill-creator
git clone https://github.com/webiny/webiny-js
T=$(mktemp -d) && git clone --depth=1 https://github.com/webiny/webiny-js "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/webiny-skill-creator" ~/.claude/skills/webiny-webiny-js-webiny-skill-creator && rm -rf "$T"
.claude/skills/webiny-skill-creator/SKILL.mdWebiny Skill Creator
This skill generates and maintains the set of skills served by the Webiny MCP server. It operates in two modes:
- Full regeneration -- Reads all source documentation and the codebase, then generates/updates the complete skill library.
- Single skill creation -- Creates or updates one skill for a specific Webiny feature.
Skill Output Format
Every skill lives in its own folder as
<skill-name>/SKILL.md with YAML frontmatter. The MCP server recursively scans for SKILL.md files and auto-generates the catalog from front-matter metadata -- no README index is needed.
webiny/my-skills/ ├── <skill-name>/ │ └── SKILL.md ├── <skill-name>/ │ └── SKILL.md └── ...
Skill File Structure
Each
<skill-name>/SKILL.md file follows this template:
--- name: webiny-<topic> description: > What this skill covers and when to use it. Be specific about trigger phrases and developer intents. Err on the side of being "pushy" -- describe scenarios broadly so the MCP server surfaces this skill when relevant. --- # Title ## TL;DR One paragraph actionable summary. ## Pattern / Core Concept The main code pattern with a generic template. ## Reference Tables Tables for methods, properties, types, imports. ## Full Examples 2-3 complete, working code examples showing real use cases. ## Quick Reference Import paths, interfaces, registration, deploy commands. ## Related Skills Links to other skills that complement this one.
Writing Guidelines
These guidelines ensure skills are effective when served by the MCP server to AI agents:
-
TL;DR first -- Every skill starts with a one-paragraph actionable summary. An agent should be able to read just this and know if the skill is relevant.
-
Generic pattern before examples -- Show the abstract pattern template first, then concrete examples. This helps agents generalize rather than copy-paste.
-
Complete, working code -- Every code block must be copy-paste ready. Include all imports, class definitions, and export statements. Never show partial snippets that require guessing.
-
Reference tables for APIs -- Use markdown tables for method signatures, field types, validators, injectable services, etc. Tables are dense and scannable.
-
Exact import paths -- Always show the full import path. Webiny uses feature-based imports (e.g.,
not"webiny/api/cms/model"
). Getting the import wrong breaks everything."@webiny/api-headless-cms" -
The universal DI pattern -- Every API extension uses
. Reinforce this in every skill that covers an API extension type.createImplementation({ implementation, dependencies }) -
Registration in webiny.config.tsx -- Always show how to register the extension. Include the JSX element and the
path convention.src -
Deploy command -- Always end with which deploy command to run (
,yarn webiny deploy api
, oradmin
).core -
Related skills -- Cross-link to complementary skills. Developers rarely need just one skill.
-
Description frontmatter -- The
field is the primary trigger mechanism. Include:description- What the skill does
- Specific developer intents that should trigger it
- Keywords and phrases developers might use
- Be slightly aggressive about claiming relevance
Source Documentation
When generating or updating skills, read from these sources in priority order:
1. Existing Skills (<root>/packages/mcp/src/skills/
)
<root>/packages/mcp/src/skills/Read the current skills first to understand what exists and what needs updating.
2. Learn Webiny Lessons (learn-webiny/content/lessons/
)
learn-webiny/content/lessons/The tutorial content organized by topic:
| Directory | Topics Covered |
|---|---|
| Webiny overview, framework, apps, multi-tenancy, infrastructure |
| Project structure, extensions, SDK overview, local dev, debugging, white-labeling |
| Content models, versioning, lifecycle events, reading/writing data, list customization |
| Setup, editor components, theming, CMS integration |
| Installation, CLI overview, deployment |
3. Legacy Skills (skills-bak/
)
skills-bak/The previous generation of skills. Good reference for structure and patterns but may have outdated imports or APIs.
4. Webiny Codebase (webiny/
)
webiny/The actual development instance:
| Path | What to Look At |
|---|---|
| Real extension registration examples |
| Working extension implementations |
| Core features reference with import paths and type definitions |
| Package source code for verifying APIs |
5. Webiny AI Context (webiny/ai-context/
)
webiny/ai-context/Contains
core-features-reference.md with verified import paths and type definitions for:
- Core features (TenantContext, IdentityContext, EventPublisher, etc.)
- Headless CMS features (content entries, models, repositories)
- Tenancy features (CRUD operations)
This is the most reliable source for import paths and interfaces.
Full Regeneration Workflow
When asked to regenerate all skills:
-
Inventory current skills -- Read
to see what exists.webiny/my-skills/ -
Read source documentation -- Use subagents to read in parallel:
- All MDX files in
(exclude archived)learn-webiny/content/lessons/ - All files in
skills-bak/ - Key files:
,webiny/webiny.config.tsxwebiny/ai-context/core-features-reference.md - Extension examples in
webiny/extensions/
- All MDX files in
-
Identify gaps -- Compare source content against existing skills. Look for:
- New features not yet covered by skills
- Outdated import paths or APIs
- Missing code examples
- New extension types or patterns
-
Generate/update skills -- Write each skill following the format above. For each skill:
- Read the corresponding source files
- Extract all code patterns, imports, and APIs
- Write complete, working examples
- Cross-reference import paths against
ai-context/core-features-reference.md - Add related skills links
-
Verify consistency -- Check that:
- All import paths are consistent across skills
- The DI pattern is shown correctly everywhere
- Registration examples match
conventionswebiny.config.tsx - Deploy commands are correct for each extension type
Single Skill Creation Workflow
When asked to create a skill for a specific feature:
-
Understand the feature -- Ask the developer:
- What Webiny feature does this cover?
- What should a developer be able to do after reading this skill?
- Are there existing extensions or code examples?
-
Research -- Read relevant source files:
- The feature's lesson in
learn-webiny/content/lessons/ - Any related files in
skills-bak/ - Actual implementation code in
orwebiny/extensions/webiny/packages/ - Import paths from
webiny/ai-context/core-features-reference.md
- The feature's lesson in
-
Draft the skill -- Create
following the structure above.<skill-name>/SKILL.md -
Review with developer -- Present the skill for feedback before finalizing.
Current Skill Library
The following skills should exist in
webiny/my-skills/:
| Skill Folder | Covers |
|---|---|
| Project layout, webiny.config.tsx, extension registration |
| ModelFactory, fields, validators, layout |
| GraphQLSchemaFactory, resolvers, DI |
| CMS entry hooks, security events |
| White-labeling, custom columns, forms, Lexical |
| Pulumi handlers, declarative infra components |
| CliCommandFactory, custom CLI commands |
| Universal DI pattern, injectable services |
| External app integration, Result pattern |
| Editor components, theming, CMS integration |
| Deploy, watch, environments, debugging |
When to Add New Skills
Add a new skill when:
- A new Webiny feature is released that doesn't fit existing skills
- An existing skill grows beyond ~500 lines and should be split
- A developer asks for help with something not covered
- The
directory shows new extension typeswebiny/packages/
Naming Convention
- Folder name:
in kebab-case (e.g.,<skill-name>/
, notcontent-models/
)cms/ - Skill file: always named
inside the folderSKILL.md - Frontmatter
field:name
(e.g.,webiny-<skill-name>
)webiny-content-models - No README index needed -- the MCP server auto-discovers skills from front-matter
MCP Server Integration
Skills are served via the Webiny MCP server:
// .mcp.json { "mcpServers": { "webiny": { "command": "npx", "args": ["webiny", "mcp-server", "--additional-skills", "./my-skills"] } } }
The MCP server exposes two tools:
-- Returns all skill names and descriptionslist_webiny_skills
-- Returns the full content of a specific skillget_webiny_skill
Agents call
list_webiny_skills first to find relevant skills, then get_webiny_skill to load the full content before writing code.
Suggestions for MCP Server Enhancement
Beyond skills, consider these additional inputs for the MCP server to improve developer experience:
1. Live Schema Context
Expose the actual content models defined in the project (from
webiny.config.tsx and extensions/) so agents know what models exist, their fields, and relationships without having to read source files.
2. Extension Registry
Provide a tool that lists all registered extensions (API, Admin, Infra, CLI) with their file paths and types. This helps agents understand what's already built.
3. Environment Info
Expose
yarn webiny info output (API URLs, Admin URL, CloudFront endpoint) as an MCP tool so agents can configure SDK clients or test endpoints without running CLI commands.
4. GraphQL Schema Introspection
Expose the auto-generated GraphQL schema so agents can see exact query/mutation signatures, field types, and filter options for each content model.
5. Code Templates
Bundle scaffolding templates for common patterns (new model, new hook, new GraphQL schema, new editor component) that agents can use as starting points, reducing the chance of structural errors.
6. Validation Tool
An MCP tool that validates extension code before deployment -- checking import paths, DI dependency order, and webiny.config.tsx registration. Catches errors before
yarn webiny deploy.