SDK / infra · #253 trending MCP repo

Webiny Js

webiny/webiny-js

Open-source, self-hosted CMS platform on AWS serverless (Lambda, DynamoDB, S3). TypeScript framework with multi-tenancy, lifecycle hooks, GraphQL API, and AI-assisted development via MCP server. Built for developers at large organizations.

Stars
8.0k
This week
—
Forks
685
Open issues
386
Skills inside
87

Inside this repo

48 of 87 skills

design-askTurn open design questions into a paste-ready prompt for Claude Design, log them with Q-IDs and copy the prompt to the clipboard. Use for "/design-ask", "ask the designer", "questions for design"..claude/skills/design-askdesign-pullPull a Claude Design project into a local, git-ignored design folder and keep a catalogue of what was pulled and implemented. Use for "/design-pull", "pull the design", "sync designs", or to mark a design file as implemented after committing UI code built from it..claude/skills/design-pullgrill-meInterview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me"..claude/skills/grill-meprd-to-planTurn a PRD into a multi-phase implementation plan using tracer-bullet vertical slices, saved as a local Markdown file in ./plans/. Use when user wants to break down a PRD, create an implementation plan, plan phases from a PRD, or mentions "tracer bullets"..claude/skills/prd-to-planpreflightWebiny-only. Run all checks required before packages are ready for publish: deps, build, lint, format, tests..claude/skills/preflighttesterUse when running tests. Shows how to run tests for a single package, including OpenSearch (ddb-os) tests when applicable..claude/skills/testerwebiny-skill-creatorGenerate, refresh, and maintain Webiny MCP server skills from source documentation and codebase. Use this skill when you need to create new Webiny skills, update existing skills after framework changes, regenerate the entire skill library, or create a skill for a specific Webiny feature. Trigger thi.claude/skills/webiny-skill-creatorwrite-a-prdCreate a PRD through user interview, codebase exploration, and module design, then submit as a GitHub issue. Use when user wants to write a PRD, create a product requirements document, or plan a new feature..claude/skills/write-a-prdwebiny-add-feature-flagAdding a new feature flag to the Webiny system. Use this skill when creating a new feature flag (simple boolean or nested group), gating a feature at the config/admin/API level, or wiring a flag into the WCP license system. Covers IFeatureFlagsDto, KnownFeatureFlag, Zod schema, FeatureFlag.CanUse coskills/repo-skills/add-feature-flagwebiny-admin-architectAdmin-side architecture patterns for Webiny extensions. Use this skill when building frontend features with headless features (UseCase/Repository/Gateway), presentation features (Presenter/ViewModel/hooks/components), MobX-based presenters, RegisterFeature, value objects for domain values, and Adminskills/user-skills/admin/admin-architectwebiny-admin-permissionsAdmin-side permission UI registration and DI-backed permission checking. Use this skill when adding permission controls to the admin UI — schema-based auto-generated forms, injectable permissions via createPermissionsAbstraction/ createPermissionsFeature, typed hooks (createUsePermissions), the HasPskills/user-skills/admin/admin-permissionswebiny-form-modelBuilding forms with the FormModel system — field types, renderers, layout, validation, conditional rules, computed fields, and dynamic zones. Use this skill when the developer needs to define form fields with the builder API, choose renderers, build layouts with tabs/rows/separators, add validation skills/user-skills/admin/form-modelwebiny-new-entry-wizardBuilding a New Entry Wizard for the Headless CMS. Use this skill when the developer wants to show a custom wizard UI before the entry form when creating new CMS entries -- collecting fields like title, slug, or category upfront, then pre-filling the entry form. Covers ContentEntryEditorConfig.NewEntskills/user-skills/admin/new-entry-wizardwebiny-admin-ui-extensionsCustomizing the Webiny Admin UI -- white-labeling, custom data list columns, page-type forms, named dialogs, named drawers, and Lexical editor plugins. Use this skill when the developer wants to change branding (logo, title, theme colors), add custom columns to content entry list views, create custoskills/user-skills/admin/ui-extensionswebiny-page-settings-extensionsExtending the Website Builder page settings with custom settings groups and modifiers. Use this skill when the developer wants to add a new tab/group to the page settings drawer (e.g., Publishing, Analytics, Access Control), or modify an existing settings group (e.g., add fields to General or SEO). skills/user-skills/admin/website-builder/page-settingswb-preview-url-modifierCovers the PreviewUrlModifier extension point in Website Builder. Use when a user wants to inject custom query parameters into live preview URLs — e.g. signed tokens, tenant identifiers, feature flags — from their Webiny project. Handles the full registration pattern: implementing the interface, wirskills/user-skills/admin/website-builder/wb-preview-url-modifierapi-bundle-size-limitCovers how to configure the maximum allowed size of the Webiny API Lambda bundle using the Infra.Api.MaxBundleSize extension in webiny.config.tsx. Use when a project's API bundle exceeds the default 4.5 MB limit or when you want to enforce a stricter limit. Handles the extension syntax, byte calculaskills/user-skills/api-bundle-size-limitwebiny-ai-powerups-contentGenerating Headless CMS entry content with AI from your own code, by delegating to the AI Power Ups extension instead of calling an LLM directly. Use this skill when the developer wants to generate/summarize/rewrite entry content programmatically (e.g. from a bulk action, a lifecycle hook, or a custskills/user-skills/api/ai-powerups-contentwebiny-api-architectThe hub skill for all API/backend architecture in Webiny. Covers architecture overview, Services vs UseCases, feature naming and organization, feature structure templates, DI decision tree, anti-patterns, createFeature, createAbstraction, container registration, domain errors, entity and value objecskills/user-skills/api/api-architectwebiny-cms-bulk-actionsAuthoring a custom Headless CMS bulk action (EntriesBulkAction) that Webiny runs as a background task, plus the Admin-side button that triggers it. Use this skill when the developer wants to add a bulk action to the content-entry list (e.g. apply a discount, generate content, bulk-transform entries)skills/user-skills/api/cms-bulk-actionswebiny-api-cms-custom-field-typeHow to implement a custom CMS field type that integrates with the model builder's fluent API. Covers extending DataFieldBuilder, composing validator interfaces, creating a FieldTypeFactory, registering via DI, and module augmentation for TypeScript autocomplete on the fields() registry.skills/user-skills/api/custom-field-typewebiny-event-handler-patternEventHandler implementation pattern — handle method, event payloads, filtering, DI, domain event definition, publishing events from UseCases, and reacting to external events. Use this skill to implement any Webiny EventHandler (before/after hooks) or to define and publish your own domain events.skills/user-skills/api/event-handler-patternwebiny-custom-graphql-apiAdding custom GraphQL queries and mutations using GraphQLSchemaFactory. Use this skill when the developer wants to add custom GraphQL endpoints, create custom queries or mutations, add business logic to the API layer, build custom resolvers, inject backend services (identity, tenancy, CMS use-cases)skills/user-skills/api/graphql-apiwebiny-http-routeAdding custom HTTP routes to the API with <Api.Route> and HttpRouteHandler. Use this skill when the developer wants to expose a custom HTTP endpoint (GET, POST, PUT, etc.) on the API alongside the GraphQL handler, implement a route handler with full DI support, or register a custom HTTP route in webskills/user-skills/api/http-routewebiny-api-permissionsSchema-based permission system for API features. Use this skill when implementing authorization in use cases, defining permission schemas with createPermissionSchema, creating injectable permissions via createPermissionsAbstraction/createPermissionsFeature, checking read/write/delete/publish permissskills/user-skills/api/permissionswebiny-use-case-patternUseCase implementation pattern — DI, Result handling, error types, decorators, CMS repositories, entry mappers, and schema-based permissions. Use this skill to implement, inject, override, or decorate any Webiny UseCase, or to build repositories that persist data via CMS.skills/user-skills/api/use-case-patternwebiny-v5-to-v6-migrationMigration patterns for converting v5 Webiny code to v6 architecture. Use this skill when migrating existing v5 plugins to v6 features, converting context plugins to DI services, adapting v5 event subscriptions to v6 EventHandlers, or understanding how v5 patterns translate to v6. Targeted at AI agenskills/user-skills/api/v5-to-v6-migrationwebiny-websocket-notificationsSending real-time notifications from the API to the Admin app over websockets, and reacting to them on the client. Use this skill when the developer wants to push a message to the user who triggered some server-side work (e.g. per-entry progress from a background task/bulk action) and show a toast, skills/user-skills/api/websocket-notificationswebiny-cli-extensionsAdding custom commands to the Webiny CLI using CliCommandFactory. Use this skill when the developer wants to create a custom CLI command, add a data migration script, build a code generator, create deployment scripts, export CMS content, or add health check commands. Covers CliCommandFactory.Interfaskills/user-skills/cli-extensionswebiny-cognito-federationConfiguring Cognito Federation for Webiny projects — federated sign-in via external identity providers (Google, Facebook, Apple, Amazon, OIDC/Entra ID) while keeping Cognito as the user pool. Use this skill when the developer asks about Cognito federation, SSO with Cognito, adding Google/Microsoft/Oskills/user-skills/cognito-federationwebiny-configure-auth0Configuring Auth0 as an identity provider (IDP) for Webiny projects. Use this skill when the developer asks about Auth0 authentication, Auth0 SSO, replacing Cognito with Auth0, setting up external identity providers, configuring OIDC authentication, mapping JWT claims to Webiny identities, or customskills/user-skills/configure-auth0webiny-configure-entraidConfiguring Microsoft Entra ID (formerly Azure AD) as a federated identity provider for Webiny projects using Cognito Federation. Use this skill when the developer asks about Entra ID, Azure AD, Microsoft SSO, OIDC with Microsoft, Microsoft login for Webiny, or configuring login.microsoftonline.com skills/user-skills/configure-entraidwebiny-configure-oktaConfiguring Okta as an identity provider (IDP) for Webiny projects. Use this skill when the developer asks about Okta authentication, Okta SSO, replacing Cognito with Okta, setting up external identity providers, configuring OIDC authentication, mapping JWT claims to Webiny identities, or customizinskills/user-skills/configure-oktawebiny-api-cms-content-modelsCreating Headless CMS content models via code using the ModelFactory pattern. Use this skill when the developer wants to create, modify, or understand content model definitions, define fields and validators, set up reference fields between models, configure field layouts (including nested layouts inskills/user-skills/content-modelswebiny-dependency-injectionThe universal createImplementation DI pattern and all injectable services. Use this skill when the developer is writing any Webiny extension and needs to understand dependency injection, constructor injection, how to access Logger/BuildParams/IdentityContext, how to inject CMS use-cases (list/get/crskills/user-skills/dependency-injectionwebiny-full-stack-architectFull-stack extension skeleton and registration pattern. Use this skill when creating an extension that spans both API and Admin — the top-level component with Api.Extension and Admin.Extension entry points, shared domain layer, BuildParam declarations, and package structure. References webiny-api-arskills/user-skills/full-stack-architectwebiny-admin-catalogadmin — 28 abstractions.skills/user-skills/generated/adminwebiny-admin-aco-catalogadmin/aco — 2 abstractions.skills/user-skills/generated/admin/acowebiny-admin-ai-powerups-catalogadmin/ai-powerups — 1 abstractions.skills/user-skills/generated/admin/ai-powerupswebiny-admin-build-params-catalogadmin/build-params — 3 abstractions.skills/user-skills/generated/admin/build-paramswebiny-admin-cms-catalogadmin/cms — 56 abstractions.skills/user-skills/generated/admin/cmswebiny-admin-configs-catalogadmin/configs — 1 abstractions.skills/user-skills/generated/admin/configswebiny-admin-env-config-catalogadmin/env-config — 2 abstractions.skills/user-skills/generated/admin/env-configwebiny-admin-form-catalogadmin/form — 26 abstractions.skills/user-skills/generated/admin/formwebiny-admin-graphql-client-catalogadmin/graphql-client — 1 abstractions.skills/user-skills/generated/admin/graphql-clientwebiny-admin-graphql-playground-catalogadmin/graphql-playground — 4 abstractions.skills/user-skills/generated/admin/graphql-playgroundwebiny-admin-languages-catalogadmin/languages — 2 abstractions.skills/user-skills/generated/admin/languageswebiny-admin-lexical-catalogadmin/lexical — 17 abstractions.skills/user-skills/generated/admin/lexical

