APM

>Agent Skill

@secondsky/sveltia-cms

skilldevelopment

Sveltia CMS Git-backed content management (Decap/Netlify CMS successor). 5x smaller bundle (300 KB), GraphQL performance, solves 260+ issues. Use for static sites (Hugo, Jekyll, 11ty, Gatsby, Astro, Next.js), blogs, docs, i18n, or encountering OAuth errors, TOML/YAML issues, CORS problems, content listing errors.

apm::install
$apm install @secondsky/sveltia-cms
apm::allowed-tools
ReadWriteEditBashGlobGrep
apm::skill.md
---
name: sveltia-cms
description: Sveltia CMS Git-backed content management (Decap/Netlify CMS successor). 5x smaller bundle (300 KB), GraphQL performance, solves 260+ issues. Use for static sites (Hugo, Jekyll, 11ty, Gatsby, Astro, Next.js), blogs, docs, i18n, or encountering OAuth errors, TOML/YAML issues, CORS problems, content listing errors.
license: MIT
allowed-tools: ['Read', 'Write', 'Edit', 'Bash', 'Glob', 'Grep']
metadata:
  token_savings: "60-65%"
  errors_prevented: 8
  package_version: "0.113.5"
  last_verified: "2025-10-29"
  frameworks: ["Hugo", "Jekyll", "11ty", "Gatsby", "Astro", "Next.js", "SvelteKit", "Framework-agnostic"]
  deployment: ["Cloudflare Workers", "Vercel", "Netlify", "GitHub Pages", "Cloudflare Pages"]
---

# Sveltia CMS Skill

Complete skill for integrating Sveltia CMS into static site projects.

---

## What is Sveltia CMS?

**Sveltia CMS** is a Git-based lightweight headless content management system built from scratch as the modern successor to Decap CMS (formerly Netlify CMS). It provides a fast, intuitive editing interface for content stored in Git repositories.

### Key Features

1. **Lightweight & Fast**
   - Bundle size: <500 KB (minified/brotlied) vs 1.5-2.6 MB for competitors
   - Built with Svelte compiler (no virtual DOM overhead)
   - Uses GraphQL APIs for instant content fetching
   - Relevance-based search across all content

2. **Modern User Experience**
   - Intuitive admin interface with full viewport utilization
   - Dark mode support (follows system preferences)
   - Mobile and tablet optimized
   - Drag-and-drop file uploads with multiple file support
   - Real-time preview with instant updates

3. **Git-Native Architecture**
   - Content stored as Markdown, MDX, YAML, TOML, or JSON
   - Full version control and change history
   - No vendor lock-in - content lives with code
   - Supports GitHub, GitLab, Gitea, Forgejo backends

4. **Framework-Agnostic**
   - Served as vanilla JavaScript bundle
   - Works with Hugo, Jekyll, 11ty, Gatsby, Astro, Next.js, SvelteKit
   - No React, Vue, or framework runtime dependencies
   - Compatible with any static site generator

5. **First-Class Internationalization**
   - Multiple language support built-in
   - One-click DeepL translation integration
   - Locale switching while editing
   - Flexible i18n structures (files, folders, single file)

6. **Built-In Image Optimization**
   - Automatic WebP conversion
   - Client-side resizing and optimization
   - SVG optimization support
   - Configurable quality and dimensions

### Current Versions

- **@sveltia/cms**: 0.113.5 (October 2025)
- **Status**: Public Beta (v1.0 expected early 2026)
- **Maturity**: Production-ready (265+ issues solved from predecessor)

---

## When to Use This Skill

### ✅ Use Sveltia CMS When:

1. **Building Static Sites**
   - Hugo blogs and documentation
   - Jekyll sites and GitHub Pages
   - 11ty (Eleventy) projects
   - Gatsby marketing sites
   - Astro content-heavy sites

2. **Non-Technical Editors Need Access**
   - Marketing teams managing pages
   - Authors writing blog posts
   - Content teams without Git knowledge
   - Clients needing easy content updates

3. **Git-Based Workflow Desired**
   - Content versioning through Git
   - Content review through pull requests
   - Content lives with code in repository
   - CI/CD integration for deployments

4. **Lightweight Solution Required**
   - Performance-sensitive projects
   - Mobile-first editing needed
   - Quick load times critical
   - Minimal bundle size important

5. **Migrating from Decap/Netlify CMS**
   - Existing config.yml can be reused
   - Drop-in replacement (change 1 line)
   - Better performance and UX
   - Active maintenance and bug fixes

### ❌ Don't Use Sveltia CMS When:

1. **Real-Time Collaboration Needed**
   - Multiple users editing simultaneously (Google Docs-style)
   - Use Sanity, Contentful, or TinaCMS instead

2. **Visual Page Building Required**
   - Drag-and-drop page builders needed
   - Use Webflow, Builder.io, or TinaCMS (React) instead

3. **Highly Dynamic Data**
   - E-commerce with real-time inventory
   - Real-time dashboards or analytics
   - Use traditional databases (D1, PostgreSQL) instead

4. **React-Specific Visual Editing Needed**
   - In-context component editing
   - Use TinaCMS instead (React-focused)

### Sveltia CMS vs TinaCMS

**Use Sveltia** for:
- Hugo, Jekyll, 11ty, Gatsby (non-React SSGs)
- Traditional CMS admin panel UX
- Lightweight bundle requirements
- Framework-agnostic projects

**Use TinaCMS** for:
- React, Next.js, Astro (React components)
- Visual in-context editing
- Schema-driven type-safe content
- Modern developer experience with TypeScript

**Both are valid** - Sveltia complements TinaCMS for different use cases.

---

## Quick Start

