@hanzlaa/rcode 2.8.0 → 3.2.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.
Files changed (122) hide show
  1. package/AGENTS.md +11 -1
  2. package/CONTRIBUTING.md +7 -0
  3. package/README.md +39 -20
  4. package/cli/install.js +145 -47
  5. package/dist/rcode.js +134 -43
  6. package/package.json +2 -2
  7. package/rihal/agents/rihal-advisor-researcher.md +1 -1
  8. package/rihal/agents/rihal-assumptions-analyzer.md +1 -1
  9. package/rihal/agents/rihal-codebase-mapper.md +1 -1
  10. package/rihal/agents/rihal-docs-auditor.md +3 -3
  11. package/rihal/agents/rihal-executor.md +10 -0
  12. package/rihal/agents/rihal-integration-checker.md +1 -1
  13. package/rihal/agents/rihal-noor.md +2 -2
  14. package/rihal/agents/rihal-phase-researcher.md +1 -1
  15. package/rihal/agents/rihal-planner.md +25 -0
  16. package/rihal/agents/rihal-project-researcher.md +1 -1
  17. package/rihal/agents/rihal-research-synthesizer.md +1 -1
  18. package/rihal/agents/rihal-roadmapper.md +1 -1
  19. package/rihal/agents/rihal-sprint-checker.md +19 -1
  20. package/rihal/agents/rihal-verifier.md +1 -1
  21. package/rihal/agents/rihal-waleed.md +1 -2
  22. package/rihal/commands/code-review.md +1 -1
  23. package/rihal/commands/memory-audit.md +10 -0
  24. package/rihal/commands/memory-distill.md +11 -0
  25. package/rihal/commands/memory-init.md +12 -0
  26. package/rihal/commands/memory-update.md +12 -0
  27. package/rihal/config/model-profiles.json +5 -5
  28. package/rihal/references/karpathy-guidelines-full.md +1 -1
  29. package/rihal/references/no-unauthorized-git-ops.md +1 -1
  30. package/rihal/references/verb-dictionary.md +1 -1
  31. package/rihal/skills/actions/2-plan/rihal-frontend-design/SKILL.md +49 -139
  32. package/rihal/skills/actions/2-plan/rihal-frontend-design/references.md +79 -0
  33. package/rihal/skills/actions/4-implementation/rihal-browser-verify/SKILL.md +70 -0
  34. package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/SKILL.md +1 -1
  35. package/rihal/skills/actions/4-implementation/rihal-ci/SKILL.md +108 -0
  36. package/rihal/skills/actions/4-implementation/rihal-debug/SKILL.md +78 -0
  37. package/rihal/skills/actions/4-implementation/rihal-git-flow/SKILL.md +90 -0
  38. package/rihal/skills/actions/4-implementation/rihal-harden/SKILL.md +91 -0
  39. package/rihal/skills/actions/4-implementation/rihal-incremental/SKILL.md +50 -0
  40. package/rihal/skills/actions/4-implementation/rihal-migrate/SKILL.md +86 -0
  41. package/rihal/skills/actions/4-implementation/rihal-perf/SKILL.md +96 -0
  42. package/rihal/skills/actions/4-implementation/rihal-prove-it/SKILL.md +64 -0
  43. package/rihal/skills/actions/4-implementation/rihal-source-truth/SKILL.md +76 -0
  44. package/rihal/skills/actions/4-implementation/rihal-trim/SKILL.md +73 -0
  45. package/rihal/skills/agents/dalil-scout/SKILL.md +43 -125
  46. package/rihal/skills/agents/dalil-scout/references.md +67 -0
  47. package/rihal/skills/agents/majlis-council/SKILL.md +50 -144
  48. package/rihal/skills/agents/majlis-council/references.md +90 -0
  49. package/rihal/skills/agents/raees-orchestrator/SKILL.md +56 -117
  50. package/rihal/skills/agents/raees-orchestrator/references.md +47 -0
  51. package/rihal/skills/core/rihal-advanced-elicitation/SKILL.md +36 -136
  52. package/rihal/skills/core/rihal-advanced-elicitation/references.md +101 -0
  53. package/rihal/skills/core/rihal-auth-audit/SKILL.md +93 -0
  54. package/rihal/skills/core/rihal-brainstorming/SKILL.md +5 -0
  55. package/rihal/skills/core/rihal-client-gate/SKILL.md +91 -0
  56. package/rihal/skills/core/rihal-clone-website/SKILL.md +30 -371
  57. package/rihal/skills/core/rihal-clone-website/references.md +213 -0
  58. package/rihal/skills/core/rihal-deploy-unify/SKILL.md +87 -0
  59. package/rihal/skills/core/rihal-distillator/SKILL.md +37 -187
  60. package/rihal/skills/core/rihal-distillator/references.md +118 -0
  61. package/rihal/skills/core/rihal-editorial-review-prose/SKILL.md +5 -0
  62. package/rihal/skills/core/rihal-editorial-review-structure/SKILL.md +45 -183
  63. package/rihal/skills/core/rihal-editorial-review-structure/references.md +110 -0
  64. package/rihal/skills/core/rihal-help/SKILL.md +6 -1
  65. package/rihal/skills/core/rihal-incident-record/SKILL.md +161 -0
  66. package/rihal/skills/core/rihal-index-docs/SKILL.md +5 -0
  67. package/rihal/skills/core/rihal-init/SKILL.md +5 -0
  68. package/rihal/skills/core/rihal-memory-audit/SKILL.md +88 -0
  69. package/rihal/skills/core/rihal-memory-distill/SKILL.md +87 -0
  70. package/rihal/skills/core/rihal-memory-init/SKILL.md +77 -0
  71. package/rihal/skills/core/rihal-memory-update/SKILL.md +73 -0
  72. package/rihal/skills/core/rihal-mvp-graduate/SKILL.md +116 -0
  73. package/rihal/skills/core/rihal-ocr-consistency/SKILL.md +106 -0
  74. package/rihal/skills/core/rihal-party-mode/SKILL.md +5 -0
  75. package/rihal/skills/core/rihal-rebrand/SKILL.md +133 -0
  76. package/rihal/skills/core/rihal-review-adversarial-general/SKILL.md +5 -0
  77. package/rihal/skills/core/rihal-review-edge-case-hunter/SKILL.md +5 -0
  78. package/rihal/skills/core/rihal-shard-doc/SKILL.md +5 -0
  79. package/rihal/skills/core/rihal-theme-system/SKILL.md +113 -0
  80. package/rihal/team.yaml +3 -22
  81. package/rihal/templates/memory/INDEX.md +46 -0
  82. package/rihal/templates/memory/change-records/.gitkeep +4 -0
  83. package/rihal/templates/memory/distillates/project.distillate.md +11 -0
  84. package/rihal/templates/memory/distillates/stack.distillate.md +11 -0
  85. package/rihal/templates/memory/incidents/known-issues.md +27 -0
  86. package/rihal/templates/memory/incidents/post-mortems/.gitkeep +3 -0
  87. package/rihal/templates/memory/milestones/archive/.gitkeep +2 -0
  88. package/rihal/templates/memory/milestones/current.md +39 -0
  89. package/rihal/templates/memory/people/stakeholders.md +25 -0
  90. package/rihal/templates/memory/people/team.md +35 -0
  91. package/rihal/templates/memory/project/decisions.md +32 -0
  92. package/rihal/templates/memory/project/glossary.md +16 -0
  93. package/rihal/templates/memory/project/stack.md +46 -0
  94. package/rihal/workflows/audit.md +3 -3
  95. package/rihal/workflows/code-review.md +32 -1
  96. package/rihal/workflows/council.md +1 -1
  97. package/rihal/workflows/discuss-phase-power.md +3 -3
  98. package/rihal/workflows/do.md +1 -1
  99. package/rihal/workflows/docs-update.md +4 -4
  100. package/rihal/workflows/execute.md +61 -5
  101. package/rihal/workflows/help.md +5 -5
  102. package/rihal/workflows/karpathy-audit.md +9 -9
  103. package/rihal/workflows/memory-audit.md +83 -0
  104. package/rihal/workflows/memory-distill.md +103 -0
  105. package/rihal/workflows/memory-init.md +102 -0
  106. package/rihal/workflows/memory-update.md +83 -0
  107. package/rihal/workflows/plan.md +66 -1
  108. package/server/dashboard.js +6 -1
  109. package/server/lib/api.js +8 -2
  110. package/server/lib/html/client.js +63 -0
  111. package/server/lib/html/shell.js +5 -0
  112. package/server/lib/scanner.js +76 -1
  113. package/rihal/agents/rihal-architect.md +0 -79
  114. package/rihal/agents/rihal-tech-writer.md +0 -80
  115. package/rihal/commands/check-implementation-readiness.md +0 -8
  116. package/rihal/commands/discuss-phase-power.md +0 -11
  117. package/rihal/commands/karpathy-audit.md +0 -12
  118. package/rihal/commands/new-project-research.md +0 -11
  119. package/rihal/commands/new-project-roadmap.md +0 -11
  120. package/rihal/commands/report.md +0 -10
  121. package/rihal/commands/review-adversarial.md +0 -8
  122. package/rihal/commands/review-edge-case-hunter.md +0 -8