Documentation

README

View on GitHub ↗

AI-programmable CMS for enterprises hosting on AWS

Build Status Total Downloads Latest Release License

About Webiny

Open-source content platform. Self-hosted on AWS serverless. Built as a TypeScript framework you extend with code, not a closed product you configure through a UI.

Runs on Lambda, DynamoDB, S3, and CloudFront inside your own AWS account. Scales automatically. No servers to manage. Infrastructure provisioned via IaC (Pulumi) in a single deploy command.

Used in production by teams managing hundreds of millions of content records, petabytes of assets, and thousands of editors — including Amazon, Emirates, Fortune 500 companies, government agencies, and SaaS platforms that white-label Webiny inside their own products.

Documentation · Learn Webiny Course · Community Slack


What's Inside

Webiny Headless CMS

Headless CMS — Custom content models, GraphQL API, field-level permissions, localization, versioning. Models can be defined through the admin UI or in code via the framework.

Webiny Website Builder

Website Builder — Visual drag-and-drop page editor with a Next.js SDK. Render pages through your own frontend (Vercel, CloudFront, wherever). Create custom page elements with React components.

Webiny Website Builder File Manager — Digital asset management with CDN delivery, folder structure, tagging, search. Integrated into CMS and Website Builder.

Publishing Workflows — Multi-step content approval with draft states, reviewer assignments, scheduled publishing, and audit trails.

