@codeharbor/agent-playbook 0.1.0 → 0.1.1
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/package.json +5 -2
- package/skills/api-designer/README.md +36 -0
- package/skills/api-designer/SKILL.md +232 -0
- package/skills/api-designer/references/graphql-patterns.md +12 -0
- package/skills/api-designer/references/rest-patterns.md +17 -0
- package/skills/api-designer/scripts/generate_api.py +87 -0
- package/skills/api-designer/scripts/validate_api.py +48 -0
- package/skills/api-documenter/README.md +41 -0
- package/skills/api-documenter/SKILL.md +209 -0
- package/skills/api-documenter/references/examples/README.md +3 -0
- package/skills/api-documenter/references/examples/openapi-example.yaml +10 -0
- package/skills/api-documenter/references/openapi-template.yaml +5 -0
- package/skills/api-documenter/scripts/generate_openapi.py +84 -0
- package/skills/api-documenter/scripts/validate_openapi.py +45 -0
- package/skills/architecting-solutions/README.md +22 -0
- package/skills/architecting-solutions/SKILL.md +459 -0
- package/skills/auto-trigger/README.md +23 -0
- package/skills/auto-trigger/SKILL.md +183 -0
- package/skills/code-reviewer/README.md +59 -0
- package/skills/code-reviewer/SKILL.md +220 -0
- package/skills/code-reviewer/references/checklist.md +80 -0
- package/skills/code-reviewer/references/patterns.md +226 -0
- package/skills/code-reviewer/references/security.md +88 -0
- package/skills/code-reviewer/scripts/review_checklist.py +191 -0
- package/skills/commit-helper/README.md +58 -0
- package/skills/commit-helper/SKILL.md +159 -0
- package/skills/commit-helper/references/conventional-commits.md +68 -0
- package/skills/commit-helper/references/examples.md +125 -0
- package/skills/commit-helper/references/scopes.md +49 -0
- package/skills/commit-helper/scripts/validate_commit.py +70 -0
- package/skills/create-pr/README.md +182 -0
- package/skills/create-pr/SKILL.md +340 -0
- package/skills/debugger/README.md +53 -0
- package/skills/debugger/SKILL.md +239 -0
- package/skills/debugger/references/checklist.md +7 -0
- package/skills/debugger/references/errors.md +6 -0
- package/skills/debugger/references/patterns.md +5 -0
- package/skills/debugger/scripts/debug_report.py +77 -0
- package/skills/deployment-engineer/README.md +40 -0
- package/skills/deployment-engineer/SKILL.md +242 -0
- package/skills/deployment-engineer/references/kubernetes.md +23 -0
- package/skills/deployment-engineer/references/monitoring.md +14 -0
- package/skills/deployment-engineer/references/pipelines.md +12 -0
- package/skills/deployment-engineer/scripts/generate_deploy.py +72 -0
- package/skills/deployment-engineer/scripts/validate_deploy.py +46 -0
- package/skills/documentation-engineer/README.md +41 -0
- package/skills/documentation-engineer/SKILL.md +164 -0
- package/skills/documentation-engineer/references/api-template.md +22 -0
- package/skills/documentation-engineer/references/readme-template.md +25 -0
- package/skills/documentation-engineer/references/style-guide.md +13 -0
- package/skills/documentation-engineer/scripts/generate_docs.py +68 -0
- package/skills/documentation-engineer/scripts/validate_docs.py +46 -0
- package/skills/figma-designer/README.md +222 -0
- package/skills/figma-designer/SKILL.md +407 -0
- package/skills/figma-designer/references/example-output.md +86 -0
- package/skills/performance-engineer/README.md +42 -0
- package/skills/performance-engineer/SKILL.md +236 -0
- package/skills/performance-engineer/references/checklist.md +6 -0
- package/skills/performance-engineer/references/monitoring.md +5 -0
- package/skills/performance-engineer/references/optimization.md +7 -0
- package/skills/performance-engineer/scripts/perf_report.py +64 -0
- package/skills/performance-engineer/scripts/profile.py +63 -0
- package/skills/planning-with-files/README.md +27 -0
- package/skills/planning-with-files/SKILL.md +103 -0
- package/skills/prd-implementation-precheck/README.md +97 -0
- package/skills/prd-implementation-precheck/SKILL.md +112 -0
- package/skills/prd-planner/README.md +102 -0
- package/skills/prd-planner/SKILL.md +449 -0
- package/skills/prd-planner/references/edge-case-analysis.md +111 -0
- package/skills/qa-expert/README.md +37 -0
- package/skills/qa-expert/SKILL.md +225 -0
- package/skills/qa-expert/references/gates.md +11 -0
- package/skills/qa-expert/references/metrics.md +6 -0
- package/skills/qa-expert/references/strategy.md +11 -0
- package/skills/qa-expert/scripts/coverage_analysis.py +61 -0
- package/skills/qa-expert/scripts/generate_test_plan.py +68 -0
- package/skills/refactoring-specialist/README.md +37 -0
- package/skills/refactoring-specialist/SKILL.md +283 -0
- package/skills/refactoring-specialist/references/checklist.md +6 -0
- package/skills/refactoring-specialist/references/smells.md +6 -0
- package/skills/refactoring-specialist/references/techniques.md +6 -0
- package/skills/security-auditor/README.md +48 -0
- package/skills/security-auditor/SKILL.md +256 -0
- package/skills/security-auditor/references/checklist.md +7 -0
- package/skills/security-auditor/references/owasp.md +12 -0
- package/skills/security-auditor/references/remediation.md +7 -0
- package/skills/security-auditor/scripts/find_secrets.py +58 -0
- package/skills/security-auditor/scripts/security_audit.py +64 -0
- package/skills/self-improving-agent/README.md +136 -0
- package/skills/self-improving-agent/SKILL.md +407 -0
- package/skills/self-improving-agent/hooks/post-bash.sh +10 -0
- package/skills/self-improving-agent/hooks/pre-tool.sh +10 -0
- package/skills/self-improving-agent/hooks/session-end.sh +4 -0
- package/skills/self-improving-agent/memory/semantic-patterns.json +288 -0
- package/skills/self-improving-agent/references/appendix.md +131 -0
- package/skills/self-improving-agent/templates/correction-template.md +11 -0
- package/skills/self-improving-agent/templates/pattern-template.md +15 -0
- package/skills/self-improving-agent/templates/validation-template.md +14 -0
- package/skills/session-logger/README.md +50 -0
- package/skills/session-logger/SKILL.md +156 -0
- package/skills/skill-router/README.md +155 -0
- package/skills/skill-router/SKILL.md +215 -0
- package/skills/test-automator/README.md +41 -0
- package/skills/test-automator/SKILL.md +202 -0
- package/skills/test-automator/references/best-practices.md +6 -0
- package/skills/test-automator/references/examples/README.md +3 -0
- package/skills/test-automator/references/examples/unit-test-example.md +8 -0
- package/skills/test-automator/references/mocking.md +5 -0
- package/skills/test-automator/scripts/coverage_report.py +59 -0
- package/skills/test-automator/scripts/generate_test.py +66 -0
- package/skills/workflow-orchestrator/README.md +20 -0
- package/skills/workflow-orchestrator/SKILL.md +342 -0
- package/src/cli.js +25 -10
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: figma-designer
|
|
3
|
+
description: Analyzes Figma designs and generates implementation-ready PRDs with detailed visual specifications. Use when user provides Figma link or uploads design screenshots. Requires Figma MCP server connection.
|
|
4
|
+
allowed-tools: Read, Write, Edit, Bash, Grep, Glob, WebFetch, WebSearch, AskUserQuestion
|
|
5
|
+
hooks:
|
|
6
|
+
after_complete:
|
|
7
|
+
- trigger: prd-planner
|
|
8
|
+
mode: ask_first
|
|
9
|
+
condition: prd_generated
|
|
10
|
+
reason: "Further refine PRD with 4-file pattern"
|
|
11
|
+
- trigger: self-improving-agent
|
|
12
|
+
mode: background
|
|
13
|
+
reason: "Learn design patterns for future reference"
|
|
14
|
+
- trigger: session-logger
|
|
15
|
+
mode: auto
|
|
16
|
+
reason: "Save design analysis session"
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Figma Designer
|
|
20
|
+
|
|
21
|
+
> "Transform Figma designs into implementation-ready specifications with pixel-perfect accuracy"
|
|
22
|
+
|
|
23
|
+
## Overview
|
|
24
|
+
|
|
25
|
+
This skill analyzes Figma designs through the Figma MCP server and generates detailed PRDs with precise visual specifications. It extracts design tokens, component specifications, and layout information that developers can implement directly.
|
|
26
|
+
|
|
27
|
+
## Prerequisites
|
|
28
|
+
|
|
29
|
+
### Figma MCP Server
|
|
30
|
+
|
|
31
|
+
Ensure the Figma MCP server is connected and accessible:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Check if Figma MCP is available
|
|
35
|
+
mcp-list
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
If not available, install from: https://github.com/modelcontextprotocol/servers
|
|
39
|
+
|
|
40
|
+
Required Figma MCP tools:
|
|
41
|
+
- `figma_get_file` - Get file metadata
|
|
42
|
+
- `figma_get_nodes` - Get node details
|
|
43
|
+
- `figma_get_components` - Get component information
|
|
44
|
+
|
|
45
|
+
## When This Skill Activates
|
|
46
|
+
|
|
47
|
+
Activates when you:
|
|
48
|
+
- Provide a Figma link (`https://www.figma.com/file/...`)
|
|
49
|
+
- Upload a design screenshot and mention "Figma"
|
|
50
|
+
- Say "analyze this design" or "extract design specs"
|
|
51
|
+
- Ask to "create PRD from Figma"
|
|
52
|
+
|
|
53
|
+
## Design Analysis Workflow
|
|
54
|
+
|
|
55
|
+
### Phase 1: Fetch Design Data
|
|
56
|
+
|
|
57
|
+
```yaml
|
|
58
|
+
Input: Figma URL or File Key
|
|
59
|
+
↓
|
|
60
|
+
Extract File Key from URL
|
|
61
|
+
↓
|
|
62
|
+
Call figma_get_file to get metadata
|
|
63
|
+
↓
|
|
64
|
+
Call figma_get_nodes to get design tree
|
|
65
|
+
↓
|
|
66
|
+
Parse frame, component, and text nodes
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Phase 2: Extract Design Tokens
|
|
70
|
+
|
|
71
|
+
Create a comprehensive design token inventory:
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
// Design Token Structure
|
|
75
|
+
interface DesignTokens {
|
|
76
|
+
colors: {
|
|
77
|
+
primary: string[];
|
|
78
|
+
secondary: string[];
|
|
79
|
+
neutral: string[];
|
|
80
|
+
semantic: {
|
|
81
|
+
success: string;
|
|
82
|
+
warning: string;
|
|
83
|
+
error: string;
|
|
84
|
+
info: string;
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
typography: {
|
|
88
|
+
fontFamilies: Record<string, string>;
|
|
89
|
+
fontSizes: Record<string, number>;
|
|
90
|
+
fontWeights: Record<string, number>;
|
|
91
|
+
lineHeights: Record<string, number>;
|
|
92
|
+
letterSpacing: Record<string, number>;
|
|
93
|
+
};
|
|
94
|
+
spacing: {
|
|
95
|
+
scale: number; // 4, 8, 12, 16, etc.
|
|
96
|
+
values: Record<string, number>;
|
|
97
|
+
};
|
|
98
|
+
borders: {
|
|
99
|
+
radii: Record<string, number>;
|
|
100
|
+
widths: Record<string, number>;
|
|
101
|
+
};
|
|
102
|
+
shadows: Array<{
|
|
103
|
+
name: string;
|
|
104
|
+
values: string[];
|
|
105
|
+
}>;
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Phase 3: Analyze Component Hierarchy
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
File
|
|
113
|
+
├── Frames (Pages/Screens)
|
|
114
|
+
│ ├── Component Instances
|
|
115
|
+
│ │ ├── Primary Button
|
|
116
|
+
│ │ ├── Input Field
|
|
117
|
+
│ │ └── Card
|
|
118
|
+
│ └── Text Layers
|
|
119
|
+
│ ├── Headings
|
|
120
|
+
│ ├── Body
|
|
121
|
+
│ └── Labels
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
For each component, extract:
|
|
125
|
+
- **Props**: Size, variant, state
|
|
126
|
+
- **Layout**: Flex direction, alignment, gap, padding
|
|
127
|
+
- **Styles**: Fill, stroke, effects
|
|
128
|
+
- **Content**: Text content, icons, images
|
|
129
|
+
- **Constraints**: Responsive behavior
|
|
130
|
+
|
|
131
|
+
### Phase 4: Generate Visual Specifications
|
|
132
|
+
|
|
133
|
+
Use this template for each screen:
|
|
134
|
+
|
|
135
|
+
```markdown
|
|
136
|
+
## Screen: [Screen Name]
|
|
137
|
+
|
|
138
|
+
### Layout Structure
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
┌─────────────────────────────────────────┐
|
|
142
|
+
│ [Header/Nav] │
|
|
143
|
+
├─────────────────────────────────────────┤
|
|
144
|
+
│ │
|
|
145
|
+
│ [Main Content] │
|
|
146
|
+
│ ┌───────────┐ ┌───────────┐ │
|
|
147
|
+
│ │ Card 1 │ │ Card 2 │ │
|
|
148
|
+
│ └───────────┘ └───────────┘ │
|
|
149
|
+
│ │
|
|
150
|
+
├─────────────────────────────────────────┤
|
|
151
|
+
│ [Footer] │
|
|
152
|
+
└─────────────────────────────────────────┘
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Design Specifications
|
|
156
|
+
|
|
157
|
+
#### Colors
|
|
158
|
+
|
|
159
|
+
| Token | Value | Usage |
|
|
160
|
+
|-------|-------|-------|
|
|
161
|
+
| Primary | `#007AFF` | Primary buttons, links |
|
|
162
|
+
| Background | `#FFFFFF` | Screen background |
|
|
163
|
+
| Surface | `#F5F5F7` | Cards, sections |
|
|
164
|
+
| Text Primary | `#1C1C1E` | Headings, body |
|
|
165
|
+
| Text Secondary | `#8E8E93` | Captions, labels |
|
|
166
|
+
|
|
167
|
+
#### Typography
|
|
168
|
+
|
|
169
|
+
| Style | Font | Size | Weight | Line Height | Letter Spacing |
|
|
170
|
+
|-------|------|------|--------|------------|---------------|
|
|
171
|
+
| Display Large | SF Pro Display | 28px | Bold (700) | 34px | -0.5px |
|
|
172
|
+
| Heading 1 | SF Pro Display | 24px | Bold (700) | 32px | -0.3px |
|
|
173
|
+
| Heading 2 | SF Pro Display | 20px | Semibold (600) | 28px | -0.2px |
|
|
174
|
+
| Body Large | SF Pro Text | 17px | Regular (400) | 24px | -0.4px |
|
|
175
|
+
| Body | SF Pro Text | 15px | Regular (400) | 22px | -0.3px |
|
|
176
|
+
| Caption | SF Pro Text | 13px | Regular (400) | 18px | -0.1px |
|
|
177
|
+
|
|
178
|
+
#### Spacing
|
|
179
|
+
|
|
180
|
+
| Token | Value | Usage |
|
|
181
|
+
|-------|-------|-------|
|
|
182
|
+
| xs | 4px | Icon padding |
|
|
183
|
+
| sm | 8px | Tight spacing |
|
|
184
|
+
| md | 12px | Card padding |
|
|
185
|
+
| lg | 16px | Section spacing |
|
|
186
|
+
| xl | 24px | Large gaps |
|
|
187
|
+
| 2xl | 32px | Page margins |
|
|
188
|
+
|
|
189
|
+
#### Component: Primary Button
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
interface PrimaryButtonProps {
|
|
193
|
+
size?: 'small' | 'medium' | 'large';
|
|
194
|
+
variant?: 'primary' | 'secondary' | 'tertiary';
|
|
195
|
+
disabled?: boolean;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// Sizes
|
|
199
|
+
size.small = {
|
|
200
|
+
height: 32px,
|
|
201
|
+
paddingHorizontal: 12px,
|
|
202
|
+
fontSize: 15,
|
|
203
|
+
iconSize: 16,
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
size.medium = {
|
|
207
|
+
height: 40px,
|
|
208
|
+
paddingHorizontal: 16px,
|
|
209
|
+
fontSize: 15,
|
|
210
|
+
iconSize: 20,
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
size.large = {
|
|
214
|
+
height: 48px,
|
|
215
|
+
paddingHorizontal: 24px,
|
|
216
|
+
fontSize: 17,
|
|
217
|
+
iconSize: 24,
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// Variants
|
|
221
|
+
variant.primary = {
|
|
222
|
+
backgroundColor: '#007AFF',
|
|
223
|
+
color: '#FFFFFF',
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
variant.secondary = {
|
|
227
|
+
backgroundColor: '#F5F5F7',
|
|
228
|
+
color: '#007AFF',
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
variant.tertiary = {
|
|
232
|
+
backgroundColor: 'transparent',
|
|
233
|
+
color: '#007AFF',
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
#### Constraints & Responsive Behavior
|
|
238
|
+
|
|
239
|
+
| Element | Constraints | Responsive Behavior |
|
|
240
|
+
|---------|-------------|---------------------|
|
|
241
|
+
| Header | Left, Right, Top | Sticky on scroll |
|
|
242
|
+
| Sidebar | Left, Top, Bottom | Collapses to drawer on mobile |
|
|
243
|
+
| Content | Left, Right (16px) | Full width on mobile |
|
|
244
|
+
|
|
245
|
+
### Interaction States
|
|
246
|
+
|
|
247
|
+
| Element | Default | Hover | Pressed | Disabled |
|
|
248
|
+
|---------|---------|-------|--------|----------|
|
|
249
|
+
| Primary Button | opacity: 1 | opacity: 0.8 | opacity: 0.6 | opacity: 0.4 |
|
|
250
|
+
| Icon Button | opacity: 1 | background: rgba(0,0,0,0.05) | background: rgba(0,0,0,0.1) | opacity: 0.3 |
|
|
251
|
+
| Card | shadow: sm | shadow: md | - | opacity: 0.6 |
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
## Output Formats
|
|
255
|
+
|
|
256
|
+
### Option 1: Full PRD (Recommended)
|
|
257
|
+
|
|
258
|
+
Generates a complete 4-file PRD:
|
|
259
|
+
- `docs/{feature}-notes.md` - Design decisions
|
|
260
|
+
- `docs/{feature}-task-plan.md` - Implementation tasks
|
|
261
|
+
- `docs/{feature}-prd.md` - Product requirements
|
|
262
|
+
- `docs/{feature}-tech.md` - Technical specifications
|
|
263
|
+
|
|
264
|
+
### Option 2: Visual Spec Document
|
|
265
|
+
|
|
266
|
+
Generates a design specification document:
|
|
267
|
+
```
|
|
268
|
+
docs/{feature}-design-spec.md
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Option 3: Component Library
|
|
272
|
+
|
|
273
|
+
For design systems, generates:
|
|
274
|
+
```
|
|
275
|
+
src/components/
|
|
276
|
+
├── Button/
|
|
277
|
+
│ ├── Button.tsx
|
|
278
|
+
│ ├── Button.test.tsx
|
|
279
|
+
│ └── Button.stories.tsx
|
|
280
|
+
├── Input/
|
|
281
|
+
├── Card/
|
|
282
|
+
└── tokens.ts
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
## Quick Reference: Design Token Categories
|
|
286
|
+
|
|
287
|
+
### Always Extract These
|
|
288
|
+
|
|
289
|
+
| Category | What to Extract | Why |
|
|
290
|
+
|----------|----------------|-----|
|
|
291
|
+
| **Colors** | Hex/RGBA values | Theme consistency |
|
|
292
|
+
| **Typography** | Font family, size, weight, spacing | Text hierarchy |
|
|
293
|
+
| **Spacing** | Padding, margin, gap values | Layout alignment |
|
|
294
|
+
| **Borders** | Radius, width values | Shape consistency |
|
|
295
|
+
| **Shadows** | Offset, blur, spread, color | Depth perception |
|
|
296
|
+
| **Icons** | Name, size, color | Visual consistency |
|
|
297
|
+
| **Images** | URL, dimensions, fit mode | Asset management |
|
|
298
|
+
|
|
299
|
+
## Design Review Checklist
|
|
300
|
+
|
|
301
|
+
Before generating PRD, verify:
|
|
302
|
+
|
|
303
|
+
- [ ] All screens are accounted for
|
|
304
|
+
- [ ] Design tokens are extracted
|
|
305
|
+
- [ ] Component variants are documented
|
|
306
|
+
- [ ] Responsive behavior is specified
|
|
307
|
+
- [ ] Interaction states are defined
|
|
308
|
+
- [ ] Accessibility (WCAG) is considered
|
|
309
|
+
- [ ] Color contrast ratio ≥ 4.5:1
|
|
310
|
+
- [ ] Touch targets ≥ 44x44px
|
|
311
|
+
- [ ] Focus indicators visible
|
|
312
|
+
|
|
313
|
+
## Frame Analysis Template
|
|
314
|
+
|
|
315
|
+
For each frame/screen in the Figma file:
|
|
316
|
+
|
|
317
|
+
```markdown
|
|
318
|
+
## Frame: {Frame Name}
|
|
319
|
+
|
|
320
|
+
### Purpose
|
|
321
|
+
{What this screen does}
|
|
322
|
+
|
|
323
|
+
### Elements
|
|
324
|
+
|
|
325
|
+
| Element | Type | Styles | Props |
|
|
326
|
+
|---------|------|--------|-------|
|
|
327
|
+
| {Name} | {Component/Text/Vector} | {css} | {props} |
|
|
328
|
+
| {Name} | {Component/Text/Vector} | {css} | {props} |
|
|
329
|
+
|
|
330
|
+
### Layout
|
|
331
|
+
- Container: {width, height, fill}
|
|
332
|
+
- Position: {absolute/relative}
|
|
333
|
+
- Constraints: {left, right, top, bottom}
|
|
334
|
+
- Auto Layout: {direction, spacing, padding, alignment}
|
|
335
|
+
|
|
336
|
+
### Content Hierarchy
|
|
337
|
+
1. {Primary element}
|
|
338
|
+
2. {Secondary element}
|
|
339
|
+
3. {Tertiary element}
|
|
340
|
+
|
|
341
|
+
### Notes
|
|
342
|
+
{Any special considerations}
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
## Integration with Other Skills
|
|
346
|
+
|
|
347
|
+
### Typical Workflow
|
|
348
|
+
|
|
349
|
+
```
|
|
350
|
+
Figma URL → figma-designer → Visual Specs
|
|
351
|
+
↓
|
|
352
|
+
prd-planner → PRD
|
|
353
|
+
↓
|
|
354
|
+
implementation → Code
|
|
355
|
+
↓
|
|
356
|
+
code-reviewer → Quality Check
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### Handoff to Development
|
|
360
|
+
|
|
361
|
+
After generating specifications:
|
|
362
|
+
|
|
363
|
+
```markdown
|
|
364
|
+
## Developer Handoff
|
|
365
|
+
|
|
366
|
+
### Design Files
|
|
367
|
+
- Figma: {url}
|
|
368
|
+
- Design Spec: {link}
|
|
369
|
+
|
|
370
|
+
### Design Tokens
|
|
371
|
+
- Generated: `tokens.ts`
|
|
372
|
+
- Color palette: `colors.ts`
|
|
373
|
+
- Typography: `typography.ts`
|
|
374
|
+
|
|
375
|
+
### Component Library
|
|
376
|
+
- Storybook: {url}
|
|
377
|
+
- Component docs: {link}
|
|
378
|
+
|
|
379
|
+
### Assets
|
|
380
|
+
- Icons: {folder}
|
|
381
|
+
- Images: {folder}
|
|
382
|
+
- Exports: {format}
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
## Best Practices
|
|
386
|
+
|
|
387
|
+
### DO
|
|
388
|
+
|
|
389
|
+
✅ Extract exact pixel values for critical dimensions
|
|
390
|
+
✅ Document component variants and states
|
|
391
|
+
✅ Include responsive breakpoints
|
|
392
|
+
✅ Note any platform differences (iOS vs Android)
|
|
393
|
+
✅ Include accessibility considerations
|
|
394
|
+
✅ Export design tokens as constants
|
|
395
|
+
|
|
396
|
+
### DON'T
|
|
397
|
+
|
|
398
|
+
❌ Round spacing values (use exact 4px/8px/12px)
|
|
399
|
+
❌ Ignore hover/focus states
|
|
400
|
+
❌ Skip constraint behavior
|
|
401
|
+
❌ Forget about empty states
|
|
402
|
+
❌ Omit loading states
|
|
403
|
+
❌ Assume platform defaults without verification
|
|
404
|
+
|
|
405
|
+
## Examples and Platform Notes
|
|
406
|
+
|
|
407
|
+
See `references/example-output.md` for a full sample output and platform-specific considerations.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Example Output
|
|
2
|
+
|
|
3
|
+
# Login Screen PRD
|
|
4
|
+
|
|
5
|
+
## Visual Specification
|
|
6
|
+
|
|
7
|
+
### Layout
|
|
8
|
+
- Logo aligned left, icon aligned right
|
|
9
|
+
- Form fields stacked with 16px vertical spacing
|
|
10
|
+
- Primary button below the form
|
|
11
|
+
|
|
12
|
+
### Technical Specs
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
container: {
|
|
16
|
+
width: 100%,
|
|
17
|
+
height: 100%,
|
|
18
|
+
padding: 24px,
|
|
19
|
+
backgroundColor: #FFFFFF,
|
|
20
|
+
justifyContent: center,
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
input: {
|
|
24
|
+
height: 48,
|
|
25
|
+
paddingHorizontal: 16,
|
|
26
|
+
backgroundColor: #F5F5F7,
|
|
27
|
+
borderRadius: 12,
|
|
28
|
+
borderWidth: 1,
|
|
29
|
+
borderColor: transparent,
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
input:focus: {
|
|
33
|
+
borderColor: #007AFF,
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Generated Code
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
// LoginScreen.tsx
|
|
41
|
+
export const LoginScreen = () => {
|
|
42
|
+
return (
|
|
43
|
+
<View style={styles.container}>
|
|
44
|
+
<Text style={styles.logo}>App Name</Text>
|
|
45
|
+
<Text style={styles.subtitle}>Welcome back</Text>
|
|
46
|
+
<TextInput placeholder="Email" style={styles.input} />
|
|
47
|
+
<TextInput placeholder="Password" secureTextEntry style={styles.input} />
|
|
48
|
+
<TouchableOpacity style={styles.button}>
|
|
49
|
+
<Text style={styles.buttonText}>Sign In</Text>
|
|
50
|
+
</TouchableOpacity>
|
|
51
|
+
</View>
|
|
52
|
+
);
|
|
53
|
+
};
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
# Platform-Specific Considerations
|
|
57
|
+
|
|
58
|
+
## React Native
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
const styles = {
|
|
62
|
+
container: {
|
|
63
|
+
paddingHorizontal: 16,
|
|
64
|
+
paddingVertical: 16,
|
|
65
|
+
gap: 12,
|
|
66
|
+
},
|
|
67
|
+
borderRadius: 12,
|
|
68
|
+
};
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Web (React)
|
|
72
|
+
|
|
73
|
+
```css
|
|
74
|
+
.button {
|
|
75
|
+
padding: 16px;
|
|
76
|
+
gap: 12px;
|
|
77
|
+
border-radius: 12px;
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## SwiftUI
|
|
82
|
+
|
|
83
|
+
```swift
|
|
84
|
+
.padding(16)
|
|
85
|
+
.cornerRadius(12)
|
|
86
|
+
```
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Performance Engineer
|
|
2
|
+
|
|
3
|
+
> A Claude Code skill for performance optimization and analysis.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
This skill is part of the [agent-playbook](https://github.com/Charon-Fan/agent-playbook) collection.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
You: Optimize this code
|
|
13
|
+
You: Why is this slow?
|
|
14
|
+
You: Profile this application
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Performance Targets
|
|
18
|
+
|
|
19
|
+
| Metric | Target |
|
|
20
|
+
|--------|--------|
|
|
21
|
+
| API Response (p50) | < 100ms |
|
|
22
|
+
| API Response (p95) | < 500ms |
|
|
23
|
+
| Database Query | < 50ms |
|
|
24
|
+
| Page Load (FMP) | < 2s |
|
|
25
|
+
| Time to Interactive | < 3s |
|
|
26
|
+
|
|
27
|
+
## Scripts
|
|
28
|
+
|
|
29
|
+
Profile application:
|
|
30
|
+
```bash
|
|
31
|
+
python scripts/profile.py
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Generate performance report:
|
|
35
|
+
```bash
|
|
36
|
+
python scripts/perf_report.py
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Resources
|
|
40
|
+
|
|
41
|
+
- [Web.dev Performance](https://web.dev/performance/)
|
|
42
|
+
- [Google Performance](https://developer.chrome.com/docs/lighthouse/performance/)
|