@tekyzinc/gsd-t 2.56.12 → 2.56.14

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.
@@ -283,31 +283,40 @@ Execute the task above:
283
283
  A test that would pass on an empty HTML page with the right element IDs is useless.
284
284
  Every assertion must prove the FEATURE WORKS, not that the ELEMENT EXISTS.
285
285
  7. **Visual Design Verification** (MANDATORY when design-to-code stack rule is active):
286
- If the task involves UI implementation from a design reference, this step is NOT optional:
286
+ If the task involves UI implementation from a design reference, this step is NOT optional.
287
+ **FAIL-BY-DEFAULT**: Every element is UNVERIFIED until you prove it matches. "Looks close" is not
288
+ a verdict. "Appears to match" is not a verdict. Assume NOTHING matches.
287
289
  a. **Get the Figma reference screenshot**: If Figma MCP is available, call `get_screenshot` with the
288
290
  relevant nodeId and fileKey from `.gsd-t/contracts/design-contract.md`. Save this as the reference.
289
291
  If no Figma MCP, use the design image/screenshot provided in the contract.
290
- b. **Render the built component in a real browser**: Start the dev server if not running.
292
+ b. **Build the element inventory**: Before comparing ANYTHING, enumerate every distinct visual
293
+ element in the design — walk top-to-bottom, left-to-right. Every chart, label, icon, heading,
294
+ card, button, spacing boundary, color, and data visualization detail gets its own row.
295
+ Data visualizations expand into multiple rows: chart type, orientation, axis labels, legend
296
+ position, bar/segment colors, data labels, grid lines, center text, tooltip style.
297
+ If a full-page inventory has fewer than 30 elements, you missed items — go back.
298
+ c. **Render the built component in a real browser**: Start the dev server if not running.
291
299
  Use Claude Preview, Chrome MCP, or Playwright to open the page at the correct URL.
292
300
  Capture screenshots at each target breakpoint:
293
301
  - Mobile: 375px width
294
302
  - Tablet: 768px width
295
303
  - Desktop: 1280px width
