Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .agents/hooks/core/serena-primer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ export function primerContext(): string {
"- Code discovery / reading: `get_symbols_overview`, `find_symbol`, `find_referencing_symbols`, `search_for_pattern`.",
"- Code edits: `replace_symbol_body`, `insert_after_symbol`, `insert_before_symbol`, `replace_content`.",
"- Native grep/glob: only for initial filename/path discovery. Do not fall back to grep + Read for code navigation just because Serena's tools aren't loaded yet — load them.",
"- Exception — MCP timeout: if a Serena MCP call times out or hangs (seen mainly in OpenCode Desktop's long-lived sidecar), stop retrying MCP for this session: use native search/read for code, and access `.serena/memories/` files directly (or `serena memories read|write` when Serena CLI ≥ 1.5 is installed) for memory work. A full app relaunch restores Serena MCP.",
].join("\n");
}

Expand Down
6 changes: 4 additions & 2 deletions .agents/hooks/core/triggers.json
Original file line number Diff line number Diff line change
Expand Up @@ -2067,7 +2067,8 @@
"react",
"tailwind",
"tsx",
"frontend"
"frontend",
"angular"
],
"en": [
"make a react component",
Expand All @@ -2086,7 +2087,8 @@
"넥스트 페이지",
"tailwind로 스타일",
"shadcn 붙여줘",
"프론트 구현"
"프론트 구현",
"앵귤러"
],
"ja": [
"reactコンポーネント",
Expand Down
82 changes: 0 additions & 82 deletions .agents/skills/_shared/core/evaluator-tuning.md

This file was deleted.

8 changes: 4 additions & 4 deletions .agents/skills/_shared/core/session-metrics.md
Original file line number Diff line number Diff line change
Expand Up @@ -191,14 +191,14 @@ Unlike CD (tracked in real-time), Evaluator Accuracy (EA) is a
|-------|--------|-----------------|
| `false_negative` | +30 | Next session or production: bug that QA missed |
| `false_positive` | +15 | During session: impl agent disputes QA finding successfully |
| `severity_mismatch` | +10 | During session or retro: wrong severity assigned |
| `severity_mismatch` | +10 | During session or next-session review: wrong severity assigned |
| `missed_stub` | +20 | During session: runtime verification catches display-only feature |
| `good_catch` | -10 | During session: QA caught non-obvious bug (reward signal) |

### Recording

- `false_positive`, `missed_stub`, `good_catch`: Recorded during session by Orchestrator
- `false_negative`, `severity_mismatch`: Recorded retroactively via `oma retro` or next session discovery
- `false_negative`, `severity_mismatch`: Recorded retroactively on next-session discovery

### Evaluator Accuracy Score (EA)

Expand All @@ -210,10 +210,10 @@ EA = sum(accuracy_event_points across last 3 sessions)

| Threshold | Action |
|-----------|--------|
| EA >= 30 | **TUNING SUGGESTED**: `oma retro` flags QA patterns for review |
| EA >= 30 | **TUNING SUGGESTED**: Review accumulated EA events for recurring QA judgment errors |
| EA >= 50 | **TUNING REQUIRED**: Review and update QA execution-protocol.md |
| `false_negative` >= 3 across window | **CHECKLIST UPDATE**: Add detection pattern to QA checklist.md |
| `good_catch` >= 5 across window | **PROPAGATE**: Document successful pattern in evaluator-tuning.md |
| `good_catch` >= 5 across window | **PROPAGATE**: Generalize the successful pattern into `common-checklist.md` |

### Accuracy Log Format

Expand Down
19 changes: 19 additions & 0 deletions .agents/skills/_shared/runtime/execution-protocols/opencode.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,25 @@ If Serena MCP is available, use `read_memory`/`write_memory`/`edit_memory` (its
base path is `.serena/memories`); otherwise write the same files there directly with
opencode's file tools.

### Serena MCP Timeout Recovery (OpenCode Desktop)

OpenCode Desktop runs one long-lived sidecar server; new sessions reuse its MCP clients,
so a stuck Serena MCP stays stuck until the Desktop app is fully relaunched (the TUI is
rarely affected). When a Serena MCP call times out or the MCP queue is clearly stuck, do
not keep retrying MCP — fall back narrowly:

1. **Memory ops** — read/write the same files directly under `.serena/memories/` (as
above). If a recent Serena CLI is installed (≥ 1.5, check `serena --version`),
`serena memories read|write|list` is an equivalent alternative; older versions
(e.g. 1.3.x) do not have the `memories` command.
2. **Code analysis** — fall back to native search/read tools. The Serena CLI cannot
execute analysis tools (`serena tools` only lists/describes them).
3. **Diagnostics** — `serena project health-check` and `serena project index` work
without MCP.

Keep the fallback scoped to the blocked call: this is a recovery path, not a license to
abandon Serena-first. A full Desktop relaunch is what actually resets the stale MCP client.

### Path Resolution (CRITICAL)

All result, progress, and state files MUST be written to the **project root** `.serena/memories/` directory, never to a subdirectory's `.serena/memories/`.
Expand Down
4 changes: 2 additions & 2 deletions .agents/skills/_version.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"version": "10.7.1",
"version": "10.10.0",
"schemaVersion": 2,
"mode": "project",
"installedAt": "2026-06-28T01:08:28.353Z"
"installedAt": "2026-07-06T12:39:22.805Z"
}
24 changes: 22 additions & 2 deletions .agents/skills/oma-design/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ DESIGN.md is the central artifact; all design work revolves around it.
- Creating or auditing `DESIGN.md`
- Selecting typography, color, layout, motion, or component direction
- Reviewing UI work for responsive behavior, accessibility, and visual quality
- Redesigning an existing site or app (preserve vs overhaul modes)
- Using optional vendor inspiration from Stitch MCP or getdesign

### When NOT to use
Expand Down Expand Up @@ -81,6 +82,7 @@ outputs:

### Transitions
- If `.design-context.md` is missing, create it before continuing.
- If the target is an existing site/app, load `resources/redesign-protocol.md` and classify Preserve vs Overhaul before proposing.
- If CJK support is needed, prioritize CJK-ready fonts.
- If vendor seed fetch fails, choose retry, continue without seed, or abort.
- If anti-patterns appear, surface alternatives before finalizing.
Expand Down Expand Up @@ -151,12 +153,16 @@ bunx getdesign@latest list
8. WCAG AA minimum for all designs. Respect `prefers-reduced-motion`.
9. Stitch MCP is optional; all phases work without it.
10. Present 2-3 design directions and get user confirmation before generating.
11. Declare a one-line Design Read before proposing: "Reading this as: \<page kind> for \<audience>, with a \<vibe> language." If genuinely ambiguous, ask exactly ONE clarifying question — never guess, never a question dump.
12. Redesigns follow `resources/redesign-protocol.md`: detect Preserve vs Overhaul, audit before touching, never silently change URLs, nav labels, form field names, or brand marks.
13. Visual assets follow `resources/asset-strategy.md`: image generation (oma-image) first, picsum seed second, labeled placeholder last. Div-based fake screenshots are banned.
14. Consistency locks: one accent color, one corner-radius system, one theme per page. Lock them early, audit against them in Phase 6 (checklist section 6 mechanical checks).

### Anti-Pattern Quick Reference

### Typography
- DON'T: Default to custom Google Fonts when system fonts suffice
- DON'T: Use Inter/Geist alone without considering project context
- DON'T: Reach for Inter as the default custom sans (LLM signature); override only on explicit neutral/Linear-style ask or public-sector/a11y-first brief
- DON'T: Load 3+ font families without justification
- DON'T: Body text below 16px on mobile
- DO: System font stack first, custom fonts for brand identity only
Expand Down Expand Up @@ -190,9 +196,21 @@ bunx getdesign@latest list
### Components
- DON'T: Glassmorphism everywhere; use sparingly
- DON'T: Hover-only interactions without touch/keyboard alternatives
- DON'T: Default to lucide-react or hand-rolled SVG icons; pick one family deliberately (Phosphor > HugeIcons > Radix > Tabler; lucide on explicit ask or existing dependency)
- DO: shadcn/ui for base, Aceternity UI / React Bits for accent effects
- DO: All interactive elements must have visible focus states

