@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.
- package/AGENTS.md +11 -1
- package/CONTRIBUTING.md +7 -0
- package/README.md +39 -20
- package/cli/install.js +145 -47
- package/dist/rcode.js +134 -43
- package/package.json +2 -2
- package/rihal/agents/rihal-advisor-researcher.md +1 -1
- package/rihal/agents/rihal-assumptions-analyzer.md +1 -1
- package/rihal/agents/rihal-codebase-mapper.md +1 -1
- package/rihal/agents/rihal-docs-auditor.md +3 -3
- package/rihal/agents/rihal-executor.md +10 -0
- package/rihal/agents/rihal-integration-checker.md +1 -1
- package/rihal/agents/rihal-noor.md +2 -2
- package/rihal/agents/rihal-phase-researcher.md +1 -1
- package/rihal/agents/rihal-planner.md +25 -0
- package/rihal/agents/rihal-project-researcher.md +1 -1
- package/rihal/agents/rihal-research-synthesizer.md +1 -1
- package/rihal/agents/rihal-roadmapper.md +1 -1
- package/rihal/agents/rihal-sprint-checker.md +19 -1
- package/rihal/agents/rihal-verifier.md +1 -1
- package/rihal/agents/rihal-waleed.md +1 -2
- package/rihal/commands/code-review.md +1 -1
- package/rihal/commands/memory-audit.md +10 -0
- package/rihal/commands/memory-distill.md +11 -0
- package/rihal/commands/memory-init.md +12 -0
- package/rihal/commands/memory-update.md +12 -0
- package/rihal/config/model-profiles.json +5 -5
- package/rihal/references/karpathy-guidelines-full.md +1 -1
- package/rihal/references/no-unauthorized-git-ops.md +1 -1
- package/rihal/references/verb-dictionary.md +1 -1
- package/rihal/skills/actions/2-plan/rihal-frontend-design/SKILL.md +49 -139
- package/rihal/skills/actions/2-plan/rihal-frontend-design/references.md +79 -0
- package/rihal/skills/actions/4-implementation/rihal-browser-verify/SKILL.md +70 -0
- package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/SKILL.md +1 -1
- package/rihal/skills/actions/4-implementation/rihal-ci/SKILL.md +108 -0
- package/rihal/skills/actions/4-implementation/rihal-debug/SKILL.md +78 -0
- package/rihal/skills/actions/4-implementation/rihal-git-flow/SKILL.md +90 -0
- package/rihal/skills/actions/4-implementation/rihal-harden/SKILL.md +91 -0
- package/rihal/skills/actions/4-implementation/rihal-incremental/SKILL.md +50 -0
- package/rihal/skills/actions/4-implementation/rihal-migrate/SKILL.md +86 -0
- package/rihal/skills/actions/4-implementation/rihal-perf/SKILL.md +96 -0
- package/rihal/skills/actions/4-implementation/rihal-prove-it/SKILL.md +64 -0
- package/rihal/skills/actions/4-implementation/rihal-source-truth/SKILL.md +76 -0
- package/rihal/skills/actions/4-implementation/rihal-trim/SKILL.md +73 -0
- package/rihal/skills/agents/dalil-scout/SKILL.md +43 -125
- package/rihal/skills/agents/dalil-scout/references.md +67 -0
- package/rihal/skills/agents/majlis-council/SKILL.md +50 -144
- package/rihal/skills/agents/majlis-council/references.md +90 -0
- package/rihal/skills/agents/raees-orchestrator/SKILL.md +56 -117
- package/rihal/skills/agents/raees-orchestrator/references.md +47 -0
- package/rihal/skills/core/rihal-advanced-elicitation/SKILL.md +36 -136
- package/rihal/skills/core/rihal-advanced-elicitation/references.md +101 -0
- package/rihal/skills/core/rihal-auth-audit/SKILL.md +93 -0
- package/rihal/skills/core/rihal-brainstorming/SKILL.md +5 -0
- package/rihal/skills/core/rihal-client-gate/SKILL.md +91 -0
- package/rihal/skills/core/rihal-clone-website/SKILL.md +30 -371
- package/rihal/skills/core/rihal-clone-website/references.md +213 -0
- package/rihal/skills/core/rihal-deploy-unify/SKILL.md +87 -0
- package/rihal/skills/core/rihal-distillator/SKILL.md +37 -187
- package/rihal/skills/core/rihal-distillator/references.md +118 -0
- package/rihal/skills/core/rihal-editorial-review-prose/SKILL.md +5 -0
- package/rihal/skills/core/rihal-editorial-review-structure/SKILL.md +45 -183
- package/rihal/skills/core/rihal-editorial-review-structure/references.md +110 -0
- package/rihal/skills/core/rihal-help/SKILL.md +6 -1
- package/rihal/skills/core/rihal-incident-record/SKILL.md +161 -0
- package/rihal/skills/core/rihal-index-docs/SKILL.md +5 -0
- package/rihal/skills/core/rihal-init/SKILL.md +5 -0
- package/rihal/skills/core/rihal-memory-audit/SKILL.md +88 -0
- package/rihal/skills/core/rihal-memory-distill/SKILL.md +87 -0
- package/rihal/skills/core/rihal-memory-init/SKILL.md +77 -0
- package/rihal/skills/core/rihal-memory-update/SKILL.md +73 -0
- package/rihal/skills/core/rihal-mvp-graduate/SKILL.md +116 -0
- package/rihal/skills/core/rihal-ocr-consistency/SKILL.md +106 -0
- package/rihal/skills/core/rihal-party-mode/SKILL.md +5 -0
- package/rihal/skills/core/rihal-rebrand/SKILL.md +133 -0
- package/rihal/skills/core/rihal-review-adversarial-general/SKILL.md +5 -0
- package/rihal/skills/core/rihal-review-edge-case-hunter/SKILL.md +5 -0
- package/rihal/skills/core/rihal-shard-doc/SKILL.md +5 -0
- package/rihal/skills/core/rihal-theme-system/SKILL.md +113 -0
- package/rihal/team.yaml +3 -22
- package/rihal/templates/memory/INDEX.md +46 -0
- package/rihal/templates/memory/change-records/.gitkeep +4 -0
- package/rihal/templates/memory/distillates/project.distillate.md +11 -0
- package/rihal/templates/memory/distillates/stack.distillate.md +11 -0
- package/rihal/templates/memory/incidents/known-issues.md +27 -0
- package/rihal/templates/memory/incidents/post-mortems/.gitkeep +3 -0
- package/rihal/templates/memory/milestones/archive/.gitkeep +2 -0
- package/rihal/templates/memory/milestones/current.md +39 -0
- package/rihal/templates/memory/people/stakeholders.md +25 -0
- package/rihal/templates/memory/people/team.md +35 -0
- package/rihal/templates/memory/project/decisions.md +32 -0
- package/rihal/templates/memory/project/glossary.md +16 -0
- package/rihal/templates/memory/project/stack.md +46 -0
- package/rihal/workflows/audit.md +3 -3
- package/rihal/workflows/code-review.md +32 -1
- package/rihal/workflows/council.md +1 -1
- package/rihal/workflows/discuss-phase-power.md +3 -3
- package/rihal/workflows/do.md +1 -1
- package/rihal/workflows/docs-update.md +4 -4
- package/rihal/workflows/execute.md +61 -5
- package/rihal/workflows/help.md +5 -5
- package/rihal/workflows/karpathy-audit.md +9 -9
- package/rihal/workflows/memory-audit.md +83 -0
- package/rihal/workflows/memory-distill.md +103 -0
- package/rihal/workflows/memory-init.md +102 -0
- package/rihal/workflows/memory-update.md +83 -0
- package/rihal/workflows/plan.md +66 -1
- package/server/dashboard.js +6 -1
- package/server/lib/api.js +8 -2
- package/server/lib/html/client.js +63 -0
- package/server/lib/html/shell.js +5 -0
- package/server/lib/scanner.js +76 -1
- package/rihal/agents/rihal-architect.md +0 -79
- package/rihal/agents/rihal-tech-writer.md +0 -80
- package/rihal/commands/check-implementation-readiness.md +0 -8
- package/rihal/commands/discuss-phase-power.md +0 -11
- package/rihal/commands/karpathy-audit.md +0 -12
- package/rihal/commands/new-project-research.md +0 -11
- package/rihal/commands/new-project-roadmap.md +0 -11
- package/rihal/commands/report.md +0 -10
- package/rihal/commands/review-adversarial.md +0 -8
- 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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
80
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
120
|
-
5. **Define
|
|
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
|
|
124
|
-
9. **Stress-test
|
|
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
|
-
-
|
|
59
|
+
- Markdown explanation + fenced code blocks (language-tagged)
|
|
129
60
|
- Start with a one-sentence aesthetic statement before any code
|
|
130
|
-
- Show
|
|
131
|
-
-
|
|
132
|
-
-
|
|
133
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
153
|
-
**Input:** "Design a Ministry of Energy analytics dashboard"
|
|
68
|
+
## Examples
|
|
154
69
|
|
|
155
|
-
**
|
|
156
|
-
|
|
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
|
-
|
|
165
|
-
|
|
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
|
-
**
|
|
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
|
-
|
|
170
|
-
|
|
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
|
-
**
|
|
82
|
+
**Negative — wrong skill**
|
|
83
|
+
"Clone https://linear.app" → cloning is `rihal-clone-website`'s job, redirect.
|
|
173
84
|
|
|
174
|
-
|
|
175
|
-
**Input:** "Clone https://linear.app"
|
|
85
|
+
## Memory Bank Hooks
|
|
176
86
|
|
|
177
|
-
**
|
|
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
|
-
|
|
180
|
-
**Input:** "Write the API for this feature"
|
|
90
|
+
## Detailed reference
|
|
181
91
|
|
|
182
|
-
|
|
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
|
|
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
|