Multi-Tenancy — Native tenant isolation (data, users, assets, permissions) from a single deployment. One instance can host thousands of tenants. Tenants are created and managed programmatically via GraphQL API. Supports hierarchical tenant structures (Root → Brand → Market, Root → Client → Site, etc.).

Webiny Framework — TypeScript framework with lifecycle hooks, dependency injection, GraphQL schema extensions, admin UI extension points, and infrastructure extensions. This is the core — it's what makes Webiny programmable rather than just configurable.


Architecture

┌─────────────────────────────────────────────────────┐
│                    Your AWS Account                  │
│                                                      │
│  ┌──────────┐  ┌──────────┐  ┌─────┐  ┌──────────┐ │
│  │  Lambda   │  │ DynamoDB │  │ S3  │  │CloudFront│ │
│  │ (API +   │  │ (Content │  │(Assets)│ │  (CDN)  │ │
│  │  business │  │  storage) │  │     │  │          │ │
│  │  logic)   │  │          │  │     │  │          │ │
│  └──────────┘  └──────────┘  └─────┘  └──────────┘ │
│                                                      │
│  Optional: OpenSearch (full-text search at scale)    │
│  Optional: VPC deployment, multi-AZ, custom config   │
│                                                      │
│  All provisioned automatically via Pulumi IaC         │
└─────────────────────────────────────────────────────┘