@@ -1,19 +1,16 @@
1
1
  ---
2
2
  name: rihal-frontend-design
3
3
  description: >
4
- Create distinctive, production-grade frontend interfaces with a
5
- committed aesthetic direction — typography, color, motion, spatial
6
- composition, backgrounds, and visual details that avoid generic
7
- "AI slop" look. Activates when the user says "design this UI",
8
- "build a beautiful frontend", "distinctive design", "creative UI",
9
- "unforgettable interface", "award-winning design", "not generic",
10
- "bold aesthetic", "brutalist", "editorial", "maximalist",
11
- "minimalist luxury", "design a landing page", "standout hero
12
- section", "make this look amazing", or "frontend design". Works
13
- hand-in-hand with rihal-clone-website (for copying existing sites)
14
- and rihal-agent-zahra (branding expert) for brand alignment. Do
15
- NOT use for: cloning existing sites (use rihal-clone-website
16
- instead), pure backend work, or documentation.
4
+ Create distinctive, production-grade frontend interfaces with a committed
5
+ aesthetic direction — typography, colour, motion, spatial composition,
6
+ backgrounds, visual details that avoid generic "AI slop". Activates when
7
+ the user says "design this UI", "build a beautiful frontend", "distinctive
8
+ design", "creative UI", "unforgettable interface", "award-winning design",
9
+ "not generic", "bold aesthetic", "brutalist", "editorial", "maximalist",
10
+ "minimalist luxury", "design a landing page", "standout hero section",
11
+ "make this look amazing", or "frontend design". Pairs with rihal-clone-website
12
+ (for copying) and rihal-agent-zahra (branding). Do NOT use for: cloning
13
+ existing sites (use rihal-clone-website), pure backend, or documentation.
17
14
  triggers:
18
15
  - "AI slop"
19
16
  - "design this UI"
@@ -30,153 +27,66 @@ triggers:
30
27
  license: Adapted from Anthropic's frontend-design skill
31
28
  ---
32
29
 
33
- # Rihal Frontend Design
34
-
35
30
  ## Overview
36
31
 
