@tekyzinc/gsd-t 2.69.11 → 2.69.13
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/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to GSD-T are documented here. Updated with each release.
|
|
4
4
|
|
|
5
|
+
## [2.69.13] - 2026-04-05
|
|
6
|
+
|
|
7
|
+
### Fixed (design-to-code pipeline — extraction + verification)
|
|
8
|
+
- **Mandate `get_design_context` everywhere in the pipeline** — initial build (design-to-code.md sections 1-2), verification agent (gsd-t-execute.md Step 5.25), quick verification (gsd-t-quick.md Step 5.25), and Red Team design fidelity check all now explicitly require `get_design_context` per widget node for Figma data extraction. `get_screenshot` is prohibited for extraction and restricted to visual-only comparison of built output. This closes the gap where agents chose `get_screenshot` (pixels) over `get_design_context` (structured code/tokens) at every stage.
|
|
9
|
+
|
|
10
|
+
## [2.69.12] - 2026-04-05
|
|
11
|
+
|
|
12
|
+
### Fixed (gsd-t-design-audit, gsd-t-design-decompose)
|
|
13
|
+
- **Explicit `get_screenshot` prohibition** — agents were choosing `get_screenshot` (returns pixels) instead of `get_design_context` (returns structured code/tokens) for per-widget Figma extraction, defeating structured comparison. Both commands now have explicit tool guards: "NEVER use `get_screenshot` for Figma design extraction." `get_screenshot` is only acceptable for capturing the built page, not for extracting Figma source data.
|
|
14
|
+
|
|
5
15
|
## [2.69.11] - 2026-04-05
|
|
6
16
|
|
|
7
17
|
### Changed (gsd-t-design-audit)
|
|
@@ -33,13 +33,16 @@ Figma node tree:
|
|
|
33
33
|
|
|
34
34
|
### 1b. Extract each widget node
|
|
35
35
|
|
|
36
|
-
For EACH widget-level node, call
|
|
36
|
+
For EACH widget-level node, call **`get_design_context`** (NOT `get_screenshot`) with the specific node ID. `get_design_context` returns structured code and component properties that you can extract exact values from. `get_screenshot` returns only visual images — do NOT use it for Figma data extraction.
|
|
37
|
+
|
|
38
|
+
Record from the `get_design_context` response:
|
|
37
39
|
- **Chart/element type**: what visual pattern does this node contain?
|
|
38
40
|
- **All text content**: every title, subtitle, label, column header, legend item, KPI value, axis label
|
|
39
41
|
- **Layout properties**: alignment, spacing, sizing from the returned code/structure
|
|
40
42
|
- **Colors**: exact hex values for fills, strokes, text
|
|
41
43
|
|
|
42
44
|
> **⚠ Size guard**: Never call `get_design_context` on the full page frame. Always call on individual widget/card nodes.
|
|
45
|
+
> **⚠ Tool guard**: NEVER use `get_screenshot` to extract Figma design values. It gives you pixels, not properties. Use `get_design_context` — it gives you code, tokens, and structured data.
|
|
43
46
|
|
|
44
47
|
### 1c. Classify each element using the taxonomy
|
|
45
48
|
|
|
@@ -226,7 +229,7 @@ After fixes are applied, **re-run the audit automatically** to verify. Loop unti
|
|
|
226
229
|
- **You write ZERO code during the audit phase (Steps 1-5).** Report only. Code changes happen in Step 6 via `/user:gsd-t-quick`.
|
|
227
230
|
- **You do NOT "look close" at anything.** Every property gets an exact value from Figma and an exact value from the build. They match or they don't.
|
|
228
231
|
- **You do NOT skip widgets.** Every widget in the Figma AND every widget in the build gets audited.
|
|
229
|
-
- **You call `get_design_context` per widget node
|
|
232
|
+
- **You MUST call `get_design_context` per widget node — NOT `get_screenshot`.** `get_design_context` returns structured code, component properties, and design tokens. `get_screenshot` returns only a visual image that you cannot extract exact values from. Using `get_screenshot` for widget extraction defeats the entire purpose of structured comparison — you end up eyeballing instead of measuring. The ONLY acceptable use of `get_screenshot` is for the built page (Step 2) where you need to see what was actually rendered. For Figma source data, ALWAYS use `get_design_context`.
|
|
230
233
|
- **You walk the taxonomy decision tree** for every chart element — document your reasoning.
|
|
231
234
|
- **Minimum 10 rows per widget, 30+ for complex widgets.** Fewer rows means you skipped properties.
|
|
232
235
|
- **If you can't determine a value** (e.g., Figma MCP unavailable for exact px), note "⚠ estimated from screenshot" — but still provide your best measurement.
|
|
@@ -71,6 +71,8 @@ Node tree for page "Analytics":
|
|
|
71
71
|
|
|
72
72
|
**Anti-pattern**: Looking at a page screenshot and writing "I see a donut chart" without calling `get_design_context` on that specific node. The MCP returns structured data about the component — use it.
|
|
73
73
|
|
|
74
|
+
> **⚠ Tool guard**: NEVER use `get_screenshot` for Figma design extraction. `get_screenshot` returns pixels — you cannot extract exact property values, spacing, colors, or text from an image with confidence. `get_design_context` returns structured code, component properties, and design tokens. Always use `get_design_context` per widget node.
|
|
75
|
+
|
|
74
76
|
### 1d. Produce the flat inventory table WITH data inventory
|
|
75
77
|
|
|
76
78
|
| # | Element on Design | Figma Node ID | Appears On Pages | Text Content Extracted | Visual Variant |
|
|
@@ -662,10 +662,16 @@ wrong.
|
|
|
662
662
|
## Step 1: Get the Design Reference
|
|
663
663
|
|
|
664
664
|
Read .gsd-t/contracts/design-contract.md for the source reference.
|
|
665
|
-
- If Figma MCP available → call
|
|
665
|
+
- If Figma MCP available → call `get_metadata` to enumerate widget/component nodes,
|
|
666
|
+
then call `get_design_context` per widget node to extract structured data
|
|
667
|
+
(code, component properties, design tokens, text content, layout values).
|
|
668
|
+
⚠ Do NOT use `get_screenshot` for Figma data extraction — it returns pixels
|
|
669
|
+
you cannot extract exact values from. `get_design_context` returns structured
|
|
670
|
+
code and tokens. Use `get_design_context` for extraction, `get_screenshot`
|
|
671
|
+
ONLY if you need a visual reference image for side-by-side comparison.
|
|
666
672
|
- If design image files → locate them from the contract's Source Reference field
|
|
667
673
|
- If no MCP and no images → log CRITICAL blocker to .gsd-t/qa-issues.md and STOP
|
|
668
|
-
You MUST have
|
|
674
|
+
You MUST have structured design data (or reference images) before proceeding.
|
|
669
675
|
|
|
670
676
|
## Step 2: Build the Element Inventory
|
|
671
677
|
|
|
@@ -697,22 +703,27 @@ VIEW 1 — BUILT FRONTEND:
|
|
|
697
703
|
Navigate to the exact route/component being verified.
|
|
698
704
|
You MUST see real rendered output — not just read the code.
|
|
699
705
|
|
|
700
|
-
VIEW 2 — ORIGINAL DESIGN REFERENCE:
|
|
701
|
-
If Figma
|
|
702
|
-
Use the
|
|
703
|
-
|
|
706
|
+
VIEW 2 — ORIGINAL DESIGN REFERENCE (structured data, not just images):
|
|
707
|
+
If Figma MCP available → you already have `get_design_context` data from Step 1.
|
|
708
|
+
Use the STRUCTURED DATA (component properties, text content, layout values,
|
|
709
|
+
colors, spacing) as the authoritative design reference — not screenshots.
|
|
710
|
+
Optionally open the Figma URL in a browser for visual context, but extract
|
|
711
|
+
values from `get_design_context` responses, not from visual inspection.
|
|
704
712
|
If design image file → open the image in a browser tab/window.
|
|
705
713
|
Use: file://{absolute-path-to-image} or render in an HTML page.
|
|
706
|
-
If Figma MCP
|
|
714
|
+
If no Figma MCP → use reference images from the design contract.
|
|
707
715
|
|
|
708
716
|
COMPARISON APPROACH:
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
-
|
|
712
|
-
-
|
|
717
|
+
For each widget/component, compare the BUILT DOM/styles against the
|
|
718
|
+
STRUCTURED values from `get_design_context`:
|
|
719
|
+
- Chart type: does the built component match the Figma node's structure?
|
|
720
|
+
- Text content: do titles, labels, legends match `get_design_context` text?
|
|
721
|
+
- Layout: do spacing, alignment, sizing match the structured properties?
|
|
722
|
+
- Colors: do fills, strokes, text colors match the exact hex values?
|
|
713
723
|
Capture implementation screenshots at each target breakpoint:
|
|
714
724
|
Mobile (375px), Tablet (768px), Desktop (1280px) minimum.
|
|
715
|
-
|
|
725
|
+
Compare screenshots against Figma for overall visual impression,
|
|
726
|
+
but use `get_design_context` data for the authoritative value comparison.
|
|
716
727
|
|
|
717
728
|
If Claude Preview, Chrome MCP, and Playwright are ALL unavailable:
|
|
718
729
|
This is a CRITICAL blocker. Log to .gsd-t/qa-issues.md:
|
|
@@ -730,8 +741,9 @@ the inventory gets its own row. No summarizing, no grouping, no prose.
|
|
|
730
741
|
| 2 | Summary | Chart colors | #4285F4, #34A853, #FBBC04 | #4285F4, #34A853, #FBBC04 | ✅ MATCH |
|
|
731
742
|
|
|
732
743
|
Rules:
|
|
733
|
-
- 'Design' column: SPECIFIC values
|
|
734
|
-
|
|
744
|
+
- 'Design' column: SPECIFIC values from `get_design_context` structured data
|
|
745
|
+
(chart type name, hex color, px size, font weight, text content)
|
|
746
|
+
- 'Implementation' column: SPECIFIC observed values from the built page DOM/styles
|
|
735
747
|
- Verdict: only ✅ MATCH or ❌ DEVIATION — never 'appears to match' or 'need to verify'
|
|
736
748
|
- NEVER write 'Appears to match' or 'Looks correct' — measure and verify
|
|
737
749
|
- If the table has fewer than 30 rows for a full-page comparison, you skipped elements
|
|
@@ -837,7 +849,7 @@ Rules:
|
|
|
837
849
|
FAIL-BY-DEFAULT: assume NOTHING matches. Prove each element individually.
|
|
838
850
|
a. Open every implemented screen in a real browser. Screenshot at mobile
|
|
839
851
|
(375px), tablet (768px), desktop (1280px). Get Figma reference via
|
|
840
|
-
|
|
852
|
+
`get_design_context` per widget node (structured data — NOT `get_screenshot`).
|
|
841
853
|
b. Build an element inventory: enumerate every distinct visual element
|
|
842
854
|
in the design top-to-bottom. Every chart, label, icon, heading, card,
|
|
843
855
|
spacing boundary, and color. Data visualizations expand: chart type,
|
package/commands/gsd-t-quick.md
CHANGED
|
@@ -266,9 +266,12 @@ rendered UI. If any is missing → CRITICAL DEVIATION (wrong data). Wrong data
|
|
|
266
266
|
cannot be redeemed by visual polish.
|
|
267
267
|
|
|
268
268
|
1. Read .gsd-t/contracts/design-contract.md (flat) OR .gsd-t/contracts/design/ (hierarchical) for design source reference + Test Fixtures
|
|
269
|
-
2. Get
|
|
269
|
+
2. Get Figma structured data via `get_metadata` (enumerate nodes) then `get_design_context`
|
|
270
|
+
per widget node. ⚠ Do NOT use `get_screenshot` for Figma extraction — it returns pixels,
|
|
271
|
+
not properties. `get_design_context` returns structured code and tokens.
|
|
272
|
+
If no Figma MCP → use design images from contract as fallback.
|
|
270
273
|
3. Start dev server, open the built frontend in browser (Claude Preview/Chrome MCP/Playwright)
|
|
271
|
-
4.
|
|
274
|
+
4. Compare built page values against `get_design_context` structured data
|
|
272
275
|
5. Build element inventory (30+ elements for a full page): every chart, label,
|
|
273
276
|
icon, heading, card, button, spacing, color — each a separate row
|
|
274
277
|
6. Produce structured comparison table:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tekyzinc/gsd-t",
|
|
3
|
-
"version": "2.69.
|
|
3
|
+
"version": "2.69.13",
|
|
4
4
|
"description": "GSD-T: Contract-Driven Development for Claude Code — 54 slash commands with headless CI/CD mode, graph-powered code analysis, real-time agent dashboard, execution intelligence, task telemetry, doc-ripple enforcement, backlog management, impact analysis, test sync, milestone archival, and PRD generation",
|
|
5
5
|
"author": "Tekyz, Inc.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -42,7 +42,13 @@ MANDATORY:
|
|
|
42
42
|
├── NEVER write CSS or layout code without a design reference
|
|
43
43
|
├── Identify the source type: Figma file, image, screenshot, prototype URL
|
|
44
44
|
├── If source is a Figma URL/file → check if Figma MCP is available
|
|
45
|
-
│ YES → Use Figma MCP
|
|
45
|
+
│ YES → Use Figma MCP `get_design_context` per widget/component node
|
|
46
|
+
│ `get_design_context` returns structured code, component properties,
|
|
47
|
+
│ and design tokens — this is what you extract values from.
|
|
48
|
+
│ ⚠ NEVER use `get_screenshot` for extraction — it returns pixels,
|
|
49
|
+
│ not properties. You cannot reliably extract exact spacing, colors,
|
|
50
|
+
│ or text from an image. `get_screenshot` is only for verification
|
|
51
|
+
│ (comparing built output to design visually).
|
|
46
52
|
│ NO → Inform user: "Figma MCP recommended for precise extraction"
|
|
47
53
|
│ Fallback: use image analysis (Claude's multimodal vision)
|
|
48
54
|
├── If source is an image/screenshot → use visual analysis to extract values
|
|
@@ -62,11 +68,17 @@ MANDATORY:
|
|
|
62
68
|
MANDATORY:
|
|
63
69
|
├── Before extraction, detect available tools:
|
|
64
70
|
│ Figma MCP → precise token extraction from Figma files
|
|
71
|
+
│ `get_design_context` → structured code + tokens (USE THIS for extraction)
|
|
72
|
+
│ `get_metadata` → node tree enumeration (USE THIS to find widget nodes)
|
|
73
|
+
│ `get_screenshot` → visual image only (NEVER use for extraction —
|
|
74
|
+
│ only for post-build verification comparisons)
|
|
65
75
|
│ Claude Preview → render + screenshot for verification loop
|
|
66
76
|
│ Chrome MCP → alternative render + screenshot for verification
|
|
67
77
|
├── If Figma MCP is available and source is Figma:
|
|
68
|
-
│
|
|
69
|
-
│
|
|
78
|
+
│ Call `get_metadata` to enumerate the page's widget/component nodes
|
|
79
|
+
│ Call `get_design_context` per widget node to extract structured data
|
|
80
|
+
│ Extract exact colors, spacing, typography, component structure from the response
|
|
81
|
+
│ MCP `get_design_context` values are authoritative — override visual estimates
|
|
70
82
|
├── If no Figma MCP but source is Figma:
|
|
71
83
|
│ Recommend setup: "For precise extraction, install the Figma MCP server.
|
|
72
84
|
│ Remote (recommended): https://mcp.figma.com/mcp
|
|
@@ -495,16 +507,23 @@ SEPARATION OF CONCERNS:
|
|
|
495
507
|
│
|
|
496
508
|
└── DESIGN VERIFICATION AGENT (Step 5.25 of gsd-t-execute):
|
|
497
509
|
1. Open browser → screenshot built page at each breakpoint
|
|
498
|
-
2. Get Figma
|
|
499
|
-
|
|
510
|
+
2. Get Figma STRUCTURED DATA via `get_design_context` per widget node
|
|
511
|
+
⚠ Do NOT use `get_screenshot` for Figma data — it returns pixels
|
|
512
|
+
you can't extract exact values from. `get_design_context` returns
|
|
513
|
+
structured code, component properties, and design tokens.
|
|
514
|
+
Use `get_metadata` first to enumerate widget nodes, then
|
|
515
|
+
`get_design_context` on each widget node individually.
|
|
516
|
+
3. STRUCTURED comparison: built page values vs Figma `get_design_context` values
|
|
500
517
|
4. For EACH widget/section on the page:
|
|
501
|
-
a. What
|
|
502
|
-
|
|
518
|
+
a. What does `get_design_context` say this Figma node contains?
|
|
519
|
+
(chart type, text content, layout properties, colors)
|
|
520
|
+
b. What did the CODE actually build? (inspect built page DOM/styles)
|
|
503
521
|
c. Do they match? Not "does code match contract" — does CODE match FIGMA?
|
|
504
522
|
5. Check every text label: does the built screen show the same titles,
|
|
505
|
-
subtitles, column headers, legend items, KPI values as the Figma
|
|
523
|
+
subtitles, column headers, legend items, KPI values as the Figma
|
|
524
|
+
`get_design_context` response?
|
|
506
525
|
6. Produce structured comparison table (30+ rows):
|
|
507
|
-
| Element | Figma
|
|
526
|
+
| Element | Figma (get_design_context) | Built | MATCH/DEVIATION |
|
|
508
527
|
7. Fix deviations → re-verify → artifact gate enforces completion
|
|
509
528
|
```
|
|
510
529
|
|