ship-create 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/create.mjs +261 -123
- package/package.json +1 -1
- package/templates/.claude/commands/build.md +90 -45
- package/templates/.claude/skills/ship-method/SKILL.md +26 -53
- package/templates/.claude/skills/uiux-frontend/SKILL.md +321 -0
- package/templates/.cursorrules +7 -5
- package/templates/.windsurfrules +7 -5
- package/templates/AGENTS.md +7 -5
- package/templates/CLAUDE.md +7 -5
- package/templates/docs/DESIGN_SPEC.md +50 -0
- package/templates/docs/DESIGN_SYSTEM.md +145 -0
package/templates/.windsurfrules
CHANGED
|
@@ -51,11 +51,13 @@ All docs live under `docs/`:
|
|
|
51
51
|
|
|
52
52
|
6. **Never invent business facts** (market size, pricing, real metrics, real user quotes). Draft clearly-labeled `[TBD: ...]` placeholders or ask the user.
|
|
53
53
|
|
|
54
|
-
7. **
|
|
55
|
-
|
|
56
|
-
- **
|
|
57
|
-
- **
|
|
58
|
-
-
|
|
54
|
+
7. **When `/build` is invoked: act immediately, no planning, no task list.**
|
|
55
|
+
- **First:** read `docs/PROJECT.md` + `docs/HUMAN_FLOW.md` silently. If empty, ask one question: *"Describe your idea in one sentence."* Fill docs, then continue.
|
|
56
|
+
- **Second:** propose 2–3 theme options (one line each), let the user pick, apply to `app/globals.css` + `app/layout.tsx`. This is the first visible output.
|
|
57
|
+
- **Third:** replace `app/page.tsx` with the real home screen from `HUMAN_FLOW.md`. User runs `npm run dev` and sees their product.
|
|
58
|
+
- **Then:** ask "which feature first?" and build just that one.
|
|
59
|
+
- **No task list at start.** No spec before theme. No gate that blocks visible output.
|
|
60
|
+
- See `.claude/skills/ship-method/theme-guide.md` for product-type → palette reference.
|
|
59
61
|
|
|
60
62
|
## Quick Orientation for a New Agent Session
|
|
61
63
|
|
package/templates/AGENTS.md
CHANGED
|
@@ -51,11 +51,13 @@ All docs live under `docs/`:
|
|
|
51
51
|
|
|
52
52
|
6. **Never invent business facts** (market size, pricing, real metrics, real user quotes). Draft clearly-labeled `[TBD: ...]` placeholders or ask the user.
|
|
53
53
|
|
|
54
|
-
7. **
|
|
55
|
-
|
|
56
|
-
- **
|
|
57
|
-
- **
|
|
58
|
-
-
|
|
54
|
+
7. **When `/build` is invoked: act immediately, no planning, no task list.**
|
|
55
|
+
- **First:** read `docs/PROJECT.md` + `docs/HUMAN_FLOW.md` silently. If empty, ask one question: *"Describe your idea in one sentence."* Fill docs, then continue.
|
|
56
|
+
- **Second:** propose 2–3 theme options (one line each), let the user pick, apply to `app/globals.css` + `app/layout.tsx`. This is the first visible output.
|
|
57
|
+
- **Third:** replace `app/page.tsx` with the real home screen from `HUMAN_FLOW.md`. User runs `npm run dev` and sees their product.
|
|
58
|
+
- **Then:** ask "which feature first?" and build just that one.
|
|
59
|
+
- **No task list at start.** No spec before theme. No gate that blocks visible output.
|
|
60
|
+
- See `.claude/skills/ship-method/theme-guide.md` for product-type → palette reference.
|
|
59
61
|
|
|
60
62
|
## Quick Orientation for a New Agent Session
|
|
61
63
|
|
package/templates/CLAUDE.md
CHANGED
|
@@ -51,11 +51,13 @@ All docs live under `docs/`:
|
|
|
51
51
|
|
|
52
52
|
6. **Never invent business facts** (market size, pricing, real metrics, real user quotes). Draft clearly-labeled `[TBD: ...]` placeholders or ask the user.
|
|
53
53
|
|
|
54
|
-
7. **
|
|
55
|
-
|
|
56
|
-
- **
|
|
57
|
-
- **
|
|
58
|
-
-
|
|
54
|
+
7. **When `/build` is invoked: act immediately, no planning, no task list.**
|
|
55
|
+
- **First:** read `docs/PROJECT.md` + `docs/HUMAN_FLOW.md` silently. If empty, ask one question: *"Describe your idea in one sentence."* Fill docs, then continue.
|
|
56
|
+
- **Second:** propose 2–3 theme options (one line each), let the user pick, apply to `app/globals.css` + `app/layout.tsx`. This is the first visible output.
|
|
57
|
+
- **Third:** replace `app/page.tsx` with the real home screen from `HUMAN_FLOW.md`. User runs `npm run dev` and sees their product.
|
|
58
|
+
- **Then:** ask "which feature first?" and build just that one.
|
|
59
|
+
- **No task list at start.** No spec before theme. No gate that blocks visible output.
|
|
60
|
+
- See `.claude/skills/ship-method/theme-guide.md` for product-type → palette reference.
|
|
59
61
|
|
|
60
62
|
## Quick Orientation for a New Agent Session
|
|
61
63
|
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Design Spec
|
|
2
|
+
|
|
3
|
+
> Screen-by-screen design decisions. Auto-populated by the `uiux-frontend` skill during `/build`. Each section is filled when that screen is built — do not write speculative specs for unbuilt screens.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Global decisions
|
|
8
|
+
|
|
9
|
+
| Decision | Value |
|
|
10
|
+
|----------|-------|
|
|
11
|
+
| Site type | `[FILL: Landing page / Member system]` |
|
|
12
|
+
| Language | `[FILL: Thai / English]` |
|
|
13
|
+
| Font | `[FILL]` |
|
|
14
|
+
| Color palette | `[FILL: shadcn palette name]` |
|
|
15
|
+
| UI trend | `[FILL]` |
|
|
16
|
+
| Trend source | `[FILL: URL or publication that confirmed this trend is current]` |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Screen specs
|
|
21
|
+
|
|
22
|
+
Each screen gets one entry. Format:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
### [Screen name] — [route e.g. /dashboard]
|
|
26
|
+
Status: [planned / in-progress / done]
|
|
27
|
+
Layout: [pattern used]
|
|
28
|
+
Trend application: [how the trend is expressed here]
|
|
29
|
+
Key components: [shadcn components used]
|
|
30
|
+
States: [loading ✓/✗ | empty ✓/✗ | error ✓/✗ | success ✓/✗]
|
|
31
|
+
Revenue link: [how this screen connects to money]
|
|
32
|
+
Notes: [any deviations from the design system, or decisions to revisit]
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
<!-- SCREENS BELOW — filled by uiux-frontend skill during /build -->
|
|
38
|
+
|
|
39
|
+
### Home / Entry screen — /
|
|
40
|
+
Status: planned
|
|
41
|
+
Layout:
|
|
42
|
+
Trend application:
|
|
43
|
+
Key components:
|
|
44
|
+
States: loading ✗ | empty ✗ | error ✗ | success ✗
|
|
45
|
+
Revenue link:
|
|
46
|
+
Notes:
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
<!-- Add a new entry below for each screen as it gets built -->
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Design System
|
|
2
|
+
|
|
3
|
+
> Auto-generated by `/build`. Update here when design decisions change — this is the source of truth for all visual decisions in this project.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Stack
|
|
8
|
+
|
|
9
|
+
| Layer | Choice |
|
|
10
|
+
|-------|--------|
|
|
11
|
+
| CSS framework | Tailwind CSS v4 |
|
|
12
|
+
| Component library | shadcn/ui |
|
|
13
|
+
| Font loading | `next/font/google` |
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Color Palette
|
|
18
|
+
|
|
19
|
+
**Base theme:** `[FILL: zinc / slate / blue / green / orange / rose / violet]`
|
|
20
|
+
|
|
21
|
+
All color tokens are from shadcn's CSS variable system. Do not hardcode hex or rgb values anywhere — use only these tokens:
|
|
22
|
+
|
|
23
|
+
| Token | Usage |
|
|
24
|
+
|-------|-------|
|
|
25
|
+
| `bg-background` | Page background (always white in light mode) |
|
|
26
|
+
| `text-foreground` | Primary text |
|
|
27
|
+
| `text-muted-foreground` | Secondary text, captions, placeholders |
|
|
28
|
+
| `bg-primary` | Primary action background |
|
|
29
|
+
| `text-primary-foreground` | Text on primary background |
|
|
30
|
+
| `bg-secondary` | Secondary/subtle backgrounds |
|
|
31
|
+
| `border` | Dividers, card borders |
|
|
32
|
+
| `bg-destructive` | Error states, delete actions |
|
|
33
|
+
| `bg-accent` | Hover/active backgrounds |
|
|
34
|
+
| `bg-card` | Card surfaces |
|
|
35
|
+
| `bg-sidebar` | Sidebar background |
|
|
36
|
+
|
|
37
|
+
**Dark mode:** not scoped for MVP — defer until user requests it.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Typography
|
|
42
|
+
|
|
43
|
+
**Language:** `[FILL: Thai / English]`
|
|
44
|
+
|
|
45
|
+
**Font:** `[FILL: Prompt / IBM Plex Thai / Noto Sans Thai / Anuphan / Inter / Geist / Playfair Display + DM Sans]`
|
|
46
|
+
|
|
47
|
+
**Font stack type:** `[FILL: Single-stack (Thai) / Sans-only (Modern) / Serif + Sans (Luxury)]`
|
|
48
|
+
|
|
49
|
+
| Role | Tailwind classes | Notes |
|
|
50
|
+
|------|-----------------|-------|
|
|
51
|
+
| Display / Hero h1 | `[FILL]` | Used in hero sections only |
|
|
52
|
+
| Page title h1 | `text-3xl font-bold` (Thai) / `text-3xl font-bold tracking-tight` (EN) | |
|
|
53
|
+
| Section heading h2 | `text-xl font-semibold` | |
|
|
54
|
+
| Card heading h3 | `text-base font-semibold` | |
|
|
55
|
+
| Body | `text-base font-normal leading-relaxed` | Thai: `leading-loose` for denser text |
|
|
56
|
+
| Caption / helper | `text-sm text-muted-foreground` | |
|
|
57
|
+
| Label | `text-sm font-medium` | Form labels |
|
|
58
|
+
| Button | `text-sm font-medium` | |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Spacing Scale
|
|
63
|
+
|
|
64
|
+
Using Tailwind's default spacing scale. These are the project's agreed units — don't introduce other values:
|
|
65
|
+
|
|
66
|
+
| Use | Class | px |
|
|
67
|
+
|-----|-------|----|
|
|
68
|
+
| Page horizontal padding | `px-4 sm:px-6 lg:px-8` | 16 / 24 / 32 |
|
|
69
|
+
| Section vertical gap | `space-y-8` / `gap-8` | 32 |
|
|
70
|
+
| Card padding | `p-6` | 24 |
|
|
71
|
+
| Form field gap | `space-y-4` | 16 |
|
|
72
|
+
| Inline item gap | `gap-2` / `gap-3` | 8 / 12 |
|
|
73
|
+
| Min touch target | `h-11` | 44 |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Border Radius
|
|
78
|
+
|
|
79
|
+
| Token | Class | Usage |
|
|
80
|
+
|-------|-------|-------|
|
|
81
|
+
| Default | `rounded-md` | Buttons, inputs, badges |
|
|
82
|
+
| Card | `rounded-lg` | Cards, modals, sheets |
|
|
83
|
+
| Full | `rounded-full` | Avatars, tags, pills |
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Shadow
|
|
88
|
+
|
|
89
|
+
| Class | Usage |
|
|
90
|
+
|-------|-------|
|
|
91
|
+
| `shadow-sm` | Cards, inputs on focus |
|
|
92
|
+
| `shadow-md` | Dropdowns, popovers |
|
|
93
|
+
| `shadow-lg` | Modals, dialogs |
|
|
94
|
+
| `shadow-none` | Flat/minimal screens |
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## UI Trend
|
|
99
|
+
|
|
100
|
+
**Selected trend:** `[FILL: trend name]`
|
|
101
|
+
**Reason:** `[FILL: why this trend fits this product + audience]`
|
|
102
|
+
|
|
103
|
+
**Trend implementation rules for this project:**
|
|
104
|
+
`[FILL: specific Tailwind classes and patterns used to express the trend — filled by /build Step 4]`
|
|
105
|
+
|
|
106
|
+
**Trend scope:** Applied to `[FILL: hero section / cards / overall layout / specific screens]`. Not applied to: forms, error states, data tables (keep those neutral for usability).
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Component Decisions
|
|
111
|
+
|
|
112
|
+
| Need | Component | Notes |
|
|
113
|
+
|------|-----------|-------|
|
|
114
|
+
| Navigation | `[FILL]` | |
|
|
115
|
+
| Data entry | `[FILL]` | |
|
|
116
|
+
| Data display | `[FILL]` | |
|
|
117
|
+
| Modals | `[FILL]` | |
|
|
118
|
+
| Feedback | `[FILL]` | |
|
|
119
|
+
| Global search | `[FILL: Command / none]` | |
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Icons
|
|
124
|
+
|
|
125
|
+
Use `lucide-react` (already bundled with shadcn). Do not mix icon libraries.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Animation
|
|
130
|
+
|
|
131
|
+
Keep animations subtle and intentional:
|
|
132
|
+
- Micro-interactions: `transition-all duration-150`
|
|
133
|
+
- Modal/sheet open: shadcn built-in (Radix transitions)
|
|
134
|
+
- Trend-specific animation: `[FILL: if any — e.g. spring scale for Squishy UI]`
|
|
135
|
+
- Disable if `prefers-reduced-motion`: wrap custom animations in `@media (prefers-reduced-motion: no-preference)`
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Accessibility Baseline
|
|
140
|
+
|
|
141
|
+
- Contrast: ≥ 4.5:1 for body text, ≥ 3:1 for large text/UI components
|
|
142
|
+
- Focus ring: Tailwind `ring-2 ring-primary ring-offset-2` (shadcn default)
|
|
143
|
+
- Every form input paired with `<Label htmlFor="...">`
|
|
144
|
+
- Icon-only buttons: `aria-label` required
|
|
145
|
+
- Color not used as the only differentiator (always pair color with shape/text)
|