Skip to content

feat(frontend-design): intentionality rules for design skills and agents#375

Merged
notque merged 2 commits intomainfrom
feat/frontend-design-intentionality-rules
Apr 11, 2026
Merged

feat(frontend-design): intentionality rules for design skills and agents#375
notque merged 2 commits intomainfrom
feat/frontend-design-intentionality-rules

Conversation

@notque
Copy link
Copy Markdown
Owner

@notque notque commented Apr 11, 2026

Summary

Integrates constraint-driven guidance from recent GPT-5.4 / Codex frontend design best practices into the three frontend-facing components of the toolkit. The core insight: every model defaults to generic output (card grids, weak hierarchies, safe layouts) when direction is thin; hard constraints push every decision toward intentionality.

Files changed (4):

  • skills/distinctive-frontend-design/SKILL.md — main methodology update
  • skills/distinctive-frontend-design/references/anti-patterns.json — new cliche entries + hero/motion data blocks
  • agents/ui-design-engineer.md — new hardcoded behaviors block and tables
  • agents/react-portfolio-engineer.md — new portfolio constraints block and tables

Key rules introduced

Pre-work (Phase 1 additions):

  • Classify surface type first: landing page or app/dashboard (rules diverge sharply)
  • Write a narrative brief before code: visual thesis, content plan, interaction thesis
  • Gather real content, not placeholders (at minimum: hero headline, product name, single promise)

Typography & color:

  • Two typefaces maximum per page
  • One accent color only (functional colors separate)
  • Brand-first hero scale on branded pages

Hero composition (landing pages):

  • One composition in the first viewport
  • No cards in the hero, ever
  • Full-bleed hero by default
  • One job per section
  • Hero image litmus: remove it mentally; if the page still works, the image was too weak

Motion discipline:

  • Ship 2-to-3 motions per page, not 10
  • Three slots: one entrance (hero), one scroll-linked, one interaction
  • Decorative-only litmus: if removing the motion does not change comprehension, cut it

Apps vs landing pages:

  • Apps default to Linear-style restraint: calm surface hierarchy, strong typography, few colors, dense readable info
  • Cards only when the card IS the interaction
  • Avoid dashboard-card mosaics, decorative gradients, multiple competing accents

Test plan

  • `python3 scripts/validate-references.py --agent ui-design-engineer` passes (4/4 refs, 0 issues)
  • `python3 scripts/validate-references.py --agent react-portfolio-engineer` passes (3/3 refs, 0 issues)
  • anti-patterns.json is valid JSON
  • SKILL.md reads coherently phase-to-phase after edits
  • No em-dashes introduced in new content (per toolkit style rule)
  • GitHub Actions `Tests / lint` passes
  • GitHub Actions `Tests / test` passes

notque added 2 commits April 11, 2026 13:04
Integrate constraint-driven guidance into the three frontend-facing
components so the model does not default to generic output (card
grids, weak hierarchies, safe layouts) when direction is thin.

distinctive-frontend-design skill:
- Phase 1 requires surface type classification (landing vs app) and
  a written narrative brief (visual thesis, content plan, interaction
  thesis) before aesthetic exploration begins
- Phase 2 enforces two typefaces max and brand-first hero scale
- Phase 3 enforces one accent color (functional colors separate)
- Phase 4 restructured around the 2-to-3 motion slot discipline
  (entrance, scroll, interaction) with decorative-only litmus
- Phase 5 adds hero composition rules: one composition, no cards in
  hero, full-bleed by default, one job per section, hero image litmus
- New "App vs Landing Page Rules" section captures Linear-style
  restraint for dashboards and narrative sequence for landing pages
- Phase 6 validation checklist extended with the new constraints
- anti-patterns.json adds component cliches, hero composition rules
  object, and motion discipline object for structured lookup

ui-design-engineer agent:
- New "Intentional UI Constraints" hardcoded behaviors block covering
  surface type, narrative brief, typography ceiling, accent discipline,
  landing vs app rule sets, and motion slot discipline
- ANALYZE phase begins with surface type classification and narrative
  brief
- Anti-rationalization table gains seven new entries
- Blocker criteria adds surface type and real content gates

react-portfolio-engineer agent:
- New "Intentional Portfolio Design Constraints" block: show work
  first (no cards in hero), use real artwork from day one, apply
  the 2-to-3 motion slot rule, one accent only (work carries color)
- ANALYZE phase adds real-content confirmation and hero selection
- Anti-rationalization table gains five new entries
Addresses reviewer-perspectives feedback on PR #375:

- Add Vocabulary block at the top of Instructions defining hero,
  full-bleed, narrative brief, surface type, Linear-style restraint,
  decorative-only motion, and brand override. Newcomers now encounter
  each term defined once before it appears as a gate.
- Drop the pre-existing double-hyphen in Phase 1 Step 1 item 9 that
  leaked into this PR through the renumbering edit. Replaces with a
  clean sentence.
- Phase 1 gate now explicitly links to "Step 4" for narrative brief
  so the forward reference is obvious.
- Add "Skip-if-answered" note under the Phase 1 gate and in the
  ui-design-engineer Blocker Criteria section. If the user's original
  request already supplies surface type, product name, and the single
  promise, the agent does not re-interrogate for ceremony.
- Extend the ui-design-engineer card rationalization row with explicit
  surface-type scoping so the app rule ("cards only when the card IS
  the interaction") does not collide with the landing page rule (no
  cards in hero).
- Add a brand-override rationalization row to ui-design-engineer so
  agents follow explicit client brand guides rather than arguing with
  defaults. Defaults bend for stated client identity.
@notque notque merged commit b717580 into main Apr 11, 2026
4 checks passed
@notque notque deleted the feat/frontend-design-intentionality-rules branch April 11, 2026 20:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant