@arbor-education/design-system.components 0.10.0 → 0.11.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/.claude/agent-memory/blanche-designspert/MEMORY.md +64 -0
- package/.claude/agent-memory/blanche-designspert/token-review-patterns.md +29 -0
- package/.claude/agent-memory/dorothy-fact-checker/MEMORY.md +129 -0
- package/.claude/agent-memory/rose-storybookspert/MEMORY.md +29 -0
- package/.claude/agent-memory/rose-storybookspert/patterns.md +132 -0
- package/.claude/agent-memory/sophia-componentspert/MEMORY.md +14 -0
- package/.claude/agent-memory/sophia-componentspert/components.md +367 -0
- package/.claude/agents/blanche-designspert.md +150 -0
- package/.claude/agents/dorothy-fact-checker.md +145 -0
- package/.claude/agents/rose-storybookspert.md +148 -0
- package/.claude/agents/sophia-componentspert.md +133 -0
- package/.claude/component-library.md +1107 -0
- package/.claude/design-assessment-daily-attendance-2026-04-10.md +566 -0
- package/.claude/figma-assessment-7154-58899.md +404 -0
- package/.claude/figma-assessment-UKQfcxnT4rlHHNuiumt4o1-11086-97537.md +392 -0
- package/.claude/figma-assessment-UKQfcxnT4rlHHNuiumt4o1-551-41974.md +474 -0
- package/.claude/figma-assessment-UKQfcxnT4rlHHNuiumt4o1-551-43094.md +462 -0
- package/.claude/figma-assessment-fcFK4CGzkz2fVyY3koX8ZE-7154-59061.md +440 -0
- package/.claude/migration-report-custom-report-writer-2026-02-19.md +591 -0
- package/.claude/skills/analyze-design/README.md +295 -0
- package/.claude/skills/analyze-design/SKILL.md +741 -0
- package/.claude/skills/create-page/README.md +246 -0
- package/.claude/skills/create-page/SKILL.md +634 -0
- package/.claude/skills/create-page/design-analysis-template.md +333 -0
- package/.claude/skills/create-page/page-template.scss +118 -0
- package/.claude/skills/create-page/page-template.tsx +230 -0
- package/.claude/skills/map-legacy/README.md +87 -0
- package/.claude/skills/map-legacy/SKILL.md +465 -0
- package/.claude/skills/migrate-page/README.md +125 -0
- package/.claude/skills/migrate-page/SKILL.md +374 -0
- package/.github/CODEOWNERS +1 -0
- package/.github/pull_request_template.md +39 -0
- package/CHANGELOG.md +14 -0
- package/CLAUDE.md +31 -0
- package/CONTRIBUTING.md +191 -0
- package/README.md +110 -20
- package/dist/components/table/DSDefaultColDef.js +2 -2
- package/dist/components/table/DSDefaultColDef.js.map +1 -1
- package/dist/components/table/Table.d.ts +5 -29
- package/dist/components/table/Table.d.ts.map +1 -1
- package/dist/components/table/Table.js +12 -22
- package/dist/components/table/Table.js.map +1 -1
- package/dist/components/table/Table.stories.d.ts +4 -0
- package/dist/components/table/Table.stories.d.ts.map +1 -1
- package/dist/components/table/Table.stories.js +163 -28
- package/dist/components/table/Table.stories.js.map +1 -1
- package/dist/components/table/Table.test.js +109 -8
- package/dist/components/table/Table.test.js.map +1 -1
- package/dist/components/table/TableSettingsContext.d.ts +13 -0
- package/dist/components/table/TableSettingsContext.d.ts.map +1 -0
- package/dist/components/table/TableSettingsContext.js +15 -0
- package/dist/components/table/TableSettingsContext.js.map +1 -0
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.d.ts +3 -0
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.d.ts.map +1 -0
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.js +12 -0
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.js.map +1 -0
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.test.d.ts +2 -0
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.test.d.ts.map +1 -0
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.test.js +65 -0
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.test.js.map +1 -0
- package/dist/components/table/tableConsts.d.ts +7 -0
- package/dist/components/table/tableConsts.d.ts.map +1 -0
- package/dist/components/table/tableConsts.js +8 -0
- package/dist/components/table/tableConsts.js.map +1 -0
- package/dist/components/table/{BulkActionsDropdown.d.ts → tableControls/BulkActionsDropdown.d.ts} +1 -1
- package/dist/components/table/tableControls/BulkActionsDropdown.d.ts.map +1 -0
- package/dist/components/table/{BulkActionsDropdown.js → tableControls/BulkActionsDropdown.js} +3 -3
- package/dist/components/table/tableControls/BulkActionsDropdown.js.map +1 -0
- package/dist/components/table/{HideColumnsDropdown.d.ts → tableControls/HideColumnsDropdown.d.ts} +1 -2
- package/dist/components/table/tableControls/HideColumnsDropdown.d.ts.map +1 -0
- package/dist/components/table/{HideColumnsDropdown.js → tableControls/HideColumnsDropdown.js} +2 -2
- package/dist/components/table/tableControls/HideColumnsDropdown.js.map +1 -0
- package/dist/components/table/tableControls/TableControls.d.ts +23 -0
- package/dist/components/table/tableControls/TableControls.d.ts.map +1 -0
- package/dist/components/table/tableControls/TableControls.js +21 -0
- package/dist/components/table/tableControls/TableControls.js.map +1 -0
- package/dist/components/table/tableControls/TableControls.test.d.ts +2 -0
- package/dist/components/table/tableControls/TableControls.test.d.ts.map +1 -0
- package/dist/components/table/tableControls/TableControls.test.js +124 -0
- package/dist/components/table/tableControls/TableControls.test.js.map +1 -0
- package/dist/components/table/tableControls/TableSettingsDropdown.d.ts.map +1 -0
- package/dist/components/table/{TableSettingsDropdown.js → tableControls/TableSettingsDropdown.js} +7 -6
- package/dist/components/table/tableControls/TableSettingsDropdown.js.map +1 -0
- package/dist/components/table/useTableSettings.d.ts +1 -1
- package/dist/components/table/useTableSettings.d.ts.map +1 -1
- package/dist/components/table/useTableSettings.js +1 -1
- package/dist/components/table/useTableSettings.js.map +1 -1
- package/dist/index.css +19 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/setAgGridLicenseKey.js +1 -1
- package/package.json +1 -1
- package/src/components/table/DSDefaultColDef.ts +2 -2
- package/src/components/table/Table.stories.tsx +202 -35
- package/src/components/table/Table.test.tsx +134 -8
- package/src/components/table/Table.tsx +12 -22
- package/src/components/table/TableSettingsContext.ts +15 -0
- package/src/components/table/cellRenderers/CheckboxCellRenderer.test.tsx +74 -0
- package/src/components/table/cellRenderers/CheckboxCellRenderer.tsx +28 -0
- package/src/components/table/table.scss +23 -1
- package/src/components/table/tableConsts.ts +6 -0
- package/src/components/table/{BulkActionsDropdown.tsx → tableControls/BulkActionsDropdown.tsx} +2 -2
- package/src/components/table/{HideColumnsDropdown.tsx → tableControls/HideColumnsDropdown.tsx} +2 -2
- package/src/components/table/tableControls/TableControls.test.tsx +150 -0
- package/src/components/table/tableControls/TableControls.tsx +143 -0
- package/src/components/table/{TableSettingsDropdown.tsx → tableControls/TableSettingsDropdown.tsx} +2 -1
- package/src/components/table/useTableSettings.ts +1 -1
- package/src/index.ts +1 -0
- package/src/utils/setAgGridLicenseKey.ts +1 -1
- package/dist/components/table/BulkActionsDropdown.d.ts.map +0 -1
- package/dist/components/table/BulkActionsDropdown.js.map +0 -1
- package/dist/components/table/HideColumnsDropdown.d.ts.map +0 -1
- package/dist/components/table/HideColumnsDropdown.js.map +0 -1
- package/dist/components/table/TableSettingsDropdown.d.ts.map +0 -1
- package/dist/components/table/TableSettingsDropdown.js.map +0 -1
- /package/dist/components/table/{TableSettingsDropdown.d.ts → tableControls/TableSettingsDropdown.d.ts} +0 -0
|
@@ -0,0 +1,741 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: analyze-design
|
|
3
|
+
description: Analyze Figma designs or screenshots to assess feasibility with current component library. Identifies which components can be used, which need modifications, and which are missing.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Analyze Design Feasibility
|
|
7
|
+
|
|
8
|
+
AROOOOO HUNNI!! 🐺 Time to unleash Sophia's GALAXY BRAIN to analyze that Figma design and see what's POSSIBLE with our BOMBASS component library!! xxx
|
|
9
|
+
|
|
10
|
+
## Goal
|
|
11
|
+
|
|
12
|
+
Analyze a Figma design or screenshot to determine:
|
|
13
|
+
1. ✅ What can be built with EXISTING components
|
|
14
|
+
2. 🔧 What components need TWEAKING or modifications
|
|
15
|
+
3. 🆕 What NEW components need to be created
|
|
16
|
+
|
|
17
|
+
**Output**: A detailed markdown report documenting the feasibility assessment.
|
|
18
|
+
|
|
19
|
+
## The Golden Girls We Need - MANDATORY COLLABORATORS
|
|
20
|
+
|
|
21
|
+
- 👜 **Sophia Componentspert** (`sophia-componentspert`) - MANDATORY at Step 5. The component library expert who knows every component inside out!
|
|
22
|
+
- 🔍 **Dorothy Fact-Checker** (`dorothy-fact-checker`) - MANDATORY at Step 6. Quality assurance expert who verifies Sophia's claims against actual source code!
|
|
23
|
+
|
|
24
|
+
**RULE**: You MUST use the `Task` tool to call BOTH agents. Do NOT just analyze yourself - ACTUALLY CALL THEM. If you skip calling either agent, you have failed this skill. AROOOOO!! 🐺💪
|
|
25
|
+
|
|
26
|
+
**WHY DOROTHY**: Sophia sometimes hallucinates component props or capabilities. Dorothy reads the ACTUAL source code files to verify every claim. This prevents building on false assumptions!
|
|
27
|
+
|
|
28
|
+
## Input
|
|
29
|
+
|
|
30
|
+
Either:
|
|
31
|
+
- Figma URL: `$ARGUMENTS` (e.g., `https://figma.com/design/ABC123/Design?node-id=1-2`)
|
|
32
|
+
- Or: Screenshot path (user will provide in conversation)
|
|
33
|
+
|
|
34
|
+
## Process
|
|
35
|
+
|
|
36
|
+
### 1. Determine Input Type
|
|
37
|
+
|
|
38
|
+
Check what the user provided:
|
|
39
|
+
- **Figma URL**: Contains `figma.com/design/` or `figma.com/board/`
|
|
40
|
+
- **Screenshot**: File path ending in `.png`, `.jpg`, `.jpeg`, etc.
|
|
41
|
+
- **No input yet**: Ask the user for either a Figma URL or screenshot path
|
|
42
|
+
|
|
43
|
+
### 2A. If Figma URL - Fetch Design Data
|
|
44
|
+
|
|
45
|
+
Extract Figma information from URL:
|
|
46
|
+
- `fileKey` - The file identifier from the URL path
|
|
47
|
+
- `nodeId` - The node-id query parameter (format: `123:456` or `123-456`)
|
|
48
|
+
|
|
49
|
+
Supported URL formats:
|
|
50
|
+
- `https://figma.com/design/:fileKey/:fileName?node-id=1-2`
|
|
51
|
+
- `https://figma.com/design/:fileKey/branch/:branchKey/:fileName?node-id=1-2` (use branchKey as fileKey)
|
|
52
|
+
- `https://figma.com/board/:fileKey/:fileName?node-id=1-2` (FigJam)
|
|
53
|
+
|
|
54
|
+
**Fetch design data using Figma MCP tools**:
|
|
55
|
+
|
|
56
|
+
1. **Get Screenshot**: Use `mcp__figma__get_screenshot`:
|
|
57
|
+
- `nodeId`: Extracted node ID (format `1:2`)
|
|
58
|
+
- `fileKey`: Extracted file key
|
|
59
|
+
- `clientFrameworks`: "react"
|
|
60
|
+
- `clientLanguages`: "typescript"
|
|
61
|
+
|
|
62
|
+
This gives visual context for analysis!
|
|
63
|
+
|
|
64
|
+
2. **Get Metadata**: Use `mcp__figma__get_metadata`:
|
|
65
|
+
- Shows component hierarchy, layer types, names
|
|
66
|
+
- Reveals page structure and nesting
|
|
67
|
+
- Lists all UI elements present
|
|
68
|
+
|
|
69
|
+
3. **Get Design Context**: Use `mcp__figma__get_design_context`:
|
|
70
|
+
- Shows detailed component structure and styles
|
|
71
|
+
- Provides Figma's own code suggestions (informative but we analyze against OUR library)
|
|
72
|
+
|
|
73
|
+
4. **Get Code Connect Map**: Use `mcp__figma__get_code_connect_map`:
|
|
74
|
+
- Shows any existing mappings between Figma components and Arbor components
|
|
75
|
+
- CRITICAL - these mappings tell us what's already connected!
|
|
76
|
+
|
|
77
|
+
### 2B. If Screenshot - Read the Image
|
|
78
|
+
|
|
79
|
+
Use the `Read` tool to load and view the screenshot:
|
|
80
|
+
```
|
|
81
|
+
Read tool: file_path="<path-to-screenshot>"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
You'll see the image visually (Claude Code is multimodal) and can analyze the UI elements.
|
|
85
|
+
|
|
86
|
+
### 3. Catalog UI Elements
|
|
87
|
+
|
|
88
|
+
List all distinct UI elements visible in the design:
|
|
89
|
+
- Buttons (and their variants/states)
|
|
90
|
+
- Form inputs (text, number, select, etc.)
|
|
91
|
+
- Headings and text styles
|
|
92
|
+
- Cards and containers
|
|
93
|
+
- Tables and data grids
|
|
94
|
+
- Icons
|
|
95
|
+
- Navigation elements
|
|
96
|
+
- Modals/dialogs/overlays
|
|
97
|
+
- Tags/badges/pills
|
|
98
|
+
- Dividers/separators
|
|
99
|
+
- Any other interactive or display components
|
|
100
|
+
|
|
101
|
+
Be thorough! The more complete your catalog, the better Sophia's analysis will be.
|
|
102
|
+
|
|
103
|
+
### 4. Review Available Components
|
|
104
|
+
|
|
105
|
+
Read the component library manifest for a comprehensive view of every component, its props, variants, and use cases:
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
Read tool: file_path=".claude/component-library.md"
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
This manifest is the authoritative reference. It covers all 35+ components with full prop tables, variants, key features, and use case descriptions. Use it to build your catalog of what's available BEFORE calling Sophia.
|
|
112
|
+
|
|
113
|
+
The full component list includes: `Avatar`, `AvatarGroup`, `Banner`, `Button`, `Card`, `DatePicker`, `Dropdown`, `EditableText`, `FormField`, `Fieldset`, `TextInput`, `TextArea`, `NumberInput`, `CheckboxInput`, `CheckboxGroup`, `RadioButtonInput`, `RadioButtonGroup`, `SelectDropdown`, `ColourPickerDropdown`, `Heading`, `Icon`, `Modal`, `ModalManager`, `Pill`, `Progress`, `SearchBar`, `Section`, `Separator`, `Slideover`, `SlideoverManager`, `Table`, `Tabs`, `Tag`, `Toast`, `Tooltip`, `TooltipWrapper`, `UserDropdown`
|
|
114
|
+
|
|
115
|
+
**Pass the full manifest content to Sophia** in Step 5 so she has everything she needs without re-reading files herself.
|
|
116
|
+
|
|
117
|
+
### ⚡ MANDATORY STEP 5 - CALL SOPHIA COMPONENTSPERT NOW ⚡
|
|
118
|
+
|
|
119
|
+
**YOU MUST USE THE `Task` tool RIGHT NOW** to launch the `sophia-componentspert` agent. This is NOT optional. Do NOT skip this. Do NOT proceed without calling her.
|
|
120
|
+
|
|
121
|
+
Sophia will analyze the design against the component library and provide expert assessment.
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
Task tool: subagent_type="sophia-componentspert"
|
|
125
|
+
prompt: "I need you to analyze this design and assess what's possible with our current component library.
|
|
126
|
+
|
|
127
|
+
DESIGN INFORMATION:
|
|
128
|
+
[Paste the design screenshot description, metadata, and/or visual elements you identified]
|
|
129
|
+
|
|
130
|
+
UI ELEMENTS IDENTIFIED:
|
|
131
|
+
[List all the UI elements you cataloged in step 3]
|
|
132
|
+
|
|
133
|
+
AVAILABLE COMPONENTS:
|
|
134
|
+
[List the components from src/index.ts]
|
|
135
|
+
|
|
136
|
+
Please provide a detailed analysis with THREE sections:
|
|
137
|
+
|
|
138
|
+
1. ✅ POSSIBLE WITH CURRENT COMPONENTS
|
|
139
|
+
- List each UI element from the design that CAN be built with existing components
|
|
140
|
+
- For each one, specify WHICH component(s) to use and key props
|
|
141
|
+
- Be specific about component APIs
|
|
142
|
+
|
|
143
|
+
2. 🔧 NEEDS MODIFICATIONS
|
|
144
|
+
- List components that exist but would need tweaks/enhancements to match the design
|
|
145
|
+
- Specify exactly what modifications are needed (new props, new variants, style changes, etc.)
|
|
146
|
+
- Explain the gap between current component and design requirements
|
|
147
|
+
|
|
148
|
+
3. 🆕 NEW COMPONENTS NEEDED
|
|
149
|
+
- List UI elements that don't have existing component equivalents
|
|
150
|
+
- Explain why existing components can't be adapted
|
|
151
|
+
- Suggest what would need to be built from scratch
|
|
152
|
+
|
|
153
|
+
Be thorough and specific! Think about component APIs, variants, and realistic feasibility."
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**WAIT for Sophia's response before continuing.** DO NOT proceed to the next step until you have Sophia's analysis.
|
|
157
|
+
|
|
158
|
+
### ⚡ MANDATORY STEP 6 - CALL DOROTHY FACT-CHECKER NOW ⚡
|
|
159
|
+
|
|
160
|
+
**YOU MUST USE THE `Task` tool RIGHT NOW** to launch the `dorothy-fact-checker` agent. This is NOT optional. Sophia sometimes hallucin ates props or capabilities. Dorothy verifies EVERY claim against actual source code.
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
Task tool: subagent_type="dorothy-fact-checker"
|
|
164
|
+
prompt: "Sophia just analyzed a Figma design and made claims about our component library. I need you to FACT-CHECK her claims by reading the actual source code files.
|
|
165
|
+
|
|
166
|
+
SOPHIA'S CLAIMS TO VERIFY:
|
|
167
|
+
[List the key components and props Sophia mentioned]
|
|
168
|
+
|
|
169
|
+
YOUR TASK:
|
|
170
|
+
1. Read src/index.ts to verify what's exported
|
|
171
|
+
2. Read the actual component files Sophia referenced (Button.tsx, Section.tsx, Table.tsx, Pill.tsx, Icon allowedIcons file, etc.)
|
|
172
|
+
3. For each component Sophia mentioned, verify:
|
|
173
|
+
- Does it exist?
|
|
174
|
+
- Is it exported from src/index.ts (public API)?
|
|
175
|
+
- Do the props she mentioned actually exist?
|
|
176
|
+
- Are the prop NAMES correct? (e.g., is it 'defaultExpanded' or 'collapsed'?)
|
|
177
|
+
- Are icon names correct?
|
|
178
|
+
4. Call out ANY hallucinations or incorrect information
|
|
179
|
+
5. Provide CORRECTED information for anything wrong
|
|
180
|
+
6. List every file you read to verify
|
|
181
|
+
|
|
182
|
+
BE BRUTALLY HONEST. If Sophia hallucinated props, got names wrong, or made incorrect claims, I need the truth. Check ACTUAL source code, not assumptions.
|
|
183
|
+
|
|
184
|
+
Here's what Sophia claimed: [paste relevant excerpts from Sophia's response]"
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
**WAIT for Dorothy's response before continuing.** Her fact-check is CRITICAL.
|
|
188
|
+
|
|
189
|
+
After Dorothy responds, **REVIEW HER CORRECTIONS** and note any hallucinations or errors Sophia made. You will use Dorothy's CORRECTED information in the final report, NOT Sophia's original claims if they were wrong.
|
|
190
|
+
|
|
191
|
+
### 7. Generate Feasibility Report
|
|
192
|
+
|
|
193
|
+
Using Sophia's analysis AND Dorothy's fact-checked corrections, create a comprehensive markdown report.
|
|
194
|
+
|
|
195
|
+
**CRITICAL**: Use Dorothy's CORRECTED information where she found errors! If Dorothy said a prop doesn't exist or has a different name, use her correction in the report, NOT Sophia's original claim.
|
|
196
|
+
|
|
197
|
+
**Report file naming**:
|
|
198
|
+
- For Figma URLs: `.claude/figma-assessment-{fileKey}-{nodeId-without-colons}.md`
|
|
199
|
+
- Example: `figma-assessment-ABC123-1-2.md`
|
|
200
|
+
- For screenshots: `.claude/design-assessment-{timestamp}.md`
|
|
201
|
+
- Example: `design-assessment-2026-02-19.md`
|
|
202
|
+
|
|
203
|
+
**Report structure** (see `.claude/figma-assessment-7154-58899.md` for reference format):
|
|
204
|
+
|
|
205
|
+
The report should be organized like Sophia's voice - conversational, with Sicilian anecdotes, but grounded in FACTS verified by Dorothy.
|
|
206
|
+
|
|
207
|
+
```markdown
|
|
208
|
+
# Figma Design Feasibility Assessment
|
|
209
|
+
## Design: Node {nodeId} — [Descriptive Title]
|
|
210
|
+
**Written by:** Sophia Petrillo, Componentspert, age none-of-your-business
|
|
211
|
+
**Fact-checked by:** Dorothy Zbornak, QA Expert
|
|
212
|
+
**Date**: [current date]
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## What Is This Thing, Anyway?
|
|
217
|
+
|
|
218
|
+
[Sophia-voice description of the design with a Sicily anecdote. Describe what the design shows and its purpose.]
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Section 1: What We Already Have — Use These As-Is, Don't Reinvent Them
|
|
223
|
+
|
|
224
|
+
[For each component that CAN be used as-is, provide:]
|
|
225
|
+
### ComponentName (`path/to/Component.tsx`)
|
|
226
|
+
|
|
227
|
+
[Brief Sophia-voice intro]
|
|
228
|
+
|
|
229
|
+
**Key features:**
|
|
230
|
+
- Prop details with ACTUAL prop names (verified by Dorothy)
|
|
231
|
+
- Code examples showing correct usage
|
|
232
|
+
- Any gotchas or notes
|
|
233
|
+
|
|
234
|
+
**Example:**
|
|
235
|
+
```tsx
|
|
236
|
+
<Component prop="value" />
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
[Continue for all ready-to-use components]
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Section 2: Almost There — Minor Issues or Gotchas
|
|
244
|
+
|
|
245
|
+
[Components that exist but have caveats, missing exports, or minor limitations]
|
|
246
|
+
|
|
247
|
+
### ComponentName
|
|
248
|
+
|
|
249
|
+
**What exists:** [Current state]
|
|
250
|
+
**What's needed:** [Gap or issue]
|
|
251
|
+
**The fix:** [Specific action needed]
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Section 3: Build It From Scratch — These Don't Exist Yet
|
|
256
|
+
|
|
257
|
+
[UI elements that have NO component equivalents]
|
|
258
|
+
|
|
259
|
+
### ElementName
|
|
260
|
+
|
|
261
|
+
[Why it doesn't exist, what would be needed, effort estimate]
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## Section 4: Tricky Bits — Pay Attention Here
|
|
266
|
+
|
|
267
|
+
[Complex integration points, state management concerns, gotchas]
|
|
268
|
+
|
|
269
|
+
### 1. [Tricky Thing]
|
|
270
|
+
|
|
271
|
+
[Detailed explanation of the complexity and how to handle it]
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Section 5: The Verdict
|
|
276
|
+
|
|
277
|
+
[Sophia's overall assessment with Sicily anecdote]
|
|
278
|
+
|
|
279
|
+
### Is It Buildable With Our Existing Components?
|
|
280
|
+
|
|
281
|
+
**[Yes/No/Mostly]. [Confidence level].**
|
|
282
|
+
|
|
283
|
+
**Summary Table:**
|
|
284
|
+
|
|
285
|
+
| Design Element | Library Component | Status |
|
|
286
|
+
|---|---|---|
|
|
287
|
+
| Element | Component | Ready/Needs work/Missing |
|
|
288
|
+
|
|
289
|
+
### What Actually Needs Work
|
|
290
|
+
|
|
291
|
+
| Item | Where It Lives | Effort |
|
|
292
|
+
|---|---|---|
|
|
293
|
+
| Thing | Location | Low/Medium/High |
|
|
294
|
+
|
|
295
|
+
### Summary Verdict
|
|
296
|
+
|
|
297
|
+
[Final recommendation]
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Appendix: Files Referenced in This Assessment
|
|
302
|
+
|
|
303
|
+
[List EVERY file that Dorothy read to verify claims. This proves the assessment is grounded in actual code, not hallucinations.]
|
|
304
|
+
|
|
305
|
+
- `path/to/file1.tsx`
|
|
306
|
+
- `path/to/file2.tsx`
|
|
307
|
+
- ...
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## Design Overview
|
|
312
|
+
|
|
313
|
+
[Brief description of what the design shows - e.g., "A user profile page with avatar, form fields, and action buttons"]
|
|
314
|
+
|
|
315
|
+
### UI Elements Identified
|
|
316
|
+
|
|
317
|
+
[Bulleted list of all UI elements cataloged]
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
## Assessment
|
|
322
|
+
|
|
323
|
+
### ✅ Possible with Current Components
|
|
324
|
+
|
|
325
|
+
[Sophia's analysis of what CAN be built]
|
|
326
|
+
|
|
327
|
+
For each element, include:
|
|
328
|
+
- **Design element**: [name from design]
|
|
329
|
+
- **Component to use**: `ComponentName`
|
|
330
|
+
- **Key props**: [relevant props and values]
|
|
331
|
+
- **Notes**: [any usage considerations]
|
|
332
|
+
|
|
333
|
+
Example:
|
|
334
|
+
- **Design element**: Primary action button
|
|
335
|
+
- **Component to use**: `Button`
|
|
336
|
+
- **Key props**: `variant="primary"`, `onClick={...}`
|
|
337
|
+
- **Notes**: Supports all button states (hover, disabled, loading)
|
|
338
|
+
|
|
339
|
+
### 🔧 Components Needing Modifications
|
|
340
|
+
|
|
341
|
+
[Sophia's analysis of what needs tweaking]
|
|
342
|
+
|
|
343
|
+
For each component, include:
|
|
344
|
+
- **Component**: `ComponentName`
|
|
345
|
+
- **Current limitation**: [what it can't do now]
|
|
346
|
+
- **Required modification**: [what needs to change]
|
|
347
|
+
- **Impact**: [Low/Medium/High effort estimate]
|
|
348
|
+
|
|
349
|
+
Example:
|
|
350
|
+
- **Component**: `FormField`
|
|
351
|
+
- **Current limitation**: No inline validation indicator
|
|
352
|
+
- **Required modification**: Add `showValidationIcon` prop to display checkmark/error icon inline with input
|
|
353
|
+
- **Impact**: Medium - requires new prop and styling for icon positioning
|
|
354
|
+
|
|
355
|
+
### 🆕 New Components Required
|
|
356
|
+
|
|
357
|
+
[Sophia's analysis of what doesn't exist]
|
|
358
|
+
|
|
359
|
+
For each new component, include:
|
|
360
|
+
- **Design element**: [name from design]
|
|
361
|
+
- **Why existing components don't fit**: [explanation]
|
|
362
|
+
- **Suggested component**: `NewComponentName`
|
|
363
|
+
- **Key features needed**: [list of requirements]
|
|
364
|
+
|
|
365
|
+
Example:
|
|
366
|
+
- **Design element**: Expandable timeline with nested events
|
|
367
|
+
- **Why existing components don't fit**: No existing component handles nested, expandable timeline visualization
|
|
368
|
+
- **Suggested component**: `Timeline`
|
|
369
|
+
- **Key features needed**:
|
|
370
|
+
- Vertical timeline display
|
|
371
|
+
- Nested event support
|
|
372
|
+
- Expand/collapse functionality
|
|
373
|
+
- Icon/avatar support for events
|
|
374
|
+
- Date formatting
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
## Summary
|
|
379
|
+
|
|
380
|
+
**Feasibility Score**: [X/Y elements can be built with current components]
|
|
381
|
+
|
|
382
|
+
- ✅ **Ready to build**: X elements
|
|
383
|
+
- 🔧 **Needs modifications**: Y components
|
|
384
|
+
- 🆕 **Requires new components**: Z elements
|
|
385
|
+
|
|
386
|
+
**Recommendation**: [Overall assessment - "Highly feasible with minor tweaks" / "Requires significant component work" / etc.]
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
## Next Steps
|
|
391
|
+
|
|
392
|
+
1. **For immediate implementation**: Use the components identified in the "Possible with Current Components" section
|
|
393
|
+
2. **For modifications**: Prioritize the modifications by impact and implement them before building the design
|
|
394
|
+
3. **For new components**: Consider whether to build new components or adjust the design to use existing ones
|
|
395
|
+
|
|
396
|
+
**To generate a page from this design**: Use `/create-page [figma-url]` after addressing required modifications and new components.
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
*Analysis by Sophia Componentspert 👜, fact-checked by Dorothy Zbornak 🔍*
|
|
401
|
+
*Powered by Claude Code 🐺*
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
### 8. Write Report to File
|
|
405
|
+
|
|
406
|
+
Use the `Write` tool to create the assessment markdown file:
|
|
407
|
+
|
|
408
|
+
```
|
|
409
|
+
Write tool:
|
|
410
|
+
file_path: ".claude/figma-assessment-{fileKey}-{nodeId}.md"
|
|
411
|
+
content: [the generated report]
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
### 9. Present Summary to User
|
|
415
|
+
|
|
416
|
+
After writing the report, share a BOMBASS summary with the user:
|
|
417
|
+
|
|
418
|
+
**Share Sophia's wisdom AND Dorothy's fact-checking** (relay key points):
|
|
419
|
+
|
|
420
|
+
> 👜 **Sophia says:** _[relay Sophia's overall assessment in her warm, knowledgeable voice - e.g. "Oh pussycat, this design is MOSTLY doable with what we have! That form section? Our FormField and TextInput are perfect for it. The data table? Table component has you covered. But that custom timeline visualization? That's gonna need a whole new component, babe. Here's the breakdown..."]_
|
|
421
|
+
|
|
422
|
+
Then provide:
|
|
423
|
+
1. 📊 **Feasibility score**: "X out of Y elements can be built with current components"
|
|
424
|
+
2. ✅ **Highlights**: List 2-3 major elements that ARE possible
|
|
425
|
+
3. 🔧 **Modifications needed**: Briefly note any tweaks required
|
|
426
|
+
4. 🆕 **New components**: List any components that need creating
|
|
427
|
+
5. 📄 **Report location**: Path to the generated markdown file
|
|
428
|
+
|
|
429
|
+
Then ask the user all optional follow-up questions **together in one message**:
|
|
430
|
+
|
|
431
|
+
> "Want me to level this up even further? I can:
|
|
432
|
+
> - 🎫 **Create Jira tickets** for each work item (modifications + new components)
|
|
433
|
+
> - 📝 **Save the report to Confluence** (and if I create tickets, I'll link them in the doc too!)
|
|
434
|
+
> - 💬 **Post a summary to Slack** — Confluence link, feasibility score, and ticket refs dropped straight into your channel!
|
|
435
|
+
>
|
|
436
|
+
> Say yes to any combo — you're the boss hunni! xxx 🐺"
|
|
437
|
+
|
|
438
|
+
Example output:
|
|
439
|
+
```
|
|
440
|
+
AROOOOO HUNNI! 🐺 Sophia has assessed that BOMBASS design! xxx
|
|
441
|
+
|
|
442
|
+
📊 **Feasibility**: 12 out of 15 elements can be built with current components!
|
|
443
|
+
|
|
444
|
+
✅ **Ready to rock**:
|
|
445
|
+
- Form fields → Use FormField + TextInput/SelectDropdown
|
|
446
|
+
- Action buttons → Use Button with primary/secondary variants
|
|
447
|
+
- Data table → Use Table component
|
|
448
|
+
|
|
449
|
+
🔧 **Needs tweaks**:
|
|
450
|
+
- Button component needs new "icon-only" variant for toolbar buttons
|
|
451
|
+
|
|
452
|
+
🆕 **New components required**:
|
|
453
|
+
- Timeline component for event visualization
|
|
454
|
+
- ProgressStepper component for multi-step process
|
|
455
|
+
|
|
456
|
+
📄 **Full report**: .claude/figma-assessment-ABC123-1-2.md
|
|
457
|
+
|
|
458
|
+
**Recommendation**: MOST EXCELLENT feasibility hunni! Start building with existing components while we add that icon-only button variant! xxx 🏍️💪
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
---
|
|
462
|
+
|
|
463
|
+
### 10. (Optional) Create Jira Tickets from Recommendations
|
|
464
|
+
|
|
465
|
+
**Only do this step if the user said YES to Jira tickets.**
|
|
466
|
+
|
|
467
|
+
**a) Atlassian base URL:**
|
|
468
|
+
|
|
469
|
+
The Atlassian instance is **`https://orchard.atlassian.net`**. Use this to construct all ticket links — no need to call `getAccessibleAtlassianResources`.
|
|
470
|
+
|
|
471
|
+
**b) Look up the "Robot playground" sprint ID:**
|
|
472
|
+
|
|
473
|
+
Use `mcp__atlassian__fetchAtlassian` to call the Agile API:
|
|
474
|
+
```
|
|
475
|
+
GET /rest/agile/1.0/board/221/sprint?state=active,future
|
|
476
|
+
```
|
|
477
|
+
Find the sprint named **"Robot playground"** in the response and note its numeric `id`. You will pass this as the sprint field when creating tickets.
|
|
478
|
+
|
|
479
|
+
**c) Look up the FLUX team field:**
|
|
480
|
+
|
|
481
|
+
Use `mcp__atlassian__getJiraProjectIssueTypesMetadata` with project key `MIS` to get the available fields. Look for a field named `team` or `Team` (it will be a custom field like `customfield_XXXXX`). Also note the field's allowed values to find the one matching **"FLUX"**.
|
|
482
|
+
|
|
483
|
+
If the team field/value isn't visible in project metadata, use `mcp__atlassian__fetchAtlassian` to call:
|
|
484
|
+
```
|
|
485
|
+
GET /rest/api/3/project/MIS/versions
|
|
486
|
+
```
|
|
487
|
+
or inspect an existing ticket in the project to find the correct custom field ID for team.
|
|
488
|
+
|
|
489
|
+
**d) Create a ticket for EVERY work item:**
|
|
490
|
+
|
|
491
|
+
All tickets go in project **`MIS`** with these fields set on every ticket:
|
|
492
|
+
- **Sprint**: The "Robot playground" sprint ID found in step (b)
|
|
493
|
+
- **Team**: `"FLUX"` — using the custom field ID found in step (c)
|
|
494
|
+
|
|
495
|
+
For each **🔧 modification** (component that needs changes):
|
|
496
|
+
- **Summary**: `Modify [ComponentName]: [brief description of what needs changing]`
|
|
497
|
+
- **Description**: Full details from the report — what the component currently lacks, what modification is needed, effort estimate, and a reference to the design assessment file (`.claude/figma-assessment-*.md`)
|
|
498
|
+
|
|
499
|
+
For each **🆕 new component** (things that need building from scratch):
|
|
500
|
+
- **Summary**: `Create [NewComponentName]: [brief description]`
|
|
501
|
+
- **Description**: Full details from the report — why it doesn't exist, key features/requirements, effort estimate, and a reference to the design assessment file
|
|
502
|
+
|
|
503
|
+
Use `mcp__atlassian__createJiraIssue` for each ticket, passing the sprint ID and team field as custom fields.
|
|
504
|
+
|
|
505
|
+
**e) Track all created ticket keys** — store them in a list like:
|
|
506
|
+
```
|
|
507
|
+
[
|
|
508
|
+
{ key: "MIS-12345", summary: "Modify Button: Add icon-only variant", type: "modification" },
|
|
509
|
+
{ key: "MIS-12346", summary: "Create ToggleSwitch component", type: "new-component" }
|
|
510
|
+
]
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
You WILL need this list for Step 11 if the user wants a Confluence page.
|
|
514
|
+
|
|
515
|
+
**f) Report back to the user:**
|
|
516
|
+
|
|
517
|
+
```
|
|
518
|
+
🎫 AROOOOO TICKETS CREATED HUNNI!! 🐺💪
|
|
519
|
+
|
|
520
|
+
Work items are now tracked in Jira:
|
|
521
|
+
🔧 [MIS-12345] Modify Button: Add icon-only variant
|
|
522
|
+
🔧 [MIS-12346] Modify Section: Add defaultExpanded prop
|
|
523
|
+
🆕 [MIS-12347] Create ToggleSwitch component
|
|
524
|
+
🆕 [MIS-12348] Create Timeline component
|
|
525
|
+
|
|
526
|
+
BODACIOUS work tracking hunni!! xxx
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
---
|
|
530
|
+
|
|
531
|
+
### 11. (Optional) Save Report to Confluence
|
|
532
|
+
|
|
533
|
+
**Only do this step if the user said YES to Confluence.**
|
|
534
|
+
|
|
535
|
+
**a) Target Confluence location:**
|
|
536
|
+
|
|
537
|
+
All assessment pages go into this specific Confluence folder — **do not ask the user**:
|
|
538
|
+
- **Space**: `SATD`
|
|
539
|
+
- **Parent page/folder ID**: `2540666919`
|
|
540
|
+
- **Atlassian instance**: `https://orchard.atlassian.net`
|
|
541
|
+
|
|
542
|
+
Use `mcp__atlassian__createConfluencePage` with `spaceKey: "SATD"` and `parentId: "2540666919"`.
|
|
543
|
+
|
|
544
|
+
**b) Build the Confluence page content:**
|
|
545
|
+
|
|
546
|
+
Confluence pages use Atlassian storage format (XHTML-based). Convert the markdown report into well-structured HTML. Key conversions:
|
|
547
|
+
- Headings: `<h1>`, `<h2>`, `<h3>`
|
|
548
|
+
- Bold: `<strong>`
|
|
549
|
+
- Code blocks: `<ac:structured-macro ac:name="code"><ac:plain-text-body><![CDATA[...]]></ac:plain-text-body></ac:structured-macro>`
|
|
550
|
+
- Inline code: `<code>`
|
|
551
|
+
- Tables: standard HTML `<table><tr><th>/<td>` format
|
|
552
|
+
- Lists: `<ul><li>` or `<ol><li>`
|
|
553
|
+
- Horizontal rules: `<hr />`
|
|
554
|
+
|
|
555
|
+
**c) If Jira tickets were created in Step 10**, prepend a "Work Items" section near the top of the page (right after the title/intro, before the main assessment sections):
|
|
556
|
+
|
|
557
|
+
```html
|
|
558
|
+
<h2>🎫 Jira Work Items</h2>
|
|
559
|
+
<p>The following tickets have been created to track the work identified in this assessment:</p>
|
|
560
|
+
<table>
|
|
561
|
+
<tbody>
|
|
562
|
+
<tr>
|
|
563
|
+
<th>Type</th>
|
|
564
|
+
<th>Ticket</th>
|
|
565
|
+
<th>Description</th>
|
|
566
|
+
</tr>
|
|
567
|
+
<tr>
|
|
568
|
+
<td>🔧 Modification</td>
|
|
569
|
+
<td><a href="[ATLASSIAN_BASE_URL]/browse/MIS-12345">MIS-12345</a></td>
|
|
570
|
+
<td>Modify Button: Add icon-only variant</td>
|
|
571
|
+
</tr>
|
|
572
|
+
<tr>
|
|
573
|
+
<td>🆕 New Component</td>
|
|
574
|
+
<td><a href="[ATLASSIAN_BASE_URL]/browse/MIS-12347">MIS-12347</a></td>
|
|
575
|
+
<td>Create ToggleSwitch component</td>
|
|
576
|
+
</tr>
|
|
577
|
+
</tbody>
|
|
578
|
+
</table>
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
Replace `[ATLASSIAN_BASE_URL]` with the URL retrieved in Step 10a (e.g., `https://yourcompany.atlassian.net`).
|
|
582
|
+
|
|
583
|
+
**d) Create the page:**
|
|
584
|
+
|
|
585
|
+
Use `mcp__atlassian__createConfluencePage` with:
|
|
586
|
+
- `spaceKey`: The chosen space key
|
|
587
|
+
- `title`: `Design Feasibility Assessment: [Descriptive Design Name] — [YYYY-MM-DD]`
|
|
588
|
+
- `content`: The full formatted HTML content of the report
|
|
589
|
+
|
|
590
|
+
**e) Report back to the user with the page link:**
|
|
591
|
+
|
|
592
|
+
```
|
|
593
|
+
📝 AROOOOO CONFLUENCE PAGE CREATED HUNNI!! 🐺✨
|
|
594
|
+
|
|
595
|
+
Your bombass design assessment is now immortalized for all time:
|
|
596
|
+
📄 Design Feasibility Assessment: Daily Attendance — 2026-04-10
|
|
597
|
+
🔗 [link from the createConfluencePage response]
|
|
598
|
+
|
|
599
|
+
[If tickets were created: "All Jira work items are linked in the doc — team can see exactly what needs building! 💖"]
|
|
600
|
+
|
|
601
|
+
MOST EXCELLENT documentation hunni!!! xxx 🏍️
|
|
602
|
+
```
|
|
603
|
+
|
|
604
|
+
---
|
|
605
|
+
|
|
606
|
+
### 12. (Optional) Post Summary to Slack
|
|
607
|
+
|
|
608
|
+
**Only do this step if the user said YES to Slack.**
|
|
609
|
+
|
|
610
|
+
**a) Find the right channel:**
|
|
611
|
+
|
|
612
|
+
The design system channel is **`wg-design-system`**. Use `mcp__plugin_slack_slack__slack_search_channels` with the query `"wg-design-system"` to get its channel ID. Use that ID when sending the message.
|
|
613
|
+
|
|
614
|
+
**b) Compose the Slack message:**
|
|
615
|
+
|
|
616
|
+
Build a well-formatted Slack message using standard markdown (Slack uses `*bold*`, `_italic_`, and `\`code\``). The message should contain:
|
|
617
|
+
|
|
618
|
+
1. **Header** — the design name and assessment date
|
|
619
|
+
2. **Feasibility score** — X/Y elements ready
|
|
620
|
+
3. **Quick breakdown** — ready ✅, needs tweaks 🔧, new builds needed 🆕 (keep it punchy — 1 line each, not exhaustive lists)
|
|
621
|
+
4. **Confluence link** — if the page was created in Step 11 (use the URL returned by `createConfluencePage`)
|
|
622
|
+
5. **Jira tickets** — if tickets were created in Step 10, list each one as a clickable link using the format `<[ATLASSIAN_BASE_URL]/browse/MIS-12345|MIS-12345>` (Slack link format)
|
|
623
|
+
6. **Local report fallback** — if no Confluence page was created, reference the local `.claude/` report path instead
|
|
624
|
+
|
|
625
|
+
Example message shape:
|
|
626
|
+
```
|
|
627
|
+
🐺 *Design Feasibility Assessment: Daily Attendance*
|
|
628
|
+
|
|
629
|
+
📊 *Feasibility:* 12/15 elements can be built with current components
|
|
630
|
+
|
|
631
|
+
✅ *Ready to rock:* FormField, Button, Table, Heading, Separator
|
|
632
|
+
🔧 *Needs tweaks:* Section (1 component)
|
|
633
|
+
🆕 *New builds needed:* ToggleSwitch, Timeline (2 components)
|
|
634
|
+
|
|
635
|
+
📄 *Full report:* <https://yourcompany.atlassian.net/wiki/...|Design Feasibility Assessment: Daily Attendance — 2026-04-10>
|
|
636
|
+
|
|
637
|
+
🎫 *Jira work items:*
|
|
638
|
+
• <https://yourcompany.atlassian.net/browse/MIS-12345|MIS-12345> — Modify Section: Add collapsed prop
|
|
639
|
+
• <https://yourcompany.atlassian.net/browse/MIS-12346|MIS-12346> — Create ToggleSwitch component
|
|
640
|
+
• <https://yourcompany.atlassian.net/browse/MIS-12347|MIS-12347> — Create Timeline component
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
If no Confluence page and no Jira tickets exist, simplify accordingly — just the score, breakdown, and local report path.
|
|
644
|
+
|
|
645
|
+
**c) Send the message:**
|
|
646
|
+
|
|
647
|
+
Use `mcp__plugin_slack_slack__slack_send_message` with:
|
|
648
|
+
- `channel_id`: The channel ID from the search result
|
|
649
|
+
- `text`: The composed message
|
|
650
|
+
|
|
651
|
+
**d) Report back to the user:**
|
|
652
|
+
|
|
653
|
+
```
|
|
654
|
+
💬 AROOOOO SLACK NOTIF SENT HUNNI!! 🐺✨
|
|
655
|
+
|
|
656
|
+
The design system channel has been blessed with this bombass assessment!
|
|
657
|
+
📣 Posted to: #design-system (or whatever channel name)
|
|
658
|
+
|
|
659
|
+
The team is now fully in the loop — MOST EXCELLENT communication hunni!!! xxx 🏍️
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
---
|
|
663
|
+
|
|
664
|
+
## Important Notes
|
|
665
|
+
|
|
666
|
+
- **Always call BOTH Sophia AND Dorothy** - Sophia provides initial analysis, Dorothy verifies it against actual code
|
|
667
|
+
- **Dorothy catches hallucinations** - Sophia sometimes makes up props or gets names wrong. Dorothy reads the actual source files to verify EVERY claim
|
|
668
|
+
- **Use Dorothy's corrections** - If Dorothy says a prop doesn't exist or has a different name, trust her! She read the code
|
|
669
|
+
- **Be thorough** - Better to over-catalog UI elements than miss them
|
|
670
|
+
- **Be specific** - Don't just say "use Button", say "use Button with variant='primary'" (and make sure that variant actually exists!)
|
|
671
|
+
- **Be realistic** - If something truly needs a new component, say so
|
|
672
|
+
- **Write the report** - Don't just output to console, create the markdown file!
|
|
673
|
+
- **Follow the reference format** - See `.claude/figma-assessment-7154-58899.md` for the correct structure and tone
|
|
674
|
+
- **List verified files** - Include an Appendix with every file Dorothy read to prove the assessment is grounded in real code
|
|
675
|
+
- **Consider feasibility holistically** - A design that needs 10 new components is NOT highly feasible
|
|
676
|
+
- This codebase serves millions of users - accurate assessments matter!
|
|
677
|
+
- Use yarn (NOT npm)
|
|
678
|
+
- AROOO like you mean it! 🐺💪
|
|
679
|
+
|
|
680
|
+
## Example Flow
|
|
681
|
+
|
|
682
|
+
1. User provides Figma URL: `https://figma.com/design/XYZ/Settings?node-id=42-100`
|
|
683
|
+
2. Extract fileKey and nodeId
|
|
684
|
+
3. Fetch screenshot, metadata, design context from Figma
|
|
685
|
+
4. Catalog UI elements: form fields, toggle switches, buttons, section headers, dividers
|
|
686
|
+
5. Read `src/index.ts` to see available components
|
|
687
|
+
6. **Call Sophia** with design info and component list
|
|
688
|
+
7. Sophia analyzes and reports back:
|
|
689
|
+
- Form fields → FormField ✅
|
|
690
|
+
- Buttons → Button with `ghost` variant ✅
|
|
691
|
+
- Section headers → Heading + Section with `defaultExpanded` prop ✅
|
|
692
|
+
- Toggle switches → Need new ToggleSwitch component 🆕
|
|
693
|
+
- Dividers → Separator ✅
|
|
694
|
+
8. **Call Dorothy** to fact-check Sophia's claims
|
|
695
|
+
9. Dorothy verifies and corrects:
|
|
696
|
+
- Button `ghost` variant DOESN'T EXIST ❌ (actual variants: primary, secondary, tertiary, text-link, dropdown)
|
|
697
|
+
- Section `defaultExpanded` DOESN'T EXIST ❌ (actual prop: `collapsed` boolean with inverted logic)
|
|
698
|
+
- FormField, Separator confirmed ✅
|
|
699
|
+
10. Generate report markdown using Dorothy's CORRECTED information
|
|
700
|
+
11. Write to `.claude/figma-assessment-XYZ-42-100.md`
|
|
701
|
+
12. Include Appendix listing all files Dorothy read (Button.tsx, Section.tsx, index.ts, etc.)
|
|
702
|
+
13. Present summary: "3/5 elements ready (with correct props!), need ToggleSwitch component!"
|
|
703
|
+
14. Ask user if they want Jira tickets and/or a Confluence page
|
|
704
|
+
15. **(Optional) Create Jira tickets:**
|
|
705
|
+
- Get Atlassian base URL and visible projects
|
|
706
|
+
- Create ticket: `Modify Section: Replace defaultExpanded with collapsed boolean` → `MIS-12345`
|
|
707
|
+
- Create ticket: `Create ToggleSwitch component` → `MIS-12346`
|
|
708
|
+
- Report back with all ticket keys
|
|
709
|
+
16. **(Optional) Save to Confluence:**
|
|
710
|
+
- Get available spaces, ask user which one
|
|
711
|
+
- Convert report to Confluence storage format HTML
|
|
712
|
+
- Prepend Jira work items table (linking MIS-12345, MIS-12346) if tickets were created
|
|
713
|
+
- Create page: "Design Feasibility Assessment: Settings Page — 2026-04-10"
|
|
714
|
+
- Share the page URL with the user
|
|
715
|
+
17. **(Optional) Post to Slack:**
|
|
716
|
+
- Search for the design system channel
|
|
717
|
+
- Compose message: score, quick breakdown, Confluence link, ticket links
|
|
718
|
+
- Send to channel
|
|
719
|
+
- Report back to user
|
|
720
|
+
|
|
721
|
+
## What This Skill Does NOT Do
|
|
722
|
+
|
|
723
|
+
- ❌ Generate actual page code (use `/create-page` for that)
|
|
724
|
+
- ❌ Modify existing components
|
|
725
|
+
- ❌ Create new components
|
|
726
|
+
- ❌ Make design recommendations (just assesses feasibility)
|
|
727
|
+
|
|
728
|
+
## What This Skill DOES Do
|
|
729
|
+
|
|
730
|
+
- ✅ Analyze designs for component coverage
|
|
731
|
+
- ✅ Identify gaps in component library
|
|
732
|
+
- ✅ Provide specific, actionable recommendations
|
|
733
|
+
- ✅ Generate detailed markdown reports
|
|
734
|
+
- ✅ Help prioritize component development work
|
|
735
|
+
- ✅ Assess before building (measure twice, code once!)
|
|
736
|
+
- ✅ (Optional) Create Jira tickets for every modification and new component identified
|
|
737
|
+
- ✅ (Optional) Save the full report to Confluence as a proper page
|
|
738
|
+
- ✅ (Optional) Link Jira tickets inside the Confluence doc so everything is connected
|
|
739
|
+
- ✅ (Optional) Post a summary + Confluence link + ticket refs to the design system Slack channel
|
|
740
|
+
|
|
741
|
+
AROOOOO HUNNI!! LET'S ANALYZE SOME BODACIOUS DESIGNS AND SEE WHAT'S POSSIBLE!! xxx 💪🏍️✨🐺
|