### Content & Copy
- DON'T: "John Doe" personas, "Acme/Nexus" brand names, Lorem Ipsum, fake-perfect numbers (99.99%)
- DON'T: Filler verbs ("Elevate", "Seamless", "Unleash") or performative labels ("Quietly trusted by")
- DON'T: Em-dash (`—`) anywhere in visible output — zero tolerance, no "sparingly" allowance; en-dash as separator also banned (hyphen only)
- DO: Copy self-audit before handoff — re-read every visible string, rewrite anything broken or AI-cute
- DO: One label per CTA intent per page

### Assets
- DON'T: Div-based fake screenshots; text wordmark logo walls; hand-rolled SVG icons
- DO: oma-image generation first → picsum seed → labeled placeholder + report

### Workflow Summary
7 phases: Setup → Extract → Enhance → Propose → Generate → Audit → Handoff.
See `resources/execution-protocol.md` for full detail.
Expand Down Expand Up @@ -235,12 +253,14 @@ injection defenses, and multi-vendor merge policy live in
### Resources
- `resources/execution-protocol.md`: 7-phase workflow
- `resources/anti-patterns.md`: Full DO/DON'T catalog
- `resources/checklist.md`: Audit checklist (Responsive + WCAG + Nielsen + Slop)
- `resources/checklist.md`: Audit checklist (Responsive + WCAG + Nielsen + Slop + Mechanical counts)
- `resources/design-md-spec.md`: DESIGN.md generation guide (9 sections)
- `resources/design-tokens.md`: CSS/Tailwind/shadcn export templates
- `resources/prompt-enhancement.md`: Vague request to detailed spec
- `resources/stitch-integration.md`: Stitch MCP tool mapping (optional)
- `resources/getdesign-fetcher.md`: Vendor seed fetch, hash verify, seed rules
- `resources/redesign-protocol.md`: Preserve/Overhaul modes, audit-first, modernization levers
- `resources/asset-strategy.md`: Image sourcing priority, logo walls, fake-screenshot ban
- `resources/error-playbook.md`: Design error recovery

## References
Expand Down
43 changes: 42 additions & 1 deletion .agents/skills/oma-design/resources/anti-patterns.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

## Typography
- DON'T: Default to custom Google Fonts when system fonts suffice
- DON'T: Use Inter or Geist alone without considering project context
- DON'T: Reach for Inter as the default custom sans. When a custom font is justified (brand identity), pick deliberately from alternatives first (Geist, Outfit, Cabinet Grotesk, Satoshi, or a brand-appropriate face). Inter-by-reflex is the LLM signature. OVERRIDE: Inter is acceptable when the user explicitly asks for a neutral / standard / Linear-style feel, or the brief is public-sector / accessibility-first. CJK rules always win (Pretendard Variable / Noto Sans CJK)
- DON'T: Load 3+ font families without clear justification
- DON'T: Set body text below 16px on mobile
- DON'T: Use light font-weight (300) for body on dark backgrounds without testing contrast
Expand Down Expand Up @@ -63,6 +63,47 @@
- DO: Use Intersection Observer to trigger animations only when visible
- DO: Pause off-screen Canvas/WebGL renderers

