sdxc-blog-engine

Implements a host-agnostic blog engine with CMS, migrations, and OIDC admin login.

5|Updated Feb 2, 2026
One-click install
npx skills add https://github.com/sergiodxa/monorepo --skill sdxc-blog-engine-sergiodxa
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: sdxc-blog-engine
Source: https://github.com/sergiodxa/monorepo/tree/main/.agents/skills/sdxc-blog-engine
Command: npx skills add https://github.com/sergiodxa/monorepo --skill sdxc-blog-engine-sergiodxa

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Building a blog on Cloudflare Workers or Durable Objects normally means wiring together routing, an admin CMS, authentication, sessions, schema migrations, and theming from scratch. This Skill documents how to use @sdxc/blog-engine, which packages all of that behind a single createBlogEngine(config) call returning fetch and migrate handlers. ## Core Features & Use Cases - Complete blog core: Public site, /cms admin, SQL schema, journaled migrations, and theming behind one config object, with zero Cloudflare-specific imports so one build runs on Workers, Durable Objects, Bun, or Node. - Runtime-defined post types: A WordPress-style posts + post_meta (EAV) schema lets you add post types with fields like text, markdown, date, and tags without touching DDL. - OIDC admin login and SQL sessions: The host injects OIDC credentials and a cookie secret; sessions live in the engine's own SQL table, so no KV is required. - Use Case: Run many blogs, one per Durable Object, each with its own SQL storage and secrets, setting migrations to manual and calling migrate() inside blockConcurrencyWhile. ## Quick Start Ask the AI to set up a blog on a Cloudflare Worker using @sdxc/blog-engine with a D1 database adapter, OIDC credentials, and a session secret.

Frequently Asked Questions about sdxc-blog-engine

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run a blog on a Cloudflare Worker with D1?▼

Create the engine with createBlogEngine, passing a D1 DatabaseDriver from @sdxc/data-table-d1, OIDC credentials, and a session secret, then return engine.fetch(request) from the Worker's fetch handler. The default auto migration mode migrates lazily before the first request.

How do I add a custom post type without changing the database schema?▼

The engine uses a WordPress-style posts plus post_meta EAV schema, so post types are defined at runtime with a machine name, path, and field kinds like text, markdown, date, and tags. Field definitions drive the metadata codec, forms, validation, and rendering without any DDL changes.

Can I run multiple blogs in Durable Objects with separate databases?▼

Yes, run one blog per Durable Object, each with its own SQL storage and secrets via the @sdxc/data-table-sqlstorage adapter. Set migrations to manual and call migrate() inside blockConcurrencyWhile so no request is served against an unmigrated schema.

Does the blog engine require Cloudflare KV for sessions?▼

No, sessions default to a SQL-backed store over the engine's own sessions table, so a single SQL database is the only hard runtime dependency. Pass session.storage only if you want to move sessions to KV, and set isProd: true for Secure cookies.

Why is my publish action refused in the blog CMS?▼

The engine checks permission keys, never role names, and publishing requires the posts.publish permission enforced server-side. Verify the user's role includes that key; also note the last admin cannot be demoted or deleted.