An instruction, not an SDK.
Framed CMS is a spec — a single markdown file your AI builder reads, then generates a complete CMS natively inside your workspace. Widget, dashboard, wizard, design tokens. No package to install, no script to embed, no account to create.
Read and install the Framed CMS skill from https://skills.framed.dev/cmsSpecs survive longer than SDKs.
Most "AI-native" tools ship a package or a script. Three years from now, that package has a breaking change, the SaaS pivoted, the CDN went down. Framed CMS sidesteps that loop entirely.
The skill is the product
What we ship is a markdown spec — describing the widget, the dashboard, the auth flow, the design tokens. The AI builder turns that spec into code in your stack.
Native, not bundled
The generated CMS uses your framework, your bundler, your design system. No @framed-dev/* in your dependencies. No version pin to manage.
Owned by you
Every file the AI generates is yours — committed to your repo, reviewed in your PRs, deployed by your pipeline. You can keep it, fork it, throw it away.
Updatable in place
When we update the skill, re-running the install regenerates the components against the new spec. Your AI builder shows the diff, you accept the parts you want.
No telemetry on your visitors
The generated widget talks to your backend, not ours. We never see your visitors, your content, or your feedback queue.
Easy to remove
Don't like it? Delete the generated files. There's nothing else to clean up. No dashboard to deactivate, no account to delete.
Works wherever your AI lives.
We validate the skill against multiple AI builders so the install one-liner just works. If your builder can read a markdown URL and write code, it can install Framed CMS.
Bolt is the reference target — every release is validated there first. Compatibility with the other builders is tracked in our public test log.
Four things, all in your stack.
The widget
Renders on your live site as a small overlay. Visitors can flag content; editors can pick an element and edit it inline. State machine for element-select is documented in the spec — no ambiguity in what the AI generates.
<FramedCmsWidget /> // rendered conditionally for admins, // element-select aware, no external runtime
The admin dashboard
Kanban triage of feedback + content edits. Cards, drag-and-drop, auto-refresh. Ships under /admin in your workspace, authenticated against your existing system.
/admin → CMSDashboard // kanban columns: new · in-progress · done // realtime auto-refresh
The first-run wizard
Password-default auth flow for the first admin user. Set up once during install; subsequent admins land via your existing login. No vendor lock-in.
/admin/setup → FirstRunWizard // hashes the password locally, // stores it via your DB adapter
Design-tokens reference
A reference of the Framed v2 design language as CSS variables — colors, type, radii. Your generated UI matches automatically; override every token to match your site.
// design-tokens.css (generated)
:root {
--bg: #ffffff;
--text: #1a1a1a;
/* … */
}Three optional calls back to Framed.
None of these touch your visitors' data or your feedback queue. All three can be disabled by deleting one line in the generated code.
POST /api/installLead captureFires once when the wizard finishes. We get site_id + admin_email. Helps us count installs and send (rare) product updates. Delete the fetch to disable.
GET /api/insightsFree Lighthouse teasersOptional. Returns a short performance teaser to display in the admin dashboard. Cached server-side; never includes user content.
GET /api/upgrade-statusUpsell flagOptional. Returns whether the site has access to paid Framed features. Default state is 'free'.
Paste the line. Ship a CMS.
Free, MIT-licensed, no signup. Coming to Skill.sh soon for one-click install across more builders.
Read and install the Framed CMS skill from https://skills.framed.dev/cms