Ship Studio Project
Guides an AI assistant to build a SvelteKit 5 marketing site for a non-developer using Ship Studio, with mandatory skills, documentation, and design rules.
What this file does
Guides an AI assistant to build a SvelteKit 5 marketing site for a non-developer using Ship Studio, with mandatory skills, documentation, and design rules.
When to use it
- You are building a marketing site for a non-technical client using Ship Studio
- You want a strict workflow for AI-assisted SvelteKit development with skill chaining
- You need a template for enforcing documentation updates after every code change
- You want to avoid generic design patterns and follow human-first design principles
Assumes this stack
Ship Studio Project
This is a SvelteKit 2 project with Svelte 5 and Tailwind CSS. You're helping a non-developer build a website. Keep explanations simple and jargon-free.
Environment: Ship Studio App
You are running inside the Ship Studio app, which handles the development environment automatically.
Important things to know:
- The dev server is already running - you don't need to start it
- The user sees a live preview of their site in the app
- You don't need to run
npm run devor any server commands - Changes to files are reflected automatically in the preview
If the user says they can't see their site or the preview isn't working:
"Try clicking the Projects button in the top right corner to go back to the project list, then reopen your project. This restarts the preview."
FIRST: Check for Onboarding
Before doing anything else, check if SITE.md exists.
- If
SITE.mddoes NOT exist: Run the/onboardingskill immediately to learn about their business and create a personalized plan. - If
SITE.mdexists: Read it to understand the project before making changes.
Before Building: Creative Brief
Before writing any code, answer these questions:
- What's the core concept? (Not just "a website" but the specific idea)
- What visual metaphors fit this concept? (e.g., for a dev parody: terminals, code snippets, GitHub aesthetics)
- What makes this site DIFFERENT from a generic template?
- How will each section have its own visual identity? (Don't repeat the same card pattern everywhere)
- What interactive moments could surprise visitors?
If you can't answer these, you're not ready to build yet.
The skills are useful, but they need to be applied after creative thinking, not instead of it.
Your Skills
You have specialized skills in .claude/skills/. Use them constantly:
| Skill | When to Use | Invocable |
|---|---|---|
| onboarding | New project setup, no SITE.md exists | /onboarding |
| page-remake | User provides URL to remake/rebuild/recreate | /page-remake |
| brand-identity | Choosing colors, fonts, visual direction | /brand |
| copywriting | Writing any text for the site | Auto |
| marketing-site-design | Planning page layouts, sections | Auto |
| sanity-cms | User wants editable content/CMS | /sanity-cms |
| documentation-writer | After EVERY code change - update SITE.md | Auto |
| svelte-sveltekit-expert | Writing any Svelte/SvelteKit code | Auto |
| svelte-code-writer | Svelte MCP tools for docs & code validation | Auto |
| frontend-design | Creating any visual component | Auto |
| animations | Adding micro-interactions and motion | /animate |
| svelte-best-practices | Performance optimization | /optimize |
Workflow for Every Build Task
- Check
SITE.mdfor brand personality and preferences - Use
marketing-site-designto plan section architecture - Use
brand-identityto select colors/fonts (follow design principles) - Use
copywritingto write specific, human-sounding text - Use
frontend-design+svelte-sveltekit-expertfor implementation - Run
mcp__svelte__svelte-autofixeron every .svelte file before finalizing - Use
documentation-writerto update SITE.md after changes
Automatic Skill Triggers
Use these skills automatically when you detect these patterns:
| Trigger | Action |
|---|---|
Editing any .svelte file | Run mcp__svelte__svelte-autofixer before finishing |
No SITE.md exists | Run /onboarding skill immediately |
| User shares a URL to copy/remake | Run /page-remake skill |
| User mentions "CMS" or "edit content myself" | Run /sanity-cms skill |
After ANY file change in src/ | Update SITE.md using documentation-writer |
| Unsure about Svelte 5 syntax | Use mcp__svelte__get-documentation |
Quick Skill Router
When user mentions these words, use the corresponding skill:
| User Says | Primary Skill | Also Use |
|---|---|---|
| "colors", "fonts", "brand", "style" | brand-identity | frontend-design |
| "copy", "text", "headline", "CTA", "write" | copywriting | - |
| "section", "layout", "hero", "page structure" | marketing-site-design | frontend-design |
| "animate", "motion", "transition", "hover" | animations | - |
| "CMS", "edit myself", "sanity", "editable" | /sanity-cms | documentation-writer |
| URL + "remake/rebuild/copy/like this" | /page-remake | all skills |
| "new project", "start fresh" | /onboarding | - |
| "optimize", "performance", "faster" | /optimize | svelte-best-practices |
| Building any component/page | svelte-sveltekit-expert | frontend-design, svelte-code-writer |
Pre-flight Checklist
Before responding to ANY build request, verify:
- Does
SITE.mdexist? If not → Run/onboardingFIRST - Have I read
SITE.mdfor brand/personality context? - Did user provide a URL to copy? → Run
/page-remake - Does user want CMS/editable content? → Run
/sanity-cms
Skill Chaining Order
For building a new page, follow this sequence:
- onboarding (if no SITE.md)
- marketing-site-design → Plan section architecture
- brand-identity → Visual decisions (colors, fonts)
- copywriting → Write all text content
- frontend-design + svelte-sveltekit-expert → Implement
- svelte-code-writer → Validate with MCP autofixer
- animations → Add motion and polish
- documentation-writer → Update SITE.md
Mandatory Workflow Enforcement
BEFORE writing any .svelte file:
- If
SITE.mddoesn't exist → Run/onboardingFIRST - Read
SITE.mdfor brand context
AFTER writing any .svelte file:
- Run
mcp__svelte__svelte-autofixeron the code - Review and fix any issues identified
- Re-run autofixer until NO issues remain
- Update
SITE.mdusing documentation-writer guidelines
This is NOT optional. Skipping these steps leads to broken code and confused users.
Code Quality Gate
BEFORE marking any Svelte task as complete, verify:
- Code uses Svelte 5 runes (
$state,$props,$derived,$effect) - TypeScript interfaces defined for component props
-
mcp__svelte__svelte-autofixerrun on the code - All autofixer suggestions addressed
- Autofixer re-run until clean (no remaining issues)
-
SITE.mdupdated with what changed - User informed in plain English
DO NOT skip the autofixer steps. It catches real errors that will break the site.
MCP Tools Available
This project has MCP servers configured. Use these tools directly:
Svelte MCP (mcp__svelte__*):
mcp__svelte__list-sections- List available documentationmcp__svelte__get-documentation- Fetch specific docs by section namemcp__svelte__svelte-autofixer- Validate and fix Svelte codemcp__svelte__playground-link- Generate shareable playground links
Playwright MCP (if available):
- Browser automation for screenshots and testing
Sanity MCP (if authenticated):
- CMS content management
Human-First Design Principles
Great design feels intentional and distinctive. These guidelines help create sites that stand out and feel memorable.
The Goal
Sites should feel:
- Intentional - Every choice has a reason
- Distinctive - Not a copy of common patterns
- Memorable - Something visitors remember
- Human - Warm and approachable
Typography Guidance
Common fonts like Inter, Roboto, and system fonts work well but are everywhere. For distinction, explore alternatives:
Modern & Clean:
- Space Grotesk + DM Sans
- Outfit + Source Sans 3
- Sora + Nunito
Elegant & Refined:
- Playfair Display + Lato
- Cormorant Garamond + Montserrat
- Fraunces + Work Sans
Warm & Approachable:
- Poppins + Nunito Sans
- Quicksand + Open Sans
- Comfortaa + Mulish
These aren't rules—they're starting points. The right font depends on the brand.
Note: Always verify font availability at fonts.google.com before using. Include fallback fonts in your CSS.
Color Guidance
Think twice about these common defaults:
#3B82F6(Tailwind blue-500) as primary accent - it's everywhere- Purple-to-blue gradients on white backgrounds - very common
- Pure black
#000000on pure white#FFFFFF- can feel harsh
Consider instead:
- Off-black (
#1C1917) on off-white (#FAFAF9) for softer contrast - Custom accent colors that reflect the brand's personality
- The 60-30-10 rule: 60% dominant, 30% secondary, 10% accent
Layout Guidance
Common patterns to use thoughtfully:
- 3-column feature grids with generic icons - try alternatives like 2-column, asymmetric, or bento layouts
- Centered everything - vary alignment for visual interest
- Equal spacing throughout - vary spacing for rhythm
Background patterns that feel dated:
- Abstract blob SVGs
- Wave section dividers
- Gradient mesh backgrounds
Alternatives: geometric shapes, grain textures, solid colors with intentional variation, or high-quality photography.
Writing Guidance
Overused words to consider alternatives for: revolutionize, leverage, synergy, cutting-edge, seamless, empower, game-changer, next-generation, best-in-class, world-class, unlock, elevate, transform, streamline, robust, scalable, innovative, disrupt, holistic, ecosystem, paradigm, optimize, dynamic, curated, bespoke
Instead: Be specific. Use numbers. Focus on outcomes. Write like a human talking to another human.
CRITICAL: Maintain Documentation
You MUST keep documentation updated. This is essential for non-technical users.
Files to Maintain
-
SITE.md- The main documentation file. Update EVERY time you make changes:# [Site Name] > [One-sentence tagline] ## Brand Identity - Personality: [from onboarding] - Colors: [what we're using] - Fonts: [what we're using] ## Pages - **Homepage** (`/`) - [description of what's on it] - **About** (`/about`) - [description] ## Components - **Navbar** - [what it contains, how to customize] - **Footer** - [what it contains] ## Recent Changes - [Date]: Added hero section with [description] - [Date]: Created contact page ## How to Customize - To change colors: [simple instructions] - To add a new page: [simple instructions] -
Create
SITE.mdimmediately if it doesn't exist (via onboarding). -
Update
SITE.mdafter EVERY change - no exceptions. -
Use simple language - Say "the main page" not "the root route". Say "the navigation bar at the top" not "the header component".
Project Structure
src/
├── routes/ # SvelteKit file-based routing
│ ├── +layout.svelte # The wrapper around all pages (has fonts, global styles)
│ ├── +page.svelte # Homepage - EDIT THIS for the main page
│ └── [folders]/+page.svelte # Other pages (about/, contact/, etc.)
├── lib/ # Reusable components (Navbar, Footer, etc.)
│ └── components/ # Put components here
├── app.html # HTML template
└── app.css # Global styles + Tailwind
static/ # Images and static files
Rules for Building
DO:
- Run
/onboardingfor new projects without SITE.md - Check SITE.md before every task for brand context
- Use skills for visual decisions and code patterns
- Edit
src/routes/+page.sveltefor the homepage - Use Tailwind CSS classes for ALL styling
- Create components in
src/lib/components/ - Put images in
static/folder - Update
SITE.mdafter every change - Explain what you did in simple terms
- Make intentional, distinctive design choices
- Use Svelte 5 runes syntax (
$state,$props,$derived,$effect) - Define TypeScript interfaces for component props
- Run
mcp__svelte__svelte-autofixeron all.sveltefiles before finishing
DON'T:
- NEVER create
.htmlfiles - this is Svelte/SvelteKit - NEVER create separate
.cssfiles - use Tailwind - NEVER use
<script>tags withoutlang="ts"- use TypeScript - NEVER leave the user confused about what changed
- NEVER use technical jargon without explaining it
- NEVER skip updating SITE.md
- NEVER use Svelte 4 syntax (export let, $: reactive) - use Svelte 5 runes
File-Based Routing
Each folder in src/routes/ becomes a page:
src/routes/+page.svelte→ Homepage (yoursite.com)src/routes/about/+page.svelte→ About page (yoursite.com/about)src/routes/contact/+page.svelte→ Contact page (yoursite.com/contact)src/routes/pricing/+page.svelte→ Pricing page (yoursite.com/pricing)
Example: Creating a New Page
If the user asks for an "About" page:
- Check
SITE.mdfor brand personality - Use
marketing-site-designskill to plan sections - Use
brand-identityskill for visual consistency - Create
src/routes/about/+page.svelteusingsvelte-sveltekit-expertpatterns - Write copy using
copywritingskill guidelines - Update
SITE.mdusingdocumentation-writerskill - Tell the user: "I created an About page. You can see it by going to /about in the preview."
After Every Task
- Make the requested changes (using your skills, following design principles)
- Update
SITE.mdwith what changed - Tell the user what you did in plain English
- Let them know how to see the changes
Adding CMS (When Requested)
When the user wants to edit content themselves, run the /sanity-cms skill. This will:
- Set up Sanity CMS in the project
- Create schemas for editable content
- Connect the frontend to fetch CMS data
- Give them a friendly editing dashboard
The .mcp.json file is already configured for Sanity. User authenticates via OAuth when first using Sanity tools.
Remember
The user is NOT a developer. They're using Ship Studio to build a website without coding knowledge. Your job is to:
- Onboard them properly (if no SITE.md)
- Build what they ask for (using your skills)
- Make it feel distinctive and intentional (not generic)
- Keep everything documented so they understand their site
- Explain things simply
- Make them feel confident about their project
ALWAYS use your skills. ALWAYS follow design principles. ALWAYS update SITE.md.
What's inside
12 skill definitions, 7 workflow checklists, 4 code quality gates, 2 file maintenance templates, and 1 project structure diagram
Change this for your project
- Replace
ship-studio/sveltekit-static-marketing-site-starterwith your own repository name - Replace
Ship Studio appreferences with your own development environment name - Replace
.claude/skills/path with your own skills directory if different
Where it goes
Save as CLAUDE.md in your repository root. Claude Code reads it automatically at the start of every session.
Worth borrowing
- Mandatory pre-flight checklist before any build task ensures context is never missed
- Skill chaining order enforces a repeatable creative process from onboarding to documentation
- Human-first design principles with specific font pairings and color warnings help avoid generic results
Related Documents
Code indexing for AI agents: summarization strategies and evaluation systems
Synthesises 2024-2025 research on code indexing for AI agents, covering summarisation strategies, hybrid retrieval architectures, and evaluation benchmarks.
Claude AI Git Workflow Integration
Recommends using the git-ai-commit CLI tool for AI-generated commit messages instead of manual ones.
Missing Business Agents Research — FLUXION 2026
Identifies 12 missing business operations agents for an indie software company and ranks them by impact and effort with €0 implementation plans.
角色:金牌面试者
Prompts Claude to act as a resume consultant, collecting user info and generating a polished A4-format React resume component with STAR-format experience.