37
- This skill guides the creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. It implements real working code with exceptional attention to aesthetic details and creative choices. The aim is interfaces that someone will actually remember.
38
-
39
- This is different from `rihal-clone-website`, which replicates an existing site pixel-for-pixel. This skill creates *original* design. It pairs naturally with Zahra (rihal-agent-zahra), Rihal's branding expert, who owns brand identity and ensures new UIs stay on-brand.
40
-
41
- ## Design Thinking
42
-
43
- Before writing any code, understand the context and commit to a BOLD aesthetic direction:
44
-
45
- - **Purpose:** What problem does this interface solve? Who uses it?
46
- - **Tone:** Pick an extreme — brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian, Omani-modern (deserts, turquoise, gold, geometric Islamic patterns). These are inspiration — design one that is true to the intended direction.
47
- - **Constraints:** Technical requirements (framework, performance, accessibility, Arabic RTL support for Rihal work).
48
- - **Differentiation:** What makes this UNFORGETTABLE? What's the one thing someone will remember?
49
-
50
- **CRITICAL:** Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work — the key is intentionality, not intensity.
51
-
52
- Then implement working code (HTML/CSS/JS, React, Vue, Next.js App Router) that is:
53
- - Production-grade and functional
54
- - Visually striking and memorable
55
- - Cohesive with a clear aesthetic point-of-view
56
- - Meticulously refined in every detail
57
- - **Bilingual-ready for Rihal work:** Arabic RTL from the start, not an afterthought
58
-
59
- ## Frontend Aesthetics Guidelines
60
-
61
- ### Typography
62
- Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt for distinctive, characterful choices that elevate the frontend's aesthetics. Pair a distinctive display font with a refined body font.
63
-
64
- For Rihal/Omani work, consider Arabic-Latin font pairs that work together:
65
- - Latin: PP Neue Montreal, IBM Plex, Söhne, Editorial New, GT Sectra, Tiempos, Recoleta
66
- - Arabic: IBM Plex Arabic, Adelle Sans Arabic, Readex Pro, Tajawal, Cairo, El Messiri, Noto Naskh Arabic
67
-
68
- ### Color & Theme
69
- Commit to a cohesive aesthetic. Use CSS variables for consistency. Dominant colors with sharp accents outperform timid, evenly-distributed palettes.
70
-
71
- Rihal's official palette (when branding alignment matters): Rihal blue `#1e3a8a`, gold `#f59e0b`. For original work, use these as optional anchors but don't force them.
32
+ Builds **original** frontend interfaces with a committed aesthetic direction. Goal: interfaces someone actually remembers. Different from `rihal-clone-website` (which replicates existing sites pixel-for-pixel). Pairs with `rihal-agent-zahra` for brand alignment. Detailed aesthetic guidelines, type pair recommendations, "what to avoid" list, and Rihal-specific RTL guidance live in [`references.md`](references.md).
72
33
 
73
- ### Motion
74
- Use animations for effects and micro-interactions. Prioritize CSS-only solutions for HTML; use Motion library for React when available. Focus on high-impact moments: **one well-orchestrated page load with staggered reveals** (animation-delay) creates more delight than scattered micro-interactions. Use scroll-triggering and hover states that surprise.
34
+ ## Design Thinking — commit before coding
75
35
 
76
- ### Spatial Composition
77
- Unexpected layouts. Asymmetry. Overlap. Diagonal flow. Grid-breaking elements. Generous negative space OR controlled density — pick your philosophy.
36
+ Before writing any code, lock these:
78
37
 
79
- ### Backgrounds & Visual Details
80
- Create atmosphere and depth rather than defaulting to solid colors. Add contextual effects and textures that match the overall aesthetic: gradient meshes, noise textures, geometric patterns (Islamic geometric art fits well for Omani work), layered transparencies, dramatic shadows, decorative borders, custom cursors, grain overlays.
38
+ - **Purpose** what problem does this UI solve? Who uses it?
39
+ - **Tone** pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic, luxury-refined, playful, editorial, brutalist, art-deco, soft pastel, industrial, Omani-modern. **Bold maximalism and refined minimalism both work the key is intentionality, not intensity.**
40
+ - **Constraints** — framework, performance, accessibility, Arabic RTL support.
41
+ - **Differentiation** — what's the one thing someone will remember?
81
42
 
82
- ## What To Avoid
83
-
84
- **NEVER use generic AI-generated aesthetics:**
85
- - Overused font families: Inter, Roboto, Arial, system fonts, Space Grotesk (extremely overused — never use it as default)
86
- - Clichéd color schemes: purple gradients on white backgrounds, "AI blue" default themes
87
- - Predictable layouts: hero + three-column features + CTA
88
- - Cookie-cutter Tailwind defaults without customization
89
- - Cookie-cutter shadcn/ui without restyling
90
- - Centered stacks with identical spacing
91
- - Emoji as primary visual element
92
-
93
- **Interpret creatively.** Make unexpected choices that feel genuinely designed for the context. No two designs should be the same. Vary between light and dark themes, different fonts, different aesthetics. **NEVER converge on common choices across generations.**
94
-
95
- ## Implementation Philosophy
96
-
97
- **IMPORTANT:** Match implementation complexity to the aesthetic vision:
98
- - Maximalist designs need elaborate code with extensive animations and effects
99
- - Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details
100
- - Elegance comes from executing the vision well, not from decorating a weak idea
101
-
102
- Claude is capable of extraordinary creative work. Don't hold back — show what can truly be created when thinking outside the box and committing fully to a distinctive vision.
103
-
104
- ## Rihal-Specific Guidelines
105
-
106
- When designing for Rihal work (government clients, enterprise dashboards, Arabic audiences):
107
-
108
- 1. **RTL is foundational, not retrofitted.** Use logical CSS properties (`padding-inline-start` not `padding-left`) from day one.
109
- 2. **Arabic typography needs different scale.** Arabic glyphs are visually denser; bump line-height +10%, let letter-spacing breathe.
110
- 3. **Cultural context.** Islamic geometric patterns, Omani colors (desert sand, turquoise, gold, deep blue), bilingual parity — not token gestures.
111
- 4. **Government dashboards** favor authoritative restraint over playful chaos. Enterprise dashboards can be more confident.
112
- 5. **Never compromise on accessibility** for aesthetic impact. WCAG AA minimum, AAA where feasible.
43
+ Then implement code that is production-grade, visually striking, cohesive, refined in detail, and bilingual-ready (RTL from day one for Rihal work).
113
44
 