296
- c. **Pixel-by-pixel comparison**: Place the Figma screenshot and browser screenshot side-by-side.
297
- Systematically compare every element:
298
- - Chart types (bar vs stacked bar vs donut exact match required)
299
- - Colors (exact hex match — #1A73E8 is not #1A74E9)
300
- - Typography (font family, weight, size, line-height, letter-spacing)
301
- - Spacing (padding, margins, gapsexact pixel match)
302
- - Layout (grid structure, alignment, element positioning)
303
- - Component states (toggles, active states, expanded/collapsed sections)
304
- - Data visualization style (chart axis, labels, legends, distribution bars)
305
- d. **Log every deviation** with specifics: "Donut chart missing center text '485 Total Interactions',
306
- Number of Tools uses vertical bars but design shows horizontal stacked bar"
307
- e. **Fix ALL deviations** max 3 fix-and-recheck iterations per component.
308
- After each fix, re-render and re-compare. Every fix must trace to a design contract value.
309
- f. **If deviations remain after 3 iterations**: log to `.gsd-t/qa-issues.md` with severity CRITICAL
310
- and tag `[VISUAL]`. This BLOCKS task completion — the task is NOT done.
304
+ d. **Structured element-by-element comparison** (MANDATORY FORMAT no prose comparisons):
305
+ Produce a table with this exact structure for every element in the inventory:
306
+ `| # | Section | Element | Design (specific) | Implementation (specific) | Verdict |`
307
+ Rules:
308
+ - "Design" column: SPECIFIC values (chart type name, hex color, px size, font weight)
309
+ - "Implementation" column: SPECIFIC observed values from the screenshot not code assumptions
310
+ - Verdict: only MATCH or ❌ DEVIATION — never "appears to match" or "need to verify"
311
+ - Data visualizations: chart type, axis orientation, axis labels, legend position, bar colors,
312
+ data label placement, grid lines, center text each a SEPARATE row
313
+ - NEVER lead with "what's working" the table IS the comparison, start with row 1
314
+ e. **Fix every DEVIATION** fix each row individually, trace to design contract value.
315
+ Re-render after each batch of fixes. Update verdict only after visual re-verification.
316
+ Max 3 fix-and-recheck iterations per component.
317
+ f. **Final table**: After fixes, every row must be ✅ MATCH. Any remaining ❌ → log to
318
+ `.gsd-t/qa-issues.md` with severity CRITICAL and tag `[VISUAL]`. BLOCKS task completion.
319
+ Report: "Verified: {N}/{total} elements match at {breakpoints} breakpoints"
311
320
  g. **Log results** in the design contract's Verification Status table.
312
321
  h. **If no browser/preview tools available**: This is a CRITICAL blocker, not a warning.
313
322
  Log to `.gsd-t/qa-issues.md`: "CRITICAL: No browser tools available for visual verification.
@@ -679,13 +688,27 @@ Rules:
679
688
  behavior (state changes, data loaded, navigation works) or just check
680
689
  that elements exist? Flag and rewrite any shallow/layout tests.
681
690
  8. **Design Fidelity** (if .gsd-t/contracts/design-contract.md exists):
682
- Open every implemented screen in a real browser. Screenshot at mobile
683
- (375px), tablet (768px), desktop (1280px). Get Figma reference via
684
- Figma MCP get_screenshot (or design contract images). Compare every
685
- element: chart types, colors, typography, spacing, layout, component
686
- states, data visualization style. Any visual deviation from the design
687
- is a CRITICAL bug. 'Build shows vertical bars but design shows horizontal
688
- stacked bars' is a real bug, not a style opinion.
691
+ FAIL-BY-DEFAULT: assume NOTHING matches. Prove each element individually.
692
+ a. Open every implemented screen in a real browser. Screenshot at mobile
693
+ (375px), tablet (768px), desktop (1280px). Get Figma reference via
694
+ Figma MCP get_screenshot (or design contract images).
695
+ b. Build an element inventory: enumerate every distinct visual element
696
+ in the design top-to-bottom. Every chart, label, icon, heading, card,
697
+ spacing boundary, and color. Data visualizations expand: chart type,
698
+ orientation, axis labels, legend position, bar colors, data labels,
699
+ grid lines, center text — each a separate item.
700
+ c. Produce a structured comparison table (MANDATORY):
701
+ | # | Section | Element | Design (specific) | Implementation (specific) | Verdict |
702
+ Every element gets specific values in both columns (hex colors, chart
703
+ type names, px sizes, font weights — never vague descriptions).
704
+ Only valid verdicts: ✅ MATCH or ❌ DEVIATION.
705
+ NEVER write "appears to match" or "looks correct."
706
+ d. Any ❌ DEVIATION is a CRITICAL bug with full reproduction:
707
+ 'Design: horizontal stacked bar with % labels inside bars.
708
+ Build: vertical grouped bar with labels above bars.' — this is a bug.
709
+ 'Design: 32px Inter SemiBold. Build: 24px Inter Regular.' — this is a bug.
710
+ e. If the comparison table has fewer than 30 rows for a full page, the
711
+ audit is incomplete — go back and find the missing elements.
689
712
 
690
713
  ## Exploratory Testing (if Playwright MCP available)
691
714
 
package/commands/gsd.md CHANGED
@@ -57,6 +57,16 @@ When the same request could fit multiple commands at different scales:
57
57
  - **Needs investigation before fixing** → `debug` (not `quick`)
58
58
  - **Spec/requirements to verify against code** → `gap-analysis` (not `scan`)
59
59
 
60
+ ### Design-to-code routing:
61
+
62
+ When the request involves UI implementation from a design (Figma, screenshots, mockups, "pixel-perfect", "match the design", "rebuild the frontend"):
63
+ - **NEVER route to `quick`** — design-to-code requires the full workflow with design contract, token extraction, and visual verification
64
+ - **If no active milestone exists** → route to `wave` (creates milestone → partition with design contract → plan → execute with visual verification)
65
+ - **If a milestone exists but no domains** → route to `partition` (creates design contract in Step 3.6)
66
+ - **If domains exist but no tasks** → route to `plan`
67
+ - **If tasks exist** → route to `execute` (design-to-code stack rule will inject)
68
+ - The design-to-code stack rule activates automatically when `.gsd-t/contracts/design-contract.md` exists or Figma MCP is configured — but the **partition step must run first** to create the design contract
69
+
60
70
  ## Step 3: Confirm and Execute
61
71
 
62
72
  **MANDATORY — output one of these lines as the VERY FIRST thing in your response, before any tool calls or other output.**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tekyzinc/gsd-t",
3
- "version": "2.56.12",
3
+ "version": "2.56.14",
4
4
  "description": "GSD-T: Contract-Driven Development for Claude Code — 51 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",
@@ -322,7 +322,7 @@ After QA passes, every code-producing command spawns a **Red Team agent** — an
322
322
  **Key Red Team rules:**
323
323
  - **Inverted incentive**: More bugs found = more value. Zero bugs requires exhaustive proof of thoroughness.
324
324
  - **False positive penalty**: Reporting non-bugs destroys credibility. Every bug must be reproduced with proof.
325
- - **Exhaustive categories**: Contract violations, boundary inputs, state transitions, error paths, missing flows, regression, E2E functional gaps, design fidelity (when design contract exists: render in browser, screenshot, compare pixel-by-pixel against Figma) — all must be attempted.
325
+ - **Exhaustive categories**: Contract violations, boundary inputs, state transitions, error paths, missing flows, regression, E2E functional gaps, design fidelity (when design contract exists: render in browser, screenshot, build element inventory, produce structured comparison table with per-element MATCH/DEVIATION verdicts — never "looks close") — all must be attempted.
326
326
  - **VERDICT**: `FAIL` (bugs found — blocks completion) or `GRUDGING PASS` (exhaustive search, nothing found).
327
327
  - **Report**: Written to `.gsd-t/red-team-report.md`; bugs also appended to `.gsd-t/qa-issues.md`.
328
328
 
@@ -435,6 +435,8 @@ MANDATORY:
435
435
 
436
436
  ## 15. Visual Verification Loop
437
437
 
438
+ **FAIL-BY-DEFAULT RULE**: Every visual element starts as UNVERIFIED. You must prove each one matches — not assume it does. "Looks close" is not a verdict. "Appears to match" is not a verdict. The only valid verdicts are MATCH (with proof) or DEVIATION (with specifics). If you catch yourself writing "looks correct" or "appears right" without element-level proof, you are doing it wrong.
439
+
438
440
  ```
439
441
  MANDATORY:
440
442
  ├── After implementing any design component, you MUST verify it visually.
@@ -445,38 +447,80 @@ MANDATORY:
445
447
  │ If no MCP → use design image/screenshot from the design contract
446
448
  │ You MUST have a reference image before proceeding
447
449
 
448
- ├── Step 2: RENDER IN A REAL BROWSER
450
+ ├── Step 2: BUILD THE ELEMENT INVENTORY
451
+ │ Before ANY comparison, enumerate every distinct visual element in the
452
+ │ design. Walk the design top-to-bottom, left-to-right. For each section:
453
+ │ - Section title text and icon
454
+ │ - Every chart/visualization (type, orientation, labels, legend, series count)
455
+ │ - Every data table (columns, row structure, sort indicators)
456
+ │ - Every KPI/stat card (value, label, icon, trend indicator)
457
+ │ - Every button, toggle, tab, dropdown
458
+ │ - Every text element (headings, body, captions, labels)
459
+ │ - Every spacing boundary (section gaps, card padding, element margins)
460
+ │ - Every color usage (backgrounds, borders, text, chart fills)
461
+ │ Write each element as a row in the comparison table (Step 4).
462
+ │ If the inventory has fewer than 20 elements for a full page, you missed items.
463
+
464
+ ├── Step 3: RENDER IN A REAL BROWSER + SCREENSHOT
449
465
  │ Start the dev server (npm run dev, etc.)
450
466
  │ Open the page using Claude Preview, Chrome MCP, or Playwright
451
467
  │ You MUST see real rendered output — not just read the code
452
-
453
- ├── Step 3: SCREENSHOT AT EVERY BREAKPOINT
454
- │ Mobile (375px), Tablet (768px), Desktop (1280px) minimum
468
+ Capture screenshots at each target breakpoint:
469
+ │ Mobile (375px), Tablet (768px), Desktop (1280px) minimum
455
470
  │ Each breakpoint is a separate screenshot
456
471
 
457
- ├── Step 4: PIXEL-BY-PIXEL COMPARISON
458
- Place Figma screenshot and browser screenshot side-by-side
459
- Check EVERY element systematically:
460
- Chart types bar vs stacked bar vs donut (exact type match)
461
- Colors — exact hex values, not "close enough"
462
- Typography font family, weight, size, line-height, letter-spacing
463
- Spacing — padding, margins, gaps (exact pixel match)
464
- Layout grid structure, alignment, positioning
465
- Component states toggle active/inactive, expanded/collapsed
466
- Data visualization axis labels, legends, chart orientation
467
- Icons and imagery correct icon set, correct sizes
472
+ ├── Step 4: STRUCTURED ELEMENT-BY-ELEMENT COMPARISON (MANDATORY FORMAT)
473
+ You MUST produce a comparison table with this exact structure.
474
+ Every row from the inventory gets its own row. No summarizing, no grouping,
475
+ no "appears to match" prose. Each element gets an individual verdict.
476
+
477
+ | # | Section | Element | Design (specific) | Implementation (specific) | Verdict |
478
+ |---|---------|---------|-------------------|--------------------------|---------|
479
+ | 1 | Summary | Chart type | Horizontal stacked bar | Vertical grouped bar | ❌ DEVIATION |
480
+ | 2 | Summary | Chart colors | #4285F4, #34A853, #FBBC04 | #4285F4, #34A853, #FBBC04 | ✅ MATCH |
481
+ | 3 | Summary | Y-axis labels | Tool names, left-aligned | Tool names, left-aligned | ✅ MATCH |
482
+ | 4 | Summary | Bar label placement | Inside bar, white text | Above bar, black text | ❌ DEVIATION |
483
+ │ | 5 | KPIs | Font size | 32px semibold | 24px regular | ❌ DEVIATION |
484
+ │ | ... | ... | ... | ... | ... | ... |
485
+
486
+ │ Rules for the table:
487
+ │ - "Design" column must have SPECIFIC values (chart type name, hex color,
488
+ │ pixel size, font weight name) — not vague descriptions
489
+ │ - "Implementation" column must have SPECIFIC observed values — not assumptions
490
+ │ from reading code. You must LOOK at the rendered screenshot.
491
+ │ - NEVER write "Appears to match" or "Looks correct" — measure and verify
492
+ │ - NEVER write "Need to verify" — verify it NOW or mark UNVERIFIED
493
+ │ - Data visualizations get MULTIPLE rows: chart type, axis orientation,
494
+ │ axis labels, legend position, bar/line/segment colors, data labels,
495
+ │ grid lines, tooltip style — each is a separate element
496
+ │ - If the table has fewer than 30 rows for a full-page comparison,
497
+ │ you skipped elements. Go back to the inventory.
498
+
499
+ │ DATA VISUALIZATION CHECKLIST (expand into table rows):
500
+ │ Chart type: bar/stacked-bar/grouped-bar/horizontal-bar/line/area/donut/pie/scatter
501
+ │ Chart orientation: horizontal vs vertical
502
+ │ Axis labels: present, position, font, values
503
+ │ Axis grid lines: present, style, color
504
+ │ Legend: position (top/bottom/right/inline), format, colors
505
+ │ Data labels: inside bars/above bars/on segments, font, color
506
+ │ Chart colors: exact hex per series/segment
507
+ │ Bar width/spacing: relative proportions
508
+ │ Center text (donut/pie): present, value, font
509
+ │ Tooltip style: if visible in design
468
510
 
469
511
  ├── Step 5: FIX EVERY DEVIATION
470
- Log each deviation with specifics before fixing
471
- Fix one by one, tracing each fix to the design contract
512
+ Fix each row from the table, one by one
513
+ Trace each fix to the design contract value
472
514
  │ Re-render after each batch of fixes
515
+ │ Update the table: change ❌ to ✅ only after visual re-verification
473
516
  │ Maximum 3 fix-and-recheck iterations
474
517
 
475
518
  ├── Step 6: FINAL VERIFICATION
476
519
  │ After fixes, take fresh screenshots at all breakpoints
477
- Confirm every deviation is resolved
478
- If deviations remain → CRITICAL finding in .gsd-t/qa-issues.md
479
- │ Task is NOT complete until visual match is confirmed
520
+ Produce a FINAL comparison table — every row must be ✅ MATCH
521
+ Any remaining → CRITICAL finding in .gsd-t/qa-issues.md
522
+ │ Task is NOT complete until every row shows ✅ MATCH
523
+ │ Count: "Verified: {N}/{total} elements match at {breakpoints} breakpoints"
480
524
 
481
525
  ├── NO BROWSER TOOLS = BLOCKER
482
526
  │ If Claude Preview, Chrome MCP, and Playwright are ALL unavailable:
@@ -487,9 +531,9 @@ MANDATORY:
487
531
  └── Log all verification results in the design contract Verification Status table
488
532
  ```
489
533
 
490
- **BAD** — Writing CSS, committing, moving on without ever opening a browser to see the result. "Tests pass" is not visual verification.
534
+ **BAD** — A vague comparison table with "Appears to match" and "Looks correct" entries. Leading with "What's Working Well" before identifying deviations. Saying "implementation looks very close to the designs" without element-level proof.
491
535
 
492
- **GOOD** — Render at 375px Screenshot Compare to Figma "Donut chart missing center text, stacked bars rendered as vertical bars" Fix chart type Fix center text Re-render Confirm match Repeat at 768px and 1280px All match Log "verified at 3 breakpoints" in design contract.
536
+ **GOOD** — 45-row structured comparison table where every element has specific design values vs. specific implementation values. 12 deviations identified: wrong chart type (horizontal stacked barvertical grouped bar), wrong font size (32px24px), missing data labels inside bars, etc. Each fixed individually with re-render verification. Final table: 45/45 ✅ MATCH.
493
537
 
494
538
  ---
495
539