Stack: TypeScript, React, GraphQL, Node.js, Pulumi, AWS serverless services.

What you control: Everything. The IaC templates are open-source. Modify Lambda memory, add CloudWatch alarms, change VPC configuration, add custom AWS resources — it's your infrastructure.

What you don't manage: Servers. Patching. Scaling. Capacity planning. That's the point of serverless.


Quick Start

Prerequisites: Node.js 22+, Yarn, AWS account with programmatic access.

npx create-webiny-project my-project
cd my-project
yarn webiny deploy

First deploy takes 5–15 minutes (AWS provisioning). After that, you get an admin panel URL. Create your first admin account, and you're in.

Local development:

yarn webiny watch admin  # React dev server on localhost:3001
yarn webiny watch api    # Local Lambda execution environment

New team member onboarding:

git clone <your-repo>
yarn
# Ready to develop

AI-Assisted Development

Webiny - MCP AI Assisted Development

Webiny ships with an MCP server and AI skills that give AI coding agents (Claude Code, Cursor, Kiro, etc.) deep context about the platform's architecture, extension points, and patterns.

This means you can ask an AI agent to:

  • Create content models with specific field types and validation
  • Build lifecycle hooks that trigger on content events
  • Extend the GraphQL API with custom queries and business logic
  • Scaffold admin UI extensions with React components
  • Wire integrations with external systems via lifecycle events
  • Set up multi-tenant configurations programmatically