114
45
  ## Workflow
115
46
 
116
- 1. **Understand context** — ask about purpose, audience, technical constraints, brand alignment
117
- 2. **Commit to a direction** — state the aesthetic in one sentence before writing code
118
- 3. **Check brand alignment** — if Rihal branding matters, invoke Zahra (rihal-agent-zahra) for brand tokens
119
- 4. **Select type pair** — display font + body font, with Arabic companion if bilingual
120
- 5. **Define color system** — dominant + accents, not a rainbow
121
- 6. **Design motion choreography** — what animates when, what's the hero moment
122
- 7. **Implement with precision** — every detail refined, every pixel intentional
123
- 8. **Verify at all viewports** — desktop, tablet, mobile, RTL version
124
- 9. **Stress-test with content** — long names, empty states, error states, loading states
47
+ 1. **Understand context** — ask about purpose, audience, constraints, brand alignment.
48
+ 2. **Commit to a direction** — state the aesthetic in one sentence before writing code.
49
+ 3. **Check brand alignment** — if Rihal branding matters, invoke Zahra (`rihal-agent-zahra`) for brand tokens.
50
+ 4. **Select type pair** — display + body, with Arabic companion if bilingual.
51
+ 5. **Define colour system** — dominant + accents, not a rainbow.
52
+ 6. **Design motion choreography** — what animates when, what's the hero moment.
53
+ 7. **Implement with precision** — every detail refined, every pixel intentional.
54
+ 8. **Verify at all viewports** — desktop, tablet, mobile, RTL.
55
+ 9. **Stress-test content** — long names, empty states, error states, loading states.
125
56
 
126
57
  ## Output Format
127
58
 
128
- - Response: Markdown explanation + fenced code blocks (language-tagged)
59
+ - Markdown explanation + fenced code blocks (language-tagged)
129
60
  - Start with a one-sentence aesthetic statement before any code
130
- - Show the complete file, not fragments
131
- - For React/Next.js: Server Components by default, Client Components only when needed
132
- - For Tailwind: use custom config extensions, not raw class spam
133
- - For CSS: use CSS variables for tokens
134
- - Do NOT include: Inter as the default font, generic purple/blue gradients, centered cookie-cutter layouts, or undifferentiated "looks fine" designs
135
- - Do NOT default to shadcn/ui without visible customization
136
- - Do NOT ship designs without specified type pair, color system, and motion direction
137
-
138
- ## Examples
139
-
140
- ### Happy Path: Original Landing Page
141
- **Input:** "Design a landing page for an Omani heritage tourism startup"
61
+ - Show complete files, not fragments
62
+ - React / Next.js: Server Components by default, Client Components only when needed
63
+ - Tailwind: custom config extensions, not raw class spam
64
+ - CSS: variables for tokens
142
65
 
143
- **Expected behavior:**
144
- 1. State aesthetic: "Editorial-magazine tone with Islamic geometric motifs, warm desert palette, slow cinematic type reveals"
145
- 2. Type pair: GT Sectra Display (Latin headline) + Tajawal (Arabic + Latin body)
146
- 3. Color system: `#2C1810` (deep bronze), `#D4A574` (desert sand), `#0F3B3C` (turquoise oasis), `#F5EFE0` (parchment)
147
- 4. Motion: hero h1 staggered per-word with ease-out, subtle parallax on geometric patterns
148
- 5. Spatial: asymmetric grid, large editorial photography, generous margin-inline
149
- 6. Arabic RTL version with mirrored layout and Arabic-aware line-height
150
- 7. Complete working code (Next.js page + Tailwind config extension + CSS vars)
66
+ Do NOT include: Inter or Space Grotesk as default fonts, generic purple/blue gradients, centred cookie-cutter layouts, "looks fine" designs, undifferentiated shadcn/ui. Do NOT ship without a specified type pair, colour system, and motion direction.
151
67
 
152
- ### Happy Path: Dashboard
153
- **Input:** "Design a Ministry of Energy analytics dashboard"
68
+ ## Examples
154
69
 
155
- **Expected behavior:**
156
- 1. Aesthetic: "Authoritative Omani-modern deep navy authority, desert gold accents, IBM Plex for gravitas, zero playfulness"
157
- 2. Type: IBM Plex Sans (Latin) + IBM Plex Arabic
158
- 3. Color: Deep navy `#0B1A3A`, gold `#C8A05C`, neutral `#E8EAED`, danger `#B91C1C`
159
- 4. Motion: Restrained — data appears on load with subtle fade, no decorative animations
160
- 5. Spatial: dense grid, aligned tabular data, clear hierarchy
161
- 6. Arabic RTL dashboard mirrored with Arabic numerals optional
162
- 7. Accessibility: AAA contrast, keyboard navigation, screen reader labels
70
+ **Happy path — original landing**
71
+ "Design a landing page for an Omani heritage tourism startup" → aesthetic: "editorial-magazine with Islamic geometric motifs, warm desert palette, slow cinematic type reveals" type pair GT Sectra Display + Tajawal → colours `#2C1810 / #D4A574 / #0F3B3C / #F5EFE0` → hero h1 staggered per-word → asymmetric grid → Arabic RTL mirrored → complete Next.js + Tailwind code.
163
72
 