**Load `references/framework-setup.md` for complete framework-specific setup** (Hugo, Jekyll, 11ty, Astro, Next.js, Gatsby, SvelteKit).

### Basic Setup Steps (Framework-Agnostic)

1. **Create admin directory** in your public folder (e.g., `static/admin`, `public/admin`)
2. **Create `admin/index.html`** with Sveltia CMS script tag
3. **Create `admin/config.yml`** with backend and collections
4. **Set up authentication** → See `references/authentication-guide.md`
5. **Test locally** by visiting `/admin/`

**Templates available** in `templates/` directory for each framework.

---

## Authentication Setup

**Load `references/authentication-guide.md` for complete OAuth setup instructions**.

### Quick Overview

| Method | Best For | Complexity |
|--------|----------|-----------|
| Cloudflare Workers | All deployments | Easy ⭐ |
| Vercel Serverless | Vercel projects | Medium |
| Local Development | Dev only | Easy |

**Recommended**: Cloudflare Workers OAuth (official, fast, free)

**Templates**: See `templates/cloudflare-workers/` and `templates/vercel-serverless/`

---

## Configuration

**Load `references/configuration-guide.md` for complete config.yml documentation, collection patterns, and i18n setup**.

### Essential Config Structure

```yaml
backend:
  name: github
  repo: owner/repo
  branch: main
  base_url: https://your-worker.workers.dev

media_folder: static/images
public_folder: /images

collections:
  - name: posts
    label: Blog Posts
    folder: content/posts
    create: true
    fields:
      - { label: Title, name: title, widget: string }
      - { label: Body, name: body, widget: markdown }
```

**Collection templates** available in `templates/collections/` for blogs, docs, and landing pages.

**i18n support**: Multiple files, folders, or single file structures - see reference guide.

---

## Common Errors & Solutions

This skill prevents **8 common errors**. Top 3 shown below - **load `references/error-catalog.md` for all 8 with complete solutions**.

### 1. ❌ OAuth Authentication Failures

**Error**: "Error: Failed to authenticate" / redirects to wrong domain

**Quick Fix:**
- Verify `base_url` in `config.yml` points to your OAuth proxy
- Check GitHub OAuth callback URL matches Worker URL
- Test Worker: `curl https://your-worker.workers.dev/health`

**→ Load `references/error-catalog.md` Error #1 for complete solution**

---

### 2. ❌ Content Not Listing in CMS

**Error**: "No entries found" / empty content list

**Quick Fix:**
- Verify `folder` path matches actual file location
- Match `format` to actual file format (yaml vs toml)
- Check file extensions match config

**→ Load `references/error-catalog.md` Error #4 for complete solution**

---

### 3. ❌ CORS / COOP Policy Errors

**Error**: "Authentication Aborted" / OAuth popup closes

**Quick Fix:**
- Set `Cross-Origin-Opener-Policy: same-origin-allow-popups` in headers
- Add OAuth proxy to CSP `connect-src`

**→ Load `references/error-catalog.md` Error #8 for complete solution**

---

**All 8 errors with detailed solutions:** See `references/error-catalog.md`

---

## Migration from Decap CMS

Sveltia is a **drop-in replacement** - just change the script tag!

```html
<!-- OLD: Decap CMS -->
<script src="https://unpkg.com/decap-cms@^3.0.0/dist/decap-cms.js"></script>

<!-- NEW: Sveltia CMS -->
<script src="https://unpkg.com/@sveltia/cms/dist/sveltia-cms.js" type="module"></script>
```

Your existing `config.yml` works as-is. **Load `references/migration-from-decap.md` for complete migration guide and testing checklist**.

---

## Deployment

**Load `references/deployment-guide.md` for platform-specific deployment instructions** (Cloudflare Pages, Vercel, Netlify, GitHub Pages).

### Quick Deployment Checklist

- [ ] Admin directory in correct public folder
- [ ] OAuth proxy deployed and configured
- [ ] `base_url` set in config.yml
- [ ] Build command configured
- [ ] Test `/admin/` route after deployment

---

## When to Load References

**Load `references/framework-setup.md` when:**
- User needs framework-specific setup (Hugo, Jekyll, 11ty, Astro, etc.)
- Setting up new Sveltia CMS installation
- Troubleshooting framework-specific admin directory issues

**Load `references/authentication-guide.md` when:**
- Setting up GitHub OAuth authentication
- Deploying Cloudflare Workers OAuth proxy
- Troubleshooting authentication errors
- User asks about `base_url` configuration

**Load `references/configuration-guide.md` when:**
- User needs complete `config.yml` examples
- Setting up collections, fields, or widgets
- Configuring media uploads, i18n, or workflows
- User asks about specific configuration options

**Load `references/error-catalog.md` when:**
- User encounters any errors during setup
- Troubleshooting authentication, parsing, or deployment issues
- User reports errors beyond the top 3 shown above

**Load `references/deployment-guide.md` when:**
- Deploying to Cloudflare Pages, Netlify, or Vercel
- Setting up OAuth proxy deployment
- Troubleshooting production deployment issues

**Load `references/migration-from-decap.md` when:**
- Migrating from Decap CMS / Netlify CMS
- User asks about compatibility or migration steps

---

## Resources

**Templates**: `templates/hugo/`, `templates/jekyll/`, `templates/cloudflare-workers/`
**Official Docs**: https://github.com/sveltia/sveltia-cms
**OAuth Worker**: https://github.com/sveltia/sveltia-cms-auth

---

## Package Information

**Current Version**: @sveltia/cms@0.113.5 (October 2025)
**Status**: Production-ready, v1.0 expected early 2026

---

**Last Updated**: 2025-10-24