From 68848233c4d638e93da13ac41b7c5acf70f3cda7 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Thu, 28 May 2026 14:14:11 +0900 Subject: [PATCH] docs(omo-codex): translate bundled prompts to English --- .../ultrawork/hooks/ultrawork-detector.py | 5 ++--- .../omo-codex/plugin/skills/debugging/SKILL.md | 2 +- .../programming/references/go/bubbletea-v2.md | 16 ++++++++-------- .../programming/references/typescript/README.md | 4 ++-- .../plugin/skills/remove-ai-slops/SKILL.md | 2 +- packages/shared-skills/skills/debugging/SKILL.md | 2 +- .../programming/references/go/bubbletea-v2.md | 16 ++++++++-------- .../programming/references/typescript/README.md | 4 ++-- .../skills/remove-ai-slops/SKILL.md | 2 +- 9 files changed, 26 insertions(+), 27 deletions(-) diff --git a/packages/omo-codex/plugin/components/ultrawork/hooks/ultrawork-detector.py b/packages/omo-codex/plugin/components/ultrawork/hooks/ultrawork-detector.py index 413dd04d1..585c50b5c 100755 --- a/packages/omo-codex/plugin/components/ultrawork/hooks/ultrawork-detector.py +++ b/packages/omo-codex/plugin/components/ultrawork/hooks/ultrawork-detector.py @@ -182,11 +182,10 @@ but NEVER parallelise RED and GREEN of the same criterion. # Verification gate (TRIGGERED, NOT OPTIONAL) Trigger when ANY apply: -- User said "엄밀", "strictly", "rigorously", "properly review", or - explicitly demanded review. +- User demanded strict, rigorous, or proper review. - Task touches 3+ files OR ran 20+ turns OR 30+ minutes wall-clock. - Refactor, migration, performance change, security-sensitive work, or - anything the user called "깊게" / "deeply". + anything the user called deep. Procedure (NON-NEGOTIABLE): 1. Spawn agent_type `codex-ultrawork-reviewer` (or any `gpt-5.2` diff --git a/packages/omo-codex/plugin/skills/debugging/SKILL.md b/packages/omo-codex/plugin/skills/debugging/SKILL.md index 9aacfa3ee..4f5da0452 100644 --- a/packages/omo-codex/plugin/skills/debugging/SKILL.md +++ b/packages/omo-codex/plugin/skills/debugging/SKILL.md @@ -1,6 +1,6 @@ --- name: debugging -description: "MUST USE for any real runtime debugging across ANY language or binary — crashes, silent failures, wrong responses, stuck processes, memory leaks, async misbehavior, unexplained timing, reverse engineering. Runs a hypothesis-driven loop: form ≥3 hypotheses, investigate in parallel, after 2 failed rounds spawn Oracles from orthogonal angles, confirm root cause, lock with a failing test, fix minimally, QA by actually USING the system, scrub artifacts. The actual HOW lives in `references/` — READ THEM. Triggers: 'debug this', 'why is X not working', 'hanging', 'attach a debugger', 'reverse engineer', 'pwndbg', 'gdb', 'lldb', 'node inspect', 'tsx debug', 'pdb', 'dlv', 'delve', 'rust-gdb', 'set a breakpoint', 'context 터진다', '왜 응답이 비어', '디버거 붙여서', '디버깅해봐', '이거 왜 이래', 'trace this bug', 'reproduce and fix', 'silent failure', 'HTTP 200 but empty', '왜 멈춰', '바이너리 까봐', '리버싱', '플레이라이트'." +description: "MUST USE for any real runtime debugging across ANY language or binary — crashes, silent failures, wrong responses, stuck processes, memory leaks, async misbehavior, unexplained timing, reverse engineering. Runs a hypothesis-driven loop: form ≥3 hypotheses, investigate in parallel, after 2 failed rounds spawn Oracles from orthogonal angles, confirm root cause, lock with a failing test, fix minimally, QA by actually USING the system, scrub artifacts. The actual HOW lives in `references/` — READ THEM. Triggers: 'debug this', 'why is X not working', 'hanging', 'attach a debugger', 'reverse engineer', 'pwndbg', 'gdb', 'lldb', 'node inspect', 'tsx debug', 'pdb', 'dlv', 'delve', 'rust-gdb', 'set a breakpoint', 'context window exploded', 'why is the response empty', 'attach the debugger', 'debug it', 'why is this happening', 'trace this bug', 'reproduce and fix', 'silent failure', 'HTTP 200 but empty', 'why did it stop', 'inspect the binary', 'reverse engineering', 'playwright'." --- # Debugging diff --git a/packages/omo-codex/plugin/skills/programming/references/go/bubbletea-v2.md b/packages/omo-codex/plugin/skills/programming/references/go/bubbletea-v2.md index 6e8f44ebb..45eae7020 100644 --- a/packages/omo-codex/plugin/skills/programming/references/go/bubbletea-v2.md +++ b/packages/omo-codex/plugin/skills/programming/references/go/bubbletea-v2.md @@ -10,7 +10,7 @@ The reference implementation this document is distilled from: [`code-yeongyu/bub Bubbletea v1 manages cursor positioning in software ("virtual cursor"). It draws a `█` at the cursor position. The terminal's *real* cursor stays at `(0, 0)`. -This breaks every CJK input method. IME candidate windows (the popup showing 가/각/간 for Korean Hangul composition, kana → kanji for Japanese, pinyin lookup for Chinese) anchor to the terminal's **real** cursor position. With v1, the candidate window appears at top-left while you are typing somewhere in the middle of the screen. +This breaks every CJK input method. IME candidate windows (the popup showing Hangul composition choices for Korean, kana → kanji for Japanese, and pinyin lookup for Chinese) anchor to the terminal's **real** cursor position. With v1, the candidate window appears at top-left while you are typing somewhere in the middle of the screen. Bubbletea v2 fixes this with two changes: @@ -143,7 +143,7 @@ for _, r := range s { } ``` -`lipgloss/v2` uses `go-runewidth` internally — `lipgloss.Width("안녕")` returns 4, not 2. **If you measure outside lipgloss, you must call runewidth directly.** +`lipgloss/v2` uses `go-runewidth` internally — `lipgloss.Width("\u4e2d\u6587")` returns 4, not 2. **If you measure outside lipgloss, you must call runewidth directly.** --- @@ -203,7 +203,7 @@ titleStyle := lipgloss.NewStyle(). Border(lipgloss.RoundedBorder()). BorderForeground(lipgloss.Color("63")) -rendered := titleStyle.Render("안녕하세요") +rendered := titleStyle.Render("\u4e2d\u6587") ``` `lipgloss/v2` width and padding correctly account for CJK display width. v1 did too — this is not a v2-specific fix, just a reminder. @@ -297,18 +297,18 @@ internal/ui/ ```go import "charm.land/bubbletea/v2/teatest" -func TestModel_typing_korean_keeps_cursor_in_position(t *testing.T) { +func TestModel_typing_cjk_keeps_cursor_in_position(t *testing.T) { // Given m := initial() tm := teatest.NewTestModel(t, m, teatest.WithInitialTermSize(80, 24)) - // When — simulate typing "안녕" - tm.Send(tea.KeyPressMsg{Code: '안'}) - tm.Send(tea.KeyPressMsg{Code: '녕'}) + // When — simulate typing two CJK wide characters + tm.Send(tea.KeyPressMsg{Code: '\u4e2d'}) + tm.Send(tea.KeyPressMsg{Code: '\u6587'}) // Then out := tm.FinalOutput(t) - require.Contains(t, string(out), "안녕") + require.Contains(t, string(out), "\u4e2d\u6587") // Cursor should be at column 4 (two wide chars = 4 cells) // ... } diff --git a/packages/omo-codex/plugin/skills/programming/references/typescript/README.md b/packages/omo-codex/plugin/skills/programming/references/typescript/README.md index e71b88fdd..f7c9bd1e0 100644 --- a/packages/omo-codex/plugin/skills/programming/references/typescript/README.md +++ b/packages/omo-codex/plugin/skills/programming/references/typescript/README.md @@ -109,9 +109,9 @@ async function main(): Promise { // no-excuse-ok: catch | Validation | Zod | Runtime validation + type inference | | ORM | Drizzle | Type-safe SQL, no codegen | | HTTP client | `ky` | Thin fetch wrapper (5KB); auto-throw on non-2xx, retry, timeout, hooks, prefixUrl. Browser + Node + Bun + Deno | -| HTTP client (perf) | `undici` (direct API) | Node backend에서 connection pooling, HTTP/2, pipelining 필요 시 | +| HTTP client (perf) | `undici` (direct API) | When a Node backend needs connection pooling, HTTP/2, or pipelining | -> **HTTP client 규칙** — 프로덕션 코드에서 bare `fetch()`는 사용 금지. retry·timeout·에러 핸들링이 전무하여 장애 시 silent failure를 유발한다. **`ky`** 를 기본으로 설치하고, Node backend에서 대량 요청·커넥션 풀·HTTP/2 파이프라이닝이 필요하면 **`undici`** direct API를 쓴다. ~~`axios`~~ 는 supply-chain compromise(2026-03) 이후 사용 금지. `node-fetch`는 Node 18+ 내장 fetch로 대체되어 불필요. +> **HTTP client rule** - production code must not use bare `fetch()`. It has no retry, timeout, or error-handling policy and causes silent failures during incidents. Install **`ky`** by default, and use the **`undici`** direct API when a Node backend needs high-volume requests, connection pooling, HTTP/2, or pipelining. ~~`axios`~~ is forbidden after the supply-chain compromise (2026-03). `node-fetch` is unnecessary because Node 18+ includes built-in fetch. | Testing | `bun test` / vitest | Fast, ESM-native | | Logging | `pino` | Structured JSON, fast | | CLI | `@clack/prompts` + `commander` | Interactive + parsing | diff --git a/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md b/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md index 453b2e597..cae21aca3 100644 --- a/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +++ b/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md @@ -1,6 +1,6 @@ --- name: remove-ai-slops -description: Remove AI-generated code smells (slop) from branch changes or an explicit file list. Locks behavior with regression tests FIRST, then runs categorized cleanup via parallel `deep` agents in batches of 5, then verifies with quality gates. Covers 10 slop categories including performance equivalences, excessive complexity (object annotations, if/elif variant chains), and oversized modules (250+ pure LOC with mandatory modular refactoring). MUST USE when the user asks to "remove slop", "clean AI code", "deslop", "AI 코드 정리", "AI 슬롭 제거", or wants to clean up AI-generated patterns from recent changes. Triggers - "remove ai slops", "clean ai code", "deslop", "cleanup AI generated", "AI 슬롭 제거", "AI 코드 정리해줘", "슬롭 빼라", "ai-slop 정리". +description: Remove AI-generated code smells (slop) from branch changes or an explicit file list. Locks behavior with regression tests FIRST, then runs categorized cleanup via parallel `deep` agents in batches of 5, then verifies with quality gates. Covers 10 slop categories including performance equivalences, excessive complexity (object annotations, if/elif variant chains), and oversized modules (250+ pure LOC with mandatory modular refactoring). MUST USE when the user asks to "remove slop", "clean AI code", "deslop", "clean up AI-generated code", "remove AI slop", or wants to clean up AI-generated patterns from recent changes. Triggers - "remove ai slops", "clean ai code", "deslop", "cleanup AI generated", "remove AI slop", "clean up AI-generated code", "strip slop", "ai-slop cleanup". --- ## Codex Harness Tool Compatibility diff --git a/packages/shared-skills/skills/debugging/SKILL.md b/packages/shared-skills/skills/debugging/SKILL.md index 9aacfa3ee..4f5da0452 100644 --- a/packages/shared-skills/skills/debugging/SKILL.md +++ b/packages/shared-skills/skills/debugging/SKILL.md @@ -1,6 +1,6 @@ --- name: debugging -description: "MUST USE for any real runtime debugging across ANY language or binary — crashes, silent failures, wrong responses, stuck processes, memory leaks, async misbehavior, unexplained timing, reverse engineering. Runs a hypothesis-driven loop: form ≥3 hypotheses, investigate in parallel, after 2 failed rounds spawn Oracles from orthogonal angles, confirm root cause, lock with a failing test, fix minimally, QA by actually USING the system, scrub artifacts. The actual HOW lives in `references/` — READ THEM. Triggers: 'debug this', 'why is X not working', 'hanging', 'attach a debugger', 'reverse engineer', 'pwndbg', 'gdb', 'lldb', 'node inspect', 'tsx debug', 'pdb', 'dlv', 'delve', 'rust-gdb', 'set a breakpoint', 'context 터진다', '왜 응답이 비어', '디버거 붙여서', '디버깅해봐', '이거 왜 이래', 'trace this bug', 'reproduce and fix', 'silent failure', 'HTTP 200 but empty', '왜 멈춰', '바이너리 까봐', '리버싱', '플레이라이트'." +description: "MUST USE for any real runtime debugging across ANY language or binary — crashes, silent failures, wrong responses, stuck processes, memory leaks, async misbehavior, unexplained timing, reverse engineering. Runs a hypothesis-driven loop: form ≥3 hypotheses, investigate in parallel, after 2 failed rounds spawn Oracles from orthogonal angles, confirm root cause, lock with a failing test, fix minimally, QA by actually USING the system, scrub artifacts. The actual HOW lives in `references/` — READ THEM. Triggers: 'debug this', 'why is X not working', 'hanging', 'attach a debugger', 'reverse engineer', 'pwndbg', 'gdb', 'lldb', 'node inspect', 'tsx debug', 'pdb', 'dlv', 'delve', 'rust-gdb', 'set a breakpoint', 'context window exploded', 'why is the response empty', 'attach the debugger', 'debug it', 'why is this happening', 'trace this bug', 'reproduce and fix', 'silent failure', 'HTTP 200 but empty', 'why did it stop', 'inspect the binary', 'reverse engineering', 'playwright'." --- # Debugging diff --git a/packages/shared-skills/skills/programming/references/go/bubbletea-v2.md b/packages/shared-skills/skills/programming/references/go/bubbletea-v2.md index 6e8f44ebb..45eae7020 100644 --- a/packages/shared-skills/skills/programming/references/go/bubbletea-v2.md +++ b/packages/shared-skills/skills/programming/references/go/bubbletea-v2.md @@ -10,7 +10,7 @@ The reference implementation this document is distilled from: [`code-yeongyu/bub Bubbletea v1 manages cursor positioning in software ("virtual cursor"). It draws a `█` at the cursor position. The terminal's *real* cursor stays at `(0, 0)`. -This breaks every CJK input method. IME candidate windows (the popup showing 가/각/간 for Korean Hangul composition, kana → kanji for Japanese, pinyin lookup for Chinese) anchor to the terminal's **real** cursor position. With v1, the candidate window appears at top-left while you are typing somewhere in the middle of the screen. +This breaks every CJK input method. IME candidate windows (the popup showing Hangul composition choices for Korean, kana → kanji for Japanese, and pinyin lookup for Chinese) anchor to the terminal's **real** cursor position. With v1, the candidate window appears at top-left while you are typing somewhere in the middle of the screen. Bubbletea v2 fixes this with two changes: @@ -143,7 +143,7 @@ for _, r := range s { } ``` -`lipgloss/v2` uses `go-runewidth` internally — `lipgloss.Width("안녕")` returns 4, not 2. **If you measure outside lipgloss, you must call runewidth directly.** +`lipgloss/v2` uses `go-runewidth` internally — `lipgloss.Width("\u4e2d\u6587")` returns 4, not 2. **If you measure outside lipgloss, you must call runewidth directly.** --- @@ -203,7 +203,7 @@ titleStyle := lipgloss.NewStyle(). Border(lipgloss.RoundedBorder()). BorderForeground(lipgloss.Color("63")) -rendered := titleStyle.Render("안녕하세요") +rendered := titleStyle.Render("\u4e2d\u6587") ``` `lipgloss/v2` width and padding correctly account for CJK display width. v1 did too — this is not a v2-specific fix, just a reminder. @@ -297,18 +297,18 @@ internal/ui/ ```go import "charm.land/bubbletea/v2/teatest" -func TestModel_typing_korean_keeps_cursor_in_position(t *testing.T) { +func TestModel_typing_cjk_keeps_cursor_in_position(t *testing.T) { // Given m := initial() tm := teatest.NewTestModel(t, m, teatest.WithInitialTermSize(80, 24)) - // When — simulate typing "안녕" - tm.Send(tea.KeyPressMsg{Code: '안'}) - tm.Send(tea.KeyPressMsg{Code: '녕'}) + // When — simulate typing two CJK wide characters + tm.Send(tea.KeyPressMsg{Code: '\u4e2d'}) + tm.Send(tea.KeyPressMsg{Code: '\u6587'}) // Then out := tm.FinalOutput(t) - require.Contains(t, string(out), "안녕") + require.Contains(t, string(out), "\u4e2d\u6587") // Cursor should be at column 4 (two wide chars = 4 cells) // ... } diff --git a/packages/shared-skills/skills/programming/references/typescript/README.md b/packages/shared-skills/skills/programming/references/typescript/README.md index e71b88fdd..f7c9bd1e0 100644 --- a/packages/shared-skills/skills/programming/references/typescript/README.md +++ b/packages/shared-skills/skills/programming/references/typescript/README.md @@ -109,9 +109,9 @@ async function main(): Promise { // no-excuse-ok: catch | Validation | Zod | Runtime validation + type inference | | ORM | Drizzle | Type-safe SQL, no codegen | | HTTP client | `ky` | Thin fetch wrapper (5KB); auto-throw on non-2xx, retry, timeout, hooks, prefixUrl. Browser + Node + Bun + Deno | -| HTTP client (perf) | `undici` (direct API) | Node backend에서 connection pooling, HTTP/2, pipelining 필요 시 | +| HTTP client (perf) | `undici` (direct API) | When a Node backend needs connection pooling, HTTP/2, or pipelining | -> **HTTP client 규칙** — 프로덕션 코드에서 bare `fetch()`는 사용 금지. retry·timeout·에러 핸들링이 전무하여 장애 시 silent failure를 유발한다. **`ky`** 를 기본으로 설치하고, Node backend에서 대량 요청·커넥션 풀·HTTP/2 파이프라이닝이 필요하면 **`undici`** direct API를 쓴다. ~~`axios`~~ 는 supply-chain compromise(2026-03) 이후 사용 금지. `node-fetch`는 Node 18+ 내장 fetch로 대체되어 불필요. +> **HTTP client rule** - production code must not use bare `fetch()`. It has no retry, timeout, or error-handling policy and causes silent failures during incidents. Install **`ky`** by default, and use the **`undici`** direct API when a Node backend needs high-volume requests, connection pooling, HTTP/2, or pipelining. ~~`axios`~~ is forbidden after the supply-chain compromise (2026-03). `node-fetch` is unnecessary because Node 18+ includes built-in fetch. | Testing | `bun test` / vitest | Fast, ESM-native | | Logging | `pino` | Structured JSON, fast | | CLI | `@clack/prompts` + `commander` | Interactive + parsing | diff --git a/packages/shared-skills/skills/remove-ai-slops/SKILL.md b/packages/shared-skills/skills/remove-ai-slops/SKILL.md index 5102d44bf..0eb143a3e 100644 --- a/packages/shared-skills/skills/remove-ai-slops/SKILL.md +++ b/packages/shared-skills/skills/remove-ai-slops/SKILL.md @@ -1,6 +1,6 @@ --- name: remove-ai-slops -description: Remove AI-generated code smells (slop) from branch changes or an explicit file list. Locks behavior with regression tests FIRST, then runs categorized cleanup via parallel `deep` agents in batches of 5, then verifies with quality gates. Covers 10 slop categories including performance equivalences, excessive complexity (object annotations, if/elif variant chains), and oversized modules (250+ pure LOC with mandatory modular refactoring). MUST USE when the user asks to "remove slop", "clean AI code", "deslop", "AI 코드 정리", "AI 슬롭 제거", or wants to clean up AI-generated patterns from recent changes. Triggers - "remove ai slops", "clean ai code", "deslop", "cleanup AI generated", "AI 슬롭 제거", "AI 코드 정리해줘", "슬롭 빼라", "ai-slop 정리". +description: Remove AI-generated code smells (slop) from branch changes or an explicit file list. Locks behavior with regression tests FIRST, then runs categorized cleanup via parallel `deep` agents in batches of 5, then verifies with quality gates. Covers 10 slop categories including performance equivalences, excessive complexity (object annotations, if/elif variant chains), and oversized modules (250+ pure LOC with mandatory modular refactoring). MUST USE when the user asks to "remove slop", "clean AI code", "deslop", "clean up AI-generated code", "remove AI slop", or wants to clean up AI-generated patterns from recent changes. Triggers - "remove ai slops", "clean ai code", "deslop", "cleanup AI generated", "remove AI slop", "clean up AI-generated code", "strip slop", "ai-slop cleanup". --- # Remove AI Slops Skill