164
- ### Edge Case: Brand Conflict
165
- **Input:** "Build a playful colorful landing for a Rihal government client"
73
+ **Happy path dashboard**
74
+ "Ministry of Energy analytics dashboard" "authoritative Omani-modern, deep navy + desert gold, IBM Plex for gravitas, zero playfulness" → IBM Plex Sans + Arabic → restrained motion → dense grid → AAA contrast + keyboard navigation.
166
75
 
167
- **Expected behavior:** Flag the conflict. Respond: "Government clients expect authoritative restraint. 'Playful colorful' doesn't fit the Ministry audience. Options: (1) playful brand for a different audience, (2) confident editorial tone that's warmer without being childish. Which? I can invoke Zahra (rihal-agent-zahra) to verify brand fit."
76
+ **Edge case brand conflict**
77
+ "Build a playful colourful landing for a Rihal government client" → flag the conflict. Government audiences expect restraint. Offer alternatives or invoke Zahra to verify brand fit.
168
78
 
169
- ### Edge Case: Generic Request
170
- **Input:** "Design a landing page, modern and clean"
79
+ **Edge case generic request**
80
+ "Design a landing page, modern and clean" — refuse. Ask the user to pick an extreme or describe a site they love.
171
81
 
172
- **Expected behavior:** Refuse generic. Ask: "'Modern and clean' is what everyone says and nothing memorable looks like. Pick an extreme: brutally minimal, editorial-magazine, luxury-refined, retro-futuristic, organic, brutalist. Or describe a site you love. Without a direction, I'd just build another forgettable landing page."
82
+ **Negative wrong skill**
83
+ "Clone https://linear.app" → cloning is `rihal-clone-website`'s job, redirect.
173
84
 
174
- ### Negative Test
175
- **Input:** "Clone https://linear.app"
85
+ ## Memory Bank Hooks
176
86
 
177
- **Expected behavior:** Stay silent. This is cloning, not original design. Redirect: "Cloning is `rihal-clone-website`'s job. I create original designs; cloning extracts existing ones."
87
+ - **Reads:** `.rihal/memory/project/stack.md` (frontend framework), brand tokens from Zahra if available
88
+ - **Writes:** the implemented frontend files; consider noting design system choices in `.rihal/memory/project/decisions.md`
178
89
 
179
- ### Negative Test 2
180
- **Input:** "Write the API for this feature"
90
+ ## Detailed reference
181
91
 
