@ericrisco/rsc 1.0.34 → 1.1.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.
@@ -0,0 +1,96 @@
1
+ # Reference — where to go looking for a bar
2
+
3
+ > Last verified: **2026-08-24**. Every URL below was requested on that date and answered.
4
+ > Four sites block automated requests (403/429) but are alive in a browser — marked *(bot-blocked)*.
5
+ > A source with no date does not exist. Re-check before quoting one as current.
6
+
7
+ **Go and look.** Your built-in aesthetic prior is the median of every template ever scraped, so the
8
+ fastest way past it is to open real work and name what it does. This file is where to open.
9
+
10
+ Two rules that make the browsing worth anything:
11
+
12
+ - **Come back with a specific page, not a gallery.** `../../design-loop/SKILL.md` needs a bar you can
13
+ open — one URL, one screenshot. "Something like Awwwards" is not a bar; a named site from it is.
14
+ - **Extract principles, not pixels.** "Headline is 8× the body, one accent at 3% coverage" travels to
15
+ your project. Cloning a competitor's exact grid is theatre, and `research-method.md` says so.
16
+
17
+ ## A whole page to beat
18
+
19
+ The default bucket. Use it when the goal is a site or landing and you need something to converge on.
20
+
21
+ | Source | Go here for |
22
+ |---|---|
23
+ | [Awwwards](https://www.awwwards.com) | The award tier. Ambitious, often over-built — take the craft, leave the load time. |
24
+ | [Recent](https://recent.design) | Formerly **Godly**; `godly.website` now 301s here. Curated modern web, strong signal-to-noise. |
25
+ | [SiteInspire](https://www.siteinspire.com) *(bot-blocked)* | Long-running, filterable by style, type and subject. Calmer taste than Awwwards. |
26
+ | [Land-book](https://land-book.com) *(bot-blocked)* | Landing pages at volume, filterable by industry and style. |
27
+ | [Httpster](https://httpster.net) | Opinionated and current, less polished-agency than the rest. |
28
+ | [Minimal Gallery](https://minimal.gallery) | When the brief is restraint and you need proof it can still sell. |
29
+ | [Curated Design](https://curated.design) | Aggregated across galleries — a fast first sweep. |
30
+ | [Nicely Done](https://nicelydone.club) | Real product sites and app UI rather than portfolios. |
31
+ | [Lapa Ninja](https://lapa.ninja) *(bot-blocked)* | Large landing archive, free, categorised. |
32
+ | [One Page Love](https://onepagelove.com) | Single-page sites specifically — the constraint is the point. |
33
+
34
+ ## SaaS and conversion surfaces
35
+
36
+ | Source | Go here for |
37
+ |---|---|
38
+ | [SaaS Landing Page](https://saaslandingpage.com) | Real SaaS landings, browsable **by section** (hero, pricing, testimonials, footer) — the most useful axis when you are building one section at a time. |
39
+ | [Landingfolio](https://www.landingfolio.com) | Landings and page sections, heavy on conversion patterns. |
40
+
41
+ ## Real product, real flows — not portfolios
42
+
43
+ The most under-used bucket. Portfolio galleries show the hero; these show what happens after the click.
44
+
45
+ | Source | Go here for |
46
+ |---|---|
47
+ | [Mobbin](https://mobbin.com) | Screens and full flows from shipped apps, mobile and web. The reference for "how does a real onboarding actually go". |
48
+ | [Page Flows](https://pageflows.com) | Recorded user flows end to end — signup, checkout, cancellation. Video, so you see the motion too. |
49
+ | [Screensdesign](https://screensdesign.com) | Mobile app screens with an emphasis on what is currently shipping. |
50
+ | [Refero](https://refero.design) | UI/UX inspiration organised for browsing by pattern. |
51
+
52
+ ## One section, one pattern
53
+
54
+ Use when the piece is small and named: `design-loop` splits a goal into three or four pieces, and
55
+ these are for when a piece is "the footer" or "the empty state".
56
+
57
+ | Source | Go here for |
58
+ |---|---|
59
+ | [Footer.design](https://www.footer.design) | Footers only. Narrow on purpose, and the narrowness is why it is good. |
60
+ | [Collect UI](https://collectui.com) | Daily-UI-style collections by component and pattern. |
61
+ | [UI Garage](https://uigarage.net) | Patterns tagged by element and by industry. |
62
+ | [UI Movement](https://uimovement.com) | Motion and interaction specifically — pair with the frequency gate in `../../animate/SKILL.md` before copying anything. |
63
+ | [Dark.design](https://dark.design) · [Dark Mode Design](https://darkmodedesign.com) | Dark interfaces done properly, which is a different problem from inverting a light one. |
64
+ | [Scrnshts](https://scrnshts.club) | App Store screenshot design — a real discipline of its own. |
65
+
66
+ ## Design systems as the canonical answer
67
+
68
+ Not inspiration: **specification**. When the question is "what is the correct behaviour for this
69
+ component", these outrank any gallery.
70
+
71
+ | Source | Go here for |
72
+ |---|---|
73
+ | [Material 3](https://m3.material.io) | Google's system. Exhaustive on states, motion and tokens. |
74
+ | [Apple HIG](https://developer.apple.com/design/human-interface-guidelines) | The reference for platform behaviour and for what *not* to invent on Apple platforms. |
75
+ | [Shopify Polaris](https://polaris.shopify.com) | Dense, commerce-grade product UI with unusually good content guidance. |
76
+ | [IBM Carbon](https://carbondesignsystem.com) | Enterprise density and data-heavy patterns. |
77
+ | [GitHub Primer](https://primer.style) | Developer-tool UI, which is the closest analogue for most rsc projects. |
78
+ | [The Component Gallery](https://component.gallery) *(bot-blocked)* | The same component compared **across** design systems — the fastest way to see the range of correct answers. |
79
+ | [Adele](https://adele.uxpin.com) | Index of public design systems and their pattern libraries. |
80
+ | [Designsystems.com](https://www.designsystems.com) | Essays on building and maintaining a system, not a system itself. |
81
+
82
+ ## Niche, but the right answer when it fits
83
+
84
+ | Source | Go here for |
85
+ |---|---|
86
+ | [Interface In Game](https://interfaceingame.com) | Game UI. Useful well beyond games for diegetic and high-density HUD ideas. |
87
+ | [Mobile.design](https://mobile.design) | Mobile-first patterns collected on their own terms. |
88
+
89
+ ## Housekeeping
90
+
91
+ - **[Bestfolios](https://www.bestfolios.com) returned 502 on 2026-08-24** and is excluded until it
92
+ comes back. Do not cite it.
93
+ - **Component ideas**, as opposed to whole pages, live in
94
+ `../../pick-ui-library/references/component-galleries.md` — Aceternity, 21st.dev, React Bits.
95
+ - **Identity outranks all of this.** Check `02-DOCS/wiki/brand/` for what the project refuses before
96
+ bringing an idea back. A gallery cannot know what your brand vetoed.
@@ -145,3 +145,10 @@ When the direction changes mid-project (new competitor, pivot), re-run the loop
145
145
  - `visual-system.md` — turn the filled direction into tokens.
146
146
  - `../../nextjs/SKILL.md` — implement the chosen direction on the App Router stack.
147
147
  - *frontend-design-direction* — product-domain direction judgment (external reference, not a repo skill).
148
+
149
+ ## Where to look
150
+
151
+ `inspiration-sources.md` is the dated registry of where to browse: whole pages to beat, SaaS and
152
+ conversion surfaces, real product flows (Mobbin, Page Flows — the bucket most people skip), single
153
+ patterns like footers and empty states, and the design systems that are specification rather than
154
+ inspiration. Extract principles, not pixels, and come back with a named page rather than a gallery.
@@ -0,0 +1,75 @@
1
+ # Reference — proposing a starting point
2
+
3
+ Three places promise to propose one: `../../design-loop/SKILL.md` phase 1 when the user says *skip*,
4
+ the closing line of `brand-grounding.md` when a visual dimension has no direction, and
5
+ `../../design-dna/SKILL.md`'s REUSE mode. This file is what they propose *from*. Without it the
6
+ fallback is your own prior, which is the AI-template median — the thing the whole area exists to escape.
7
+
8
+ ## 0. What the project already owns wins
9
+
10
+ **Look before you offer.** Run it; do not reason about it:
11
+
12
+ ```bash
13
+ npx @ericrisco/rsc doctor --json # read `designStartingPoint`
14
+ ```
15
+
16
+ | State | What it means | What you do |
17
+ | --- | --- | --- |
18
+ | `owned` | An identity article or at least one legible style record exists | Propose **that**, by name, first. Offer nothing external until the user rejects it. More than one record → all of them are candidates, ordered as reported. Never pick one silently. |
19
+ | `none` | Looked in both scopes, found nothing | Go to §1. |
20
+ | `inconclusive` | Something could not be read | Say what, and ask for another route to it. **Do not propose past a blind spot** — a proposal made without looking is the defect this file exists to remove. |
21
+
22
+ If the owned identity **contradicts** what the user is now asking for, name the conflicting rule and let
23
+ them decide which wins. Same rule the loop's preflight already applies to a bar from outside.
24
+
25
+ A record that `doctor` reports with a pair below its contrast floor is not offered as a starting point.
26
+
27
+ ## 1. What are you building → which bar
28
+
29
+ At most **three** candidates. Each one gets a name, one line on why it fits *this* product, and one line
30
+ on when it would be the wrong choice. Then **wait**. No answer → take the most demanding one and say so.
31
+
32
+ Sources are in `inspiration-sources.md`; the tier-1 set and the dated-looking list are in
33
+ `trends-2026.md`. **Only propose what you can actually open** — that registry marks several sources as
34
+ bot-blocked, and a bar that cannot be fetched dies in the loop's preflight.
35
+
36
+ | Building | Candidate bars | Wrong choice when |
37
+ | --- | --- | --- |
38
+ | SaaS marketing | Stripe · [SaaS Landing Page](https://saaslandingpage.com) browsed by section · Linear | The product is a daily tool, not a purchase decision — a marketing skin on a workhorse |
39
+ | Dev tool | Linear · Vercel · Resend · [Primer](https://primer.style) | The audience is not technical: dev-tool restraint reads as unfinished to them |
40
+ | Dashboard / internal tool | [Carbon](https://carbondesignsystem.com) · [Polaris](https://polaris.shopify.com) · [Mobbin](https://mobbin.com) flows | It is a landing page with a chart on it — density is not the job |
41
+ | Portfolio / editorial | [Awwwards](https://www.awwwards.com) · [Recent](https://recent.design) · [One Page Love](https://onepagelove.com) | Anything with a conversion target: award craft routinely costs LCP and the 5s test |
42
+ | E-commerce | [Minimal Gallery](https://minimal.gallery) for restraint · [Nicely Done](https://nicelydone.club) for real product surfaces | The catalogue is huge and the real problem is search and filtering, not the hero |
43
+ | Docs | [Stripe docs](https://docs.stripe.com) · [Material 3](https://m3.material.io) on states | Reading is not the job — it is a reference table, so density beats calm |
44
+
45
+ Nothing here fits what they are building? **Say so and interview.** Do not stretch the nearest row: a bar
46
+ chosen because it was closest is the vague bar that makes the loop approve everything on round one.
47
+
48
+ ## 2. A proposal is not an answer
49
+
50
+ 1. **Open the reference.** No value is proposed from a page you did not fetch. Blocked → say so, pick
51
+ another. Never substitute a description from memory.
52
+ 2. **Measure it** — the loop's teardown already does this and writes 5 to 7 mechanisms. Those measured
53
+ values *are* the researched default this file was missing. They are not invented, and they come from
54
+ a page that already ships.
55
+ 3. **Check colour before writing it.** Any text pairing must measure **≥ 4.5:1** (≥ 3:1 for large text
56
+ and UI). Below that, it is **not proposed** — not proposed-with-a-warning.
57
+ 4. **Write it marked `propuesto`, naming the reference it came from.** Never as a confirmed value.
58
+ 5. A dimension that is proposed and not yet confirmed **does not count as complete** against
59
+ `brand-grounding.md`'s checklist. The hard STOP stays up for it. Otherwise the prefill becomes the
60
+ way to cross the gate with nobody having confirmed anything.
61
+ 6. Only what the user confirms becomes the project's identity.
62
+
63
+ ## 3. The base is the floor, not the concept
64
+
65
+ A starting point gets you a defensible floor in one exchange. It does **not** satisfy the ONE signature
66
+ element (`signature-and-craft.md` §2), and it never will: every project that picked the same bar would
67
+ converge on the same page. If the only thing making this surface distinctive is the bar it started from,
68
+ there is no concept yet.
69
+
70
+ ## See Also
71
+
72
+ - `inspiration-sources.md` — the source registry, dated, with the bot-blocked entries marked.
73
+ - `trends-2026.md` — the tier-1 set, and what currently reads as a template.
74
+ - `brand-grounding.md` — the checklist this fills in, and the STOP it does not lift.
75
+ - `signature-and-craft.md` — the part a starting point cannot give you.
@@ -25,6 +25,10 @@ Nobody wrote down **why** the winner was beautiful. Next time you ask for "the s
25
25
 
26
26
  If a `dna.json` already exists for the style named, you are in REUSE. Never re-derive a style that has a record.
27
27
 
28
+ To find out which records exist — in either scope, without guessing at paths — run
29
+ `npx @ericrisco/rsc doctor --json` and read `designStartingPoint`. A record it reports as `unreadable`
30
+ is **not** a record you can reuse: say what is missing, do not use half of one.
31
+
28
32
  ## Hard rules (these are the skill)
29
33
 
30
34
  1. **A specification that cannot fail is not a specification.** If every rule you wrote is one a bad output could still satisfy, you wrote a mood board.
@@ -63,6 +67,25 @@ Run `PROMPT.md` as written. It is the operative artefact and it is self-containe
63
67
  example/ one worked output, the canonical proof
64
68
  scripts/check.py the auto tests, exits non-zero on failure
65
69
 
70
+ ### The record is the harness's design identity
71
+
72
+ The folder above makes the style **reusable**. Writing the record into the harness is what makes it
73
+ **this project's identity** rather than a loose folder in a global directory:
74
+
75
+ - Write the record as an article under `02-DOCS/wiki/brand/`, beside the brand study, and link it
76
+ from `02-DOCS/wiki/index.md` and the root `CLAUDE.md` `## Brand & voice` section — the same
77
+ convention `design` follows, and the same place `marketing`, `presentations`, `brand-voice` and
78
+ `content-engine` already read.
79
+ - **It does not replace the brand study.** The study is the judgement and the direction — why this
80
+ identity, what it refuses. The record is the measurable contract that can fail a test. They share
81
+ only a few fields; each carries what the other cannot.
82
+ - **One harness, one design identity.** If a second appears, name the conflict. The average of two
83
+ good designs is a bad design.
84
+ - A style captured before this convention still works from its folder. To bring it into the harness,
85
+ write its record as the article above; nothing needs re-deriving.
86
+
87
+ `rsc doctor` reports whether this harness has an identity, so the rule is not just prose.
88
+
66
89
  Scaffold from `templates/` and validate before you claim it works:
67
90
 
68
91
  python3 ~/.claude/skills/design-dna/scripts/emit.py <slug> # scaffold + validate