From df51945709a59e0f775f15910f9e5fdf46e005fa Mon Sep 17 00:00:00 2001 From: Markus Oberlehner Date: Fri, 27 Feb 2026 08:23:03 +0100 Subject: [PATCH] feat(migrate-to-storyblok): add skill and templates for Storyblok migration assistance Introduce a migrate-to-storyblok skill that guides users through analyzing existing sites and generating Storyblok component schemas, then pushing them via the CLI. Provide reusable component templates (hero, page, blog_post, faq, etc.) to standardize and accelerate migrations from third-party CMSs. --- .claude/skills/migrate-to-storyblok/SKILL.md | 273 ++++++++++++++++++ .../templates/components/banner.json | 21 ++ .../templates/components/blog_post.json | 35 +++ .../templates/components/cta.json | 26 ++ .../templates/components/faq_item.json | 14 + .../templates/components/faq_section.json | 21 ++ .../templates/components/feature.json | 21 ++ .../templates/components/feature_grid.json | 21 ++ .../templates/components/gallery.json | 19 ++ .../templates/components/hero.json | 22 ++ .../templates/components/page.json | 31 ++ .../components/richtext_section.json | 13 + .../templates/components/teaser.json | 22 ++ .../templates/components/testimonial.json | 22 ++ 14 files changed, 561 insertions(+) create mode 100644 .claude/skills/migrate-to-storyblok/SKILL.md create mode 100644 .claude/skills/migrate-to-storyblok/templates/components/banner.json create mode 100644 .claude/skills/migrate-to-storyblok/templates/components/blog_post.json create mode 100644 .claude/skills/migrate-to-storyblok/templates/components/cta.json create mode 100644 .claude/skills/migrate-to-storyblok/templates/components/faq_item.json create mode 100644 .claude/skills/migrate-to-storyblok/templates/components/faq_section.json create mode 100644 .claude/skills/migrate-to-storyblok/templates/components/feature.json create mode 100644 .claude/skills/migrate-to-storyblok/templates/components/feature_grid.json create mode 100644 .claude/skills/migrate-to-storyblok/templates/components/gallery.json create mode 100644 .claude/skills/migrate-to-storyblok/templates/components/hero.json create mode 100644 .claude/skills/migrate-to-storyblok/templates/components/page.json create mode 100644 .claude/skills/migrate-to-storyblok/templates/components/richtext_section.json create mode 100644 .claude/skills/migrate-to-storyblok/templates/components/teaser.json create mode 100644 .claude/skills/migrate-to-storyblok/templates/components/testimonial.json diff --git a/.claude/skills/migrate-to-storyblok/SKILL.md b/.claude/skills/migrate-to-storyblok/SKILL.md new file mode 100644 index 000000000..1775d99ab --- /dev/null +++ b/.claude/skills/migrate-to-storyblok/SKILL.md @@ -0,0 +1,273 @@ +--- +name: migrate-to-storyblok +description: Help migrate a third-party website or CMS to Storyblok by generating component schemas from screenshots or URLs and pushing them with the Storyblok CLI. +--- + +# Migrate to Storyblok + +Guide the user through creating Storyblok component schemas that match their existing website or CMS, then push those schemas to their Storyblok space. + +## When to use + +Use this skill when the user wants to: + +- Migrate a website from a third-party CMS (WordPress, Drupal, Contentful, Sanity, etc.) to Storyblok. +- Model an existing website's structure as Storyblok components from a screenshot or a URL. +- Scaffold component schemas quickly to start a new Storyblok project based on an existing design. + +## Overview + +The workflow has four phases: + +1. **Resolve the target space** — find the space ID from config or ask the user. +2. **Analyze the source** — fetch the URL or examine the screenshot to identify UI sections. +3. **Generate component schemas** — copy and adapt templates or create new JSON files. +4. **Push to Storyblok** — run `storyblok components push`. + +## Phase 1: Resolve the target space + +Find the space ID by checking, in order: the `space` field in any `storyblok.config.*` file (root, `.storyblok/config.*`, or `~/.storyblok/config.*`); the `STORYBLOK_SPACE_ID` environment variable in `.env` files; subdirectory names under `.storyblok/components/` (each is a previously pulled space ID). If none of these yield a space ID, ask the user: "What is the ID of your Storyblok space? You can find it under Settings > Space in the Storyblok dashboard." + +## Phase 2: Analyze the source + +### From a URL + +1. Fetch the URL. +2. Analyze the HTML structure: + - Identify distinct page sections using semantic elements: `
`, `