182
- **Expected behavior:** Stay silent. Redirect: "Backend APIs belong to Yousef (rihal-agent-yousef). I do frontend design, not API contracts."
92
+ See [`references.md`](references.md) for: typography pairings (Latin + Arabic), colour philosophy, motion principles, spatial composition rules, the "what to avoid" list, and Rihal-specific RTL + government-client guidelines.
@@ -0,0 +1,79 @@
1
+ # Frontend Design — Detailed Reference
2
+
3
+ Detailed aesthetic guidelines for [`SKILL.md`](SKILL.md).
4
+
5
+ ---
6
+
7
+ ## Typography
8
+
9
+ Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt for distinctive, characterful choices that elevate the frontend's aesthetics. Pair a distinctive display font with a refined body font.
10
+
11
+ For Rihal / Omani work, consider Latin + Arabic pairs that work together:
12
+
13
+ **Latin display & body:** PP Neue Montreal, IBM Plex, Söhne, Editorial New, GT Sectra, Tiempos, Recoleta.
14
+ **Arabic companions:** IBM Plex Arabic, Adelle Sans Arabic, Readex Pro, Tajawal, Cairo, El Messiri, Noto Naskh Arabic.
15
+
16
+ ---
17
+
18
+ ## Colour & theme
19
+
20
+ Commit to a cohesive aesthetic. Use CSS variables for consistency. Dominant colours with sharp accents outperform timid, evenly-distributed palettes.
21
+
22
+ Rihal's official palette (when brand alignment matters): Rihal blue `#1e3a8a`, gold `#f59e0b`. For original work, use these as optional anchors — don't force them.
23
+
24
+ ---
25
+
26
+ ## Motion
27
+
28
+ Use animation for effects and micro-interactions. Prioritise CSS-only solutions for HTML; use Motion library for React when available. Focus on high-impact moments: **one well-orchestrated page load with staggered reveals (`animation-delay`) creates more delight than scattered micro-interactions.** Use scroll-triggering and hover states that surprise.
29
+
30
+ ---
31
+
32
+ ## Spatial composition
33
+
34
+ Unexpected layouts. Asymmetry. Overlap. Diagonal flow. Grid-breaking elements. Generous negative space OR controlled density — pick a philosophy and execute it.
35
+
36
+ ---
37
+
38
+ ## Backgrounds & visual details
39
+
40
+ Create atmosphere and depth instead of defaulting to solid colours. Add contextual effects and textures that match the aesthetic: gradient meshes, noise textures, geometric patterns (Islamic geometric art fits well for Omani work), layered transparencies, dramatic shadows, decorative borders, custom cursors, grain overlays.
41
+
42
+ ---
43
+
44
+ ## What to avoid
45
+
46
+ Never use generic AI-generated aesthetics:
47
+
48
+ - Overused fonts: Inter, Roboto, Arial, system fonts. **Space Grotesk is extremely overused — never use as default.**
49
+ - Clichéd colour schemes: purple gradients on white, "AI blue" defaults.
50
+ - Predictable layouts: hero + three-column features + CTA.
51
+ - Cookie-cutter Tailwind defaults without customisation.
52
+ - Cookie-cutter shadcn/ui without restyling.
53
+ - Centred stacks with identical spacing.
54
+ - Emoji as primary visual element.
55
+
56
+ **Interpret creatively.** Make unexpected choices that feel genuinely designed for the context. No two designs should be the same. Vary between light and dark, fonts, aesthetics. **Never converge on common choices across generations.**
57
+
58
+ ---
59
+
60
+ ## Implementation philosophy
61
+
62
+ Match implementation complexity to the aesthetic vision:
63
+ - Maximalist designs need elaborate code with extensive animations and effects.
64
+ - Minimalist or refined designs need restraint, precision, careful attention to spacing, typography, subtle details.
65
+ - Elegance comes from executing the vision well, not from decorating a weak idea.
66
+
67
+ Don't hold back — show what can be created when committing fully to a distinctive vision.
68
+
69
+ ---
70
+
71
+ ## Rihal-specific guidelines
72
+
73
+ When designing for Rihal (government clients, enterprise dashboards, Arabic audiences):
74
+
75
+ 1. **RTL is foundational, not retrofitted.** Use logical CSS properties (`padding-inline-start`, not `padding-left`) from day one.
76
+ 2. **Arabic typography needs different scale.** Arabic glyphs are visually denser; bump line-height +10%, let letter-spacing breathe.
77
+ 3. **Cultural context.** Islamic geometric patterns; Omani colours (desert sand, turquoise, gold, deep blue); bilingual parity — not token gestures.
78
+ 4. **Government dashboards** favour authoritative restraint over playful chaos. Enterprise dashboards can be more confident.
79
+ 5. **Never compromise accessibility** for aesthetic impact. WCAG AA minimum, AAA where feasible.
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: rihal-browser-verify
3
+ description: Use Chrome DevTools MCP to verify browser behaviour — DOM state, console errors, network requests, performance traces, screenshot diffs. Use when implementing or debugging any browser-runtime feature, especially Three.js scenes, scroll-driven UI, or frontend perf concerns. Closes the gap between "the build passes" and "the user actually sees what we intended".
4
+ triggers:
5
+ - "verify in browser"
6
+ - "check the dom"
7
+ - "browser test"
8
+ - "dev tools mcp"
9
+ - "screenshot diff"
10
+ - "console errors"
11
+ - "network trace"
12
+ - "browser smoke test"
13
+ user-invocable: true
14
+ ---
15
+
16
+ ## Overview
17
+
18
+ A passing build doesn't mean a working UI. This skill drives Chrome via the DevTools MCP server to inspect actual runtime: DOM nodes, console output, network requests, computed CSS, performance traces, and screenshots. Especially valuable for Three.js (where `getComputedStyle` lies and frame timing is the only truth), scroll-driven UI, and bisecting "works on dev, breaks on prod".
19
+
20
+ ## Pre-flight
21
+
22
+ Chrome DevTools MCP must be available. If not, halt with: *"DevTools MCP not configured. Enable it before running this skill — without browser inspection we'd be guessing from HTML."*
23
+
24
+ ## Workflow
25
+
26
+ 1. **Identify the surface to verify.** A specific URL, route, or component path.
27
+ 2. **Choose verification mode:**
28
+ - **Static** — DOM + computed CSS + screenshot (default; fast)
29
+ - **Dynamic** — record interactions; capture before/after states
30
+ - **Performance** — trace, FPS, paint flame chart (for Three.js, animations, smooth-scroll libs)
31
+ - **Network** — failed requests, slow waterfalls, missing resources
32
+ 3. **Boot the dev server** (or open the prod URL). Confirm it loads without console errors first.
33
+ 4. **Run the appropriate DevTools queries.** For DOM: `document.querySelector(...).getBoundingClientRect()` etc. For perf: start trace, exercise the surface, stop trace.
34
+ 5. **Diff against expectation.** Either a stored baseline screenshot or a verbal description from the user.
35
+ 6. **Report findings** with concrete evidence — pixel coordinates, console messages verbatim, network failures by URL, frame times in ms.
36
+
37
+ ## Output Format
38
+
39
+ ```
40
+ Surface verified: <URL or route>
41
+ Mode: <static | dynamic | performance | network>
42
+
43
+ Findings:
44
+ ✓ <thing that passed>
45
+ ⚠ <warning, with evidence>
46
+ ✗ <failure, with evidence>
47
+
48
+ Console output (filtered for errors/warnings):
49
+ <verbatim>
50
+
51
+ Recommendation:
52
+ <next action — fix, defer, or accept>
53
+ ```
54
+
55
+ Do NOT include: "looks fine to me" without inspection; subjective "the page seems slow" without a trace; fixes applied without re-verifying.
56
+
57
+ ## Examples
58
+
59
+ **Happy path — Three.js perf** — "Hero scene drops to 20fps on entry" → record perf trace → identify long task in `setupGeometry()` → recommend deferring `geometry.computeVertexNormals()` to a Web Worker → verify trace post-fix shows steady 60fps.
60
+
61
+ **Happy path — scroll-driven UI** — "Tabs switch on scroll but layout jumps" → static check shows `position: sticky` conflicts with `transform` on parent → fix; re-verify with screenshot diff.
62
+
63
+ **Edge case — works on dev, breaks on prod** — Console shows "ChunkLoadError" only on prod. Network trace shows missing `/_next/static/chunks/...js` (404). Recommend: re-deploy or check CDN purge.
64
+
65
+ **Negative — no DevTools MCP** — Halt. Without DevTools the skill is a guess; the user gets a clear error and a path to enable it.
66
+
67
+ ## Memory Bank Hooks
68
+
69
+ - **Reads:** `.rihal/memory/project/stack.md` (frontend layer detection)
70
+ - **Writes:** append to `.rihal/memory/incidents/known-issues.md` if a browser-runtime bug is acknowledged but not fixed in this session
@@ -11,7 +11,7 @@ Checkpoint preview skill for Rihal Code.
11
11
 