## Content & Copy
- DON'T: Generic persona names ("John Doe", "Jane Smith") or slop brand names ("Acme", "Nexus", "SmartFlow", "Cloudly")
- DON'T: Fake-perfect numbers (99.99%, 50%, 1234567); use organic data (47.2%) or label mocks explicitly
- DON'T: Fake-precise specs the brand never claimed (invented "5.8mm", "4.1x" for spec aesthetics)
- DON'T: Filler verbs — "Elevate", "Seamless", "Unleash", "Next-Gen", "Revolutionize", "Game-changer"
- DON'T: Lorem Ipsum; write real draft copy
- DON'T: Poetic/performative section labels ("From the field", "Quietly trusted by", "On our desks"); use plain functional labels ("Testimonials", "Latest writing") or none
- DON'T: Section-number eyebrows ("001 · Capabilities", "06 · how it works") or version labels in the hero (BETA, V0.6) unless the brief is a launch
- DON'T: Scroll cues ("Scroll to explore", animated mouse icons) or decorative locale/time/weather strips
- DON'T: Mix copy registers (technical mono + editorial prose + marketing punch) in one page without brand justification
- DON'T: Quotes longer than 3 lines; attribution is name + role, never name only ("- Sarah")
- DON'T: Em-dash (`—`) ANYWHERE in visible output — the #1 LLM stylistic tell. Zero tolerance: banned in headlines, eyebrows, pills, body copy, quotes, attribution, captions, button text, and alt text. No "sparingly" allowance — the model ignores soft limits. Restructure instead: two sentences, a comma, parentheses, or a colon
- DON'T: En-dash (`–`) as a separator; date ranges (2018-2026) and number ranges use a plain hyphen. The only permitted dashes are the hyphen (`-`) and the math minus sign
- DO: Copy self-audit before handoff — re-read every visible string; rewrite anything grammatically broken, unclear-referent, or AI-cute. Plain functional copy beats clever broken copy
- DO: One label per CTA intent across the page
- DO: Apply register rules per content language (CJK copy follows i18n-guide)

## Consistency Locks
- DON'T: Introduce a second accent color mid-page (a rose-accented site does not get a teal badge in the footer)
- DON'T: Mix corner-radius systems without a documented rule (round buttons in a square layout is broken design)
- DON'T: Invert theme for a single section mid-page (one light warm-paper section inside a dark page reads as a paste accident)
- DO: Pick accent, radius scale, and theme ONCE per page; lock them; audit every component against the locks before handoff
- DO: If a deliberate full theme switch is a composition device, use it at most once per page with a strong transition

## Assets & Imagery
- DON'T: Div-based fake screenshots (fake dashboards, task lists, terminal windows built from styled divs) — the #1 AI-design tell
- DON'T: Text-only pages passing as "minimalism"; even restrained pages need 2-3 real images
- DON'T: Plain text wordmarks in "Trusted by" logo walls; use real SVG logos or generated monogram marks
- DON'T: Hand-rolled SVG icons or decorative illustrations by default
- DON'T: Pills/labels overlaid on images, photo-credit captions as decoration, guessed Unsplash URLs
- DO: Source priority: image generation (oma-image) → picsum seed → labeled placeholder slot + tell the user
- DO: See `resources/asset-strategy.md` for full rules

## Iconography
- DON'T: Default to `lucide-react`. It ships with shadcn/ui, so every AI-generated site carries the same icon set. OVERRIDE: acceptable when the user explicitly asks for it, or the project already depends on it (including shadcn base components — never mix families to escape it)
- DON'T: Hand-roll SVG icon paths. If a glyph is missing, install a second allowed library or compose from primitives
- DON'T: Mix icon families in one component tree (no Phosphor + Lucide together)
- DON'T: Inconsistent stroke widths; standardize strokeWidth globally (e.g. 1.5 or 2.0)
- DO: Pick deliberately, priority order: `@phosphor-icons/react` > `hugeicons-react` > `@radix-ui/react-icons` > `@tabler/icons-react`
- DO: One icon family per project, declared in DESIGN.md

## Components
- DON'T: Glassmorphism on every element; reserve for badges, nav pills, accent cards
- DON'T: Icon + Title + Description card grid as the only layout pattern
Expand Down
Loading