name: webiny-skill-generator
description: >
Generate, update, and maintain abstraction catalogs from the Webiny platform's public API.
Use this skill whenever you need to: scan the webiny package to discover exported
EventHandlers and UseCases, regenerate catalog JSON files after a platform release,
check which abstractions are available, or add support for a new abstraction type.
Webiny Skill Generator
Generates per-category catalog JSON files from the webiny npm package's public API. Each catalog lists all UseCase and EventHandler abstractions in a category with their resolved source file paths. LLMs read source files on demand for exact, up-to-date types — no enrichment phase needed.
How It Works
yarn generate-skills
The script:
- Discovers all EventHandler and UseCase exports from
packages/webiny - Resolves the actual source file path for each export via ts-morph
- Writes one catalog JSON per category to
skills/catalogs/
That's it. No skeletons, no enrichment, no templates.
Output
skills/
├── catalogs/
│ ├── api-cms.json # 82 entries
│ ├── api-security.json # 37 entries
│ ├── api-website-builder.json
│ ├── api-tenancy.json
│ ├── api-file-manager.json
│ ├── api-aco.json
│ ├── api-scheduler.json
│ └── api-system.json
└── patterns/
├── use-case.md # Generic UseCase pattern doc
└── event-handler.md # Generic EventHandler pattern doc
Each catalog entry looks like:
{
"className": "CreateTenantUseCase",
"importPath": "webiny/api/tenancy",
"type": "use-case",
"typeLabel": "UseCase",
"humanName": "Create Tenant",
"entity": "Tenant",
"operation": "create",
"sourceFilePath": "packages/api-core/src/features/tenancy/CreateTenant/index.ts",
"description": "Programmatically create tenant."
}
How LLMs Use Catalogs
- Find the right abstraction: Read the catalog JSON for the relevant category
- Read the pattern doc:
skills/patterns/use-case.mdorskills/patterns/event-handler.md - Resolve types on demand: Read the
sourceFilePathfrom the catalog entry to get exact interfaces, payloads, and error types - Generate code: Use the pattern + resolved types to write the extension
This ensures types are always current — no stale snapshots.
CLI Options
# Full regeneration
yarn generate-skills
# Verbose output
yarn generate-skills --verbose
# Check discovered exports without writing files
yarn generate-skills --check
# Only process a specific category
yarn generate-skills --category api/cms
# Only process a specific plugin type
yarn generate-skills --plugin event-handler
Release Workflow
- Run
yarn generate-skillsafter a platform release - Commit the updated catalog files
- That's it — no enrichment step needed
Adding a New Abstraction Type
To support a new pattern (e.g., classes ending in Middleware):
- Create a new plugin in
scripts/generateSkills/src/plugins/implementing theAbstractionPlugininterface - Register it in
scripts/generateSkills/src/plugins/index.ts - Run the pipeline — new entries appear in catalogs automatically