Skip to content

Commit c2d1a31

Browse files
committed
Initial Spark Skill
1 parent 8b6ff3a commit c2d1a31

File tree

12 files changed

+6481
-0
lines changed

12 files changed

+6481
-0
lines changed

plugins/spark/skills/spark-app-template/SKILL.md

Lines changed: 490 additions & 0 deletions
Large diffs are not rendered by default.

plugins/spark/skills/spark-app-template/references/color-palettes.md

Lines changed: 519 additions & 0 deletions
Large diffs are not rendered by default.

plugins/spark/skills/spark-app-template/references/component-patterns.md

Lines changed: 977 additions & 0 deletions
Large diffs are not rendered by default.

plugins/spark/skills/spark-app-template/references/design-system.md

Lines changed: 591 additions & 0 deletions
Large diffs are not rendered by default.

plugins/spark/skills/spark-app-template/references/performance-checklist.md

Lines changed: 628 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 302 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,302 @@
1+
# PRD Template - Spark App Template
2+
3+
## Purpose
4+
5+
A Product Requirements Document (PRD) helps structure thinking before implementation. Use this simplified template to plan features, design direction, and success criteria.
6+
7+
## When to Use
8+
9+
- Planning new applications
10+
- Adding major features
11+
- Clarifying requirements
12+
- Aligning design decisions
13+
- Documenting design system choices
14+
15+
## Template
16+
17+
---
18+
19+
# [Application Name]
20+
21+
## Purpose Statement
22+
23+
*(One sentence describing what this web app does and why it exists)*
24+
25+
Example: "A weekly meal planning application that helps users organize their meals and automatically generates consolidated grocery shopping lists."
26+
27+
---
28+
29+
## Experience Qualities
30+
31+
*(Three adjectives with one-sentence elaborations defining the user experience)*
32+
33+
1. **[Adjective]** - [One-sentence elaboration]
34+
2. **[Adjective]** - [One-sentence elaboration]
35+
3. **[Adjective]** - [One-sentence elaboration]
36+
37+
Example:
38+
1. **Effortless** - Planning meals should feel intuitive and quick, not like a chore
39+
2. **Organized** - Clear visual structure makes the week's meals easy to scan and manage
40+
3. **Satisfying** - Generating a shopping list from planned meals should feel like magic
41+
42+
---
43+
44+
## Complexity Level
45+
46+
*(Select ONE and explain why)*
47+
48+
- [ ] **Micro Tool** (single-purpose application)
49+
- *Why*: [One-sentence justification]
50+
- *Example*: Calculator app, color picker, unit converter
51+
52+
- [ ] **Content Showcase** (information-focused)
53+
- *Why*: [One-sentence justification]
54+
- *Example*: Marketing landing page, portfolio, blog
55+
56+
- [ ] **Light Application** (multiple features with basic state)
57+
- *Why*: [One-sentence justification]
58+
- *Example*: Todo list, meal planner, expense tracker
59+
60+
- [ ] **Complex Application** (advanced functionality, multiple views)
61+
- *Why*: [One-sentence justification]
62+
- *Example*: CRM, analytics dashboard, project management tool
63+
64+
---
65+
66+
## Essential Features
67+
68+
*(For each core feature, document:)*
69+
70+
### Feature 1: [Feature Name]
71+
72+
- **Functionality**: What it does
73+
- **Purpose**: Why it matters to users
74+
- **Trigger**: How the user initiates it
75+
- **Progression**: Terse UX flow (use → to separate steps)
76+
- Example: `Click slot → Enter meal name + ingredients → Save → Meal saved to slot`
77+
- **Success Criteria**: How we'll know it works
78+
79+
### Feature 2: [Feature Name]
80+
81+
*(Repeat structure above)*
82+
83+
---
84+
85+
## Edge Case Handling
86+
87+
*(How will the app handle unexpected situations?)*
88+
89+
- **[Edge Case Name]**: [Short one-line solution]
90+
- **[Edge Case Name]**: [Short one-line solution]
91+
92+
Example:
93+
- **Empty week**: Show friendly empty state with prompt to add first meal
94+
- **No ingredients**: Allow meals without ingredients (eating out, leftovers)
95+
- **Duplicate ingredients**: Combine same ingredients across meals in grocery list
96+
97+
---
98+
99+
## Design Direction
100+
101+
*(What specific feelings should the design evoke in users?)*
102+
103+
Example: "The design should feel like a well-organized kitchen bulletin board - warm, practical, and inviting. It should reduce the cognitive load of meal planning by presenting information clearly and making actions obvious."
104+
105+
---
106+
107+
## Color Selection
108+
109+
*(Describe the color scheme approach and specific colors. Use OKLCH format.)*
110+
111+
### Color Palette
112+
113+
- **Primary Color**: `oklch(L C H)` - [What it communicates]
114+
- **Secondary Colors**: `oklch(L C H)` - [Their purposes]
115+
- **Accent Color**: `oklch(L C H)` - [For CTAs and important elements]
116+
117+
### Foreground/Background Pairings
118+
119+
*(Document text colors on backgrounds with WCAG AA validation)*
120+
121+
- `Background (name oklch(L C H))`: `Text color (oklch(L C H))` - Ratio [X.X:1] [✓ or ✗]
122+
123+
Example:
124+
- `Background (Warm Cream oklch(0.96 0.02 85))`: `Dark brown text (oklch(0.25 0.02 55))` - Ratio 8.5:1 ✓
125+
- `Primary (Herb Green oklch(0.55 0.15 145))`: `White text (oklch(0.99 0 0))` - Ratio 4.8:1 ✓
126+
127+
---
128+
129+
## Font Selection
130+
131+
*(What characteristics should the typefaces convey, and which fonts should be used?)*
132+
133+
**Chosen Fonts**:
134+
- **Headings**: [Font Name] - [Character description]
135+
- **Body**: [Font Name] - [Character description]
136+
- **Code** *(if applicable)*: [Font Name]
137+
138+
### Typographic Hierarchy
139+
140+
- **H1 (Page Title)**: [Font] [Weight]/[Size]px/[Tracking]
141+
- **H2 (Section Headers)**: [Font] [Weight]/[Size]px/[Tracking]
142+
- **H3 (Subsections)**: [Font] [Weight]/[Size]px/[Tracking]
143+
- **Body (Main Text)**: [Font] [Weight]/[Size]px
144+
- **Caption (Supporting)**: [Font] [Weight]/[Size]px
145+
146+
Example:
147+
- **H1 (App Title)**: Space Grotesk Bold/32px/tight letter spacing
148+
- **Body (Meal Names)**: Source Sans 3 Regular/16px
149+
- **Caption (Ingredients)**: Source Sans 3 Regular/14px/muted color
150+
151+
---
152+
153+
## Animations
154+
155+
*(How should animations be used? Balance subtle functionality with moments of delight.)*
156+
157+
Example: "Subtle animations reinforce actions without slowing down the experience - meals should 'pop' into place when added, and the grocery list should build item by item when generated, creating a satisfying moment of accomplishment."
158+
159+
---
160+
161+
## Component Selection
162+
163+
### UI Components
164+
165+
*(Which shadcn components will be used?)*
166+
167+
- **[Component Name]**: [Use case]
168+
- **[Component Name]**: [Use case]
169+
170+
Example:
171+
- **Card**: For each day's meal container and the grocery list panel
172+
- **Dialog**: For adding/editing meals with ingredient entry
173+
- **Button**: Primary for generate list, secondary for add meal actions
174+
- **Checkbox**: For checking off grocery items
175+
176+
### Customizations
177+
178+
*(Any custom components needed beyond shadcn?)*
179+
180+
- **[Custom Component]**: [Why needed, what it does]
181+
182+
Example:
183+
- **Meal Slot Component**: Custom component showing empty state vs filled state with hover interactions
184+
- **Ingredient Chip**: Removable tags for ingredients during entry
185+
186+
### Component States
187+
188+
*(How should interactive elements behave in different states?)*
189+
190+
- **[Element] - [State]**: [Behavior/appearance]
191+
192+
Example:
193+
- **Empty meal slot**: Dashed border, muted plus icon, hover brightens
194+
- **Filled meal slot**: Solid background, meal name visible, hover shows edit option
195+
- **Grocery item checked**: Reduced opacity, strikethrough, checkbox filled
196+
197+
### Icon Selection
198+
199+
*(Which Lucide icons represent each action?)*
200+
201+
- **[Action]**: [Icon name]
202+
203+
Example:
204+
- **Add meal**: Plus
205+
- **Remove meal**: Trash
206+
- **Generate grocery list**: ShoppingCart
207+
- **Edit meal**: Pencil
208+
209+
### Spacing System
210+
211+
*(Consistent padding and margin values using Tailwind scale)*
212+
213+
- **Gap between [elements]**: gap-[X]
214+
- **Padding inside [containers]**: p-[X]
215+
216+
Example:
217+
- **Gap between days**: gap-4
218+
- **Gap between meal slots**: gap-2
219+
- **Padding inside cards**: p-4
220+
- **Padding for main container**: p-6
221+
222+
### Mobile Responsive Strategy
223+
224+
*(How components adapt on smaller screens)*
225+
226+
Example:
227+
- Stack days vertically on mobile
228+
- Grocery list becomes full-screen overlay
229+
- Larger touch targets for meal slots
230+
231+
---
232+
233+
## Success Metrics
234+
235+
*(How will we measure if the application succeeds?)*
236+
237+
**User Experience Metrics**:
238+
- [ ] [Metric name and target]
239+
- [ ] [Metric name and target]
240+
241+
**Technical Metrics**:
242+
- [ ] INP < 200ms
243+
- [ ] LCP < 2.5s
244+
- [ ] CLS < 0.1
245+
246+
**Feature Adoption**:
247+
- [ ] [Specific feature usage target]
248+
249+
---
250+
251+
## Out of Scope
252+
253+
*(What will NOT be included in the initial version?)*
254+
255+
- [ ] [Feature or capability]
256+
- [ ] [Feature or capability]
257+
258+
Example:
259+
- Recipe database integration
260+
- Social sharing features
261+
- Advanced meal planning algorithms
262+
263+
---
264+
265+
## Implementation Notes
266+
267+
*(Technical considerations, dependencies, or constraints)*
268+
269+
- **Stack**: See Spark App Template default-webapp.md / data-dashboard.md / etc.
270+
- **Data Persistence**: [Where/how data is stored]
271+
- **Third-party Services**: [Any external APIs or services]
272+
273+
---
274+
275+
## Next Steps
276+
277+
1. [ ] Review PRD with stakeholders
278+
2. [ ] Create color palette and validate contrast
279+
3. [ ] Set up typography in `index.css`
280+
4. [ ] Scaffold project structure
281+
5. [ ] Implement features in priority order
282+
6. [ ] Test with real users
283+
7. [ ] Iterate based on feedback
284+
285+
---
286+
287+
## Example: Complete PRD
288+
289+
See the spark-fullstack-template PRD.md for a complete example following this structure.
290+
291+
---
292+
293+
**Tips**:
294+
- Be specific, not vague
295+
- Use concrete examples
296+
- Validate color contrast ratios
297+
- Think through edge cases early
298+
- Keep it concise but complete
299+
- Update PRD as requirements evolve
300+
- Use this as a living document, not a one-time exercise
301+
302+
**Remember**: A good PRD prevents wasted development time. Spend 1 hour planning to save 10 hours of rework.

0 commit comments

Comments
 (0)