@ranimontagna/agent-toolkit 0.1.19 → 0.1.21

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.
Files changed (89) hide show
  1. package/README.md +7 -2
  2. package/package.json +1 -1
  3. package/skills/frontend/design/design-to-code/SKILL.md +98 -0
  4. package/skills/frontend/design/design-to-code/discovery.md +82 -0
  5. package/skills/frontend/design/design-to-code/generation.md +60 -0
  6. package/skills/frontend/design/design-to-code/input-analysis.md +83 -0
  7. package/skills/frontend/design/design-to-code/mapping.md +73 -0
  8. package/skills/frontend/design/design-to-code/verification.md +68 -0
  9. package/skills/frontend/design/revenue-centric-design/LICENSE +30 -0
  10. package/skills/frontend/design/revenue-centric-design/NOTICE.md +12 -0
  11. package/skills/frontend/design/revenue-centric-design/SKILL.md +73 -0
  12. package/skills/frontend/design/revenue-centric-design/assets/2011427153133351046__1.jpg +0 -0
  13. package/skills/frontend/design/revenue-centric-design/assets/2011427153133351046__2.jpg +0 -0
  14. package/skills/frontend/design/revenue-centric-design/assets/2011427153133351046__3.jpg +0 -0
  15. package/skills/frontend/design/revenue-centric-design/assets/2013264068518289753__1.jpg +0 -0
  16. package/skills/frontend/design/revenue-centric-design/assets/2013264068518289753__2.jpg +0 -0
  17. package/skills/frontend/design/revenue-centric-design/assets/2013597792447394034__1.jpg +0 -0
  18. package/skills/frontend/design/revenue-centric-design/assets/2014317885494059106__1.jpg +0 -0
  19. package/skills/frontend/design/revenue-centric-design/assets/2017274698699067466__1.jpg +0 -0
  20. package/skills/frontend/design/revenue-centric-design/assets/2018357024543715480__1.jpg +0 -0
  21. package/skills/frontend/design/revenue-centric-design/assets/2018693884449009956__1.jpg +0 -0
  22. package/skills/frontend/design/revenue-centric-design/assets/2018693884449009956__2.jpg +0 -0
  23. package/skills/frontend/design/revenue-centric-design/assets/2018693884449009956__3.jpg +0 -0
  24. package/skills/frontend/design/revenue-centric-design/assets/2018693884449009956__4.jpg +0 -0
  25. package/skills/frontend/design/revenue-centric-design/assets/2019019293761941566__1.jpg +0 -0
  26. package/skills/frontend/design/revenue-centric-design/assets/2019019293761941566__10.jpg +0 -0
  27. package/skills/frontend/design/revenue-centric-design/assets/2019019293761941566__2.jpg +0 -0
  28. package/skills/frontend/design/revenue-centric-design/assets/2019019293761941566__3.jpg +0 -0
  29. package/skills/frontend/design/revenue-centric-design/assets/2019019293761941566__4.jpg +0 -0
  30. package/skills/frontend/design/revenue-centric-design/assets/2019019293761941566__5.jpg +0 -0
  31. package/skills/frontend/design/revenue-centric-design/assets/2019019293761941566__6.jpg +0 -0
  32. package/skills/frontend/design/revenue-centric-design/assets/2019019293761941566__7.jpg +0 -0
  33. package/skills/frontend/design/revenue-centric-design/assets/2019019293761941566__8.jpg +0 -0
  34. package/skills/frontend/design/revenue-centric-design/assets/2019019293761941566__9.jpg +0 -0
  35. package/skills/frontend/design/revenue-centric-design/assets/2019514730696565238__1.jpg +0 -0
  36. package/skills/frontend/design/revenue-centric-design/assets/2022255404743381289__1.jpg +0 -0
  37. package/skills/frontend/design/revenue-centric-design/assets/2022255404743381289__2.jpg +0 -0
  38. package/skills/frontend/design/revenue-centric-design/assets/2022255404743381289__3.jpg +0 -0
  39. package/skills/frontend/design/revenue-centric-design/assets/2022255404743381289__4.jpg +0 -0
  40. package/skills/frontend/design/revenue-centric-design/assets/2022255404743381289__5.jpg +0 -0
  41. package/skills/frontend/design/revenue-centric-design/assets/2023777916673220817__q__1.jpg +0 -0
  42. package/skills/frontend/design/revenue-centric-design/assets/2024076972565963186__q__1.mp4 +0 -0
  43. package/skills/frontend/design/revenue-centric-design/assets/2024141244717281514__1.jpg +0 -0
  44. package/skills/frontend/design/revenue-centric-design/assets/2025246347587162602__q__1.jpg +0 -0
  45. package/skills/frontend/design/revenue-centric-design/assets/2026605258152038780__1.jpg +0 -0
  46. package/skills/frontend/design/revenue-centric-design/assets/2026978144343687177__q__1.jpg +0 -0
  47. package/skills/frontend/design/revenue-centric-design/assets/2028471666297217460__1.jpg +0 -0
  48. package/skills/frontend/design/revenue-centric-design/assets/2028777831233114152__q__1.jpg +0 -0
  49. package/skills/frontend/design/revenue-centric-design/assets/2028837448717926518__1.jpg +0 -0
  50. package/skills/frontend/design/revenue-centric-design/assets/2029226965580804593__1.jpg +0 -0
  51. package/skills/frontend/design/revenue-centric-design/assets/2029623167900061970__1.jpg +0 -0
  52. package/skills/frontend/design/revenue-centric-design/assets/2031722047080960265__q__1.jpg +0 -0
  53. package/skills/frontend/design/revenue-centric-design/assets/2031722047080960265__q__2.jpg +0 -0
  54. package/skills/frontend/design/revenue-centric-design/assets/2031722047080960265__q__3.jpg +0 -0
  55. package/skills/frontend/design/revenue-centric-design/assets/2031722047080960265__q__4.jpg +0 -0
  56. package/skills/frontend/design/revenue-centric-design/assets/2033880553607364684__1.jpg +0 -0
  57. package/skills/frontend/design/revenue-centric-design/assets/2034638793219694734__q__1.jpg +0 -0
  58. package/skills/frontend/design/revenue-centric-design/assets/2036035304868434115__1.jpg +0 -0
  59. package/skills/frontend/design/revenue-centric-design/assets/2036461688505909250__1.jpg +0 -0
  60. package/skills/frontend/design/revenue-centric-design/assets/2037316988981174464__1.jpg +0 -0
  61. package/skills/frontend/design/revenue-centric-design/assets/2037583944283996418__1.jpg +0 -0
  62. package/skills/frontend/design/revenue-centric-design/assets/2039399756452057159__1.jpg +0 -0
  63. package/skills/frontend/design/revenue-centric-design/assets/2040415841628651689__1.jpg +0 -0
  64. package/skills/frontend/design/revenue-centric-design/assets/2041829519611371727__1.jpg +0 -0
  65. package/skills/frontend/design/revenue-centric-design/assets/2042013751742705816__1.jpg +0 -0
  66. package/skills/frontend/design/revenue-centric-design/assets/2042558822825239030__1.jpg +0 -0
  67. package/skills/frontend/design/revenue-centric-design/assets/2054283657934758021__1.jpg +0 -0
  68. package/skills/frontend/design/revenue-centric-design/assets/2054910531132183030__1.jpg +0 -0
  69. package/skills/frontend/design/revenue-centric-design/assets/2057124008445796659__1.jpg +0 -0
  70. package/skills/frontend/design/revenue-centric-design/assets/2057872036718899256__1.jpg +0 -0
  71. package/skills/frontend/design/revenue-centric-design/assets/2059236567533650119__1.jpg +0 -0
  72. package/skills/frontend/design/revenue-centric-design/assets/2059951433827426437__1.jpg +0 -0
  73. package/skills/frontend/design/revenue-centric-design/assets/2059997257156399233__1.jpg +0 -0
  74. package/skills/frontend/design/revenue-centric-design/assets/2059997257156399233__2.jpg +0 -0
  75. package/skills/frontend/design/revenue-centric-design/assets/2059997257156399233__3.jpg +0 -0
  76. package/skills/frontend/design/revenue-centric-design/assets/2062554393447141438__1.jpg +0 -0
  77. package/skills/frontend/design/revenue-centric-design/assets/2062621019978760424__1.jpg +0 -0
  78. package/skills/frontend/design/revenue-centric-design/assets/2067987722954735812__1.jpg +0 -0
  79. package/skills/frontend/design/revenue-centric-design/assets/2070140923380420796__1.jpg +0 -0
  80. package/skills/frontend/design/revenue-centric-design/references/ai-era-differentiation.md +57 -0
  81. package/skills/frontend/design/revenue-centric-design/references/behavioral-science-toolkit.md +60 -0
  82. package/skills/frontend/design/revenue-centric-design/references/churn-and-retention.md +66 -0
  83. package/skills/frontend/design/revenue-centric-design/references/conversion-and-landing-pages.md +132 -0
  84. package/skills/frontend/design/revenue-centric-design/references/metrics-and-experimentation.md +31 -0
  85. package/skills/frontend/design/revenue-centric-design/references/onboarding-and-activation.md +148 -0
  86. package/skills/frontend/design/revenue-centric-design/references/positioning-icp-and-gtm.md +64 -0
  87. package/skills/frontend/design/revenue-centric-design/references/pricing-and-monetization.md +87 -0
  88. package/skills/frontend/design/revenue-centric-design/references/product-strategy-and-features.md +58 -0
  89. package/skills/frontend/design/revenue-centric-design/references/revenue-centric-design.md +105 -0