12
12
  ## Do NOT use this skill for
13
13
 
14
- - **Automated code review without a human** — use `/rihal:karpathy-audit` or a code-reviewer agent directly.
14
+ - **Automated code review without a human** — use `/rihal:code-review --karpathy` or a code-reviewer agent directly.
15
15
  - **Approving a deploy or merge** — this skill explains a change; it does not authorize git push, deploys, or PR merges.
16
16
  - **Bug investigation** from scratch — use `/rihal:debug` or the diagnose-issues workflow.
17
17
  - **Architecture review of an undelivered design** — this skill reviews delivered code/diffs, not specs.
@@ -0,0 +1,108 @@
1
+ ---
2
+ name: rihal-ci
3
+ description: CI/CD setup and quality gates for the rcode-default stack — GitHub Actions for Node test matrix, Helm charts for K8s deployment, Docker Compose for dev environments. Use when standing up CI for a new repo, adding a quality gate, debugging a flaky workflow, or migrating dev-compose to production Helm. Opinionated about zero-runtime-dep invariants and pre-merge gates.
4
+ triggers:
5
+ - "set up ci"
6
+ - "github actions"
7
+ - "ci pipeline"
8
+ - "quality gate"
9
+ - "helm chart"
10
+ - "docker compose"
11
+ - "k8s deploy"
12
+ - "release workflow"
13
+ user-invocable: true
14
+ ---
15
+
16
+ ## Overview
17
+
18
+ CI is the contract that keeps `main` green. This skill enforces a small, predictable set of gates rather than a sprawling pipeline. For deployment, the rcode-default path is: Docker Compose for dev → Helm chart for K8s production. The skill knows the common pitfalls (env drift, missing healthchecks, cold-start memory limits).
19
+
20
+ ## CI pre-merge gates (in order)
21
+
22
+ 1. **Lint / format.** Whatever the project uses (ESLint, Prettier, ruff). Auto-fixable issues block merge.
23
+ 2. **Type check.** `tsc --noEmit` for TS projects, `mypy --strict` for Python.
24
+ 3. **Test.** `node --test` / `pnpm test` / `pytest`. Across the supported runtime matrix (e.g. Node 18/20/22/24).
25
+ 4. **Build.** Whatever produces shippable artefacts. Fails-on-warnings.
26
+ 5. **Custom invariants.** rcode example: `zero-dep` job that asserts `package.json` has no runtime dependencies.
27
+
28
+ If any gate fails, no merge. No `--no-verify`. Fix the underlying issue.
29
+
30
+ ## GitHub Actions template (Node project)
31
+
32
+ ```yaml
33
+ name: test
34
+ on:
35
+ push: { branches: [main] }
36
+ pull_request: { branches: [main] }
37
+
38
+ jobs:
39
+ test:
40
+ runs-on: ubuntu-latest
41
+ strategy:
42
+ fail-fast: false
43
+ matrix:
44
+ node-version: ['18.x', '20.x', '22.x', '24.x']
45
+ steps:
46
+ - uses: actions/checkout@v4
47
+ - uses: actions/setup-node@v4
48
+ with: { node-version: '${{ matrix.node-version }}' }
49
+ - run: node --test
50
+ ```
51
+
52
+ Reference the production rcode workflow at `.github/workflows/test.yml` for the full pattern (zero-dep invariant + syntax-check job).
53
+
54
+ ## Docker Compose dev environment
55
+
56
+ - **Healthchecks on every service.** Postgres, Redis, the app — all of them. Without healthchecks `depends_on` is a lie.
57
+ - **Volumes for source code only.** Don't volume-mount `node_modules`; use a named volume to avoid cross-host syncs.
58
+ - **Single `.env.example`** in the repo. CI doesn't load it, but new contributors copy from it.
59
+ - **One docker-compose.yml.** No "dev" / "prod" splits — production is Helm. Compose is for laptops only.
60
+
61
+ ## Helm chart conventions (K8s production)
62
+
63
+ - **`values.yaml` documents every config knob.** No silent defaults.
64
+ - **Liveness AND readiness probes.** Liveness is "process alive"; readiness is "ready to serve". Different thresholds.
65
+ - **Resource limits.** Memory request = limit (no over-commit). CPU request realistic; limit forgiving.
66
+ - **`PodDisruptionBudget`** for any deployment with `replicas > 1`.
67
+ - **Secrets via External Secrets Operator** or sealed-secrets. Never plain `Secret` objects in git.
68
+
69
+ ## Workflow
70
+
71
+ 1. **Detect what's there.** Read `.github/workflows/`, `docker-compose.yml`, `helm/` (or wherever charts live).
72
+ 2. **Map to the gates above.** What's missing? What's redundant?
73
+ 3. **Add the smallest set of gates** that covers lint + types + tests + build + invariants.
74
+ 4. **Verify locally first.** Every gate should runnable on the contributor's laptop with `act` (for Actions) or directly.
75
+ 5. **Push, watch the run, fix.** Iterate until green on a real PR, not just locally.
76
+
77
+ ## Output Format
78
+
79
+ ```
80
+ Detected CI: <list of existing workflows>
81
+ Detected dev environment: <docker-compose | makefile | scripts>
82
+ Detected production: <helm | terraform | none>
83
+
84
+ Gates currently in place:
85
+ ✓ <gate>
86
+ ✗ missing: <gate>
87
+
88
+ Recommendations:
89
+ 1. <add or modify>
90
+ 2. ...
91
+
92
+ Next steps:
93
+ - <commit + PR>
94
+ - <verify run>
95
+ ```
96
+
97
+ ## Examples
98
+
99
+ **Happy path — fresh repo** — No CI yet. Add `.github/workflows/test.yml` with the matrix template. Add `docker-compose.yml` with Postgres + app + healthchecks. Open a PR; verify CI runs green.
100
+
101
+ **Edge case — flaky test in CI only** — Test passes locally, fails in CI 30% of the time. Bisect: is it a timeout? a race condition with the mock server? a CI-specific resource limit? Fix the root cause; don't add `retry: 3` as a workaround.
102
+
103
+ **Negative — "just disable the failing check"** — Refuse. The check exists for a reason. Either fix what's broken or remove the check with a documented rationale.
104
+
105
+ ## Memory Bank Hooks
106
+
107
+ - **Reads:** `.rihal/memory/project/stack.md` (deploy target)
108
+ - **Writes:** when CI gains a new gate, append to `.rihal/memory/project/decisions.md` with the rationale
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: rihal-debug
3
+ description: Root-cause debugging via the scientific method. Use when a test fails, a build breaks, behaviour doesn't match expectations, or any "it's broken and I don't know why" moment. Forces hypothesis → experiment → observation → narrow → repeat — never guessing or shotgunning fixes. Default observability layer is Sentry; the skill knows how to read Sentry traces if available.
4
+ triggers:
5
+ - "debug this"
6
+ - "why is this broken"
7
+ - "find the root cause"
8
+ - "investigate the bug"
9
+ - "what's wrong"
10
+ - "track this down"
11
+ - "narrow down the bug"
12
+ - "scientific method"
13
+ user-invocable: true
14
+ ---
15
+
16
+ ## Overview
17
+
18
+ Debugging is investigation, not pattern-matching. Each iteration narrows the problem space — never widens it. The skill enforces a written hypothesis, an experiment that distinguishes "yes" from "no", and a captured observation. Random fixes that "happen to work" are not allowed — the bug must be understood.
19
+
20
+ ## Workflow
21
+
22
+ 1. **Reproduce the bug.** Write the exact steps. If you can't reproduce it, the first job is making it reproducible — anything else is guessing.
23
+ 2. **State the hypothesis.** "I think the bug is in <component>; specifically <mechanism>." One sentence, falsifiable.
24
+ 3. **Design the experiment.** What single test, log line, or dataflow change would distinguish a true hypothesis from a false one?
25
+ 4. **Run it. Capture the observation.** Console output verbatim, screenshot, stack trace, network response — whatever the experiment produced.
26
+ 5. **Update the hypothesis.** Either confirmed (now narrow to the next layer) or refuted (form a new hypothesis based on what was observed).
27
+ 6. **Stop conditions:** the bug is reproducible from a unit test (then hand to `rihal-prove-it`), OR the root cause is a known external constraint (e.g. third-party API behaviour) that you record in `incidents/known-issues.md`.
28
+ 7. **Never apply a fix without understanding why it works.** "It seems to fix it" is a red flag — keep investigating until the mechanism is clear.
29
+
30
+ ## Sentry / observability integration
31
+
32
+ If the project has Sentry (`@sentry/*` in `package.json` or `sentry-sdk` in Python):
33
+
34
+ - Quote the actual Sentry issue ID and stack trace in the hypothesis section
35
+ - Look at breadcrumbs for the chain of events leading to the error
36
+ - Check the issue's "first seen / last seen" — recurring or one-off matters
37
+ - Cross-reference with deployment timestamps to identify regressions
38
+
39
+ ## Output Format
40
+
41
+ ```
42
+ Reproduction:
43
+ <exact steps>
44
+ <observed vs expected>
45
+
46
+ Iteration 1
47
+ Hypothesis: <falsifiable claim>
48
+ Experiment: <what we did>
49
+ Observation: <verbatim output>
50
+ Outcome: confirmed | refuted | partial
51
+
52
+ Iteration N
53
+ ...
54
+
55
+ Root cause:
56
+ <one paragraph explanation of the actual mechanism>
57
+
58
+ Fix scope:
59
+ <minimum change that fixes the cause, not the symptom>
60
+
61
+ Regression test:
62
+ <hand off to rihal-prove-it for the test that locks the fix in>
63
+ ```
64
+
65
+ Do NOT include: "tried X and it seems to work"; speculative "maybe it's caching"; broad refactors disguised as bug fixes.
66
+
67
+ ## Examples
68
+
69
+ **Happy path** — "Login fails for Arabic usernames" → reproduce: POST `/login` with `محمد` returns 500 → hypothesis: encoding boundary in URL parsing → experiment: add hex-dump log of the raw request → observation: bytes are UTF-8 but the Postgres driver re-encodes as Latin-1 → root cause: client_encoding mismatch → fix: pin client_encoding=utf8 → regression test asserts non-ASCII login returns 200.
70
+
71
+ **Edge case — flaky test** — Test passes locally, fails in CI 30% of the time → hypothesis: race condition → experiment: run with `--runInBand` → observation: still flaky → next hypothesis: filesystem timing → experiment: await fs.stat after write → confirmed → fix.
72
+
73
+ **Negative — shotgun fix** — "I added a try/catch around the whole function and now it doesn't crash". Refuse. The exception is now silently swallowed; the bug still exists. Restore the throw and form a real hypothesis.
74
+
75
+ ## Memory Bank Hooks
76
+
77
+ - **Reads:** `.rihal/memory/incidents/known-issues.md` (so prior debugging context is loaded), `.rihal/memory/project/stack.md` (Sentry presence)
78
+ - **Writes:** append the root cause to `.rihal/memory/incidents/post-mortems/YYYYMMDD-<slug>.md` when an incident is resolved; remove the entry from `known-issues.md` once the fix is verified in production