wizz-method 2.21.0 → 2.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD-PARTY-NOTICES.md +24 -0
- package/package.json +4 -2
- package/removals.txt +3 -0
- package/skills-registry.yaml +133 -4
- package/src/bmm-skills/1-analysis/research/wizz-market-research/steps/step-06-research-completion.md +27 -0
- package/src/bmm-skills/1-analysis/wizz-set-feature/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-code-review/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-create-story/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-dev-story/SKILL.md +8 -1
- package/src/bmm-skills/4-implementation/wizz-quick-dev/SKILL.md +2 -2
- package/src/bmm-skills/4-implementation/wizz-quick-dev/step-03-implement.md +2 -0
- package/src/bmm-skills/4-implementation/wizz-sprint-status/SKILL.md +1 -1
- package/src/core-skills/wizz-party-mode/customize.toml +3 -3
- package/src/modules/lowticket/README.md +2 -1
- package/src/modules/lowticket/module.yaml +1 -1
- package/src/modules/lowticket/skills/wizz-clone-do-expert/SKILL.md +86 -0
- package/src/modules/lowticket/skills/wizz-clone-do-expert/references/clone-prompt-template.md +21 -0
- package/src/modules/lowticket/skills/wizz-lowticket-trafego/references/reguas.md +2 -0
- package/src/modules/wizz/_shared/cerebro.md +1 -1
- package/src/modules/wizz/_shared/organizacao.md +2 -2
- package/src/modules/wizz/_shared/video-pipeline.md +2 -0
- package/src/modules/wizz/agents/wizz-copy/SKILL.md +1 -0
- package/src/modules/wizz/agents/wizz-copy/customize.toml +5 -0
- package/src/modules/wizz/agents/wizz-copy/knowledge/playbook.md +3 -2
- package/src/modules/wizz/agents/wizz-growth/customize.toml +7 -2
- package/src/modules/wizz/agents/wizz-growth/knowledge/playbook.md +3 -2
- package/src/modules/wizz/agents/wizz-social/knowledge/blueprint-roteiro-viral.md +14 -0
- package/src/modules/wizz/agents/wizz-social/knowledge/legenda-instagram.md +12 -0
- package/src/skills-lib/wizz-cerebro/SKILL.md +18 -5
- package/src/skills-lib/wizz-design-needs/SKILL.md +7 -0
- package/src/skills-lib/wizz-design-needs/references/design-state.md +34 -2
- package/src/skills-lib/wizz-design-needs/references/gap-analysis.md +1 -1
- package/src/skills-lib/wizz-design-needs/scripts/design_state.py +305 -0
- package/src/skills-lib/wizz-design-needs/scripts/tests/test_design_state.py +143 -0
- package/src/skills-lib/wizz-impeccable/references/design-rules.md +18 -0
- package/src/skills-lib/wizz-ios-build/SKILL.md +61 -0
- package/src/skills-lib/wizz-motion-3d-director/references/motion-paths.md +2 -0
- package/src/skills-lib/wizz-offer-forge/SKILL.md +2 -2
- package/src/skills-lib/wizz-paid-ads/SKILL.md +2 -1
- package/src/skills-lib/wizz-paywall-upgrade-cro/SKILL.md +1 -0
- package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/README.md +13 -13
- package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/SKILL.md +11 -7
- package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/assets/template.html +8 -21
- package/src/skills-lib/wizz-pesquisa-de-publico/references/interview-mode.md +69 -0
- package/src/skills-lib/wizz-premium-landing-ui-researcher/SKILL.md +6 -2
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/audit-protocol.md +7 -34
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/component-sources.md +25 -0
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/design-sources.yaml +325 -0
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/mandatory-process.md +1 -1
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/mining-rubric.md +123 -0
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/source-first-protocol.md +10 -4
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/web-access-and-evidence.md +1 -1
- package/src/skills-lib/wizz-premium-landing-ui-researcher/scripts/design_sources.py +221 -0
- package/src/skills-lib/wizz-premium-landing-ui-researcher/scripts/tests/test_design_sources.py +130 -0
- package/src/skills-lib/wizz-router/references/routing-table-flat.md +7 -1
- package/src/skills-lib/wizz-seo-audit/SKILL.md +4 -0
- package/src/skills-lib/wizz-seo-audit/references/gsc-regex-perguntas.md +64 -0
- package/src/skills-lib/wizz-signup-flow-cro/SKILL.md +1 -0
- package/src/skills-lib/wizz-signup-flow-cro/references/trial-abuse.md +40 -0
- package/src/skills-lib/wizz-taste-skill/references/anti-slop-tells.md +8 -0
- package/src/skills-lib/wizz-ui-component-curator/SKILL.md +8 -7
- package/src/skills-lib/wizz-ui-ux-pro-max/SKILL.md +1 -1
- package/src/skills-lib/wizz-ui-ux-pro-max/references/common-rules-checklist.md +11 -0
- package/src/skills-lib/wizz-video-effects/LICENSE-motionmaxxing.txt +202 -0
- package/src/skills-lib/wizz-video-effects/SKILL.md +7 -2
- package/src/skills-lib/wizz-video-effects/assets/chrome/collect_layout.js +113 -0
- package/src/skills-lib/wizz-video-effects/assets/effects.config.template.json +45 -0
- package/src/skills-lib/wizz-video-effects/references/data-contract.md +32 -1
- package/src/skills-lib/wizz-video-effects/references/gates.md +4 -1
- package/src/skills-lib/wizz-video-effects/references/one-take.md +41 -0
- package/src/skills-lib/wizz-video-effects/scripts/check_chrome.py +376 -0
- package/src/skills-lib/wizz-video-effects/scripts/check_dead_frames.py +193 -0
- package/src/skills-lib/wizz-video-effects/scripts/check_one_take.py +159 -0
- package/src/skills-lib/wizz-video-effects/scripts/config.py +13 -0
- package/src/skills-lib/wizz-video-effects/scripts/test_chrome.py +181 -0
- package/src/skills-lib/wizz-video-effects/scripts/test_dead_frames.py +171 -0
- package/src/skills-lib/wizz-video-effects/scripts/test_one_take.py +126 -0
- package/src/skills-lib/wizz-video-styles/LICENSE-lemo-opuscar.txt +21 -0
- package/src/skills-lib/wizz-video-styles/SKILL.md +16 -7
- package/src/skills-lib/wizz-video-styles/assets/film-styles/dark-keynote.html +78 -0
- package/src/skills-lib/wizz-video-styles/assets/film-styles/remotion/Riso.tsx +63 -0
- package/src/skills-lib/wizz-video-styles/assets/film-styles/risograph.html +69 -0
- package/src/skills-lib/wizz-video-styles/assets/film-styles/swiss-motion.html +84 -0
- package/src/skills-lib/wizz-video-styles/references/check-ins.md +25 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/DIRECTOR.md +139 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/archive-lighttable.md +109 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/art-deco.md +112 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/ascii-crt.md +115 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/backrooms.md +125 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/blueprint.md +120 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/brick-toy.md +114 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/briefing-board.md +122 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/caption-news.md +137 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/cel-anime-80s.md +119 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/city-symphony.md +142 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/countdown.md +132 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/crayon-book.md +109 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/dark-keynote.md +117 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/data-physical.md +119 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/dataviz.md +123 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/engraving.md +123 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/game-show.md +118 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/glass-product.md +110 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/halftone-dossier.md +122 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/hd-2d.md +111 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/hologram-hud.md +129 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/impasto.md +124 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/ink-wash.md +120 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/iso-infographic.md +117 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/kino-montage.md +151 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/lidar-survey.md +118 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/living-screencast.md +124 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/lowpoly-island.md +112 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/microgame.md +122 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/microscope.md +108 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/midcentury-toon.md +124 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/news-package.md +158 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/newsreel.md +136 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/one-line.md +114 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/paper-lantern.md +116 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/paper-popup.md +119 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/papercut-red.md +110 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/pictogram-motion.md +119 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/pixel-rpg.md +117 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/risograph.md +125 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/rubber-hose.md +112 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/satellite-briefing.md +116 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/scifi-toon.md +121 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/shadow-puppet.md +124 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/silent-film.md +109 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/silkscreen-poster.md +140 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/spy-titles.md +116 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/stained-glass.md +123 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/swiss-motion.md +115 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/teardown.md +127 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/telestrator.md +137 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/tilt-shift.md +107 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/ukiyoe.md +112 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/urban-sketch.md +126 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/visual-investigation.md +140 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/watercolor.md +113 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/white-model.md +115 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/whiteboard.md +118 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles/woodcut.md +122 -0
- package/src/skills-lib/wizz-video-styles/references/film-styles.md +140 -0
- package/src/skills-lib/wizz-video-styles/references/insert-recipes.md +33 -0
- package/src/skills-lib/wizz-video-styles/references/motion-laws.md +62 -0
- package/src/skills-lib/wizz-video-styles/references/styles/desafio-numero.md +1 -0
- package/src/skills-lib/wizz-video-styles/scripts/beat_grid.py +38 -6
- package/src/skills-lib/wizz-video-styles/scripts/blind_review.py +159 -0
- package/src/skills-lib/wizz-video-styles/scripts/taste.mjs +110 -0
- package/src/skills-lib/wizz-video-styles/scripts/test_blind_review.py +82 -0
- package/src/skills-lib/wizz-vsl/LICENSE +49 -0
- package/src/skills-lib/wizz-vsl/SKILL.md +122 -0
- package/src/skills-lib/wizz-vsl/references/assembly-qa.md +123 -0
- package/src/skills-lib/wizz-vsl/references/blocks-and-leads.md +149 -0
- package/src/skills-lib/wizz-vsl/references/diagnosis.md +95 -0
- package/src/skills-lib/wizz-vsl/references/intake.md +200 -0
- package/src/skills-lib/wizz-vsl/references/mechanisms.md +138 -0
- package/src/skills-lib/wizz-vsl/references/niches.md +40 -0
- package/src/skills-lib/wizz-vsl/references/offer.md +91 -0
- package/src/skills-lib/wizz-vsl/references/production.md +75 -0
- package/src/skills-lib/wizz-web-security/SKILL.md +2 -0
- package/tools/hooks/README.md +10 -9
- package/tools/hooks/wizz-arrumar.js +1 -0
- package/tools/hooks/wizz-artifact-guard.js +31 -5
- package/tools/hooks/wizz-cerebro-lib.js +36 -13
- package/tools/hooks/wizz-feature-lib.js +4 -1
- package/tools/hooks/wizz-feature.js +66 -76
- package/tools/hooks/wizz-sprint-archive-lib.js +311 -0
- package/tools/installer/core/hooks-settings.js +1 -0
- package/tools/installer/core/installer.js +6 -0
- package/tools/installer/guided/labels.js +16 -0
- package/tools/installer/install-text.js +2 -0
- package/tools/installer/modules/cli-config.js +3 -0
- package/tools/installer/modules/core-seed.js +72 -0
- package/tools/installer/modules/mcp-config.js +3 -0
- package/tools/installer/ui.js +22 -26
- /package/src/skills-lib/{wizz-pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico}/prompts.md +0 -0
|
@@ -4,51 +4,24 @@ The Source-First Protocol takes care of the **beginning** (curating mature sourc
|
|
|
4
4
|
|
|
5
5
|
Apply 3 passes in order. Each catches a different class of problem: using the first two is redundant only 60% of the time; in the other 40%, one catches what the other missed.
|
|
6
6
|
|
|
7
|
-
### Pass 1: Taste
|
|
7
|
+
### Pass 1: Taste (early, before full implementation)
|
|
8
8
|
|
|
9
9
|
**When to apply:** right after Phase 5 of the Source-First Protocol, when you have a mockup/wireframe of the sections or a first version of the hero implemented. Ideally there's still time to swap a component without high cost.
|
|
10
10
|
|
|
11
|
-
**
|
|
11
|
+
**Run:** invoke `skill:wizz-taste-skill` in audit mode. Its checklist is the list for this pass: [design-audit](../../wizz-taste-skill/references/design-audit.md) and [anti-slop-tells](../../wizz-taste-skill/references/anti-slop-tells.md), including the landing-page tells of section 9.H. This protocol keeps only when to run it, the angle and the output, so the list has one owner and cannot drift.
|
|
12
12
|
|
|
13
13
|
**Angle:** an anti-AI-generic detector. Key question: *"Could this layout belong to any generic SaaS, or does it have an authorial signature?"*
|
|
14
14
|
|
|
15
|
-
**
|
|
16
|
-
|
|
17
|
-
- A hero with "big headline + subtitle + 2 side-by-side CTAs" with no identity of its own
|
|
18
|
-
- Features in a 3-col grid with cute decorative icons (the "✨ Fast 🚀 Reliable 🔥 Secure" style)
|
|
19
|
-
- Saturated color gradients with no purpose (purple-to-pink, blue-to-cyan, the default Tailwind look)
|
|
20
|
-
- AI copy: "revolutionize your workflow", "supercharge your business", "10x your results"
|
|
21
|
-
- A perfectly symmetrical layout with no editorial tension
|
|
22
|
-
- Excessive rounded corners (`rounded-3xl` on everything)
|
|
23
|
-
- Card stacks with the default Tailwind `shadow-xl`
|
|
24
|
-
- Decorative emoji anywhere other than status microcopy
|
|
25
|
-
- Generic testimonial cards with a round avatar + name + title + quoted sentence
|
|
26
|
-
- Pricing cards with a centered, gradient "Most Popular" badge
|
|
27
|
-
|
|
28
|
-
**Pass output:** a list of up to 5 spots where the landing page looks templated, with a **replacement** suggestion for each one (a component from an authorized source, an editorial decision, or removal). Present it to the user before proceeding.
|
|
15
|
+
**Pass output:** a list of up to 5 spots where the landing page looks templated, with a **replacement** suggestion for each one (a component from an authorized source, an editorial decision, or removal). Present it to the user before proceeding. A replacement that needs a new component reopens the need in `design-state.yaml` instead of starting a fresh search.
|
|
29
16
|
|
|
30
17
|
### Pass 2: Impeccable (late, with real tokens and content)
|
|
31
18
|
|
|
32
19
|
**When to apply:** after the implementation is assembled with brand tokens, real typography, real images/mockups. Catches problems that only appear once the component is alive, not in a wireframe.
|
|
33
20
|
|
|
34
|
-
**
|
|
21
|
+
**Run:** invoke `skill:wizz-impeccable` with `critique` (or `polish` when fixing). Its ruleset is the list for this pass: [design-rules](../../wizz-impeccable/references/design-rules.md), including the "Landing fine-tuning" block. Same split as Pass 1: the list lives in the skill, the timing and output live here.
|
|
35
22
|
|
|
36
23
|
**Angle:** classic design chops. Key question: *"Does this look like it was made by a senior designer with 10+ years of editorial background?"*
|
|
37
24
|
|
|
38
|
-
**What to look for and flag as a problem:**
|
|
39
|
-
|
|
40
|
-
- **Spacing**: inconsistent padding/margin between sections (24px here, 28px there, 32px elsewhere). Define and follow a scale (4/8/12/16/24/32/48/64/96/128)
|
|
41
|
-
- **Hierarchy**: headings competing with each other for weight/size. H1, H2, H3 should have clear contrast
|
|
42
|
-
- **Leading**: `line-height` too tight in body text (<1.5) or too loose in headlines (>1.15)
|
|
43
|
-
- **Tracking**: wrong letter-spacing on small uppercase text (mono labels need more tracking, ~0.18em)
|
|
44
|
-
- **Optical alignment**: icons with a different visual weight than adjacent text, mono numbers not monospaced vertically
|
|
45
|
-
- **Vertical rhythm**: scrolling with no breathing room (section after section with no air) or with unexplainable huge gaps
|
|
46
|
-
- **Color hierarchy**: 5+ shades of gray for text with no justification, accent color used on things that aren't actionable
|
|
47
|
-
- **Image cropping**: thumbnails with inconsistent aspect ratio between cards
|
|
48
|
-
- **Typographic contrast**: heavy headings + heavy body text too (missing a light/regular weight to create contrast)
|
|
49
|
-
- **Edge cases**: what happens when the project name has 4 words vs. 1? And when the description has 2 lines vs. 4?
|
|
50
|
-
- **Focus states**: does the tab order deliver an editorial sequence, or does it jump around chaotically between sections?
|
|
51
|
-
|
|
52
25
|
**Pass output:** a list of up to 7 fine-tuning adjustments with specific **before/after** (e.g., "Hero subhead: change leading 1.1 → 1.3" / "Cards grid: align the mono numbering baseline with the card headline baseline").
|
|
53
26
|
|
|
54
27
|
### Pass 3: Cross-check with references
|
|
@@ -82,7 +55,7 @@ agent-browser eval "<js>" # 4. measure tokens (computed styles, etc.)
|
|
|
82
55
|
**Diagnosis:**
|
|
83
56
|
|
|
84
57
|
- If the difference is **taste/direction** (conscious brand choices) → ok, keep it
|
|
85
|
-
- If the difference is **execution** (the reference has polish yours is missing) → go back to Source-First and find the missing component
|
|
58
|
+
- If the difference is **execution** (the reference has polish yours is missing) → reopen the need in `design-state.yaml` (status `open`, with the discoveries already rejected carried forward) and mine it again; with no state file, go back to Source-First and find the missing component
|
|
86
59
|
- If the difference is **motion fluidity** → review timing, easing, scale, and animation composition (the Design Motion Principles were probably not applied)
|
|
87
60
|
- If the difference is **visual density** (the reference is more spaced out and breathes more) → cut elements, don't add
|
|
88
61
|
|
|
@@ -106,8 +79,8 @@ Not a matter of taste, it's technical quality. Check:
|
|
|
106
79
|
|
|
107
80
|
| Pass | When | Adjustment cost | Frequency |
|
|
108
81
|
|---|---|---|---|
|
|
109
|
-
| 1. Taste
|
|
110
|
-
| 2. Impeccable | Implementation with real tokens | Medium (fine CSS) | Always |
|
|
82
|
+
| 1. Taste (`wizz-taste-skill`) | Wireframe / hero first | Low (component can still be swapped) | Always |
|
|
83
|
+
| 2. Impeccable (`wizz-impeccable`) | Implementation with real tokens | Medium (fine CSS) | Always |
|
|
111
84
|
| 3. Cross-check | Final visual | Variable | Always |
|
|
112
85
|
| 4. Accessibility + Perf | Before delivering | Medium-high (may require refactor) | Always |
|
|
113
86
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
> To pick a source, query [design-sources.yaml](design-sources.yaml) with `scripts/design_sources.py list --need <tag>`; this page is the policy and nuance behind those rows, read when a source needs it.
|
|
2
|
+
|
|
1
3
|
## Source Access Strategy
|
|
2
4
|
|
|
3
5
|
Prioritize free, open source, public, registry-based sources or sources provided by the user.
|
|
@@ -101,6 +103,18 @@ As of 2026-10-15 the shadcn index marks `@styleui` as **degraded** (sampled item
|
|
|
101
103
|
- Priority source for: SaaS dashboards, data viz, metrics/stats sections on the landing page, premium animated charts (complements/replaces raw Recharts)
|
|
102
104
|
- The Bklit Studio (playground) is proprietary; the components themselves are MIT
|
|
103
105
|
|
|
106
|
+
### ReUI
|
|
107
|
+
|
|
108
|
+
- Site: https://reui.io/ · GitHub: https://github.com/keenthemes/reui (MIT, free)
|
|
109
|
+
- shadcn components and blocks (forms, tables, dialogs, pricing, dashboards). Confirm the registry namespace in the live index before `npx shadcn add`.
|
|
110
|
+
- Use for: app sections and dashboard blocks when the project already runs on shadcn.
|
|
111
|
+
|
|
112
|
+
### Thinking Orbs
|
|
113
|
+
|
|
114
|
+
- GitHub: https://github.com/Jakubantalik/thinking-orbs (MIT) · `npm i thinking-orbs`
|
|
115
|
+
- 9 animated canvas orbs, one per AI state (working, searching, solving, listening, connecting...).
|
|
116
|
+
- Use only when the product has an agent or AI chat UI and needs a state indicator better than a spinner. Install, never vendor.
|
|
117
|
+
|
|
104
118
|
### Skiper UI
|
|
105
119
|
|
|
106
120
|
Skiper UI **must not be cloned**.
|
|
@@ -183,6 +197,17 @@ Use for: vibe coding references, prompt ideas, component inspiration, UI pattern
|
|
|
183
197
|
|
|
184
198
|
> **Important rule:** Vibe Code Components can appear under `Reference Sources` and `Visual Inspiration Sources`, but must not be treated as primary implementation sources like React Bits, Cult UI, Watermelon, or StyleUI.
|
|
185
199
|
|
|
200
|
+
### Tokens, design systems and the final audit
|
|
201
|
+
|
|
202
|
+
A model asked to "make it look good" averages everything it has seen. Give it a closed target before the first screen:
|
|
203
|
+
|
|
204
|
+
- **Open Props** (https://open-props.style/, MIT): ready-made CSS tokens for colour, spacing, radius, easing. Hand the token list over so the model stops inventing a new grey per screen.
|
|
205
|
+
- **DesignSystems.one** (https://designsystems.one/): gallery of real company design systems (Material, Fluent, Carbon, Atlassian, Polaris). Pick one as the base, swap in the brand colours, give it to the model at project start.
|
|
206
|
+
- **Design System Checklist** (https://www.designsystemchecklist.com/): the audit before publishing. Ask the model for the list of failing items, choose 3 and fix them one at a time. Never "fix everything": it rewrites the project and breaks what works.
|
|
207
|
+
- **VibePrompt** (https://vibeprompts.dev/): UI Prompt Library with 286 layout prompts by section (auth, pricing, hero, bento, stats, FAQ, dashboard). Use one prompt as the brief for one section and swap in the project tokens; never paste a whole page of them.
|
|
208
|
+
- **GetLayers** (https://www.getlayers.com/): section templates with a "copy prompt" button and an MCP. Read the licence of each item; take the structure, rebuild the code.
|
|
209
|
+
- **Curated** (https://curated.design/): catalogue of real, live websites for direction. Visual only.
|
|
210
|
+
|
|
186
211
|
## Visual Inspiration Sources
|
|
187
212
|
|
|
188
213
|
These are visual sources for the skill to use when it needs visual direction, inspiration, style, animation, composition, and UX. They must not be treated as a guaranteed source of code.
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
# Design sources, as data. Read by scripts/design_sources.py (list by need tag,
|
|
2
|
+
# cache freshness, refresh) so the miner does not load the whole prose catalogue
|
|
3
|
+
# to pick one source. The prose in component-sources.md stays as the reference
|
|
4
|
+
# for policy and nuance (Clone Policy, Paid Source Policy, visual inspiration
|
|
5
|
+
# rules); this file is the one to query.
|
|
6
|
+
#
|
|
7
|
+
# Fields:
|
|
8
|
+
# kind code | registry | engine | visual | taste | extractor
|
|
9
|
+
# (code/registry = evidence bar of code; visual = pattern only, rebuilt)
|
|
10
|
+
# license what was read, with the date of the reading in `checked`; null = none
|
|
11
|
+
# access free | free+paid | paid | login
|
|
12
|
+
# need_tags what the source answers; matched by `design_sources.py list --need`
|
|
13
|
+
# registry shadcn namespace and item URL template, when it has one
|
|
14
|
+
# cache folder name under ~/.claude/design-sources/, when there is a local clone
|
|
15
|
+
# study_only true when the code must never be copied (no license)
|
|
16
|
+
version: 1
|
|
17
|
+
cache_root: "~/.claude/design-sources"
|
|
18
|
+
max_cache_age_days: 30
|
|
19
|
+
registry_index: "https://ui.shadcn.com/r/registries.json"
|
|
20
|
+
|
|
21
|
+
sources:
|
|
22
|
+
- id: react-bits
|
|
23
|
+
kind: registry
|
|
24
|
+
url: "https://github.com/DavidHDev/react-bits.git"
|
|
25
|
+
registry: { namespace: "@react-bits" }
|
|
26
|
+
license: "MIT + Commons Clause"
|
|
27
|
+
checked: 2026-09-06
|
|
28
|
+
access: free+paid
|
|
29
|
+
cache: react-bits
|
|
30
|
+
need_tags: [text-animation, background, scroll, hover, card, micro-interaction, loader, hero, particles, cursor]
|
|
31
|
+
note: "React Bits Pro is never a mandatory dependency."
|
|
32
|
+
|
|
33
|
+
- id: cult-ui
|
|
34
|
+
kind: registry
|
|
35
|
+
url: "https://github.com/nolly-studio/cult-ui"
|
|
36
|
+
docs: "https://www.cult-ui.com/docs"
|
|
37
|
+
registry: { namespace: "@cult-ui" }
|
|
38
|
+
license: null
|
|
39
|
+
checked: null
|
|
40
|
+
access: free+paid
|
|
41
|
+
cache: cult-ui
|
|
42
|
+
need_tags: [marketing-section, hero, button, card, landing-section]
|
|
43
|
+
note: "Read the license of the item; public/open resources only unless paid access is confirmed."
|
|
44
|
+
|
|
45
|
+
- id: ali-imam
|
|
46
|
+
kind: visual
|
|
47
|
+
url: "https://github.com/aliimam-in/aliimam.git"
|
|
48
|
+
license: null
|
|
49
|
+
checked: 2026-10-15
|
|
50
|
+
access: free
|
|
51
|
+
cache: aliimam
|
|
52
|
+
study_only: true
|
|
53
|
+
need_tags: [shader, liquid, ripple, border-glow, bento, typewriter, canvas, experimental]
|
|
54
|
+
note: "No license: study the technique, never copy the code."
|
|
55
|
+
|
|
56
|
+
- id: watermelon
|
|
57
|
+
kind: registry
|
|
58
|
+
url: "https://github.com/WatermelonCorp/watermellon-registry.git"
|
|
59
|
+
registry: { namespace: "@watermelon", template: "https://registry.watermelon.sh/r/{name}.json" }
|
|
60
|
+
license: null
|
|
61
|
+
checked: null
|
|
62
|
+
access: free
|
|
63
|
+
cache: watermelon
|
|
64
|
+
need_tags: [dashboard, saas, card, app-section, data-viz, product-ui]
|
|
65
|
+
|
|
66
|
+
- id: styleui
|
|
67
|
+
kind: registry
|
|
68
|
+
url: "https://github.com/heyfabrika/styleui.git"
|
|
69
|
+
registry: { namespace: "@styleui" }
|
|
70
|
+
license: null
|
|
71
|
+
checked: 2026-10-15
|
|
72
|
+
access: free
|
|
73
|
+
cache: styleui
|
|
74
|
+
need_tags: [layout, template, landing-section, base-page]
|
|
75
|
+
note: "Marked degraded in the shadcn index on 2026-10-15: check health before relying on it."
|
|
76
|
+
|
|
77
|
+
- id: componentry
|
|
78
|
+
kind: registry
|
|
79
|
+
url: "https://componentry.dev/"
|
|
80
|
+
registry: { namespace: "@componentry", template: "https://componentry.fun/r/{name}.json" }
|
|
81
|
+
license: null
|
|
82
|
+
checked: null
|
|
83
|
+
access: free
|
|
84
|
+
need_tags: [text-animation, background, hover, micro-interaction, animated-component]
|
|
85
|
+
|
|
86
|
+
- id: bklit-ui
|
|
87
|
+
kind: registry
|
|
88
|
+
url: "https://github.com/bklit/bklit-ui"
|
|
89
|
+
registry: { namespace: "@bklit" }
|
|
90
|
+
license: MIT
|
|
91
|
+
checked: null
|
|
92
|
+
access: free
|
|
93
|
+
need_tags: [chart, data-viz, dashboard, metrics]
|
|
94
|
+
note: "Install from the registry, do not clone."
|
|
95
|
+
|
|
96
|
+
- id: skiper-ui
|
|
97
|
+
kind: registry
|
|
98
|
+
url: null
|
|
99
|
+
registry: { namespace: "@skiper-ui" }
|
|
100
|
+
license: null
|
|
101
|
+
checked: null
|
|
102
|
+
access: free+paid
|
|
103
|
+
need_tags: [distinctive-effect, premium-section, advanced-animation]
|
|
104
|
+
note: "Must not be cloned: npx shadcn add @skiper-ui/<item>. Premium only with confirmed access."
|
|
105
|
+
|
|
106
|
+
- id: shadcn-ui
|
|
107
|
+
kind: registry
|
|
108
|
+
url: "https://ui.shadcn.com/"
|
|
109
|
+
license: MIT
|
|
110
|
+
checked: null
|
|
111
|
+
access: free
|
|
112
|
+
need_tags: [base, form, dialog, navigation, carousel, layout]
|
|
113
|
+
|
|
114
|
+
- id: embla
|
|
115
|
+
kind: code
|
|
116
|
+
url: "https://www.embla-carousel.com/"
|
|
117
|
+
license: MIT
|
|
118
|
+
checked: null
|
|
119
|
+
access: free
|
|
120
|
+
need_tags: [carousel]
|
|
121
|
+
|
|
122
|
+
- id: animmaster
|
|
123
|
+
kind: code
|
|
124
|
+
url: "https://animmasterlib.dev/"
|
|
125
|
+
license: "commercial"
|
|
126
|
+
checked: null
|
|
127
|
+
access: paid
|
|
128
|
+
need_tags: [animated-component]
|
|
129
|
+
note: "Only with authorized access; what the user already bought counts as local material."
|
|
130
|
+
|
|
131
|
+
- id: gsap
|
|
132
|
+
kind: engine
|
|
133
|
+
url: "https://github.com/greensock/GSAP.git"
|
|
134
|
+
license: "free since v3.13, all plugins"
|
|
135
|
+
checked: null
|
|
136
|
+
access: free
|
|
137
|
+
need_tags: [scroll-storytelling, scroll, timeline, text-reveal, svg-morph]
|
|
138
|
+
|
|
139
|
+
- id: animejs
|
|
140
|
+
kind: engine
|
|
141
|
+
url: "https://github.com/juliangarnier/anime.git"
|
|
142
|
+
license: MIT
|
|
143
|
+
checked: null
|
|
144
|
+
access: free
|
|
145
|
+
need_tags: [micro-interaction, stagger, svg, counter]
|
|
146
|
+
|
|
147
|
+
- id: design-motion-principles
|
|
148
|
+
kind: taste
|
|
149
|
+
url: "https://github.com/kylezantos/design-motion-principles.git"
|
|
150
|
+
license: null
|
|
151
|
+
checked: null
|
|
152
|
+
access: free
|
|
153
|
+
need_tags: [motion-principles, easing, timing]
|
|
154
|
+
|
|
155
|
+
- id: vibe-code-components
|
|
156
|
+
kind: visual
|
|
157
|
+
url: "https://vibecodecomponents.com/"
|
|
158
|
+
license: null
|
|
159
|
+
checked: null
|
|
160
|
+
access: free
|
|
161
|
+
need_tags: [visual-direction, section-idea]
|
|
162
|
+
|
|
163
|
+
- id: landing-love
|
|
164
|
+
kind: visual
|
|
165
|
+
url: "https://www.landing.love/"
|
|
166
|
+
license: null
|
|
167
|
+
checked: null
|
|
168
|
+
access: free
|
|
169
|
+
need_tags: [visual-direction, scroll, hero, landing-section]
|
|
170
|
+
|
|
171
|
+
- id: recent
|
|
172
|
+
kind: visual
|
|
173
|
+
url: "https://recent.design/"
|
|
174
|
+
license: null
|
|
175
|
+
checked: 2026-10-15
|
|
176
|
+
access: free
|
|
177
|
+
need_tags: [visual-direction, typography, editorial, art-direction]
|
|
178
|
+
|
|
179
|
+
- id: design-spells
|
|
180
|
+
kind: visual
|
|
181
|
+
url: "https://www.designspells.com/"
|
|
182
|
+
license: null
|
|
183
|
+
checked: null
|
|
184
|
+
access: free
|
|
185
|
+
need_tags: [micro-interaction, delight, hover]
|
|
186
|
+
|
|
187
|
+
- id: spline
|
|
188
|
+
kind: visual
|
|
189
|
+
url: "https://spline.design/"
|
|
190
|
+
license: null
|
|
191
|
+
checked: null
|
|
192
|
+
access: free+paid
|
|
193
|
+
need_tags: [3d, hero]
|
|
194
|
+
|
|
195
|
+
- id: unicorn-studio
|
|
196
|
+
kind: visual
|
|
197
|
+
url: "https://www.unicorn.studio/"
|
|
198
|
+
license: null
|
|
199
|
+
checked: null
|
|
200
|
+
access: free+paid
|
|
201
|
+
need_tags: [webgl, background, shader, particles]
|
|
202
|
+
|
|
203
|
+
- id: refero
|
|
204
|
+
kind: visual
|
|
205
|
+
url: "https://refero.design/"
|
|
206
|
+
license: null
|
|
207
|
+
checked: 2026-10-15
|
|
208
|
+
access: login
|
|
209
|
+
need_tags: [ux-flow, dashboard, pricing, onboarding]
|
|
210
|
+
note: "Refero MCP is paid."
|
|
211
|
+
|
|
212
|
+
- id: refero-styles
|
|
213
|
+
kind: taste
|
|
214
|
+
url: "https://styles.refero.design/"
|
|
215
|
+
license: null
|
|
216
|
+
checked: null
|
|
217
|
+
access: free
|
|
218
|
+
need_tags: [design-md, typography, palette, spacing]
|
|
219
|
+
|
|
220
|
+
- id: awesome-design-md
|
|
221
|
+
kind: taste
|
|
222
|
+
url: "https://github.com/VoltAgent/awesome-design-md"
|
|
223
|
+
license: MIT
|
|
224
|
+
checked: 2026-10-15
|
|
225
|
+
access: free
|
|
226
|
+
need_tags: [design-md, typography, palette, spacing]
|
|
227
|
+
|
|
228
|
+
- id: mobbin
|
|
229
|
+
kind: visual
|
|
230
|
+
url: "https://mobbin.com/"
|
|
231
|
+
license: null
|
|
232
|
+
checked: 2026-10-15
|
|
233
|
+
access: login
|
|
234
|
+
need_tags: [ux-flow, onboarding, pricing, dashboard, mobile]
|
|
235
|
+
note: "Mobbin MCP is paid."
|
|
236
|
+
|
|
237
|
+
- id: screensdesign
|
|
238
|
+
kind: visual
|
|
239
|
+
url: "https://screensdesign.com/"
|
|
240
|
+
license: null
|
|
241
|
+
checked: 2026-10-15
|
|
242
|
+
access: login
|
|
243
|
+
need_tags: [mobile, onboarding, paywall, subscription]
|
|
244
|
+
|
|
245
|
+
- id: dembrandt
|
|
246
|
+
kind: extractor
|
|
247
|
+
url: "https://github.com/dembrandt/dembrandt"
|
|
248
|
+
license: MIT
|
|
249
|
+
checked: 2026-10-15
|
|
250
|
+
access: free
|
|
251
|
+
need_tags: [typography, palette, spacing, design-md]
|
|
252
|
+
note: "npx -y dembrandt@0.39.2 <url> --design-md: measures a site the user named."
|
|
253
|
+
|
|
254
|
+
- id: thinking-orbs
|
|
255
|
+
kind: code
|
|
256
|
+
url: "https://github.com/Jakubantalik/thinking-orbs"
|
|
257
|
+
license: MIT
|
|
258
|
+
checked: 2026-10-25
|
|
259
|
+
access: free
|
|
260
|
+
need_tags: [loader, ai-state, canvas, micro-interaction]
|
|
261
|
+
note: "npm thinking-orbs: 9 animated canvas orbs, one per AI state (working, searching, solving, listening...). Only for products with an agent or AI chat UI."
|
|
262
|
+
|
|
263
|
+
- id: reui
|
|
264
|
+
kind: registry
|
|
265
|
+
url: "https://github.com/keenthemes/reui"
|
|
266
|
+
docs: "https://reui.io/"
|
|
267
|
+
license: MIT
|
|
268
|
+
checked: 2026-10-25
|
|
269
|
+
access: free
|
|
270
|
+
need_tags: [form, button, dialog, data-viz, pricing, app-section, dashboard, template]
|
|
271
|
+
note: "shadcn components and blocks (485+ blocks on the site). Confirm the registry namespace in the live index before installing."
|
|
272
|
+
|
|
273
|
+
- id: open-props
|
|
274
|
+
kind: taste
|
|
275
|
+
url: "https://open-props.style/"
|
|
276
|
+
license: MIT
|
|
277
|
+
checked: 2026-10-25
|
|
278
|
+
access: free
|
|
279
|
+
need_tags: [design-md, palette, spacing, typography, easing]
|
|
280
|
+
note: "Ready-made CSS tokens. Hand the token list to the model before the first screen so it stops inventing a new grey per page."
|
|
281
|
+
|
|
282
|
+
- id: designsystems-one
|
|
283
|
+
kind: taste
|
|
284
|
+
url: "https://designsystems.one/"
|
|
285
|
+
license: null
|
|
286
|
+
checked: 2026-10-25
|
|
287
|
+
access: free
|
|
288
|
+
need_tags: [design-md, typography, palette, spacing, visual-direction]
|
|
289
|
+
note: "Gallery of real company design systems (Material, Fluent, Carbon, Atlassian, Polaris...). Pick one as a base, swap the brand colours, give it to the model at project start."
|
|
290
|
+
|
|
291
|
+
- id: design-system-checklist
|
|
292
|
+
kind: taste
|
|
293
|
+
url: "https://www.designsystemchecklist.com/"
|
|
294
|
+
license: null
|
|
295
|
+
checked: 2026-10-25
|
|
296
|
+
access: free
|
|
297
|
+
need_tags: [design-md, audit]
|
|
298
|
+
note: "Final audit before publishing: ask the model for the failing items, fix 3 at a time, never all at once."
|
|
299
|
+
|
|
300
|
+
- id: getlayers
|
|
301
|
+
kind: visual
|
|
302
|
+
url: "https://www.getlayers.com/"
|
|
303
|
+
license: null
|
|
304
|
+
checked: 2026-10-25
|
|
305
|
+
access: free+paid
|
|
306
|
+
need_tags: [hero, landing-section, 3d, section-idea]
|
|
307
|
+
note: "Section templates with a 'copy prompt' button and an MCP. Read the licence of each item; rebuild, never paste."
|
|
308
|
+
|
|
309
|
+
- id: curated-design
|
|
310
|
+
kind: visual
|
|
311
|
+
url: "https://curated.design/"
|
|
312
|
+
license: null
|
|
313
|
+
checked: 2026-10-25
|
|
314
|
+
access: free
|
|
315
|
+
need_tags: [visual-direction, landing-section, art-direction]
|
|
316
|
+
note: "Catalogue of real, live websites for direction."
|
|
317
|
+
|
|
318
|
+
- id: vibeprompts
|
|
319
|
+
kind: taste
|
|
320
|
+
url: "https://vibeprompts.dev/"
|
|
321
|
+
license: null
|
|
322
|
+
checked: 2026-10-25
|
|
323
|
+
access: free
|
|
324
|
+
need_tags: [section-idea, landing-section, pricing, form, hero, dashboard, onboarding, navigation]
|
|
325
|
+
note: "UI Prompt Library: 286 layout prompts by section (auth, pricing, hero, bento, stats, FAQ, dashboard...) that return Tailwind markup. Use the prompt as the brief for one section; adapt it to the project tokens."
|
|
@@ -8,7 +8,7 @@ Always follow this process. **Steps 6, 7, and 8 are SOURCE CHECKPOINTS and must
|
|
|
8
8
|
4. Define the visual direction.
|
|
9
9
|
5. Decide whether it needs a landing page, dashboard, 3D/WebGL, or a combination.
|
|
10
10
|
6. **CHECKPOINT: Inventory of the user's sources.** List and inspect (ls + minimal reading of READMEs/package.json) the current project and the models at the paths provided by the user; reuse the memory summary from the handoff. Identify which components/effects the user already has that can be reused before any external source.
|
|
11
|
-
7. **CHECKPOINT: Source-First Protocol (mandatory).** Run [source-first-protocol](source-first-protocol.md): search public sources, open demos and code/registry, check revision, license, and dependencies. Log evidence and failures in the research artifact;
|
|
11
|
+
7. **CHECKPOINT: Source-First Protocol (mandatory).** Run [source-first-protocol](source-first-protocol.md): search public sources, open demos and code/registry, check revision, license, and dependencies. Log evidence and failures in the research artifact; judge each verified candidate with [mining-rubric](mining-rubric.md) and show the selected one per need, with at most two runners-up and their verdicts.
|
|
12
12
|
8. **CHECKPOINT: Choose sources.** Recommend the appropriate combination. With direction and implementation already authorized, proceed; only ask if a material decision is missing.
|
|
13
13
|
9. Recommend components and animations (already curated in the previous checkpoints).
|
|
14
14
|
10. Write copy and structure.
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Mining rubric: entry conditions, score, verdict, stop and adaptation
|
|
2
|
+
|
|
3
|
+
Shared by `wizz-premium-landing-ui-researcher` and `wizz-ui-component-curator`. Read it before judging the first candidate of a need. It turns "this looks good" into a verdict that the next session, the implementer and QA can read back from `design-state.yaml`.
|
|
4
|
+
|
|
5
|
+
The discipline is ported from the offer miner (`wizz-lowticket-minerador`): conditions checked before any score, a 0-10 score with a cut at 6, an enumerated verdict, a stop rule per need, observation kept apart from inference, and a fixed read order that rebuilds instead of copying.
|
|
6
|
+
|
|
7
|
+
Order of work for each candidate, always the same:
|
|
8
|
+
|
|
9
|
+
1. **Evidence gate** ([web-access-and-evidence](web-access-and-evidence.md)). Missing any of the five fields = `evidence: unverified`. Unverified is not scored and never selected; it can be verified later.
|
|
10
|
+
2. **Dedup.** Its `pattern_key` is already `selected` in the project → `status: rejected`, `dup_of: <that discovery>`. Not scored.
|
|
11
|
+
3. **Entry conditions.** One unmet = `verdict: DESCARTAR` with the code in `disqualifiers`. Not scored.
|
|
12
|
+
4. **Score** the five criteria, sum, read the verdict from the band.
|
|
13
|
+
5. **Select or keep searching**, by the selection and stop rules below.
|
|
14
|
+
6. **Adapt** the selected one with the five-step protocol.
|
|
15
|
+
|
|
16
|
+
## Entry conditions
|
|
17
|
+
|
|
18
|
+
Each one is a condition of use, not a ban: the line says what makes the candidate eligible. A candidate that does not meet a condition is recorded with the code and the reason, so the next round does not open it again.
|
|
19
|
+
|
|
20
|
+
| Code | The candidate is eligible when | Unmet means |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| `licenca` | a code source (`kind: code` or `registry`) has a license that allows use in this project | no license or an incompatible one. Reclassify it as `kind: visual` and it is scored as a pattern to rebuild, never as code to copy |
|
|
23
|
+
| `acesso_pago` | paid access is already authorized by the user | access or cost not confirmed (the user decides, it is a faixa C item) |
|
|
24
|
+
| `dependencia` | its dependencies fit the stack and the bundle budget of `design-state.stack` | it pulls a dependency outside the stack or above the budget, and the user has not approved going over |
|
|
25
|
+
| `reduced_motion` | it honours `prefers-reduced-motion`, or the adaptation plan writes that path | it ignores reduced motion and nobody wrote the alternative |
|
|
26
|
+
| `contraste` | its contrast passes AA once the project's tokens are applied | the effect itself breaks AA (text over moving image with no scrim, glow under body text) |
|
|
27
|
+
| `nivel` | the motion is allowed at the site level ([site-levels](site-levels.md)) | the level lists that motion as one to avoid |
|
|
28
|
+
| `proibido` | it does not land on a capability in the `proibidos` block | it does. A reference the user chose already moved its item out of `proibidos` (derivation rule 4.4 of `wizz-design-needs`), so it is eligible |
|
|
29
|
+
|
|
30
|
+
## Score
|
|
31
|
+
|
|
32
|
+
Five criteria, summed to 0-10. Score only what was observed in this session; a criterion that rests on an inference is scored from what was seen and the inference is written in `inferred`.
|
|
33
|
+
|
|
34
|
+
| Criterion | Range | Top of the range | Bottom of the range |
|
|
35
|
+
|---|---|---|---|
|
|
36
|
+
| `aderencia` | 0-3 | answers the need's `question` and fits the style DNA and brief signals as is | adjacent to the need, does not answer it |
|
|
37
|
+
| `execucao` | 0-2 | polished in the live demo: timing, states, resize, mobile | broken or janky. Inspected static only: at most 1 |
|
|
38
|
+
| `custo_adaptacao` | 0-2, inverted | token-level adaptation (colour, type, spacing) | most of it has to be rewritten |
|
|
39
|
+
| `custo_performance` | 0-2, inverted | no new dependency, no layout thrash | heavy runtime (WebGL, video, large library) for what it adds |
|
|
40
|
+
| `originalidade` | 0-1 | not the default look of the stack or the catalogue | reads as template |
|
|
41
|
+
|
|
42
|
+
Middle values: `aderencia` 2 = answers the question with visible restyling, 1 = answers part of it; `execucao` 1 = works with rough edges; `custo_adaptacao` 1 = markup or API changes; `custo_performance` 1 = a new dependency inside the budget, or a measurable runtime cost.
|
|
43
|
+
|
|
44
|
+
## Verdict
|
|
45
|
+
|
|
46
|
+
| Verdict | Score | Use |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| `ASSINATURA` | 9-10 | the piece that defines the surface. At most one selected per surface |
|
|
49
|
+
| `FORTE` | 7-8 | enters |
|
|
50
|
+
| `UTILITARIO` | 6 | enters only when the need has nothing better |
|
|
51
|
+
| `DESCARTAR` | 0-5, or an unmet entry condition | does not enter; the reason stays recorded |
|
|
52
|
+
|
|
53
|
+
The cut is 6. A need's `floor` can raise it for that need, never lower it: a 7 on a need with `floor: 8` stays `FORTE` and is not selected for that need.
|
|
54
|
+
|
|
55
|
+
The signature cap is what stops a page from becoming a collage of impressive effects. When a second candidate on the same surface scores 9 or 10, it is recorded as `FORTE` with `reason: "teto de assinatura"`.
|
|
56
|
+
|
|
57
|
+
## Selection
|
|
58
|
+
|
|
59
|
+
Per need, one discovery is selected: the highest-scoring verified, eligible candidate at or above the need's floor.
|
|
60
|
+
|
|
61
|
+
- **Faixa A, silent:** the first leads the second by 2 points or more and the need is not `signature: true`. Select and move on.
|
|
62
|
+
- **Faixa B, announced:** a tie within 1 point, or the signature piece of a surface. Select, then say which one won, the runner-up and why. The swap costs one edit to the state file.
|
|
63
|
+
- `UTILITARIO` is selected only when no `FORTE` or `ASSINATURA` is eligible for that need.
|
|
64
|
+
- Everything else on the need stays `proposed` or goes to `rejected` with a `reason`.
|
|
65
|
+
|
|
66
|
+
## Stop conditions
|
|
67
|
+
|
|
68
|
+
The miner stops on the first one that applies. Each stop writes the need's status and reason to the state file.
|
|
69
|
+
|
|
70
|
+
| Scope | Stops when | Need status |
|
|
71
|
+
|---|---|---|
|
|
72
|
+
| Need, early | an eligible candidate scores 9 or more | `selected` |
|
|
73
|
+
| Need, budget | the sources opened reach `budget.fontes` | `selected` if anything eligible, else `unmet` |
|
|
74
|
+
| Need, diminishing returns | 2 sources in a row with nothing eligible at or above the floor | `unmet`, with what was tried. A result, not a failure |
|
|
75
|
+
| Dedup | the need's question is already answered by a selected discovery on another surface | `dropped`, `reason: "resolvido por <need-id>"` |
|
|
76
|
+
| Surface | the selected behaviour discoveries reach the level's behaviour ceiling (derivation rule 3 of `wizz-design-needs`) | the rest `deferred` |
|
|
77
|
+
| Global | every need is `selected`, `unmet`, `dropped` or `deferred` | mining is over. This is "I have enough information" |
|
|
78
|
+
|
|
79
|
+
Count the spend on the need itself (`spent.fontes`, `spent.secas`) so a reopened need starts from what was already paid.
|
|
80
|
+
|
|
81
|
+
## Observation and inference
|
|
82
|
+
|
|
83
|
+
Every discovery keeps two lists. `observed`: what was actually seen in this session (a duration in the code, an import, the demo jank at 375 px). `inferred`: the reading of it ("probably uses GSAP ScrollTrigger"). A score rests on `observed`. An inference written as an observation is the failure mode this split exists to catch.
|
|
84
|
+
|
|
85
|
+
## Adaptation protocol
|
|
86
|
+
|
|
87
|
+
Fixed read order, the design twin of the offer miner's "Demanda → Hook → Promessa…":
|
|
88
|
+
|
|
89
|
+
**Pattern → Why it works → Invariant → Variable → Reimplementation**
|
|
90
|
+
|
|
91
|
+
- **Pattern** (`padrao`): what happens mechanically, in one sentence, with no brand name.
|
|
92
|
+
- **Why it works** (`por_que`): the perceptual or conversion reason. If it cannot be written, the discovery was not understood: it goes back to evaluation and is not selected.
|
|
93
|
+
- **Invariant** (`invariante`): what cannot change without breaking the effect.
|
|
94
|
+
- **Variable** (`variavel`): what is free (easing, duration, direction, colour, density).
|
|
95
|
+
- **Reimplementation** (`reimplementacao`): the plan in the project's tokens and vocabulary.
|
|
96
|
+
|
|
97
|
+
Closing rule, in the same spirit as the offer miner's: **a visual reference gives structure and principle, never CSS.** A code source with a license can be copied with attribution; a visual source is rebuilt.
|
|
98
|
+
|
|
99
|
+
## Machine-readable block
|
|
100
|
+
|
|
101
|
+
The eval (`evals/design-mining/`) and the state checker (`wizz-design-needs/scripts/design_state.py`) read the numbers from this block. Change a band here and both follow; nothing else holds a copy.
|
|
102
|
+
|
|
103
|
+
```yaml
|
|
104
|
+
# mining-rubric:v1
|
|
105
|
+
cut: 6
|
|
106
|
+
criteria:
|
|
107
|
+
aderencia: [0, 3]
|
|
108
|
+
execucao: [0, 2]
|
|
109
|
+
custo_adaptacao: [0, 2]
|
|
110
|
+
custo_performance: [0, 2]
|
|
111
|
+
originalidade: [0, 1]
|
|
112
|
+
verdicts:
|
|
113
|
+
- { id: ASSINATURA, min: 9, max: 10 }
|
|
114
|
+
- { id: FORTE, min: 7, max: 8 }
|
|
115
|
+
- { id: UTILITARIO, min: 6, max: 6 }
|
|
116
|
+
- { id: DESCARTAR, min: 0, max: 5 }
|
|
117
|
+
disqualifiers: [licenca, acesso_pago, dependencia, reduced_motion, contraste, nivel, proibido]
|
|
118
|
+
signature_per_surface: 1
|
|
119
|
+
signature_cap_reason: "teto de assinatura"
|
|
120
|
+
faixa_a_lead: 2
|
|
121
|
+
early_stop_score: 9
|
|
122
|
+
dry_sources_to_unmet: 2
|
|
123
|
+
```
|
package/src/skills-lib/wizz-premium-landing-ui-researcher/references/source-first-protocol.md
CHANGED
|
@@ -12,7 +12,7 @@ Log the real paths of the resources found. If there are no local models, proceed
|
|
|
12
12
|
|
|
13
13
|
## Phase 2: Search and inspect public sources
|
|
14
14
|
|
|
15
|
-
Choose sources
|
|
15
|
+
Choose sources by querying the catalogue as data instead of reading the whole prose: `uv run --no-cache scripts/design_sources.py list --need <tag>` (run from this skill's folder; tags such as `hover`, `scroll`, `card`, `dashboard`, `chart`, `shader`, `typography`) returns the matching sources from [design-sources.yaml](design-sources.yaml) with kind, access, license and `study_only`. Without `uv`, read the YAML directly. [component-sources](component-sources.md) keeps the policy and nuance (clone, paid, visual inspiration) and [source-links](source-links.md) the links; open them when a source needs that detail. The quick map, for orientation:
|
|
16
16
|
|
|
17
17
|
| Need | Initial sources |
|
|
18
18
|
|---|---|
|
|
@@ -50,7 +50,7 @@ Most sources are shadcn registries. Read them live instead of cloning:
|
|
|
50
50
|
2. **Read the item.** Replace `{name}` in the URL template and fetch the JSON: it carries the files, dependencies and registry dependencies, which is the evidence the gate asks for. When the shadcn MCP is configured (`npx shadcn@latest mcp init`), it does the same lookup for you.
|
|
51
51
|
3. **Repos outside the index** (and offline work) use the local cache.
|
|
52
52
|
|
|
53
|
-
An existing design cache (for example `~/.claude/design-sources/`) can be inspected. Don't treat it as up to date just because it exists:
|
|
53
|
+
An existing design cache (for example `~/.claude/design-sources/`) can be inspected. Don't treat it as up to date just because it exists. One command answers it: `uv run --no-cache scripts/design_sources.py freshness` gives each cached clone's revision, last sync and `stale` past 30 days (`--remote` also compares with origin). A stale cache is still a source for a pattern, never for an API. `design_sources.py refresh` fast-forwards only the clones with no local changes and reports the rest; run it when the user agrees to update. The rules below still hold:
|
|
54
54
|
|
|
55
55
|
- Check origin, branch, revision, and local changes before updating.
|
|
56
56
|
- Check the remote revision when there's network access; the folder's modification date is not proof of being up to date.
|
|
@@ -70,10 +70,16 @@ Log in the existing design artifact (or create `design-research.md` in the proje
|
|
|
70
70
|
|
|
71
71
|
Also include searches with no results and unavailable sources. Never fill in component names, paths, license, or test results by assumption. A row missing any of the five fields in [web-access-and-evidence](web-access-and-evidence.md) is UNVERIFIED and cannot be the recommendation.
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
Judge every verified candidate with [mining-rubric](mining-rubric.md): dedup, entry conditions, the 0-10 score with the cut at 6, the verdict, and the selection rule. With a `design-state.yaml`, each candidate is written as a discovery with its need id, scores, verdict and status; the table above is the human-readable view of the same rows.
|
|
74
|
+
|
|
75
|
+
Show the selected candidate per need and at most two runners-up, each with its verdict and score. If the user has already authorized the implementation and defined the direction, the selection rule decides and you proceed. Only ask when a material decision about direction, paid access, or scope change is missing.
|
|
74
76
|
|
|
75
77
|
## Phase 5: Adapt and verify
|
|
76
78
|
|
|
77
|
-
|
|
79
|
+
Write the adaptation in the five-step order of [mining-rubric](mining-rubric.md) (pattern, why it works, invariant, variable, reimplementation) before touching code. Then adapt tokens, typography, spacing, content, and motion to the project. Verify responsiveness, keyboard navigation, focus, contrast, reduced-motion, and rendering cost as appropriate for the component. Link the result back to the logged sources.
|
|
78
80
|
|
|
79
81
|
Building from scratch is acceptable for trivial primitives or when the documented research finds no compatible option and the implementation is authorized. Explain the reason. Don't claim something doesn't exist in any catalog; only report the sources actually researched.
|
|
82
|
+
|
|
83
|
+
## Phase 6: Stop
|
|
84
|
+
|
|
85
|
+
Mining stops by rule, not by patience. Per need: an eligible candidate at 9 or more, the source budget spent, or 2 sources in a row with nothing eligible (`unmet`, with what was tried). Per surface: the level's behaviour ceiling. Globally: every need in a terminal status. The table and the status each stop writes are in [mining-rubric](mining-rubric.md). Report which stop closed each need.
|
package/src/skills-lib/wizz-premium-landing-ui-researcher/references/web-access-and-evidence.md
CHANGED
|
@@ -36,6 +36,6 @@ Every candidate needs all five, collected in this session:
|
|
|
36
36
|
| Dependencies | Read from the actual imports or registry JSON | Guessed from the component's name |
|
|
37
37
|
| Source read | The code file was opened and its imports checked | The demo alone |
|
|
38
38
|
|
|
39
|
-
A candidate missing any field is **UNVERIFIED**. UNVERIFIED items go in a separate section of the report, with what is missing and why. They are never recommended and never
|
|
39
|
+
A candidate missing any field is **UNVERIFIED**. UNVERIFIED items go in a separate section of the report, with what is missing and why. They are never recommended and never scored or selected by the [mining-rubric](mining-rubric.md), and the implementation plan never depends on them. If every candidate for a need is UNVERIFIED, the need is reported as `unmet`, not filled.
|
|
40
40
|
|
|
41
41
|
Before closing, check the delivery against this gate once: every recommended item has its five fields in the research log (`design-research.md` or the project's design artifact), and the access line from Step 0 is in the report.
|