package/README.md CHANGED
@@ -210,6 +210,10 @@ skills/
210
210
  debugging.md
211
211
  testing.md
212
212
  design/
213
+ revenue-centric-design/
214
+ SKILL.md
215
+ assets/
216
+ references/
213
217
  ui-ux-pro-max/
214
218
  SKILL.md
215
219
  data/
@@ -356,6 +360,7 @@ Follow these steps...
356
360
  | `devops` | `docker-patterns` | Adapted from Affaan Mustafa's [`ECC`](https://github.com/affaan-m/ECC/tree/main/.kiro/skills/docker-patterns) and [`sickn33/antigravity-awesome-skills`](https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/docker-expert), both under the MIT license |
357
361
  | `frontend` | `accessibility` | Copied from Affaan Mustafa's [`ECC`](https://github.com/affaan-m/ECC/tree/main/skills/accessibility) under the MIT license |
358
362
  | `frontend` | `astro-developer` | Copied from the official [`withastro/astro`](https://github.com/withastro/astro/tree/main/.agents/skills/astro-developer) repository under the MIT license |
363
+ | `frontend` | `revenue-centric-design` | Copied from Helio Costa's [`revenue-centric-design`](https://github.com/heliocosta-dev/revenue-centric-design) under source-available custom terms requiring attribution and excluding gambling/betting/casino use |
359
364
  | `frontend` | `ui-ux-pro-max` | Copied from Next Level Builder's [`ui-ux-pro-max-skill`](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill/tree/main/.claude/skills/ui-ux-pro-max) under the MIT license |
360
365
  | `frontend` | `gsap-core` | Copied from GreenSock's [`gsap-skills`](https://github.com/greensock/gsap-skills/tree/main/skills/gsap-core) under the MIT license |
361
366
  | `frontend` | `gsap-frameworks` | Copied from GreenSock's [`gsap-skills`](https://github.com/greensock/gsap-skills/tree/main/skills/gsap-frameworks) under the MIT license |
@@ -661,8 +666,8 @@ Release a new npm version by updating `package.json`, pushing the change to
661
666
  `main`, then pushing a matching tag:
662
667
 
663
668
  ```bash
664
- git tag v0.1.19
665
- git push origin v0.1.19
669
+ git tag v0.1.21
670
+ git push origin v0.1.21
666
671
  ```
667
672
 
668
673
  For normal releases, prefer the scripted flow. It bumps `package.json`, updates
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ranimontagna/agent-toolkit",
3
- "version": "0.1.19",
3
+ "version": "0.1.21",
4
4
  "description": "Personal AI agent toolkit installer for Claude Code, Codex CLI, OpenCode, Gemini CLI, Antigravity and graph-aware workflows.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.8.0",
@@ -0,0 +1,98 @@
1
+ ---
2
+ name: design-to-code
3
+ description: "Convert design artifacts into React + TypeScript + Tailwind code that follows the target repository's design system and conventions. Inputs auto-detected: local HTML mockups (Claude Design / Open Design output), artifact URLs, or screenshots. Use when asked to 'transformar design em código', 'implementar mockup', 'implementar design', 'design to code', turn a Claude Design / Open Design artifact into components, or convert an HTML mockup to React. Requires the target repo to use React, TypeScript, and Tailwind. Output: components + assembled page, wired to the repo's routing/state/data-fetching patterns when detectable, with structural visual verification."
4
+ ---
5
+
6
+ # Design to Code
7
+
8
+ Convert a design artifact into production React + TypeScript + Tailwind code that looks like it was written by the target repo's own team.
9
+
10
+ ## Golden rule
11
+
12
+ **Design = intent, repo = law.**
13
+
14
+ The design tells you *what* to build — structure, hierarchy, content, interaction. The target repository tells you *how* — tokens, components, naming, wiring. When they conflict, the repo wins.
15
+
16
+ Consequences:
17
+
18
+ - Never use arbitrary Tailwind values (`bg-[#3B82F6]`, `p-[18px]`). Map every design value to the nearest repo token. The only escape is a documented exception with written justification (see `mapping.md`).
19
+ - Never invent a token, variant, or pattern the repo lacks. If the design needs one, propose it as an **explicit extension** and get approval at the Phase 3 gate.
20
+ - Reuse existing components before creating new ones. New components only when no equivalent exists.
21
+
22
+ ## Preconditions
23
+
24
+ The target repo MUST have React + TypeScript + Tailwind.
25
+
26
+ - **No Tailwind** → abort. Tell the user exactly what is missing and that this skill only targets react+ts+tailwind repos.
27
+ - **No design system** (no custom tokens, no reusable components) → degrade gracefully: use the default Tailwind scale, mark every component NEW, and warn the user that nothing could be reused.
28
+ - **Monorepo** → ask which app/package is the target before Phase 1.
29
+
30
+ ## Pipeline
31
+
32
+ Five phases, strictly gated. On entering a phase, read its reference file (same directory as this SKILL.md). Do not read phase files ahead of time — progressive disclosure keeps context lean.
33
+
34
+ | Phase | Reference | Output artifact | Gate to proceed |
35
+ |---|---|---|---|
36
+ | 1. Discovery | `discovery.md` | `repo-map.md` | Artifact written |
37
+ | 2. Input analysis | `input-analysis.md` | `design-spec.md` | Artifact written |
38
+ | 3. Mapping | `mapping.md` | `mapping-table.md` | **USER APPROVAL** |
39
+ | 4. Generation | `generation.md` | Code in target repo | Static checks pass |
40
+ | 5. Verification | `verification.md` | Verification report | Checklist passes or 3 rounds |
41
+
42
+ Phase N may not start until phase N−1's gate is satisfied. Phases 1 and 2 are independent of each other in content but run in this order so component candidates in Phase 2 can be named in the repo's style.
43
+
44
+ **Create a todo per phase when the pipeline starts.** Mark each in_progress/completed as you go.
45
+
46
+ ## Artifacts
47
+
48
+ Write intermediate artifacts to the session scratchpad directory:
49
+
50
+ - `repo-map.md` — what the repo offers (tokens, components, conventions, wiring patterns)
51
+ - `design-spec.md` — what the design asks for (component tree, observed tokens, content, states)
52
+ - `mapping-table.md` — the crossing of the two (REUSE / EXTEND / NEW decisions, token mapping, exceptions)
53
+ - `screen-backlog.md` — multi-screen runs only (see below)
54
+
55
+ Later phases **read artifacts instead of re-analyzing**. If a session is resumed mid-pipeline, read the existing artifacts and continue from the first missing one.
56
+
57
+ **Persistence across sessions:** for work likely to span sessions (multi-screen designs, large repos), write the artifacts to `.design-to-code/` at the target repo root instead of the scratchpad, and add that directory to the repo's `.gitignore` if not already ignored. A new session then resumes by reading `.design-to-code/` — repo-map and mapping decisions survive, only staleness needs re-checking (did tokens/components change since the artifact was written? `git log` on the token/component paths answers it).
58
+
59
+ ## Multi-screen designs
60
+
61
+ A design with more than ~2 screens does not fit one pipeline pass. Structure it:
62
+
63
+ 1. Phase 2 produces one `design-spec.md` **per screen** (or per tight screen group), plus `screen-backlog.md`:
64
+
65
+ ```markdown
66
+ # Screen backlog — <design>
67
+ | # | Screen | Depends on | Status | Commit |
68
+ |---|---|---|---|---|
69
+ | 1 | Chrome (sidebar+topbar) | — | done | abc123 |
70
+ | 2 | Home | 1 | done | def456 |
71
+ | 3 | Search | 1 | in progress | |
72
+ | 4 | Detail + booking modal | 1 | pending | |
73
+ ```
74
+
75
+ 2. Order the backlog: shared chrome/layout first, then screens leaf-to-complex. Phases 3–5 run **per batch** (1–2 screens), each batch ending in a commit and a backlog status update.
76
+ 3. Phase 1 runs once; Phase 3's mapping-table grows incrementally — new screens append rows, and components created by earlier batches become REUSE candidates for later ones.
77
+ 4. The consolidation pass (see `verification.md`) runs once at the end, across everything the run created.
78
+
79
+ ## The Phase 3 gate (hard stop)
80
+
81
+ `mapping-table.md` is presented to the user before any code is generated:
82
+
83
+ - EXTEND decisions modify existing components — the user must see the API diff and approve.
84
+ - Token mappings change the design's raw values — the user must see what diverges and why.
85
+
86
+ Wait for explicit approval. Apply any requested changes to the table, then enter Phase 4. Never skip this gate, even when every decision is REUSE.
87
+
88
+ **Autonomous runs:** when the user has explicitly pre-authorized unattended execution (batch run, "não precisa me perguntar", scheduled/loop mode), self-approve the gate — but record in `mapping-table.md` that it was auto-approved and why, keep every EXTEND strictly additive, and surface the full table in the final report so the user reviews it after the fact.
89
+
90
+ ## Input priority
91
+
92
+ When multiple design inputs exist for the same design:
93
+
94
+ 1. **Local HTML file** — structural source of truth
95
+ 2. **Artifact URL** — fetch, then treat as HTML
96
+ 3. **Screenshot** — vision extraction; when HTML also exists, the screenshot only validates appearance
97
+
98
+ Multiple candidate designs (e.g., two HTML files, unclear which) → ask the user. Never guess.
@@ -0,0 +1,82 @@
1
+ # Phase 1 — Discovery
2
+
3
+ ## Purpose
4
+
5
+ Inventory the target repository so every later decision (naming, reuse, tokens, wiring) is grounded in what actually exists. This phase reads the repo; it changes nothing.
6
+
7
+ ## Inputs
8
+
9
+ - Target repository working directory (ask which app/package first if monorepo).
10
+
11
+ ## Procedure
12
+
13
+ 1. **Stack detection**
14
+ - Tailwind version: `tailwind.config.{js,ts,cjs,mjs}` → v3-style config; CSS with `@theme` / `@import "tailwindcss"` → v4. Record where tokens live.
15
+ - shadcn: `components.json` present → record its aliases and `ui/` path.
16
+ - Routing: `app/` or `pages/` dir (Next.js), `react-router` / `@tanstack/react-router` in package.json. Record the idiom (file-based vs route objects) and one example route file.
17
+ - State: grep imports for `zustand`, `@reduxjs/toolkit`, `jotai`, `valtio`; note context-based patterns in `providers/` or `context/`.
18
+ - Data-fetching: `@tanstack/react-query`, `swr`, or plain `fetch` wrappers (`lib/api`, `services/`). Record one example usage.
19
+
20
+ 2. **Token inventory**
21
+ - From the Tailwind config (v3) or `@theme` block / CSS vars (v4): colors, spacing overrides, font families, radii, shadows.
22
+ - Record every custom token as `name → value`. Note whether colors are semantic (`primary`, `destructive`) or palette-step (`brand-500`).
23
+ - No custom tokens at all → note "default Tailwind scale only" (triggers the degraded mode from SKILL.md).
24
+
25
+ 3. **Component inventory**
26
+ - Scan `components/`, `src/components/`, `ui/`, and the shadcn path if present.
27
+ - Per component record: name, file path, props signature, variants (cva variants, union-typed props). **Read signatures and variant definitions only — not full implementations.**
28
+ - Large codebases: inventory `ui/` primitives fully; feature-level components by name + one-line role only.
29
+
30
+ 4. **Convention detection**
31
+ - File naming (PascalCase.tsx vs kebab-case.tsx), folder-per-feature vs flat, export style (default vs named, barrel `index.ts` or not), test file pattern (`*.test.tsx` location), class-merge helper (`cn`, `clsx`, `twMerge`).
32
+
33
+ 5. **Verify build commands**
34
+ - Actually run the repo's typecheck and build once, now. If `pnpm exec`/`npx` wrappers misbehave (hook/proxy environments can break them), fall back to `./node_modules/.bin/<tool>` and record whichever form worked — Phases 4–5 depend on these commands.
35
+
36
+ ## Output: `repo-map.md`
37
+
38
+ Write to the session scratchpad, in this shape:
39
+
40
+ ```markdown
41
+ # Repo Map — <repo name>
42
+
43
+ ## Stack
44
+ - Tailwind: v4 (tokens in src/styles/globals.css @theme)
45
+ - shadcn: yes (components.json → @/components/ui)
46
+ - Routing: Next.js app router | react-router v7 | none detected
47
+ - State: zustand (src/stores/) | none detected
48
+ - Data-fetching: react-query (src/hooks/queries/) | none detected
49
+
50
+ ## Tokens
51
+ | Kind | Token | Value |
52
+ |---|---|---|
53
+ | color | primary | #4f46e5 |
54
+ | radius | radius-lg | 12px |
55
+
56
+ ## Components
57
+ | Name | File | Props | Variants |
58
+ |---|---|---|---|
59
+ | Button | components/ui/button.tsx | variant, size, asChild | solid/ghost/outline; sm/md/lg |
60
+
61
+ ## Conventions
62
+ - Naming: kebab-case files, named exports, no barrels
63
+ - Class merge: cn() from lib/utils
64
+ - Tests: colocated *.test.tsx
65
+
66
+ ## Verified commands
67
+ - Typecheck: ./node_modules/.bin/tsc -b
68
+ - Build: ./node_modules/.bin/vite build
69
+ - Dev/preview: ./node_modules/.bin/vite preview --port 4180
70
+
71
+ ## Wiring patterns
72
+ - Route example: app/dashboard/page.tsx
73
+ - Query example: useQuery in src/hooks/queries/use-orders.ts
74
+ ```
75
+
76
+ Mark absent things explicitly as "none detected" — Phase 4 uses that to decide mock-only wiring.
77
+
78
+ ## Failure modes
79
+
80
+ - **No Tailwind** → stop, abort per SKILL.md preconditions.
81
+ - **Monorepo, target ambiguous** → ask the user which app; do not inventory everything.
82
+ - **Hundreds of components** → primitives fully, feature components as name + role. Never dump full implementations into the map.
@@ -0,0 +1,60 @@
1
+ # Phase 4 — Generation
2
+
3
+ ## Purpose
4
+
5
+ Produce the code exactly as `mapping-table.md` (approved at the gate) prescribes, written in the target repo's own style.
6
+
7
+ ## Inputs
8
+
9
+ - `mapping-table.md` (approved) — the only source of component decisions and token choices
10
+ - `design-spec.md` — structure, content, states
11
+ - `repo-map.md` — conventions and wiring patterns
12
+
13
+ ## Procedure
14
+
15
+ 1. **Order of work**
16
+ 1. **Extensions first** — smallest diffs, and they unblock reuse everywhere else. Apply each approved API diff additively; never alter existing variant behavior.
17
+ 2. **NEW components, leaf-first** — primitives before composites, so composites import real code.
18
+ 3. **Page / composition** — assemble per the design-spec component tree, preserving section order and heading hierarchy.
19
+ 4. **Wiring last** — see step 3.
20
+
21
+ 2. **Style rules (every file)**
22
+ - Strict TS: typed props (interface or type per repo habit), no `any`, no `@ts-ignore`.
23
+ - Follow `repo-map.md` conventions exactly: file naming, export style, folder placement, class-merge helper (`cn`/`clsx`).
24
+ - Tailwind classes only from the approved token mapping. Class order: layout → spacing → typography → color → states.
25
+ - No inline `style=` attributes.
26
+ - Repeated visual units (cards, rows, tiers) render from a typed data array, never copy-pasted JSX.
27
+
28
+ 3. **Wiring**
29
+ - `repo-map.md` shows a routing pattern → create the route in that idiom (app-router page, route object, etc.).
30
+ - Shows a data-fetching pattern → wire it in the repo's idiom (e.g., a `useQuery` hook) backed by the mock data, so swapping to a real endpoint is a one-line change.
31
+ - Shows a state pattern and the design needs shared state → follow it. Local UI state stays `useState`.
32
+ - Pattern "none detected" → typed mock data only: put it in the repo's `mocks/` dir if one exists, else colocate a `*.mock.ts` next to the page. Mock content comes from the design-spec Content inventory — real texts and numbers, not lorem ipsum.
33
+
34
+ 4. **Filling design gaps with restraint**
35
+ When the design doesn't specify something you must build anyway (responsive collapse it never drew, empty/error/loading states, a screen edge case):
36
+ - Default to restraint: no invented badges/pills/decorative micro-UI, no cards nested inside cards, preserve the design's negative space and rhythm.
37
+ - Reuse the design's own motifs (from the design-spec) instead of importing generic patterns.
38
+ - Every invented piece goes in the Phase 5 report under "accepted differences" — gap-filling is fine, silent invention is not.
39
+
40
+ 5. **Accessibility baseline (mandatory)**
41
+ - Semantic landmarks: `nav`, `main`, `header`, `footer`, `aside`.
42
+ - Heading hierarchy exactly as extracted in the design-spec.
43
+ - `alt` on images, labels on form controls, `button` vs `a` used by behavior (action vs navigation).
44
+ - Interactive elements keyboard-reachable with visible focus (repo's focus ring token if one exists).
45
+
46
+ 6. **Per-file self-check (before moving to the next file)**
47
+ - Does it compile in your head — every import exists per `repo-map.md`?
48
+ - Every class traceable to the approved mapping? Zero arbitrary values outside the Exceptions table?
49
+ - Props typed, mock data typed?
50
+ - Only use component APIs the repo actually has (per the `repo-map.md` props column). Don't assume shadcn idioms (`asChild`, `forwardRef` wrappers, slot props) on hand-rolled components that look similar.
51
+
52
+ ## Output
53
+
54
+ Code in the target repo. No artifact file — Phase 5 verifies directly.
55
+
56
+ ## Failure modes
57
+
58
+ - **Extension was rejected at the gate** → NEW component that wraps the existing one instead of modifying it.
59
+ - **Ambiguous wiring** (two routers present, two fetch idioms) → ask the user; don't pick silently.
60
+ - **Design-spec node impossible with approved mapping** (e.g., needs a variant the user removed at the gate) → go back to the gate with a revised proposal; don't improvise.
@@ -0,0 +1,83 @@
1
+ # Phase 2 — Input analysis
2
+
3
+ ## Purpose
4
+
5
+ Turn the design artifact into a structured spec: what sections exist, how they're laid out, what values they use, what content they carry. The spec is the contract Phase 4 implements and Phase 5 verifies against.
6
+
7
+ ## Inputs
8
+
9
+ - Design artifact(s): local HTML, artifact URL, and/or screenshot.
10
+ - `repo-map.md` (for naming component candidates in the repo's style).
11
+
12
+ ## Procedure
13
+
14
+ 1. **Detect inputs**
15
+ - Use what the user pointed at. If nothing explicit, look for obvious candidates: `*.html` mockups in cwd, `temp/`, `designs/`, or recently mentioned files/URLs.
16
+ - Multiple candidate designs and it's unclear which → **ask the user, never guess**.
17
+ - Priority when the same design exists in several forms: **design source folder > local HTML > URL (fetch it, then treat as HTML) > screenshot**. HTML + screenshot together → HTML is the structural truth; use the screenshot only to validate rendered appearance.
18
+ - **Design source folders** (Claude Design / Open Design exports) are the richest input. Recognize them by: a folder with `.jsx`/`.tsx` source files, one or more small `*.html` shells, large `*Standalone.html` bundles, and often a `HANDOFF*.md`/`README` doc. Handle each part by role:
19
+ - `.jsx/.tsx` sources → structural truth: real component boundaries, props, state, interactions. Read these instead of parsing rendered HTML.
20
+ - Handoff/README docs → often carry tokens, TypeScript types, mock data, and behavior notes **verbatim** — lift them directly into the spec instead of re-deriving. But its stack prescriptions (e.g. "don't use Tailwind") do NOT override the target repo: design = intent, repo = law.
21
+ - `*Standalone.html` bundles (hundreds of KB to MB, inline React/Babel) → **never read as text** (they destroy context). Use them only as the render reference: screenshot with a headless browser for Phase 5 comparison. They need a generous render budget (e.g. `--virtual-time-budget=15000`) because they compile in-browser.
22
+
23
+ 2. **Extract structure** (HTML: read markup + styles; screenshot: vision)
24
+ - Section hierarchy top to bottom (nav, hero, content regions, footer...).
25
+ - Layout system per section: grid vs flex, column counts, alignment, sidebar widths, breakpoints if declared.
26
+ - Heading hierarchy (h1/h2/h3) — Phase 4 must preserve it.
27
+
28
+ 3. **Extract observed tokens**
29
+ - Colors (hex/rgb) with role: background, surface, text, accent, success/danger.
30
+ - Typography: families, the distinct size/weight steps actually used — and the **scale relationships** (how much bigger is the h1 than the sub? than body?), which survive token mapping even when exact px don't.
31
+ - Spacing rhythm: the distinct paddings/gaps in use (e.g., 18/22/28px) — record raw values; mapping to repo scale happens in Phase 3, not here. Also record **cadence relationships**: headline↔subheadline distance vs section gaps vs card gaps — relative rhythm is what Phase 5 checks.
32
+ - Radii, shadows, borders.
33
+ - Repeated visual motifs (a texture, a chip style, a decorative pattern) — name them once; they anchor cross-screen consistency later.
34
+
35
+ 4. **Extract states and interactions**
36
+ - Hover/active/disabled styles present in CSS; focus styles; anything animated.
37
+ - Screenshots can't show hover — note "states not observable" so Phase 4 falls back to repo component defaults.
38
+
39
+ 5. **Extract content**
40
+ - Real texts, numbers, table rows, labels — **verbatim**, including CTA microcopy, section headings, and small labels. These become **typed mock data** in Phase 4 — never lorem ipsum, never paraphrased copy, when the design has real content.
41
+
42
+ 6. **Decompose into candidate components**
43
+ - One responsibility per node. Repeated visual units (cards, rows, tiers) → one component + data array.
44
+ - Name candidates in the repo's naming style (from `repo-map.md`).
45
+
46
+ ## Output: `design-spec.md`
47
+
48
+ Write to the session scratchpad, in this shape:
49
+
50
+ ```markdown
51
+ # Design Spec — <artifact name>
52
+
53
+ ## Overview
54
+ Analytics dashboard: fixed sidebar, header, stats row, revenue table, chart panel.
55
+
56
+ ## Component tree
57
+ - DashboardPage
58
+ - Sidebar — logo, nav list (5 items, active state), user footer
59
+ - Header — search input, avatar
60
+ - StatCard ×4 — label, value, delta (up/down)
61
+ - RevenueTable — 5 rows, status badge per row
62
+ - ChartPanel — bar chart placeholder
63
+
64
+ ## Observed tokens
65
+ | Kind | Value | Role / where |
66
+ |---|---|---|
67
+ | color | #4f6ef7 | accent: active nav, primary button |
68
+ | spacing | 22px | card padding |
69
+
70
+ ## States & interactions
71
+ - Nav item hover: background lightens
72
+ - Table row hover: surface tint
73
+
74
+ ## Content inventory
75
+ - Stat cards: "Revenue $48,2k +12%", ...
76
+ - Table rows: (Acme Corp, $1,200, Paid), ...
77
+ ```
78
+
79
+ ## Failure modes
80
+
81
+ - **Illegible / low-res screenshot** → request a better export or the HTML. Do not invent details vision can't confirm.
82
+ - **URL unreachable** → ask for an HTML export instead.
83
+ - **Design spans multiple screens/pages** → one `design-spec.md` per screen plus `screen-backlog.md`, per the Multi-screen designs section of SKILL.md. Confirm scope/order with the user unless running autonomously (then: chrome first, leaf-to-complex).
@@ -0,0 +1,73 @@
1
+ # Phase 3 — Mapping
2
+
3
+ ## Purpose
4
+
5
+ Cross `design-spec.md` against `repo-map.md`: decide for every component candidate whether to reuse, extend, or create, and map every observed design value to a repo token. Ends in a **hard user-approval gate**.
6
+
7
+ ## Inputs
8
+
9
+ - `design-spec.md` (what the design asks for)
10
+ - `repo-map.md` (what the repo offers)
11
+
12
+ ## Procedure
13
+
14
+ 1. **Component decisions** — for each candidate in the component tree:
15
+ - **REUSE** — a repo component has the same role and a compatible API. Record which props/variants will be used.
16
+ - **EXTEND** — a repo component has the role but lacks a variant/prop the design needs (e.g., Button has sm/md but design needs an xl hero button). Write an **explicit API diff**:
17
+ ```
18
+ Button (components/ui/button.tsx)
19
+ size: "sm" | "md" | "lg" → size: "sm" | "md" | "lg" | "xl"
20
+ ```
21
+ Extensions must be additive — never change existing variant behavior.
22
+ - **NEW** — no equivalent exists. Decide its path per repo conventions (`repo-map.md` → Conventions).
23
+
24
+ 2. **Color mapping** — for each observed color, pick the nearest repo token:
25
+ - Compare hue first, then lightness. A same-hue token two lightness steps away beats a closer-lightness token in a different hue.
26
+ - Ties → prefer semantic tokens (`primary`, `destructive`) over palette steps (`blue-500`).
27
+ - Record the mapping and a one-word distance note (exact / close / far).
28
+
29
+ 3. **Spacing / typography / radii mapping** — nearest scale step. Round consistently within a section (don't map 18px→4 and 22px→6 in the same card; pick one direction so rhythm survives).
30
+
31
+ 4. **Exceptions** — arbitrary values (`h-[57px]`) are forbidden. The only escape: an Exceptions table row with written justification (e.g., brand asset with fixed aspect ratio). Target: empty table.
32
+
33
+ ## Output: `mapping-table.md`
34
+
35
+ Write to the session scratchpad, three tables:
36
+
37
+ ```markdown
38
+ # Mapping — <design> → <repo>
39
+
40
+ ## Components
41
+ | Candidate | Decision | Target / new path | Notes |
42
+ |---|---|---|---|
43
+ | StatCard | NEW | components/dashboard/stat-card.tsx | no equivalent |
44
+ | Button (hero) | EXTEND | components/ui/button.tsx | size: +"xl" — diff below |
45
+ | Badge | REUSE | components/ui/badge.tsx | variant="success" |
46
+
47
+ ### EXTEND diffs
48
+ Button: size "sm"|"md"|"lg" → "sm"|"md"|"lg"|"xl"
49
+
50
+ ## Tokens
51
+ | Design value | Repo token | Distance |
52
+ |---|---|---|
53
+ | #4f6ef7 | primary (#4f46e5) | close |
54
+ | 22px card padding | p-5 (20px) | close |
55
+
56
+ ## Exceptions
57
+ | Value | Justification |
58
+ |---|---|
59
+ | (none) | |
60
+ ```
61
+
62
+ ## Gate (hard stop — from SKILL.md)
63
+
64
+ Present all three tables to the user. Wait for explicit approval.
65
+
66
+ - EXTEND rows modify existing code — user must see each API diff.
67
+ - Token rows change the design's raw values — user must see what diverges.
68
+ - Apply requested changes to the table **before** entering Phase 4. Never skip the gate, even when everything is REUSE.
69
+
70
+ ## Failure modes
71
+
72
+ - **No token remotely close** (design is neon green, repo palette is earth tones) → design-system conflict. Don't silently pick either side. Ask the user: (a) map to nearest anyway, (b) propose a new token as an extension, (c) keep the raw value as a justified exception.
73
+ - **Two repo components could serve the same role** → pick the one used more often in the repo; note the alternative in the table.
@@ -0,0 +1,68 @@
1
+ # Phase 5 — Verification
2
+
3
+ ## Purpose
4
+
5
+ Prove the generated code matches the design **structurally** — not pixel-for-pixel, since Phase 3 intentionally remapped raw values to repo tokens.
6
+
7
+ ## Inputs
8
+
9
+ - Generated code (Phase 4)
10
+ - Original design artifact (HTML/screenshot/URL)
11
+ - `design-spec.md`, `mapping-table.md`
12
+
13
+ ## Procedure
14
+
15
+ 1. **Static verification (must pass before the visual loop)**
16
+ - Discover the target repo's scripts from its `package.json`: typecheck (`tsc --noEmit` or a `typecheck` script), lint, build.
17
+ - Run all three. Fix failures before any screenshot — a broken build makes visual comparison meaningless.
18
+ - If `pnpm exec`/`npx` misbehaves (hangs, OOMs, "missing script" for a binary that exists — shell hooks/proxies can break these wrappers), bypass with the direct binary: `./node_modules/.bin/<tool>`. Record the working commands in `repo-map.md` so later phases reuse them.
19
+ - **Arbitrary-value gate (mechanical):** grep the generated/modified files for arbitrary Tailwind values — `grep -nE '\[(#|[0-9]+px)' <new files>` catches `bg-[#...]`, `p-[18px]`, `h-[57px]`. Every hit must correspond to a row in the mapping-table's Exceptions table. A hit with no exception row is a Phase 4 bug: fix the code or (rarely) go back to the gate to justify it. Decorative parametric styles passed via `style=` (per-datum gradients) are exempt only if the Exceptions table names them.
20
+
21
+ 2. **Visual loop**
22
+ 1. Start the repo's dev server (its `dev` script) in the background; wait for it to report ready.
23
+ 2. Screenshot the new page/components. Tooling, in detection order:
24
+ - Playwright already in the repo → use it
25
+ - `npx playwright screenshot` available → use that
26
+ - Headless Chrome/Chromium (`chromium --headless --screenshot`) → fallback
27
+ 3. Compare against the original design artifact side by side.
28
+ 4. **Responsive matrix:** when the design-spec declares breakpoints or responsive behavior (sidebar collapse, grid → single column), screenshot at three widths — mobile 390, tablet 768, desktop 1440 — and run the fidelity checklist per viewport. Desktop-only designs skip this, but say so in the report rather than silently checking one width.
29
+
30
+ 3. **Interactive states (don't skip — static screenshots miss them)**
31
+ Route screenshots never capture modals, hover states, dropdowns, or multi-step flows. For every spec'd state that needs interaction to reach:
32
+ - **Preferred:** drive the real flow — a throwaway Playwright script (repo's Playwright or `./node_modules/.bin/playwright`), or headless Chrome via DevTools Protocol, that clicks through and screenshots each state (e.g., open the booking modal, advance each step; log in through the app's own mock auth to reach protected screens). Real-flow driving beats state injection: it also proves the transitions work.
33
+ - **Fallback — state injection:** temporarily flip the state's source to render it directly (store default, seeded route param, initial-step prop), screenshot, then revert before committing. Same technique as auth-state parity.
34
+ - **Neither possible:** the state goes in the report under **"Spec'd states NOT visually verified"** with the reason. This list is mandatory in the final report — an empty list is a claim, so make it explicitly ("all interactive states exercised"), not by omission.
35
+ - **Match app state to the design's depicted state before comparing** (auth logged in/out, active tab, filters, seeded data). A state mismatch reads as dozens of false layout diffs.
36
+ - `file://` screenshot pitfalls: spaces/unicode in filenames break the URL — copy the file to a space-free scratch path instead of fighting encoding. A suspiciously small screenshot (~15–20 KB dark page) is Chrome's error page (`ERR_FILE_NOT_FOUND`), not your render — check the path before debugging the code.
37
+ - **SPA prototypes with state-based routing** (route in `useState`/localStorage, no URL routing) can't deep-link to inner views. To screenshot an inner view, patch a *copy* of the prototype's initial-route expression (`sed` on the copy — never the original). If the bundle is compiled/minified and the pattern doesn't match, don't fight it: verify that view against the design-spec derived from the JSX sources instead, and note in the report that the pixel reference was home-only.
38
+
39
+ 4. **Fidelity checklist (structural, not pixel)**
40
+ - [ ] Section order and hierarchy match the design-spec component tree
41
+ - [ ] Layout system matches per section: column counts, alignment, sidebar placement
42
+ - [ ] Relative spacing rhythm preserved (tighter/looser relationships, not exact px)
43
+ - [ ] Typography hierarchy matches: same number of distinct levels, same ordering of prominence
44
+ - [ ] Interactive states present (hover/focus/disabled where the spec lists them)
45
+ - [ ] Colors correct **per mapping-table** — the repo token was applied where the mapping says; divergence from the design's raw hex is correct behavior, divergence from the mapping is a bug
46
+ - [ ] Content matches the spec's content inventory (real texts/numbers, no placeholder lorem)
47
+ - [ ] **No design drift**: the result keeps the design's visual identity and mood — its motifs, its type-scale relationships, its negative space — instead of collapsing into a generic template that merely has the same sections
48
+
49
+ 5. **Iterate**
50
+ - Any unchecked item → fix the code, re-screenshot, re-run the checklist.
51
+ - **Maximum 3 rounds.** After the third, stop and report the remaining differences honestly, with the screenshots, and let the user decide.
52
+
53
+ 6. **Consolidation pass (multi-screen runs)**
54
+ After several screens/batches, generated components drift: near-duplicates appear (two card variants that are one component with a prop), and components born inside a feature turn out to be app-wide primitives. Before the final report:
55
+ - Scan the components created this run for near-duplicates → merge into one component + variant prop.
56
+ - Any component used by 2+ features that has no feature-specific logic → promote to the repo's primitive layer (`ui/`), following its conventions.
57
+ - **Cross-screen consistency audit**: batches drift visually, not just structurally. Compare screens for the same type-scale logic, the same spacing discipline, the same CTA styling, the same recurring motifs (from the design-spec). A screen built in batch 5 that renders its CTAs or section headings differently from batch 1 is a bug even if each screen individually passes.
58
+ - Re-run static verification after consolidating.
59
+ Single-screen runs skip this step.
60
+
61
+ 7. **Report**
62
+ - Static results (commands + pass/fail, arbitrary-value gate outcome), rounds used, final checklist state per viewport, screenshots compared, the "spec'd states NOT visually verified" list, consolidation changes, any accepted differences and why.
63
+
64
+ ## Failure modes
65
+
66
+ - **Dev server won't start** → fall back to static verification + a line-by-line self-review of the generated code against `design-spec.md` (every tree node implemented? every state handled? every content item present?). State clearly in the report that the visual loop did not run.
67
+ - **No screenshot tooling available** → same fallback, same disclosure.
68
+ - **Screenshot renders blank/broken** → check the route is correct and the server finished compiling before concluding the code is wrong.
@@ -0,0 +1,30 @@
1
+ Revenue-Centric Design Skill — License & Usage Terms
2
+ Copyright (c) 2026 the curators of this repository.
3
+
4
+ The underlying ideas, frameworks, examples, and the coined term "Revenue-Centric
5
+ Design" are the intellectual property of Richard (@richardrx on X) and are used
6
+ here WITH PERMISSION. This repository is a distilled, translated index of his
7
+ public posts, shared for educational and reference use.
8
+
9
+ You are granted permission to use, copy, and share this material, subject to ALL
10
+ of the following conditions:
11
+
12
+ 1. ATTRIBUTION. You must retain clear attribution to Richard (@richardrx) and a
13
+ link to the source. Do not misrepresent the origin of these ideas.
14
+
15
+ 2. NO GAMBLING / BETTING / CASINO USE. You may NOT use this material — in whole
16
+ or in part — to design, build, optimize, market, or grow betting, casino,
17
+ gambling, or other real-money games-of-chance products or projects (including
18
+ loot-box and real-money-gaming mechanics). This restriction was set by the
19
+ original author as an explicit condition of reuse and MUST be preserved in any
20
+ copy or derivative.
21
+
22
+ 3. PRESERVE THESE TERMS. Any copy or derivative work must include this license in
23
+ full, including the restrictions above.
24
+
25
+ 4. NO WARRANTY. This material is provided "AS IS", without warranty of any kind,
26
+ express or implied. The curators and the original author are not liable for any
27
+ claim, damages, or other liability arising from its use.
28
+
29
+ Note: Because of the field-of-use restriction in clause 2, this is a
30
+ SOURCE-AVAILABLE license, not an OSI-approved open-source license.
@@ -0,0 +1,12 @@
1
+ # Third-party notice
2
+
3
+ This skill was copied from Helio Costa's Revenue-Centric Design repository.
4
+
5
+ - Source: https://github.com/heliocosta-dev/revenue-centric-design
6
+ - Source commit: 6fa20cb4f91fa97bce9197be3f78b168784eb772
7
+ - License: Source-available custom terms; attribution required, no gambling/betting/casino use
8
+ - Copyright: Copyright (c) 2026 the curators of the source repository
9
+
10
+ The upstream `updater/` maintenance tooling was intentionally not vendored.
11
+ The runtime skill files, references, and referenced assets are included. The
12
+ upstream license is included in `LICENSE`.
@@ -0,0 +1,73 @@
1
+ ---
2
+ name: revenue-centric-design
3
+ description: "Playbook for SaaS and startup product design that improves conversion, activation, retention, pricing, positioning, GTM, monetization, and AI-era differentiation. Use for product UX, landing pages, onboarding, trials, churn, pricing, growth, or positioning. Not for gambling, betting, or casino products."
4
+ ---
5
+
6
+ # Revenue-Centric Design
7
+
8
+ A distilled playbook of **101 principles** from **Richard ([@richardrx](https://x.com/richardrx), "Design for startups")** —
9
+ a product designer specializing in conversion-rate optimization, churn reduction, and applied
10
+ behavioral science (ex-Volkswagen, PayPal, IBM). The throughline is his coined philosophy,
11
+ **Revenue-Centric Design (RCD)**: design decisions should serve the user _and_ the business —
12
+ value and revenue, not one or the other.
13
+
14
+ Use this skill when helping someone improve how a digital product (especially SaaS / startup)
15
+ **acquires, activates, retains, monetizes, or differentiates** — landing pages, onboarding,
16
+ pricing, trials, churn, UX flow, feature scope, positioning, or growth.
17
+
18
+ ## Usage boundary (required)
19
+
20
+ > 🚫 **Do not apply this skill to betting, casino, gambling, or other real-money games-of-chance
21
+ > products or projects** (including loot-box / real-money-gaming mechanics).
22
+
23
+ The author granted permission to reuse this material **on the explicit condition that it never be
24
+ used for gambling, betting, or casino work.** If a request asks you to apply these principles to
25
+ such a product, **decline** and briefly explain that the source author's reuse permission excludes
26
+ gambling/betting/casino use. This is a hard constraint set by the author, not a stylistic choice.
27
+
28
+ ## How to use it
29
+
30
+ 1. Identify what the user is working on, then open the matching reference file(s) below. Each is a
31
+ set of short, reusable principles in a fixed shape — **principle → apply when → the move →
32
+ evidence → source link**. Load only what's relevant (progressive disclosure).
33
+ 2. Ground your advice in these principles; cite the specific one, and link the source post when the
34
+ user would benefit from the original.
35
+ 3. Lead with the **named mechanism** (e.g., decoy effect, Zeigarnik effect, Swiss Knife Index, GBB,
36
+ Eugene Schwartz's 5 awareness levels, loss aversion, peak-end rule) — naming the lever is the value.
37
+ 4. Stay evidence-led: many principles carry a study, stat, or case. Keep the citation attached
38
+ rather than hand-waving.
39
+
40
+ ## The spine: Revenue-Centric Design in 9 principles
41
+
42
+ 1. **Neutrality is omission** — an interface that doesn't direct hurts conversion.
43
+ 2. **Who talks to everyone convinces no one** — no ICP → generic value → worse retention.
44
+ 3. **Value first, ask later** — proof must arrive before the user questions their choice.
45
+ 4. **Your promise is the size of your proof** — the market believes what you demonstrate, not what you claim.
46
+ 5. **Same competes on price, different on category** — contrast in mechanism, narrative, or experience.
47
+ 6. **Default is the decision you made for the user** — the initial state defines mass behavior.
48
+ 7. **Retention is built, not requested** — perceived loss retains more than promised benefit.
49
+ 8. **Expansion is born of usage** — upgrade at the moment of the limit, never by interruption.
50
+ 9. **Price is a filter** — pricing defines who enters, who stays, and who expands.
51
+
52
+ ## Reference library
53
+
54
+ | When the question is about… | Open |
55
+ | ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
56
+ | Landing pages, hero/copy, CTAs, social proof, awareness levels, CRO | [conversion-and-landing-pages](references/conversion-and-landing-pages.md) |
57
+ | First-run, empty states, aha moment, TTV, activation, trial-as-onboarding | [onboarding-and-activation](references/onboarding-and-activation.md) |
58
+ | Cancellation, retention, expectation debt, NRR, jobs-to-be-done, support load | [churn-and-retention](references/churn-and-retention.md) |
59
+ | Pricing tables, decoy/anchoring, GBB, trial-with-card, upgrade paths | [pricing-and-monetization](references/pricing-and-monetization.md) |
60
+ | Cognitive biases & persuasion tactics (cross-cutting toolkit) | [behavioral-science-toolkit](references/behavioral-science-toolkit.md) |
61
+ | Feature scope, Swiss Knife Index, feature adoption, attention hierarchy | [product-strategy-and-features](references/product-strategy-and-features.md) |
62
+ | Design philosophy, the RCD principles, design process & method | [revenue-centric-design](references/revenue-centric-design.md) |
63
+ | ICP, niche, founder-fit, distribution, PLG, Bullseye, first customers | [positioning-icp-and-gtm](references/positioning-icp-and-gtm.md) |
64
+ | Differentiating in the AI era, moats, commoditization | [ai-era-differentiation](references/ai-era-differentiation.md) |
65
+ | A/B testing rigor, vanity metrics, churn→LTV math, signal quality | [metrics-and-experimentation](references/metrics-and-experimentation.md) |
66
+
67
+ Informational diagrams and screenshots referenced by the principles live in `assets/`.
68
+
69
+ ## Provenance
70
+
71
+ 101 curated posts by [@richardrx](https://x.com/richardrx), extracted with a valid X API key and
72
+ distilled **with the author's permission**, translated from Portuguese to English. Every principle
73
+ links back to its source post. Reuse is subject to the gambling/betting/casino exclusion above.