gsp-start
GSP uses a dual-diamond architecture:
- Diamond 1 — Branding (4 skills, 4 phases): brand-brief → brand-research → brand-strategy → brand-identity → brand-guidelines (optional: brand-audit before research for existing brands)
- Diamond 2 — Project (6 phases): project-brief → research → design → critique → build → review
Multiple brands and projects can coexist. Projects reference a brand.
Step 1a: Scan .design/ state
Scan .design/ for existing brands and projects:
- Check
.design/branding/for brand directories (each has aconfig.jsonwithproject_type: "brand") - Check
.design/projects/for project directories (each has aconfig.jsonwithproject_type: "design") - Check for legacy flat
.design/config.jsonat root (pre-0.4.0 structure) - For each brand/project found, read its
config.jsonfor project metadata (name, created, preferences) and read itsSTATE.mdfor phase progress (the phase table with pending/complete/in-progress/needs-revision statuses)
Step 1b: Quick codebase check (inline — no agents)
If package.json exists, read it to extract:
- Framework (Next.js, Vite, Expo, etc.)
- Styling (Tailwind, CSS Modules, styled-components, etc.)
- Component library (shadcn/ui, Radix, MUI, etc.)
- Classification: greenfield (no custom code), boilerplate (scaffolded), or existing (real code)
Quick glob for component count: src/components/**/* or components/**/*.
Monorepo detection: After reading root package.json, glob for apps/*/package.json and packages/*/package.json. If any are found:
- Set
REPO_TYPE = monorepo - Read each discovered package.json to extract app name + primary framework dependency
- Build an app list:
[(apps/web, Next.js), (apps/mobile, Expo), ...]
If no nested package.json files found: set REPO_TYPE = single.
Also read .design/system/STACK.md if it exists — this is the global stack declaration for the workspace. When present, use it as the authoritative source for framework, styling, component library, and architecture. Surface it in the codebase summary box so every new project starts knowing the declared stack.
Also scan for brand-relevant assets:
- Logo files: glob for
**/logo*.{svg,png},**/icon*.{svg,png}in public/assets directories - Font files: glob for
**/*.{woff,woff2,ttf,otf}in public/fonts or similar - Color definitions: check
globals.cssorglobal.cssfor CSS custom properties
This is 2-4 fast reads — no agent spawn needed.
Step 2: Greet
Greet based on findings from Step 1. Use AskUserQuestion with clickable options to guide the user into the right flow.
Use plain text with Unicode characters for visual hierarchy:
- Diamonds:
◆complete,◈active/in-progress,◇pending - Dividers:
─── Label ──────────────────as section separators - Pipeline flow: phases connected by
───, diamond prefix per phase - Summary box:
┌──┐│└──┘border with key-value pairs inside
Fresh start (no .design/):
Show /gsp- ◇◇\n looks like a fresh start.
If codebase was detected, show a summary box:
┌──────────────────────────────────────────┐
│ framework Next.js 14 │
│ styling Tailwind + shadcn/ui │
│ components 47 detected │
│ assets logo.svg, 2 font files │
│ type existing codebase │
│ repo type monorepo (3 apps detected)│
│ apps web · mobile · docs │
│ stack declared (STACK.md ✓) │
└──────────────────────────────────────────┘
For single-app repos, show repo type: single app and omit the apps row.
Show stack: declared (STACK.md ✓) when .design/system/STACK.md exists — this signals to the user that every new project will inherit the workspace stack. If STACK.md is missing for an existing codebase, show stack: undeclared — run /gsp-design-system.
Use AskUserQuestion with:
- New brand — "Create a brand identity from scratch"
- Evolve existing brand — "I have brand materials to work with"
- Design project — "Start a design project (needs a brand first)"
- Both (brand + project) — "Full pipeline: brand then project"
- Quick project — "Skip branding, use a style preset"
Legacy .design/ detected (flat structure, pre-0.4.0):
Acknowledge the legacy project. Use AskUserQuestion: Start fresh brand, Start design project, Keep working.
Brands exist, no projects:
Show brand name + pipeline flow (compact single-line if complete, full pipeline if incomplete). Use AskUserQuestion: one option per existing brand to continue + Create new brand + Start design project.
Brands + projects exist (canonical format):
Show compact brand (single-line if complete) + full project pipeline flow. Then AskUserQuestion:
- Continue {project} — "pick up at {next phase}"
- New project — "start a new design project"
- New brand — "create a new brand identity"
- View progress — "see full progress dashboard"
Weave codebase signals into the greeting naturally when found.
Step 3: Route
From the greeting exchange, route to the right skill:
- New brand → invoke
/gsp-brand-briefvia Skill tool - Evolve existing brand → invoke
/gsp-brand-auditvia Skill tool - Design project → Check for brands first. If none exist, explain they need a brand first. Offer to create one (route to
/gsp-brand-briefwithe2e: true), or use a style preset (Quick flow). - Both (brand + project) → invoke
/gsp-brand-briefvia Skill tool withe2e: true - Quick project → Quick flow (Step 4)
- Continue existing work → route to
/gsp-progress
Step 4: Quick project flow
For users who want to skip branding and start designing immediately with a style preset.
4a: Style selection
Read ${CLAUDE_SKILL_DIR}/../gsp-style/styles/INDEX.yml and present styles grouped by category. Use AskUserQuestion with one option per mood group (showing 2-3 preset names as preview) plus Surprise me. When user picks a group, drill into specific presets. If user names a preset directly, skip the group step.
"Surprise me" logic: Weight by codebase type — dev tools → dark/minimal, content → editorial, SaaS → minimal/bold, e-commerce → warm/playful, unknown → random.
4b: Create minimal brand
- Create brand directory:
mkdir -p .design/branding/_style-{preset}/patterns/
-
Invoke
/gsp-style {preset}via Skill tool — this writes:{preset}.yml(brand style preset)- Foundation chunks (color, typography, spacing, elevation, radius)
INDEX.md
-
Write
.design/branding/_style-{preset}/config.json:
{
"version": "0.5.0",
"project_type": "brand",
"brand_mode": "quick",
"style_preset": "{preset}",
"system_config": {
"system_strategy": "generate"
}
}
- Write
.design/branding/_style-{preset}/STATE.mdwith:- Phase 0 (Audit):
skipped - Phase 1 (Discover):
skipped - Phase 2 (Strategy):
skipped - Phase 3 (Identity):
skipped - Phase 4 (System):
complete
- Phase 0 (Audit):
4c: Transition to project
Display:
style applied — {preset}
◇◇◇◇◆ brand: _style-{preset} (style-only)
now let's scope your project.
Route to /gsp-project-brief via Skill tool with the style brand pre-selected.
Upgrade path
If a user later wants full branding, they can:
- Run
/gsp-start→ "New brand" to create a real brand - Full diamond produces identity + patterns with real tokens
- Update the project's
brand.refto point to the new brand - Re-run build phases — they pick up the new tokens automatically
More from jubscodes/get-shit-pretty
get-shit-pretty
Design engineering for AI coding tools. Full pipeline: brand research, strategy, identity, guidelines, UI design, critique, accessibility audit, build, and review. Expertise skills (color, typography, visuals) serve the entire pipeline. 14 specialized agents with Apple HIG, Nielsen's heuristics, WCAG 2.2 AA, and design token standards.
17gsp-visuals
Define visual direction — imagery, 3D, video, textures, and surface treatments
16gsp-accessibility
Quick contrast checks and token WCAG audits — inline, no agent
16gsp-help
Show all skills
16gsp-color
Design color systems — palettes, contrast, semantic mapping, dark mode
16gsp-typography
Design type systems — scale, pairing, fluid type, vertical rhythm
16