The AI produces code that follows Webiny's actual patterns because the MCP server gives it real knowledge of the framework — not generic guesses.

Why this works better on Webiny than most platforms: The framework is strongly typed with explicit extension points. AI-generated code either fits the type system or it doesn't compile. There's no ambiguous plugin API where the AI has to guess. Types enforce correctness.

Getting started with the MCP server:

# The MCP server runs locally inside your Webiny project
# Connect it to your AI coding tool of choice
# See docs for tool-specific setup instructions

→ AI-Assisted Development Guide


Extending Webiny

All customization happens in the extensions/ folder and is registered in webiny.config.tsx. Four extension types:

API Extensions — Custom GraphQL schemas, resolvers, lifecycle hooks, business logic.

// extensions/NotifyOnPublish.ts — Example: send Slack notification when content is published
class NotifyOnPublish implements CmsLifecycleHook.Interface {
  constructor(private slackService: SlackService.Interface) {}

  async afterPublish(params: AfterPublishParams): Promise<void> {
    await this.slackService.notify(`Content published: ${params.entry.title}`);
  }
}

Admin Extensions — Custom UI components, white-label branding, new views, tenant-specific themes. Standard React — use any patterns and libraries you already know.

Infrastructure Extensions — Modify AWS resources via Pulumi. Add Lambda functions, S3 buckets, CloudWatch alarms, or change existing resource configuration.

CLI Extensions — Custom commands for deployment workflows, data migrations, code generators.

→ Extensions Guide


When to Use Webiny

  • You need a self-hosted CMS and don't want to run servers
  • You need multi-tenancy as a first-class primitive, not a workaround
  • You want to extend the CMS with real code (TypeScript), not just configuration
  • You need to embed a CMS inside your own product (white-label)
  • Data ownership and compliance requirements rule out SaaS CMS
  • You want AI agents to be able to build on your content platform effectively
  • You're on AWS (or planning to be)

When Not to Use Webiny

Be honest with yourself about these:

  • Simple sites or blogs. Webiny is built for complex projects. If you need a blog with 10 pages, use something simpler.
  • Not on AWS. Webiny only runs on AWS. No GCP, no Azure, no on-prem. If that's a dealbreaker, it's a dealbreaker.
  • No TypeScript/React skills on the team. The entire extension model is TypeScript and React. If your team works in a different stack and doesn't want to adopt these, Webiny won't be a good fit.
  • You want a no-code, plug-and-play SaaS CMS. Webiny is a platform for developers to build on. If you want zero development involvement, this isn't it.

Licensing

Community Edition — MIT license. Free forever. Includes Headless CMS, Website Builder, File Manager.

Business Edition — Commercial license starting at $79/mo. Adds RBAC, multi-tenancy, publishing workflows.

Enterprise Edition — Custom pricing. Adds SSO, audit logs, team management, priority support, managed hosting option.

All plans: unlimited content entries, pages, assets, API calls, roles, and workflows. No per-seat pricing traps. No API metering.

→ Pricing Details


Project Structure

my-webiny-project/
  extensions/          # Your custom code lives here
  public/              # Admin app static assets
  webiny.config.tsx    # Project configuration (React components, type-safe)
  package.json
  tsconfig.json

Single package.json. Single tsconfig.json. Configuration in webiny.config.tsx uses React components for type safety and IDE auto-completion.


Key Commands

npx create-webiny-project <name>    # Create new project
yarn webiny deploy                   # Deploy to AWS
yarn webiny deploy core api          # Deploy specific apps
yarn webiny watch admin              # Local admin dev server
yarn webiny watch api                # Local Lambda dev environment
yarn webiny info                     # Show endpoints and URLs
yarn webiny destroy                  # Tear down all AWS resources

Resources


Contributing

We welcome contributions. See CONTRIBUTING.md for guidelines.

Before opening a PR, please check existing issues or start a discussion — it helps us give you better guidance and avoids duplicate work.

Releases

Recent versions

All releases ↗
  1. v6.5.1
  2. v6.5.0
  3. v6.4.11
  4. v6.4.10
  5. v6.4.9
  6. v6.4.8