openhermes 4.3.0 → 4.11.2
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/CONTEXT.md +10 -1
- package/README.md +54 -42
- package/bootstrap.ts +396 -142
- package/harness/agents/oh-browser.md +97 -0
- package/harness/agents/oh-builder.md +78 -0
- package/harness/agents/oh-facade.md +75 -0
- package/harness/agents/oh-fusion.md +45 -0
- package/harness/agents/oh-gauntlet.md +71 -0
- package/harness/agents/oh-grill.md +71 -0
- package/harness/agents/oh-investigate.md +60 -0
- package/harness/agents/oh-manifest.md +95 -0
- package/harness/agents/oh-plan-review.md +40 -0
- package/harness/agents/oh-planner.md +50 -0
- package/harness/agents/oh-refactor.md +37 -0
- package/harness/agents/oh-retro.md +46 -0
- package/harness/agents/oh-review.md +85 -0
- package/harness/agents/oh-security.md +83 -0
- package/harness/agents/oh-ship.md +76 -0
- package/harness/agents/oh-skill-craft.md +38 -0
- package/harness/agents/openhermes.md +28 -73
- package/harness/codex/AUTOPILOT.md +235 -87
- package/harness/codex/CHARTER.md +80 -0
- package/harness/instructions/SHELL.md +76 -0
- package/harness/lib/background/background.test.ts +197 -0
- package/harness/lib/background/index.ts +7 -0
- package/harness/lib/background/interfaces.ts +31 -0
- package/harness/lib/background/manager.ts +320 -0
- package/harness/lib/composer/compose.test.ts +168 -0
- package/harness/lib/composer/compose.ts +65 -0
- package/harness/lib/composer/fragments/01-identity.md +1 -0
- package/harness/lib/composer/fragments/02-delegation.md +6 -0
- package/harness/lib/composer/fragments/03-permissions.md +13 -0
- package/harness/lib/composer/fragments/04-task-flow.md +15 -0
- package/harness/lib/composer/fragments/05-confidence.md +5 -0
- package/harness/lib/composer/fragments/06-parallelization.md +17 -0
- package/harness/lib/composer/fragments/07-shell.md +41 -0
- package/harness/lib/composer/fragments/08-routing.md +8 -0
- package/harness/lib/composer/fragments/09-guardrails.md +12 -0
- package/harness/lib/composer/index.ts +1 -0
- package/harness/lib/hooks/builtins/confidence-gate-hook.ts +70 -0
- package/harness/lib/hooks/builtins/delegation-depth-hook.ts +59 -0
- package/harness/lib/hooks/builtins/error-recovery-hook.ts +107 -0
- package/harness/lib/hooks/builtins/memory-sync-hook.ts +73 -0
- package/harness/lib/hooks/builtins/plan-check-hook.ts +43 -0
- package/harness/lib/hooks/builtins/route-tracking-hook.ts +147 -0
- package/harness/lib/hooks/builtins/sanity-check-hook.ts +52 -0
- package/harness/lib/hooks/builtins/shell-detect-hook.ts +96 -0
- package/harness/lib/hooks/hooks.test.ts +1016 -0
- package/harness/lib/hooks/index.ts +30 -0
- package/harness/lib/hooks/registry.ts +416 -0
- package/harness/lib/hooks/types.ts +71 -0
- package/harness/lib/memory/index.ts +18 -0
- package/harness/lib/memory/interfaces.ts +53 -0
- package/harness/lib/memory/memory-manager.ts +205 -0
- package/harness/lib/memory/memory.test.ts +491 -0
- package/harness/lib/memory/plan-store.ts +366 -0
- package/harness/lib/recovery/handler.ts +243 -0
- package/harness/lib/recovery/index.ts +14 -0
- package/harness/lib/recovery/interfaces.ts +48 -0
- package/harness/lib/recovery/patterns.ts +149 -0
- package/harness/lib/recovery/recovery.test.ts +312 -0
- package/harness/lib/sanity/anomaly-tracker.ts +127 -0
- package/harness/lib/sanity/checker.ts +178 -0
- package/harness/lib/sanity/index.ts +13 -0
- package/harness/lib/sanity/interfaces.ts +24 -0
- package/harness/lib/sanity/sanity.test.ts +472 -0
- package/harness/lib/sync/file-watcher.ts +174 -0
- package/harness/lib/sync/index.ts +11 -0
- package/harness/lib/sync/interfaces.ts +27 -0
- package/harness/lib/sync/plan-sync.ts +536 -0
- package/harness/lib/sync/sync.test.ts +832 -0
- package/harness/skills/oh-ascii/DEEP.md +292 -0
- package/harness/skills/oh-ascii/SKILL.md +31 -0
- package/harness/skills/oh-ascii/scripts/check_ascii_alignment.py +596 -0
- package/harness/skills/oh-browser/DEEP.md +54 -0
- package/harness/skills/oh-browser/SKILL.md +30 -0
- package/harness/skills/oh-builder/DEEP.md +63 -0
- package/harness/skills/oh-builder/SKILL.md +12 -90
- package/harness/skills/oh-expert/DEEP.md +85 -0
- package/harness/skills/oh-expert/SKILL.md +13 -106
- package/harness/skills/oh-facade/DEEP.md +182 -0
- package/harness/skills/oh-facade/SKILL.md +15 -279
- package/harness/skills/oh-freeze/DEEP.md +18 -0
- package/harness/skills/oh-freeze/SKILL.md +10 -19
- package/harness/skills/oh-full-output/DEEP.md +25 -0
- package/harness/skills/oh-full-output/SKILL.md +12 -65
- package/harness/skills/oh-fusion/DEEP.md +120 -0
- package/harness/skills/oh-fusion/SKILL.md +17 -295
- package/harness/skills/oh-gauntlet/DEEP.md +77 -0
- package/harness/skills/oh-gauntlet/SKILL.md +13 -105
- package/harness/skills/oh-grill/DEEP.md +51 -0
- package/harness/skills/oh-grill/SKILL.md +12 -63
- package/harness/skills/oh-guard/DEEP.md +19 -0
- package/harness/skills/oh-guard/SKILL.md +10 -24
- package/harness/skills/oh-handoff/DEEP.md +48 -0
- package/harness/skills/oh-handoff/SKILL.md +13 -23
- package/harness/skills/oh-health/DEEP.md +74 -0
- package/harness/skills/oh-health/SKILL.md +13 -76
- package/harness/skills/oh-init/DEEP.md +85 -0
- package/harness/skills/oh-init/SKILL.md +13 -127
- package/harness/skills/oh-investigate/DEEP.md +171 -0
- package/harness/skills/oh-investigate/SKILL.md +13 -66
- package/harness/skills/oh-issue/DEEP.md +21 -0
- package/harness/skills/oh-issue/SKILL.md +11 -27
- package/harness/skills/oh-manifest/DEEP.md +92 -0
- package/harness/skills/oh-manifest/SKILL.md +12 -109
- package/harness/skills/oh-plan-review/DEEP.md +90 -0
- package/harness/skills/oh-plan-review/SKILL.md +13 -115
- package/harness/skills/oh-planner/DEEP.md +172 -0
- package/harness/skills/oh-planner/SKILL.md +12 -149
- package/harness/skills/oh-prd/DEEP.md +45 -0
- package/harness/skills/oh-prd/SKILL.md +10 -26
- package/harness/skills/oh-refactor/DEEP.md +122 -0
- package/harness/skills/oh-refactor/SKILL.md +17 -410
- package/harness/skills/oh-retro/DEEP.md +26 -0
- package/harness/skills/oh-retro/SKILL.md +12 -24
- package/harness/skills/oh-review/DEEP.md +87 -0
- package/harness/skills/oh-review/SKILL.md +11 -97
- package/harness/skills/oh-security/DEEP.md +83 -0
- package/harness/skills/oh-security/SKILL.md +14 -96
- package/harness/skills/oh-ship/DEEP.md +141 -0
- package/harness/skills/oh-ship/SKILL.md +14 -32
- package/harness/skills/oh-skill-craft/DEEP.md +369 -0
- package/harness/skills/oh-skill-craft/SKILL.md +13 -177
- package/harness/skills/oh-skills-link/DEEP.md +16 -0
- package/harness/skills/oh-skills-link/SKILL.md +10 -20
- package/harness/skills/oh-skills-list/DEEP.md +20 -0
- package/harness/skills/oh-skills-list/SKILL.md +9 -22
- package/harness/skills/oh-triage/DEEP.md +23 -0
- package/harness/skills/oh-triage/SKILL.md +8 -24
- package/harness/skills/oh-worktree/DEEP.md +169 -0
- package/harness/skills/oh-worktree/SKILL.md +32 -0
- package/lib/harness-resolver.ts +8 -10
- package/package.json +7 -5
- package/tsconfig.json +1 -1
- package/harness/codex/CONSTITUTION.md +0 -73
- package/harness/codex/ROUTING.md +0 -92
- package/harness/commands/oh-doctor.md +0 -26
- package/harness/commands/oh-log.md +0 -18
- package/harness/instructions/RUNTIME.md +0 -30
- package/harness/skills/oh-caveman/SKILL.md +0 -42
- package/harness/skills/oh-learn/SKILL.md +0 -101
- package/lib/logger.ts +0 -75
|
@@ -1,29 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oh-facade
|
|
3
|
-
description: "Full UI pipeline: from concept to production frontend. Design system generation, premium component architecture, production-grade implementation, structured audit.
|
|
3
|
+
description: "Full UI pipeline: from concept to production frontend. Design system generation, premium component architecture, production-grade implementation, structured audit."
|
|
4
4
|
tier: 4
|
|
5
|
-
benefits-from: [oh-planner, oh-gauntlet, oh-review]
|
|
6
|
-
triggers:
|
|
7
|
-
- "build a frontend for"
|
|
8
|
-
- "create a design system"
|
|
9
|
-
- "build a landing page"
|
|
10
|
-
- "build a dashboard"
|
|
11
|
-
- "build a web app"
|
|
12
|
-
- "visual design for"
|
|
13
|
-
- "make this look good"
|
|
14
|
-
- "redesign this page"
|
|
15
|
-
- "redesign this app"
|
|
16
|
-
- "theme the application"
|
|
17
|
-
- "layout this page"
|
|
18
|
-
- "responsive layout"
|
|
19
|
-
- "user interface design"
|
|
20
|
-
- "improve the UX"
|
|
21
|
-
- "aesthetic design"
|
|
22
|
-
- "style the component"
|
|
23
|
-
- "polish the UI"
|
|
24
|
-
- "frontend component"
|
|
25
|
-
- "interface design for"
|
|
26
|
-
- "build a component for"
|
|
27
5
|
route:
|
|
28
6
|
pass:
|
|
29
7
|
- oh-review
|
|
@@ -34,265 +12,23 @@ route:
|
|
|
34
12
|
|
|
35
13
|
# oh-facade
|
|
36
14
|
|
|
37
|
-
|
|
15
|
+
Full UI pipeline: Concept → Design System → Build → Audit → Iterate.
|
|
38
16
|
|
|
39
|
-
|
|
17
|
+
## Steps
|
|
40
18
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
## Pipeline
|
|
50
|
-
|
|
51
|
-
The 5-phase closed loop:
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
Concept → Design System → Build → Audit → Iterate
|
|
55
|
-
↓
|
|
56
|
-
(loop until pass)
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
Output at each phase: brief → DESIGN.md → code → report → final code.
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
## Phase 1: Concept
|
|
64
|
-
|
|
65
|
-
Input: vague idea, brief, or "make this look good"
|
|
66
|
-
Output: structured design brief with direction
|
|
67
|
-
|
|
68
|
-
### 1a. Understand the Context
|
|
69
|
-
|
|
70
|
-
- What is the product/feature? Who uses it?
|
|
71
|
-
- What problem does this interface solve?
|
|
72
|
-
- Are there technical constraints? (framework, viewport targets, accessibility requirements)
|
|
73
|
-
- Is this a new build or an existing project to redesign?
|
|
74
|
-
|
|
75
|
-
### 1b. Set the Direction
|
|
76
|
-
|
|
77
|
-
Choose an archetype. **Commit to it. Do not hedge.**
|
|
78
|
-
|
|
79
|
-
| Archetype | Best for | Substrate | Density |
|
|
80
|
-
|---|---|---|---|
|
|
81
|
-
| Minimal Editorial | Content sites, portfolios, docs | Light (warm off-white) | Low (1-3) |
|
|
82
|
-
| Premium SaaS | Web apps, dashboards, B2B tools | Light or Dark (zinc-based) | Medium (4-7) |
|
|
83
|
-
| Industrial/Data | Analytics, monitoring, internal tools | Dark (charcoal) | High (7-10) |
|
|
84
|
-
| Creative/Expressive | Marketing, agency sites, showcases | Dark or Light | Variable |
|
|
85
|
-
|
|
86
|
-
### 1c. Set Metric Dials
|
|
87
|
-
|
|
88
|
-
Three measurable controls that drive all downstream decisions. Default baseline, adapt based on context.
|
|
89
|
-
|
|
90
|
-
| Dial | Range | 1-3 | 4-7 | 8-10 |
|
|
91
|
-
|---|---|---|---|---|
|
|
92
|
-
| VARIANCE | 1-10 | Symmetric, predictable | Offset, asymmetric | Chaotic, artsy |
|
|
93
|
-
| MOTION | 1-10 | Static, CSS only | Fluid CSS + spring | Cinematic choreography |
|
|
94
|
-
| DENSITY | 1-10 | Gallery, airy | Standard app | Cockpit, packed |
|
|
95
|
-
|
|
96
|
-
**Default baseline:** VARIANCE=6, MOTION=5, DENSITY=4
|
|
97
|
-
|
|
98
|
-
### 1d. Output Design Brief
|
|
99
|
-
|
|
100
|
-
Single paragraph capturing: archetype, substrate (light/dark), metric dials, and key differentiator.
|
|
101
|
-
|
|
102
|
-
If the brief is clearly wrong or self-contradictory → surface to user.
|
|
103
|
-
Otherwise → Phase 2. Do not ask for approval.
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
## Phase 2: Design System
|
|
108
|
-
|
|
109
|
-
Input: design brief with direction + dials
|
|
110
|
-
Output: `DESIGN.md` — encoded design system as single source of truth
|
|
111
|
-
|
|
112
|
-
Generate a complete `DESIGN.md` file. This is the blueprint consumed by Phase 3. Every value must be specific — no vagueness, no "use a nice font."
|
|
113
|
-
|
|
114
|
-
### 2a. Color Palette
|
|
115
|
-
|
|
116
|
-
- **Neutral base**: Zinc or Slate family. Pick one (warm or cool). Never mix.
|
|
117
|
-
- **Accent**: Exactly one. Saturation < 80%. No purple/blue "AI aesthetic."
|
|
118
|
-
- **Surface**: Background, card, border, elevated. Specific hex codes.
|
|
119
|
-
- **Text**: Primary, secondary, muted, inverse. Specific hex codes.
|
|
120
|
-
- **Semantic**: Success, warning, error, info. Specific hex codes.
|
|
121
|
-
- **Dark substrate**: Never pure `#000000`. Use `#0a0a0a` or `#121212`.
|
|
122
|
-
|
|
123
|
-
### 2b. Typography Architecture
|
|
124
|
-
|
|
125
|
-
- **Display/Headline**: Premium sans-serif (Geist, Satoshi, Cabinet Grotesk, Outfit, Switzer). Tight tracking (`-0.03em` to `-0.05em`). Fluid scale via `clamp()`.
|
|
126
|
-
- **Body**: Relaxed leading (`1.6-1.8`). Max 65 characters per line. Off-black, not `#000`.
|
|
127
|
-
- **Monospace**: JetBrains Mono, Geist Mono, or SF Mono. Required for all data/number contexts when DENSITY > 5.
|
|
128
|
-
- **Serif**: Only for editorial/creative contexts and only distinctive modern serifs (Fraunces, Instrument Serif, Editorial New). **Never in dashboards or software UIs.**
|
|
129
|
-
- **BANNED**: Inter, Roboto, Arial, Open Sans, Helvetica, Georgia, Times New Roman.
|
|
130
|
-
|
|
131
|
-
### 2c. Component System
|
|
132
|
-
|
|
133
|
-
Define every component with structure, states, and interaction behavior:
|
|
134
|
-
|
|
135
|
-
**Buttons:**
|
|
136
|
-
- Primary: solid background, off-black or accent. Hover: lift or darken. Active: `scale(0.98)`. Focus ring.
|
|
137
|
-
- Secondary: outline or ghost. Same interaction physics.
|
|
138
|
-
- Icon button: square, matching radius system.
|
|
139
|
-
- Button-in-Button pattern (from high-end-visual-design): nested icon in its own pill inside the button.
|
|
140
|
-
|
|
141
|
-
**Cards:**
|
|
142
|
-
- Double-Bezel architecture: outer shell (subtle background, hairline border, large radius) + inner core (content background, inset highlight, smaller radius).
|
|
143
|
-
- OR border-only: `border-t` or `divide-y` for high-density contexts.
|
|
144
|
-
- Cards used ONLY when elevation communicates hierarchy. Not as default container.
|
|
145
|
-
|
|
146
|
-
**Forms/Inputs:**
|
|
147
|
-
- Label above input. Helper text optional. Error text below.
|
|
148
|
-
- Focus state: ring or border color shift.
|
|
149
|
-
- Touch targets: minimum 44px.
|
|
150
|
-
|
|
151
|
-
**Loading states:**
|
|
152
|
-
- Skeleton loaders matching exact layout dimensions. Never circular spinners.
|
|
153
|
-
|
|
154
|
-
**Empty states:**
|
|
155
|
-
- Composed illustration or icon, short message, single action button.
|
|
156
|
-
|
|
157
|
-
**Navigation:**
|
|
158
|
-
- Based on density dial: glass floating pill (low), sidebar (medium/high), or minimal top bar.
|
|
159
|
-
- Active state on current section.
|
|
160
|
-
- Mobile: clean collapse, not hamburger-only.
|
|
161
|
-
|
|
162
|
-
### 2d. Layout Principles
|
|
163
|
-
|
|
164
|
-
- **Grid**: CSS Grid. Never `calc()` or flexbox percentage math for multi-column layouts.
|
|
165
|
-
- **Container**: 1200-1440px max-width with auto margins. Wider for editorial/creative archetypes.
|
|
166
|
-
- **Section spacing**: Based on DENSITY dial. Low = `py-32 md:py-48`. Medium = `py-24`. High = `py-16`.
|
|
167
|
-
- **Responsive**: All multi-column layouts collapse to single column below 768px. No exceptions. Verify with `md:` breakpoints.
|
|
168
|
-
- **Full-height**: Always `min-h-[100dvh]`. Never `h-screen` (iOS Safari viewport bug).
|
|
169
|
-
- **BANNED**: centered hero when VARIANCE > 4, 3-equal-card feature rows, edge-to-edge content on wide screens.
|
|
170
|
-
|
|
171
|
-
### 2e. Motion Philosophy
|
|
172
|
-
|
|
173
|
-
- **Spring physics**: Default `cubic-bezier(0.32, 0.72, 0, 1)` or Framer Motion `spring(stiffness: 100, damping: 20)`. Never linear easing.
|
|
174
|
-
- **Scroll entry**: Elements fade up gently (`translateY(12-24px)` + `opacity: 0` → resolved over 600-800ms). Use IntersectionObserver or CSS scroll-driven animations. Never `window.addEventListener('scroll')`.
|
|
175
|
-
- **Staggered reveals**: Lists and grids cascade via `animation-delay` or Framer Motion `staggerChildren`.
|
|
176
|
-
- **Hover physics**: Scale, translate, shadow shift, or color transition on interactive elements. Duration 200-300ms.
|
|
177
|
-
- **Active feedback**: Every clickable element must provide tactile response — `scale(0.98)` or `translateY(1px)`.
|
|
178
|
-
- **Performance**: Animate exclusively via `transform` and `opacity`. Never `top`, `left`, `width`, `height`. Use `will-change: transform` sparingly.
|
|
179
|
-
- **Backdrop-blur**: Only on fixed/sticky elements (navbars, overlays). Never on scrolling containers.
|
|
180
|
-
|
|
181
|
-
### 2f. Anti-Patterns Registry
|
|
182
|
-
|
|
183
|
-
Explicit rules encoded into DESIGN.md. These are hard failures.
|
|
184
|
-
|
|
185
|
-
- No emojis in code, content, alt text, or markup
|
|
186
|
-
- No `Lorem Ipsum` — write real draft copy
|
|
187
|
-
- No "Elevate", "Seamless", "Next-Gen", "Unleash", "Game-changer" copy
|
|
188
|
-
- No generic names (John Doe, Acme Corp) — use realistic, specific content
|
|
189
|
-
- No rocket ship for "launch" or shield for "security" icons
|
|
190
|
-
- No purple/blue neon gradients
|
|
191
|
-
- No dark section in a white page (or vice versa) without committed dark mode
|
|
192
|
-
- No animated `top`, `left`, `width`, `height`
|
|
193
|
-
- No `window.addEventListener('scroll')`
|
|
194
|
-
- No `h-screen` for full-height sections
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
## Phase 3: Build
|
|
199
|
-
|
|
200
|
-
Input: DESIGN.md
|
|
201
|
-
Output: production code implementing the full system
|
|
202
|
-
|
|
203
|
-
### 3a. Set Up Foundations
|
|
204
|
-
|
|
205
|
-
1. CSS custom properties for colors, spacing, typography scale, shadows, border-radii
|
|
206
|
-
2. Tailwind config extensions (if using Tailwind) — map design tokens to utility classes
|
|
207
|
-
3. Theme provider or global stylesheet
|
|
208
|
-
4. Component directory structure
|
|
209
|
-
|
|
210
|
-
### 3b. Build Component Library
|
|
211
|
-
|
|
212
|
-
Implement every component defined in Phase 2 with ALL states:
|
|
213
|
-
- Default, hover, active, focus-visible, disabled
|
|
214
|
-
- Loading (skeleton matching layout)
|
|
215
|
-
- Empty (composed illustration + message + action)
|
|
216
|
-
- Error (inline messaging)
|
|
217
|
-
|
|
218
|
-
Apply performance guardrails to every component:
|
|
219
|
-
- Animations use `transform` and `opacity` only
|
|
220
|
-
- No layout-triggering properties in transitions
|
|
221
|
-
- `backdrop-blur` only on fixed/sticky elements
|
|
222
|
-
- Z-index follows systemic scale (no arbitrary `z-50` or `z-[9999]`)
|
|
223
|
-
|
|
224
|
-
### 3c. Build Pages/Screens
|
|
225
|
-
|
|
226
|
-
1. Implement the full interface using the component system
|
|
227
|
-
2. Responsive: verify single-column collapse below 768px
|
|
228
|
-
3. All viewports filled: loading → populated → empty → error states
|
|
229
|
-
4. Navigation wired with active states and mobile collapse
|
|
230
|
-
|
|
231
|
-
### 3d. Technical Requirements
|
|
232
|
-
|
|
233
|
-
- Check `package.json` before importing any dependency. Never assume a library exists.
|
|
234
|
-
- Use framework-appropriate patterns: Server Components in Next.js, client isolation for interactive islands
|
|
235
|
-
- Semantic HTML: `<nav>`, `<main>`, `<section>`, `<article>`, `<aside>`, `<header>`, `<footer>`
|
|
236
|
-
- Accessibility: visible focus rings, skip-to-content link, alt text, aria labels on interactive elements
|
|
237
|
-
- Meta tags: `<title>`, `description`, `og:image`, viewport
|
|
238
|
-
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
## Phase 4: Audit
|
|
242
|
-
|
|
243
|
-
Input: built code + DESIGN.md
|
|
244
|
-
Output: audit report with pass/fail per check + ranked fix list
|
|
245
|
-
|
|
246
|
-
Run the full structured audit. Checks are grouped and priority-ranked.
|
|
247
|
-
|
|
248
|
-
### Priority 1 — High Impact, Low Risk (do first)
|
|
249
|
-
|
|
250
|
-
- **Typography**: font choice matches DESIGN.md? scale correct? tracking applied? no orphan lines? body max-width limited?
|
|
251
|
-
- **Color**: single accent? saturation < 80%? no AI purple? warm/cool consistent? dark not pure black?
|
|
252
|
-
- **Layout**: grid not flexbox math? max-width container? `min-h-[100dvh]` everywhere? responsive at 768px?
|
|
253
|
-
|
|
254
|
-
### Priority 2 — Makes it Feel Alive
|
|
255
|
-
|
|
256
|
-
- **Interactivity**: hover states on all clickables? active feedback (`scale(0.98)` or translate)? focus rings? transitions smooth (200-300ms)?
|
|
257
|
-
- **States**: every component has loading, empty, error states? skeleton loaders (not spinners)?
|
|
258
|
-
- **Motion**: scroll entry animations present? staggered reveals? spring physics (not linear)?
|
|
259
|
-
|
|
260
|
-
### Priority 3 — Content Polish
|
|
261
|
-
|
|
262
|
-
- **Content**: no lorem ipsum? no cliche copy? realistic names and data? no generic placeholders?
|
|
263
|
-
- **Emojis**: zero emojis in code or content?
|
|
264
|
-
- **Anti-patterns**: no "Elevate", no rocket icons, no purple gradients?
|
|
265
|
-
|
|
266
|
-
### Priority 4 — Production Hardening
|
|
267
|
-
|
|
268
|
-
- **Components**: Double-Bezel or appropriate card architecture? button-in-button pattern where applicable? navigation active states?
|
|
269
|
-
- **Iconography**: consistent stroke width? no default library? no emoji substitutions?
|
|
270
|
-
- **Code quality**: semantic HTML? no div soup? no inline styles? no orphaned imports?
|
|
271
|
-
- **Strategic**: 404 page? skip-to-content? meta tags? cookie consent consideration?
|
|
272
|
-
|
|
273
|
-
### Phase 5: Iterate
|
|
274
|
-
|
|
275
|
-
1. Apply fixes in Priority order — do not skip ahead
|
|
276
|
-
2. Re-run audit after each priority level
|
|
277
|
-
3. Continue until all Priority 1-3 checks pass
|
|
278
|
-
4. Priority 4 is target-state — surface remaining items as recommendations
|
|
279
|
-
5. If blocked on a specific check → narrow scope, try alternative approach, or surface
|
|
280
|
-
|
|
281
|
-
## Design Principles
|
|
282
|
-
|
|
283
|
-
These govern all decisions across all phases:
|
|
284
|
-
|
|
285
|
-
1. **Intentionality over intensity** — Bold maximalism and refined minimalism both work. The key is commitment to a direction, not how loud it is.
|
|
286
|
-
2. **Engineering over decoration** — A button is not "styled" — it has a physical structure, interaction physics, and accessible states.
|
|
287
|
-
3. **Consistency over variety** — One palette, one font system, one component architecture. Consistency beats every single creative choice.
|
|
288
|
-
4. **Performance is a feature** — A beautiful UI that lags is not a beautiful UI. Hardware acceleration, transform-only animation, guarded backdrop-blur.
|
|
289
|
-
5. **Ship every state** — Default-only is not production. Loading, empty, error, hover, active, focus, disabled. Every state designed and implemented.
|
|
19
|
+
1. Scan existing codebase — detect framework, styling, current patterns. For redesigns, run phase 0 diagnosis first.
|
|
20
|
+
2. Establish direction — collect product/user/problem context, commit to one archetype (Warm Minimalist, Premium SaaS, Industrial Brutalist, Creative/Expressive), set metric dials (VARIANCE, MOTION, DENSITY).
|
|
21
|
+
3. Produce DESIGN.md — define color tokens (neutral/accent/surface/text/semantic/dark), typography stack (display/body/mono/serif), component specs, layout grid, and motion rules.
|
|
22
|
+
4. Build foundations — CSS custom properties, Tailwind config extensions, theme provider, component directory.
|
|
23
|
+
5. Implement component library — all components with every state: default, hover, active, focus-visible, disabled, loading, empty, error.
|
|
24
|
+
6. Assemble pages — full interfaces from components, responsive collapse at 768px, all viewport states (loading → populated → empty → error).
|
|
25
|
+
7. Run priority-ranked audit — P1 (typography/color/layout), P2 (interactivity/states/motion), P3 (content quality), P4 (hardening/a11y), P5 (existing-project redesign scan).
|
|
26
|
+
8. Iterate — fix highest-priority failures first, re-audit after each level, surface blocker if fix impossible.
|
|
290
27
|
|
|
291
28
|
## Routing
|
|
292
29
|
|
|
293
30
|
| Outcome | Route |
|
|
294
|
-
|
|
295
|
-
|
|
|
296
|
-
|
|
|
297
|
-
|
|
|
298
|
-
| blocker | -> surface to user |
|
|
31
|
+
|---------|-------|
|
|
32
|
+
| pass | → oh-review or oh-manifest |
|
|
33
|
+
| fail | → oh-facade |
|
|
34
|
+
| blocker | → surface |
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# oh-freeze — Deep Reference
|
|
2
|
+
|
|
3
|
+
## When to Use
|
|
4
|
+
|
|
5
|
+
When the user says "don't touch anything outside [path]" or "only edit files in [dir]." Prevents accidental edits to configuration, infrastructure, or unrelated modules.
|
|
6
|
+
|
|
7
|
+
## Mode
|
|
8
|
+
|
|
9
|
+
- Allowed paths: only the specified directory and its children
|
|
10
|
+
- If you need to edit outside: state the reason and ask
|
|
11
|
+
- Read operations unrestricted anywhere
|
|
12
|
+
- File creation restricted to allowed paths
|
|
13
|
+
|
|
14
|
+
## Anti-patterns
|
|
15
|
+
|
|
16
|
+
- Editing outside allowed path without asking
|
|
17
|
+
- Reading unrelated files for context and using that to justify edits
|
|
18
|
+
- "Just this one file outside" — ask first
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oh-freeze
|
|
3
|
-
description: "
|
|
3
|
+
description: "Restricts file edits to a specific directory for the session."
|
|
4
4
|
tier: 2
|
|
5
|
-
triggers:
|
|
6
|
-
- "freeze directory"
|
|
7
|
-
- "restrict edits to"
|
|
8
|
-
- "lock edits to"
|
|
9
5
|
route:
|
|
10
6
|
pass: mode
|
|
11
7
|
fail: mode
|
|
@@ -14,24 +10,19 @@ route:
|
|
|
14
10
|
|
|
15
11
|
# oh-freeze
|
|
16
12
|
|
|
17
|
-
|
|
18
|
-
When debugging a specific module and you want to prevent accidentally "fixing" unrelated code. Scopes all Edit/Write operations to one directory.
|
|
13
|
+
Restrict write operations to one allowed directory.
|
|
19
14
|
|
|
20
|
-
##
|
|
21
|
-
1. Specify target directory to freeze
|
|
22
|
-
2. All Edit/Write operations outside that directory are blocked
|
|
23
|
-
3. User can explicitly approve cross-boundary edits
|
|
24
|
-
4. Unfreeze to release the boundary
|
|
15
|
+
## Steps
|
|
25
16
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
17
|
+
1. Identify the allowed directory from user instructions
|
|
18
|
+
2. Restrict all write/edit/create operations to the allowed path
|
|
19
|
+
3. Allow read operations unrestricted anywhere
|
|
20
|
+
4. If a write outside the allowed path is required, state the reason and ask before proceeding
|
|
30
21
|
|
|
31
22
|
## Routing
|
|
32
23
|
|
|
33
24
|
| Outcome | Route |
|
|
34
25
|
|---------|-------|
|
|
35
|
-
| pass | →
|
|
36
|
-
| fail | →
|
|
37
|
-
| blocker | → surface
|
|
26
|
+
| pass | → mode |
|
|
27
|
+
| fail | → mode |
|
|
28
|
+
| blocker | → surface |
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# oh-full-output — Deep Reference
|
|
2
|
+
|
|
3
|
+
## When to Use
|
|
4
|
+
|
|
5
|
+
When generating long files, multi-component output, or any task where partial output would be a broken deliverable.
|
|
6
|
+
|
|
7
|
+
## Banned Patterns (Hard Failures)
|
|
8
|
+
|
|
9
|
+
**Code:** `// ...`, `// rest of code`, `// implement here`, `// TODO`, `/* ... */`, `// similar`, `// continue`, `// same as`, bare `...`.
|
|
10
|
+
|
|
11
|
+
**Prose:** "let me know if you want me to continue", "for brevity", "the rest follows the same pattern", "and so on", "I'll leave that as an exercise".
|
|
12
|
+
|
|
13
|
+
**Structural:** Skeleton instead of full impl. First/last sections skipping middle. One example + description for repeated logic. Describing instead of writing.
|
|
14
|
+
|
|
15
|
+
## Long Outputs
|
|
16
|
+
|
|
17
|
+
When approaching token limit:
|
|
18
|
+
- Write at full quality to a clean breakpoint (end of function/file/section)
|
|
19
|
+
- Do NOT compress remaining sections
|
|
20
|
+
- End with: `[PAUSED — X of Y complete. Send "continue" to resume from: next section name]`
|
|
21
|
+
- On "continue": pick up exactly where stopped. No recap.
|
|
22
|
+
|
|
23
|
+
## Quick Check
|
|
24
|
+
|
|
25
|
+
Before finalizing: no banned patterns, every item present and finished, code blocks contain runnable code, nothing shortened.
|
|
@@ -1,81 +1,28 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oh-full-output
|
|
3
|
-
description: "Override LLM truncation
|
|
3
|
+
description: "Override LLM truncation — enforce complete code generation, ban placeholders."
|
|
4
4
|
tier: 2
|
|
5
|
-
triggers:
|
|
6
|
-
- "full output"
|
|
7
|
-
- "complete code"
|
|
8
|
-
- "no truncation"
|
|
9
|
-
- "dont skip"
|
|
10
|
-
- "no placeholders"
|
|
11
|
-
- "banned patterns"
|
|
12
|
-
- "generate everything"
|
|
13
|
-
- "dont abbreviate"
|
|
14
|
-
- "dont use ..."
|
|
15
|
-
- "no etc"
|
|
16
|
-
- "write it all"
|
|
17
|
-
- "exhaustive"
|
|
18
|
-
- "unabridged"
|
|
19
|
-
- "long file"
|
|
20
|
-
- "large output"
|
|
21
|
-
- "many files"
|
|
22
|
-
- "all components"
|
|
23
|
-
- "stop truncating"
|
|
24
5
|
route:
|
|
25
6
|
pass: done
|
|
26
|
-
fail: surface
|
|
7
|
+
fail: [surface, oh-expert]
|
|
27
8
|
blocker: surface
|
|
28
9
|
---
|
|
29
10
|
|
|
30
11
|
# oh-full-output
|
|
31
12
|
|
|
32
|
-
Override
|
|
13
|
+
Override truncation. Enforce complete generation. Ban placeholders.
|
|
33
14
|
|
|
34
|
-
##
|
|
15
|
+
## Steps
|
|
35
16
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
The following patterns are hard failures. Never produce them:
|
|
41
|
-
|
|
42
|
-
**In code blocks:** `// ...`, `// rest of code`, `// implement here`, `// TODO`, `/* ... */`, `// similar to above`, `// continue pattern`, `// add more as needed`, bare `...` standing in for omitted code, `// same as above`
|
|
43
|
-
|
|
44
|
-
**In prose:** "Let me know if you want me to continue", "I can provide more details if needed", "for brevity", "the rest follows the same pattern", "similarly for the remaining", "and so on" (when replacing actual content), "I'll leave that as an exercise"
|
|
45
|
-
|
|
46
|
-
**Structural shortcuts:** Outputting a skeleton when the request was for a full implementation. Showing the first and last section while skipping the middle. Replacing repeated logic with one example and a description. Describing what code should do instead of writing it.
|
|
47
|
-
|
|
48
|
-
## Execution Process
|
|
49
|
-
|
|
50
|
-
1. **Scope** -- Read the full request. Count how many distinct deliverables are expected (files, functions, sections, answers). Lock that number.
|
|
51
|
-
2. **Build** -- Generate every deliverable completely. No partial drafts, no "you can extend this later."
|
|
52
|
-
3. **Cross-check** -- Before output, re-read the original request. Compare your deliverable count against the scope count. If anything is missing, add it before responding.
|
|
53
|
-
|
|
54
|
-
## Handling Long Outputs
|
|
55
|
-
|
|
56
|
-
When a response approaches the token limit:
|
|
57
|
-
|
|
58
|
-
- Do not compress remaining sections to squeeze them in.
|
|
59
|
-
- Do not skip ahead to a conclusion.
|
|
60
|
-
- Write at full quality up to a clean breakpoint (end of a function, end of a file, end of a section).
|
|
61
|
-
- End with:
|
|
62
|
-
```
|
|
63
|
-
[PAUSED -- X of Y complete. Send "continue" to resume from: next section name]
|
|
64
|
-
```
|
|
65
|
-
- On "continue", pick up exactly where you stopped. No recap, no repetition.
|
|
66
|
-
|
|
67
|
-
## Quick Check
|
|
68
|
-
|
|
69
|
-
Before finalizing any response:
|
|
70
|
-
- No banned patterns from the list above appear anywhere in the output
|
|
71
|
-
- Every item the user requested is present and finished
|
|
72
|
-
- Code blocks contain actual runnable code, not descriptions of what code would do
|
|
73
|
-
- Nothing was shortened to save space
|
|
17
|
+
1. Scope — Count distinct deliverables. Lock the number.
|
|
18
|
+
2. Build — Generate every deliverable completely. No partial drafts.
|
|
19
|
+
3. Cross-check — Re-read request. Compare deliverable count. Add anything missing.
|
|
20
|
+
4. Verify — No banned patterns, every item present, code blocks are runnable, nothing shortened.
|
|
74
21
|
|
|
75
22
|
## Routing
|
|
76
23
|
|
|
77
24
|
| Outcome | Route |
|
|
78
|
-
|
|
79
|
-
| pass |
|
|
80
|
-
|
|
|
81
|
-
| blocker |
|
|
25
|
+
|---------|-------|
|
|
26
|
+
| pass | → done |
|
|
27
|
+
| fail | → surface, oh-expert |
|
|
28
|
+
| blocker | → surface |
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# oh-fusion — Deep Reference
|
|
2
|
+
|
|
3
|
+
## When to Use
|
|
4
|
+
|
|
5
|
+
Use when a user wants to bring an external skill or capability into the OpenHermes harness as an OH-native skill.
|
|
6
|
+
|
|
7
|
+
## Phase 1: Discovery
|
|
8
|
+
|
|
9
|
+
| Source | Access |
|
|
10
|
+
|--------|--------|
|
|
11
|
+
| `.agents/skills/<name>/SKILL.md` | Read file |
|
|
12
|
+
| `npx skills` package | `npx skills find <query>` |
|
|
13
|
+
| URL | Fetch content |
|
|
14
|
+
| User path | Resolve and read |
|
|
15
|
+
| Inline text | Capture raw |
|
|
16
|
+
|
|
17
|
+
Confirm: content loaded, frontmatter present, no access restrictions. For multiple: all loaded.
|
|
18
|
+
|
|
19
|
+
## Phase 2: Analysis
|
|
20
|
+
|
|
21
|
+
### Depth Scoring
|
|
22
|
+
| Metric | Assessment |
|
|
23
|
+
|--------|-----------|
|
|
24
|
+
| Lines | SKILL.md length |
|
|
25
|
+
| Concrete rules | "must/never/always/banned" count |
|
|
26
|
+
| Examples | Before/after or usage code blocks |
|
|
27
|
+
| Anti-patterns | Explicit "don't" sections |
|
|
28
|
+
| Workflow steps | Sequential, actionable steps |
|
|
29
|
+
| Routing table | pass/fail/blocker defined |
|
|
30
|
+
|
|
31
|
+
**Score:** High (70-100) = concrete + examples + routing. Medium (30-69) = some structure. Low (0-29) = vague, no rules.
|
|
32
|
+
|
|
33
|
+
### Overlap Detection
|
|
34
|
+
Compare against existing `harness/skills/oh-*` skills. Overlap: none / partial (complementary) / complete (redundant).
|
|
35
|
+
|
|
36
|
+
### Convention Check
|
|
37
|
+
- Clear description for triggering? Actionable instructions? Anti-patterns? Examples? Measurable outcomes? No time-sensitive refs? No platform assumptions?
|
|
38
|
+
|
|
39
|
+
### Report Template
|
|
40
|
+
```markdown
|
|
41
|
+
**Depth:** <0-100> — <High/Medium/Low>
|
|
42
|
+
**Overlap:** <existing skill> — <none/partial/complete>
|
|
43
|
+
**Verdict:** <keep / fuse / discard / ask>
|
|
44
|
+
**Action:** <port directly / fuse with X / discard>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Phase 3: Decision
|
|
48
|
+
|
|
49
|
+
| Verdict | Action |
|
|
50
|
+
|---------|--------|
|
|
51
|
+
| Keep | High signal, no overlap. Port to `oh-<name>`. |
|
|
52
|
+
| Fuse | Partial overlap with existing. Merge complementary DNA. |
|
|
53
|
+
| Discard | Low signal or complete overlap. Surface reasoning. |
|
|
54
|
+
| Ask | Ambiguous quality. Surface findings. |
|
|
55
|
+
|
|
56
|
+
When in doubt: prefer fuse over keep, keep over discard if ANY unique signal.
|
|
57
|
+
|
|
58
|
+
## Phase 4: Adaptation
|
|
59
|
+
|
|
60
|
+
### Frontmatter
|
|
61
|
+
```yaml
|
|
62
|
+
name: oh-<name>
|
|
63
|
+
description: "Adapted from <source>. Core function. Use when ..."
|
|
64
|
+
tier: <2|3|4>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Body Structure
|
|
68
|
+
1. **Summary** — one-paragraph of what the skill does
|
|
69
|
+
2. **When to Use** — clear triggering context
|
|
70
|
+
3. **Workflow** — numbered steps (the core)
|
|
71
|
+
4. **Anti-patterns** — what NOT to do
|
|
72
|
+
5. **Routing** — pass/fail/blocker table
|
|
73
|
+
|
|
74
|
+
### Adaptation Rules
|
|
75
|
+
- Remove emojis. Replace ecosystem terms with OH equivalents.
|
|
76
|
+
- Convert relative paths to OH harness conventions.
|
|
77
|
+
- Add routing table based on the skill's purpose.
|
|
78
|
+
- Keep all concrete rules, examples, and anti-patterns from the original.
|
|
79
|
+
- Discard fluff, philosophy, and motivational language.
|
|
80
|
+
- Preserve the original's unique signal — that's why you're importing it.
|
|
81
|
+
|
|
82
|
+
### Naming
|
|
83
|
+
Match `^[a-z0-9]+(-[a-z0-9]+)*$`, prefix `oh-`. Original name if good fit, adapt if not. Fusion names signal combined purpose.
|
|
84
|
+
|
|
85
|
+
## Phase 5: Fusion (opt — skip for single imports)
|
|
86
|
+
|
|
87
|
+
For each skill being fused, identify:
|
|
88
|
+
- **Unique concepts** — content only this skill has
|
|
89
|
+
- **Overlapping content** — same idea expressed differently (keep the better version)
|
|
90
|
+
- **Conflicting directives** — skills that say opposite things (surface to user)
|
|
91
|
+
|
|
92
|
+
### Merge Architecture
|
|
93
|
+
Structure so each source contributes its strength. Do NOT concatenate — must read as one coherent workflow, not three documents glued together.
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
## Combined Workflow
|
|
97
|
+
### Phase A: <from skill 1>
|
|
98
|
+
### Phase B: <from skill 2>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Naming
|
|
102
|
+
Name signals combined purpose, not individual sources. E.g., `oh-facade` from redesign + design-taste + high-end-visual, not `oh-redesign-plus-taste`.
|
|
103
|
+
|
|
104
|
+
## Phase 6: Integration
|
|
105
|
+
|
|
106
|
+
1. **Create file** → user dir (`~/.config/opencode/skills/oh-<name>/SKILL.md`)
|
|
107
|
+
2. **Wire AUTOPILOT** → add to auto-classify matrix in `harness/codex/AUTOPILOT.md`: signal keywords → classification → "Load **oh-<name>**. Do not ask."
|
|
108
|
+
3. **Wire routing** → add `route:` frontmatter in the skill. Dynamic loading reads `route.pass`, `route.fail`, `route.blocker` directly from `SKILL.md` — no ROUTING.md edit needed. Skill becomes routable automatically.
|
|
109
|
+
4. **Wire AGENTS.md** → add to skills table with tier and purpose. Increment total count.
|
|
110
|
+
5. **Wire openhermes.md** → add to orchestrator's skill list in `harness/agents/openhermes.md`.
|
|
111
|
+
6. **Verify** → route to `oh-skills-link` to confirm OpenCode discovers it.
|
|
112
|
+
|
|
113
|
+
## Anti-patterns
|
|
114
|
+
|
|
115
|
+
- Importing without analysis (always run Phase 2)
|
|
116
|
+
- Keeping everything — ~50% of external skills is fluff
|
|
117
|
+
- Fusing incompatible domains (confusing to model and user)
|
|
118
|
+
- Naming after source ("oh-tailwind-v2") instead of capability ("oh-styles")
|
|
119
|
+
- Skipping route frontmatter — without it, autopilot can't route
|
|
120
|
+
- Overwriting existing routing without checking for collisions
|