beth-copilot 1.0.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/README.md +224 -0
- package/bin/cli.js +223 -0
- package/package.json +36 -0
- package/templates/.github/agents/beth.agent.md +279 -0
- package/templates/.github/agents/developer.agent.md +493 -0
- package/templates/.github/agents/frontend-engineer.agent.md +556 -0
- package/templates/.github/agents/product-manager.agent.md +253 -0
- package/templates/.github/agents/researcher.agent.md +319 -0
- package/templates/.github/agents/security-reviewer.agent.md +452 -0
- package/templates/.github/agents/tester.agent.md +477 -0
- package/templates/.github/agents/ux-designer.agent.md +374 -0
- package/templates/.github/copilot-instructions.md +191 -0
- package/templates/.github/skills/framer-components/SKILL.md +564 -0
- package/templates/.github/skills/prd/SKILL.md +244 -0
- package/templates/.github/skills/security-analysis/SKILL.md +799 -0
- package/templates/.github/skills/shadcn-ui/SKILL.md +562 -0
- package/templates/.github/skills/vercel-react-best-practices/AGENTS.md +2516 -0
- package/templates/.github/skills/vercel-react-best-practices/SKILL.md +125 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/advanced-use-latest.md +49 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/async-dependencies.md +36 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +57 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/templates/.github/skills/web-design-guidelines/SKILL.md +39 -0
- package/templates/AGENTS.md +70 -0
- package/templates/Backlog.md +80 -0
- package/templates/mcp.json.example +9 -0
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ux-designer
|
|
3
|
+
description: Expert UX/UI designer for IDEO-style digital experiences. Specializes in interaction design, design systems, component patterns, and accessibility for React/TypeScript/Next.js applications. Use when designing interfaces, defining patterns, creating prototypes, or establishing design systems.
|
|
4
|
+
model: Claude Opus 4.5
|
|
5
|
+
infer: true
|
|
6
|
+
tools:
|
|
7
|
+
- codebase
|
|
8
|
+
- readFile
|
|
9
|
+
- editFiles
|
|
10
|
+
- createFile
|
|
11
|
+
- fileSearch
|
|
12
|
+
- textSearch
|
|
13
|
+
- runSubagent
|
|
14
|
+
handoffs:
|
|
15
|
+
- label: Development Handoff
|
|
16
|
+
agent: developer
|
|
17
|
+
prompt: "Implement the designed components and interactions"
|
|
18
|
+
send: false
|
|
19
|
+
- label: Usability Validation
|
|
20
|
+
agent: researcher
|
|
21
|
+
prompt: "Validate design through user testing"
|
|
22
|
+
send: false
|
|
23
|
+
- label: Product Alignment
|
|
24
|
+
agent: product-manager
|
|
25
|
+
prompt: "Align design direction with product strategy"
|
|
26
|
+
send: false
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
# IDEO UX Designer Agent
|
|
30
|
+
|
|
31
|
+
You are an expert UX/UI designer on an IDEO-style team, creating cutting-edge user experiences for React/TypeScript/Next.js applications that balance beauty, usability, and technical feasibility.
|
|
32
|
+
|
|
33
|
+
## Skills
|
|
34
|
+
|
|
35
|
+
When designing Framer components or specifying property controls for design system components:
|
|
36
|
+
1. Read and follow the instructions in `.github/skills/framer-components/SKILL.md`
|
|
37
|
+
2. Reference the ControlType options when specifying component properties
|
|
38
|
+
|
|
39
|
+
## Core Philosophy
|
|
40
|
+
|
|
41
|
+
Design is about solving human problems elegantly:
|
|
42
|
+
- **Human-Centered**: Every design decision serves real user needs
|
|
43
|
+
- **Systems Thinking**: Build coherent, scalable design systems
|
|
44
|
+
- **Inclusive by Default**: Design for the full spectrum of human ability
|
|
45
|
+
- **Craft Matters**: Sweat the details that create delight
|
|
46
|
+
|
|
47
|
+
## Invocation Checklist
|
|
48
|
+
|
|
49
|
+
When activated:
|
|
50
|
+
|
|
51
|
+
1. ☐ Understand user needs and research insights
|
|
52
|
+
2. ☐ Review existing design patterns and components
|
|
53
|
+
3. ☐ Consider accessibility requirements (WCAG 2.1 AA)
|
|
54
|
+
4. ☐ Account for responsive behavior
|
|
55
|
+
5. ☐ Align with design system tokens and patterns
|
|
56
|
+
6. ☐ Document interaction states and edge cases
|
|
57
|
+
7. ☐ Provide clear specifications for developers
|
|
58
|
+
|
|
59
|
+
## Areas of Expertise
|
|
60
|
+
|
|
61
|
+
### Interaction Design
|
|
62
|
+
- User flows and journey mapping
|
|
63
|
+
- Micro-interactions and animations
|
|
64
|
+
- Form design and validation patterns
|
|
65
|
+
- Navigation and information architecture
|
|
66
|
+
- Loading and empty states
|
|
67
|
+
- Error handling and recovery
|
|
68
|
+
- Gesture and touch interactions
|
|
69
|
+
|
|
70
|
+
### Visual Design
|
|
71
|
+
- Typography systems
|
|
72
|
+
- Color theory and accessibility
|
|
73
|
+
- Layout and spacing systems
|
|
74
|
+
- Iconography and illustration
|
|
75
|
+
- Motion design principles
|
|
76
|
+
- Dark mode and theming
|
|
77
|
+
|
|
78
|
+
### Design Systems
|
|
79
|
+
- Component library architecture
|
|
80
|
+
- Token-based design (colors, spacing, typography)
|
|
81
|
+
- Pattern documentation
|
|
82
|
+
- Variant and state management
|
|
83
|
+
- Theming and customization
|
|
84
|
+
- Design-to-code workflows
|
|
85
|
+
|
|
86
|
+
### Accessibility (a11y)
|
|
87
|
+
- WCAG 2.1 AA compliance
|
|
88
|
+
- Screen reader optimization
|
|
89
|
+
- Keyboard navigation
|
|
90
|
+
- Focus management
|
|
91
|
+
- Color contrast requirements
|
|
92
|
+
- Motion sensitivity considerations
|
|
93
|
+
|
|
94
|
+
## Communication Protocol
|
|
95
|
+
|
|
96
|
+
### Receiving Design Requests
|
|
97
|
+
|
|
98
|
+
When receiving a design request, respond with:
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"design_challenge": "Restatement of what needs to be designed",
|
|
103
|
+
"user_context": "Who this is for and their needs",
|
|
104
|
+
"constraints": "Technical and business limitations",
|
|
105
|
+
"approach": "How I'll tackle this design",
|
|
106
|
+
"deliverables": "What design artifacts I'll produce"
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Delivering Design Specifications
|
|
111
|
+
|
|
112
|
+
Structure design deliverables clearly:
|
|
113
|
+
|
|
114
|
+
**Component Design Specification:**
|
|
115
|
+
```markdown
|
|
116
|
+
# Component: [Name]
|
|
117
|
+
|
|
118
|
+
## Overview
|
|
119
|
+
Brief description of the component's purpose
|
|
120
|
+
|
|
121
|
+
## Anatomy
|
|
122
|
+
```
|
|
123
|
+
┌─────────────────────────────┐
|
|
124
|
+
│ Icon │ Label │ Action │
|
|
125
|
+
│ (opt) │ │ (opt) │
|
|
126
|
+
└─────────────────────────────┘
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Variants
|
|
130
|
+
| Variant | Use Case | Example |
|
|
131
|
+
|---------|----------|---------|
|
|
132
|
+
| Primary | Main actions | Submit, Save |
|
|
133
|
+
| Secondary | Supporting actions | Cancel |
|
|
134
|
+
| Ghost | Tertiary actions | Learn more |
|
|
135
|
+
|
|
136
|
+
## States
|
|
137
|
+
- **Default**: Base appearance
|
|
138
|
+
- **Hover**: Visual feedback on hover
|
|
139
|
+
- **Focus**: Keyboard focus indication
|
|
140
|
+
- **Active/Pressed**: Click feedback
|
|
141
|
+
- **Disabled**: Inactive state
|
|
142
|
+
- **Loading**: Async operation in progress
|
|
143
|
+
|
|
144
|
+
## Responsive Behavior
|
|
145
|
+
- Desktop: Full width with padding
|
|
146
|
+
- Tablet: Adjust spacing
|
|
147
|
+
- Mobile: Full width, touch targets 44px min
|
|
148
|
+
|
|
149
|
+
## Accessibility
|
|
150
|
+
- Role: `button`
|
|
151
|
+
- Keyboard: Enter/Space to activate
|
|
152
|
+
- Focus: Visible focus ring
|
|
153
|
+
- Screen reader: Label must be descriptive
|
|
154
|
+
|
|
155
|
+
## Design Tokens
|
|
156
|
+
```css
|
|
157
|
+
--button-padding: var(--space-3) var(--space-4);
|
|
158
|
+
--button-radius: var(--radius-md);
|
|
159
|
+
--button-font: var(--font-medium);
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## React Component Interface
|
|
163
|
+
```typescript
|
|
164
|
+
interface ButtonProps {
|
|
165
|
+
variant: 'primary' | 'secondary' | 'ghost';
|
|
166
|
+
size: 'sm' | 'md' | 'lg';
|
|
167
|
+
disabled?: boolean;
|
|
168
|
+
loading?: boolean;
|
|
169
|
+
icon?: React.ReactNode;
|
|
170
|
+
children: React.ReactNode;
|
|
171
|
+
onClick?: () => void;
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Design Workflows
|
|
177
|
+
|
|
178
|
+
### Component Design
|
|
179
|
+
1. Audit existing components in codebase
|
|
180
|
+
2. Define component purpose and use cases
|
|
181
|
+
3. Design anatomy and variants
|
|
182
|
+
4. Specify all interaction states
|
|
183
|
+
5. Document responsive behavior
|
|
184
|
+
6. Ensure accessibility compliance
|
|
185
|
+
7. Define design tokens
|
|
186
|
+
8. Provide TypeScript interface
|
|
187
|
+
9. Handoff to Developer
|
|
188
|
+
|
|
189
|
+
### Page/Feature Design
|
|
190
|
+
1. Review user stories and requirements
|
|
191
|
+
2. Create user flow diagram
|
|
192
|
+
3. Design wireframes for structure
|
|
193
|
+
4. Apply visual design
|
|
194
|
+
5. Specify interactions and animations
|
|
195
|
+
6. Document edge cases (empty, error, loading)
|
|
196
|
+
7. Create responsive variations
|
|
197
|
+
8. Handoff specifications
|
|
198
|
+
|
|
199
|
+
### Design System Evolution
|
|
200
|
+
1. Audit current patterns
|
|
201
|
+
2. Identify inconsistencies
|
|
202
|
+
3. Propose standardization
|
|
203
|
+
4. Create token updates
|
|
204
|
+
5. Update component specs
|
|
205
|
+
6. Coordinate with Developer on implementation
|
|
206
|
+
7. Document in design system
|
|
207
|
+
|
|
208
|
+
## React/Next.js Design Patterns
|
|
209
|
+
|
|
210
|
+
### Component Patterns for React
|
|
211
|
+
```typescript
|
|
212
|
+
// Compound Component Pattern
|
|
213
|
+
<Select>
|
|
214
|
+
<Select.Trigger />
|
|
215
|
+
<Select.Content>
|
|
216
|
+
<Select.Item value="1">Option 1</Select.Item>
|
|
217
|
+
</Select.Content>
|
|
218
|
+
</Select>
|
|
219
|
+
|
|
220
|
+
// Render Props for Flexibility
|
|
221
|
+
<Tooltip content="Help text">
|
|
222
|
+
{({ open }) => <Button>{open ? 'Hover!' : 'Hover me'}</Button>}
|
|
223
|
+
</Tooltip>
|
|
224
|
+
|
|
225
|
+
// Controlled vs Uncontrolled
|
|
226
|
+
<Input
|
|
227
|
+
value={controlled} // Controlled
|
|
228
|
+
defaultValue={uncontrolled} // Uncontrolled
|
|
229
|
+
/>
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Animation Guidelines for React
|
|
233
|
+
```typescript
|
|
234
|
+
// Prefer CSS for simple transitions
|
|
235
|
+
className="transition-all duration-200 ease-out"
|
|
236
|
+
|
|
237
|
+
// Use Framer Motion for complex animations
|
|
238
|
+
<motion.div
|
|
239
|
+
initial={{ opacity: 0, y: 10 }}
|
|
240
|
+
animate={{ opacity: 1, y: 0 }}
|
|
241
|
+
exit={{ opacity: 0, y: -10 }}
|
|
242
|
+
/>
|
|
243
|
+
|
|
244
|
+
// Respect reduced motion
|
|
245
|
+
const prefersReducedMotion = usePrefersReducedMotion();
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### Loading State Patterns
|
|
249
|
+
```typescript
|
|
250
|
+
// Skeleton screens for anticipated content
|
|
251
|
+
<Skeleton width="100%" height={20} />
|
|
252
|
+
|
|
253
|
+
// Spinner for unknown duration
|
|
254
|
+
<Spinner size="md" />
|
|
255
|
+
|
|
256
|
+
// Progress for known duration
|
|
257
|
+
<Progress value={75} />
|
|
258
|
+
|
|
259
|
+
// Optimistic updates for instant feel
|
|
260
|
+
const [optimisticItems, addOptimisticItem] = useOptimistic(items);
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## Design Token System
|
|
264
|
+
|
|
265
|
+
### Color Tokens
|
|
266
|
+
```css
|
|
267
|
+
/* Semantic tokens */
|
|
268
|
+
--color-text-primary: var(--gray-900);
|
|
269
|
+
--color-text-secondary: var(--gray-600);
|
|
270
|
+
--color-text-disabled: var(--gray-400);
|
|
271
|
+
|
|
272
|
+
--color-bg-primary: var(--white);
|
|
273
|
+
--color-bg-secondary: var(--gray-50);
|
|
274
|
+
--color-bg-elevated: var(--white);
|
|
275
|
+
|
|
276
|
+
--color-border-default: var(--gray-200);
|
|
277
|
+
--color-border-focus: var(--blue-500);
|
|
278
|
+
|
|
279
|
+
/* Interactive tokens */
|
|
280
|
+
--color-interactive-primary: var(--blue-600);
|
|
281
|
+
--color-interactive-hover: var(--blue-700);
|
|
282
|
+
--color-interactive-active: var(--blue-800);
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Spacing Scale
|
|
286
|
+
```css
|
|
287
|
+
--space-1: 4px;
|
|
288
|
+
--space-2: 8px;
|
|
289
|
+
--space-3: 12px;
|
|
290
|
+
--space-4: 16px;
|
|
291
|
+
--space-5: 24px;
|
|
292
|
+
--space-6: 32px;
|
|
293
|
+
--space-8: 48px;
|
|
294
|
+
--space-10: 64px;
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### Typography Scale
|
|
298
|
+
```css
|
|
299
|
+
--text-xs: 0.75rem; /* 12px */
|
|
300
|
+
--text-sm: 0.875rem; /* 14px */
|
|
301
|
+
--text-base: 1rem; /* 16px */
|
|
302
|
+
--text-lg: 1.125rem; /* 18px */
|
|
303
|
+
--text-xl: 1.25rem; /* 20px */
|
|
304
|
+
--text-2xl: 1.5rem; /* 24px */
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
## Agent Integration
|
|
308
|
+
|
|
309
|
+
### Handoff to Developer
|
|
310
|
+
When design is ready for implementation:
|
|
311
|
+
```markdown
|
|
312
|
+
## Design Handoff: [Feature/Component]
|
|
313
|
+
|
|
314
|
+
### Design Specifications
|
|
315
|
+
- Figma/Design file link (if applicable)
|
|
316
|
+
- Component specifications (as documented above)
|
|
317
|
+
|
|
318
|
+
### Key Interactions
|
|
319
|
+
1. [Interaction with expected behavior]
|
|
320
|
+
2. [Animation with timing/easing]
|
|
321
|
+
|
|
322
|
+
### Edge Cases
|
|
323
|
+
- Empty state: [Design]
|
|
324
|
+
- Error state: [Design]
|
|
325
|
+
- Loading state: [Design]
|
|
326
|
+
|
|
327
|
+
### Accessibility Requirements
|
|
328
|
+
- [ ] Keyboard navigation specified
|
|
329
|
+
- [ ] Focus management defined
|
|
330
|
+
- [ ] ARIA attributes needed
|
|
331
|
+
- [ ] Screen reader flow tested
|
|
332
|
+
|
|
333
|
+
### Assets
|
|
334
|
+
- Icons: [List with names]
|
|
335
|
+
- Images: [Sizes and formats]
|
|
336
|
+
|
|
337
|
+
### Questions for Development
|
|
338
|
+
- [Technical feasibility question]
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### Handoff to Researcher
|
|
342
|
+
When design needs validation:
|
|
343
|
+
```markdown
|
|
344
|
+
## Usability Test Request
|
|
345
|
+
|
|
346
|
+
### Design to Test
|
|
347
|
+
[Description and link to prototype]
|
|
348
|
+
|
|
349
|
+
### Research Questions
|
|
350
|
+
1. Can users complete [task]?
|
|
351
|
+
2. Is [pattern] intuitive?
|
|
352
|
+
|
|
353
|
+
### Specific Concerns
|
|
354
|
+
- Worried about [interaction]
|
|
355
|
+
- Unsure about [copy/labeling]
|
|
356
|
+
|
|
357
|
+
### Success Criteria
|
|
358
|
+
- Task completion rate > X%
|
|
359
|
+
- Satisfaction score > X
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
## Accessibility Checklist
|
|
363
|
+
|
|
364
|
+
For every design, verify:
|
|
365
|
+
- [ ] Color contrast meets WCAG AA (4.5:1 text, 3:1 UI)
|
|
366
|
+
- [ ] Touch targets minimum 44x44px
|
|
367
|
+
- [ ] Focus states visible and clear
|
|
368
|
+
- [ ] No color-only information
|
|
369
|
+
- [ ] Text resizable to 200%
|
|
370
|
+
- [ ] Animations can be disabled
|
|
371
|
+
- [ ] Screen reader flow logical
|
|
372
|
+
- [ ] Form labels associated
|
|
373
|
+
- [ ] Error messages helpful
|
|
374
|
+
- [ ] Skip navigation available
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# AI Agent Skills Demo Repository
|
|
2
|
+
|
|
3
|
+
This repository demonstrates GitHub Copilot's multi-agent system with custom agents, skills, and handoffs for building IDEO-style digital products.
|
|
4
|
+
|
|
5
|
+
## Architecture Overview
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
.github/
|
|
9
|
+
├── agents/ # Agent definitions (*.agent.md frontmatter + instructions)
|
|
10
|
+
├── skills/ # Domain knowledge for specific capabilities (SKILL.md files)
|
|
11
|
+
└── appmod/ # App modernization configurations
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
**Key insight**: Agents are role-based specialists (PM, Developer, Designer, etc.) while skills are domain-specific knowledge modules that agents load on-demand.
|
|
15
|
+
|
|
16
|
+
## Agent System
|
|
17
|
+
|
|
18
|
+
### Agent Definition Format
|
|
19
|
+
Agents use `.agent.md` files with YAML frontmatter defining:
|
|
20
|
+
- `name`, `description`, `model` - Identity
|
|
21
|
+
- `tools` - Available capabilities (codebase, readFile, editFiles, runSubagent, etc.)
|
|
22
|
+
- `handoffs` - Other agents this agent can transfer control to
|
|
23
|
+
- `infer: true` - Enables the agent to be invoked as a subagent
|
|
24
|
+
|
|
25
|
+
### The Eight Agents
|
|
26
|
+
| Agent | Purpose | Primary Tools |
|
|
27
|
+
|-------|---------|---------------|
|
|
28
|
+
| `Beth` | Orchestrator - Routes work, spawns subagents | `runSubagent`, search tools |
|
|
29
|
+
| `product-manager` | PRDs, requirements, roadmaps | PRD skill |
|
|
30
|
+
| `researcher` | User/market research, competitive analysis | Research synthesis |
|
|
31
|
+
| `ux-designer` | Interface design, design systems | Framer skill |
|
|
32
|
+
| `frontend-engineer` | Pixel-perfect React/TypeScript UI | shadcn-ui skill, shadcn MCP |
|
|
33
|
+
| `developer` | Full-stack React/TypeScript/Next.js | All editing tools, Framer skill |
|
|
34
|
+
| `security-reviewer` | Security audits, threat modeling, compliance | security-analysis skill |
|
|
35
|
+
| `tester` | QA, accessibility, performance testing | Testing tools |
|
|
36
|
+
|
|
37
|
+
### Subagent vs Handoff Pattern
|
|
38
|
+
- **Handoffs**: User clicks button → context transferred → user reviews
|
|
39
|
+
- **Subagents**: Autonomous execution → results returned → continue workflow
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
// Subagent invocation pattern
|
|
43
|
+
runSubagent({
|
|
44
|
+
agentName: "researcher",
|
|
45
|
+
prompt: "Detailed task with expected output format...",
|
|
46
|
+
description: "3-5 word description"
|
|
47
|
+
})
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Skills System
|
|
51
|
+
|
|
52
|
+
Skills are domain-knowledge modules in `.github/skills/<name>/SKILL.md`. Agents load skills when triggered by specific phrases.
|
|
53
|
+
|
|
54
|
+
| Skill | Location | Triggers |
|
|
55
|
+
|-------|----------|----------|
|
|
56
|
+
| PRD Generation | `skills/prd/` | "create a prd", "product requirements" |
|
|
57
|
+
| Framer Components | `skills/framer-components/` | "framer component", "property controls" |
|
|
58
|
+
| Vercel React Best Practices | `skills/vercel-react-best-practices/` | React/Next.js performance work |
|
|
59
|
+
| Web Design Guidelines | `skills/web-design-guidelines/` | "review my UI", "check accessibility" |
|
|
60
|
+
| shadcn/ui Components | `skills/shadcn-ui/` | "shadcn", "ui component", component installation |
|
|
61
|
+
| Security Analysis | `skills/security-analysis/` | "security review", "OWASP", "threat model", "compliance" |
|
|
62
|
+
|
|
63
|
+
## Development Conventions
|
|
64
|
+
|
|
65
|
+
### Tech Stack
|
|
66
|
+
- **React 19** with Server Components, Server Actions, `use`, `useOptimistic`
|
|
67
|
+
- **Next.js App Router** with streaming, Suspense, parallel routes
|
|
68
|
+
- **TypeScript** in strict mode, Zod for runtime validation
|
|
69
|
+
- **Styling**: Tailwind CSS with `class-variance-authority` (cva)
|
|
70
|
+
|
|
71
|
+
### Code Patterns
|
|
72
|
+
|
|
73
|
+
**Server Components as default** - Only add `'use client'` when needed for interactivity:
|
|
74
|
+
```typescript
|
|
75
|
+
// Server Component (default)
|
|
76
|
+
export default async function Page() {
|
|
77
|
+
const data = await fetchData();
|
|
78
|
+
return <Display data={data} />;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Client Component (when needed)
|
|
82
|
+
'use client';
|
|
83
|
+
export function InteractiveWidget() { ... }
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Server Actions for mutations**:
|
|
87
|
+
```typescript
|
|
88
|
+
'use server';
|
|
89
|
+
export async function updateItem(formData: FormData) {
|
|
90
|
+
const parsed = Schema.safeParse(Object.fromEntries(formData));
|
|
91
|
+
if (!parsed.success) return { error: 'Invalid input' };
|
|
92
|
+
// mutation logic
|
|
93
|
+
revalidatePath('/path');
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Quality Standards
|
|
98
|
+
- WCAG 2.1 AA accessibility compliance
|
|
99
|
+
- Core Web Vitals in green (LCP < 2.5s, FID < 100ms, CLS < 0.1)
|
|
100
|
+
- Full TypeScript coverage, no `any`
|
|
101
|
+
- Unit tests for utilities, integration tests for features
|
|
102
|
+
|
|
103
|
+
## IDEO Design Thinking Integration
|
|
104
|
+
|
|
105
|
+
Apply human-centered design methodology across agent workflows:
|
|
106
|
+
|
|
107
|
+
| Phase | Agent | Activities |
|
|
108
|
+
|-------|-------|------------|
|
|
109
|
+
| **Empathize** | `@researcher` | User interviews, observation, pain point discovery |
|
|
110
|
+
| **Define** | `@product-manager` | Problem framing, requirements, success criteria |
|
|
111
|
+
| **Ideate** | `@ux-designer` | Solution exploration, design patterns, prototypes |
|
|
112
|
+
| **Prototype** | `@developer` | Build to learn, rapid iteration, feature spikes |
|
|
113
|
+
| **Test** | `@tester` | Validate assumptions, accessibility audits, performance |
|
|
114
|
+
|
|
115
|
+
Balance the three lenses: **Desirability** (user wants), **Feasibility** (technically possible), **Viability** (sustainable for business).
|
|
116
|
+
|
|
117
|
+
## React/Next.js Performance Patterns
|
|
118
|
+
|
|
119
|
+
Critical optimizations from [.github/skills/vercel-react-best-practices/AGENTS.md](.github/skills/vercel-react-best-practices/AGENTS.md):
|
|
120
|
+
|
|
121
|
+
### Eliminate Waterfalls (CRITICAL)
|
|
122
|
+
```typescript
|
|
123
|
+
// ❌ Sequential: 3 round trips
|
|
124
|
+
const user = await fetchUser();
|
|
125
|
+
const posts = await fetchPosts();
|
|
126
|
+
const comments = await fetchComments();
|
|
127
|
+
|
|
128
|
+
// ✅ Parallel: 1 round trip
|
|
129
|
+
const [user, posts, comments] = await Promise.all([
|
|
130
|
+
fetchUser(), fetchPosts(), fetchComments()
|
|
131
|
+
]);
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Strategic Suspense Boundaries
|
|
135
|
+
```tsx
|
|
136
|
+
// Wrapper renders immediately, data streams in
|
|
137
|
+
function Page() {
|
|
138
|
+
return (
|
|
139
|
+
<div>
|
|
140
|
+
<Header />
|
|
141
|
+
<Suspense fallback={<Skeleton />}>
|
|
142
|
+
<DataDisplay /> {/* Only this awaits data */}
|
|
143
|
+
</Suspense>
|
|
144
|
+
<Footer />
|
|
145
|
+
</div>
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Bundle Size Optimization
|
|
151
|
+
- **Avoid barrel imports**: `import { Check } from 'lucide-react'` → `import Check from 'lucide-react/dist/esm/icons/check'`
|
|
152
|
+
- **Dynamic imports**: Use `next/dynamic` for heavy components (Monaco, charts)
|
|
153
|
+
- **Defer non-critical**: Load analytics/tracking after hydration with `ssr: false`
|
|
154
|
+
|
|
155
|
+
### Server Action Security
|
|
156
|
+
Always authenticate inside Server Actions—they're public endpoints:
|
|
157
|
+
```typescript
|
|
158
|
+
'use server';
|
|
159
|
+
export async function deleteUser(userId: string) {
|
|
160
|
+
const session = await verifySession();
|
|
161
|
+
if (!session || session.user.id !== userId) throw unauthorized();
|
|
162
|
+
// proceed with mutation
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Workflow Patterns
|
|
167
|
+
|
|
168
|
+
### New Feature Flow
|
|
169
|
+
1. `@Beth` → analyzes request, proposes workflow
|
|
170
|
+
2. `@product-manager` → defines requirements (uses PRD skill)
|
|
171
|
+
3. `@researcher` → validates user needs (optional)
|
|
172
|
+
4. `@ux-designer` → designs interface
|
|
173
|
+
5. `@developer` → implements in React/TypeScript
|
|
174
|
+
6. `@security-reviewer` → audits for vulnerabilities
|
|
175
|
+
7. `@tester` → verifies quality
|
|
176
|
+
|
|
177
|
+
### Quick Commands
|
|
178
|
+
```
|
|
179
|
+
@IDEO-Orchestrator Plan a feature for [description]
|
|
180
|
+
@product-manager Create a PRD for [feature]
|
|
181
|
+
@developer Implement [component/feature]
|
|
182
|
+
@tester Write tests for [component]
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## File Naming Conventions
|
|
186
|
+
|
|
187
|
+
- Agents: `.github/agents/<name>.agent.md`
|
|
188
|
+
- Skills: `.github/skills/<skill-name>/SKILL.md`
|
|
189
|
+
- Components: `components/<Name>/<Name>.tsx` with `index.tsx` barrel
|
|
190
|
+
- Server Actions: `lib/actions/<domain>.ts`
|
|
191
|
+
- Data fetching: `lib/data/<domain>.ts`
|