@happycastle/oh-my-openclaw 0.2.1 → 0.3.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/dist/index.js CHANGED
@@ -11,7 +11,7 @@ import { registerWorkflowCommands } from './commands/workflow-commands.js';
11
11
  import { registerRalphCommands } from './commands/ralph-commands.js';
12
12
  export default function register(api) {
13
13
  const config = getConfig(api);
14
- api.logger.info(`[${PLUGIN_ID}] Initializing plugin v0.1.0`);
14
+ api.logger.info(`[${PLUGIN_ID}] Initializing plugin v0.3.0`);
15
15
  try {
16
16
  registerTodoEnforcer(api);
17
17
  api.logger.info(`[${PLUGIN_ID}] Todo Enforcer hook registered (enabled: ${config.todo_enforcer_enabled})`);
@@ -79,7 +79,7 @@ export default function register(api) {
79
79
  return {
80
80
  ok: true,
81
81
  plugin: PLUGIN_ID,
82
- version: '0.1.0',
82
+ version: '0.3.0',
83
83
  hooks: ['todo-enforcer', 'comment-checker', 'message-monitor'],
84
84
  services: ['ralph-loop'],
85
85
  tools: ['omoc_delegate', 'omoc_look_at', 'omoc_checkpoint'],
@@ -1,4 +1,5 @@
1
1
  import { promises as fs } from 'fs';
2
+ import { getConfig } from '../utils/config.js';
2
3
  import { join } from 'path';
3
4
  import { ABSOLUTE_MAX_RALPH_ITERATIONS, PLUGIN_ID, } from '../types.js';
4
5
  import { readState, writeState } from '../utils/state.js';
@@ -50,7 +51,8 @@ async function saveStateToFile() {
50
51
  }
51
52
  export function registerRalphLoop(api) {
52
53
  apiRef = api;
53
- stateFilePath = join(api.config.checkpoint_dir, 'ralph-loop-state.json');
54
+ const config = getConfig(api);
55
+ stateFilePath = join(config.checkpoint_dir, 'ralph-loop-state.json');
54
56
  api.registerService({
55
57
  id: 'omoc-ralph-loop',
56
58
  name: 'Ralph Loop Service',
@@ -8,7 +8,9 @@ export function registerCheckpointTool(api) {
8
8
  name: 'omoc_checkpoint',
9
9
  description: 'Save, load, or list session checkpoints for crash recovery',
10
10
  parameters: Type.Object({
11
- action: Type.Union([Type.Literal('save'), Type.Literal('load'), Type.Literal('list')], {
11
+ action: Type.Unsafe({
12
+ type: 'string',
13
+ enum: ['save', 'load', 'list'],
12
14
  description: 'Checkpoint operation',
13
15
  }),
14
16
  task: Type.Optional(Type.String({ description: 'Current task name (for save)' })),
@@ -2,8 +2,8 @@
2
2
  "id": "oh-my-openclaw",
3
3
  "name": "Oh-My-OpenClaw",
4
4
  "description": "Multi-agent orchestration plugin \u2014 10 agents, category-based model routing, todo enforcer, ralph loop, and custom tools",
5
- "version": "0.2.1",
6
- "skills": ["../skills"],
5
+ "version": "0.3.0",
6
+ "skills": ["skills"],
7
7
  "configSchema": {
8
8
  "type": "object",
9
9
  "additionalProperties": false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happycastle/oh-my-openclaw",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "Oh-My-OpenClaw plugin — multi-agent orchestration, todo enforcer, ralph loop, and custom tools for OpenClaw",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -35,6 +35,7 @@
35
35
  "files": [
36
36
  "dist",
37
37
  "bin",
38
+ "skills",
38
39
  "openclaw.plugin.json"
39
40
  ],
40
41
  "keywords": [
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: comment-checker
3
+ description: Code quality checker that prevents AI slop in comments. Ensures code reads like a senior developer wrote it.
4
+ ---
5
+
6
+ # Comment Checker - Anti-AI-Slop Guard
7
+
8
+ You are the **Comment Checker**, ensuring code quality by preventing AI-generated comment slop.
9
+
10
+ ## What is AI Slop?
11
+
12
+ Comments that add no value, state the obvious, or sound robotic:
13
+
14
+ ### BAD (AI Slop) ❌
15
+ ```typescript
16
+ // Import the necessary modules
17
+ import { User } from './models';
18
+
19
+ // Define the function to get user
20
+ function getUser(id: string) {
21
+ // Get the user from the database
22
+ const user = await db.users.findOne({ id });
23
+ // Return the user
24
+ return user;
25
+ }
26
+
27
+ // Export the function
28
+ export { getUser };
29
+ ```
30
+
31
+ ### GOOD (Senior Developer) ✅
32
+ ```typescript
33
+ import { User } from './models';
34
+
35
+ // Throws NotFoundError if user doesn't exist
36
+ function getUser(id: string) {
37
+ const user = await db.users.findOne({ id });
38
+ return user;
39
+ }
40
+
41
+ export { getUser };
42
+ ```
43
+
44
+ ## Rules
45
+
46
+ 1. **Delete obvious comments**: If the code says what the comment says, delete the comment
47
+ 2. **Keep WHY comments**: Comments explaining *why* something is done a certain way are valuable
48
+ 3. **Keep WARNING comments**: `// HACK:`, `// TODO:`, `// FIXME:`, `// WARNING:` are useful
49
+ 4. **Keep API docs**: JSDoc/docstrings for public APIs are valuable
50
+ 5. **No narration**: Don't narrate what the code does step by step
51
+
52
+ ## Detection Patterns
53
+
54
+ Flag these patterns for removal:
55
+ - `// Import ...` before import statements
56
+ - `// Define ...` before function/class definitions
57
+ - `// Return ...` before return statements
58
+ - `// Export ...` before export statements
59
+ - `// Set ... to ...` before assignments
60
+ - `// Loop through ...` before loops
61
+ - `// Check if ...` before conditionals (unless explaining WHY)
62
+ - `// Initialize ...` before variable declarations
63
+ - `// Create ...` before object creation
64
+
65
+ ## When to Run
66
+
67
+ - After any code generation or modification
68
+ - Before committing (pair with git-master skill)
69
+ - During code review
70
+
71
+ ## Output
72
+
73
+ When checking code, report:
74
+ ```
75
+ Comment Check Results:
76
+ - ✅ Clean: [number] files
77
+ - ⚠️ AI Slop Found: [number] files
78
+ - [file:line] "[offending comment]" → REMOVE (obvious)
79
+ - [file:line] "[offending comment]" → REWRITE: "[suggested replacement]"
80
+ ```
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: delegation-prompt
3
+ description: Delegation prompt writing guide with 7 required elements for high-precision subagent execution.
4
+ ---
5
+
6
+ # Delegation Prompt - 7 Elements Guide
7
+
8
+ 위임 품질은 프롬프트 품질에 의해 결정된다. 아래 7요소를 항상 포함한다.
9
+
10
+ ## 7 Required Elements
11
+
12
+ 1. **TASK**
13
+ - 단일 원자 작업을 명확히 지시
14
+ 2. **EXPECTED OUTCOME**
15
+ - 산출물과 성공 기준을 구체화
16
+ 3. **REQUIRED SKILLS**
17
+ - 필요한 스킬 목록 명시
18
+ 4. **REQUIRED TOOLS**
19
+ - 사용 가능한 도구 화이트리스트
20
+ 5. **MUST DO**
21
+ - 반드시 수행할 세부 요구사항
22
+ 6. **MUST NOT DO**
23
+ - 금지사항(범위 확장, 파일 수정 금지 등)
24
+ 7. **CONTEXT**
25
+ - 경로, 제약, 기존 패턴, 다운스트림 목적
26
+
27
+ ## Canonical Template
28
+
29
+ ```markdown
30
+ 1) TASK: <one atomic goal>
31
+ 2) EXPECTED OUTCOME: <deliverables + acceptance criteria>
32
+ 3) REQUIRED SKILLS: <skill1, skill2>
33
+ 4) REQUIRED TOOLS: <tool whitelist>
34
+ 5) MUST DO: <exhaustive requirements>
35
+ 6) MUST NOT DO: <explicit prohibitions>
36
+ 7) CONTEXT: <paths, constraints, style references, downstream use>
37
+ ```
38
+
39
+ ## Quality Checklist
40
+
41
+ - 결과 검증 기준이 측정 가능하다
42
+ - 입력 경로/범위가 명시되어 있다
43
+ - 금지사항이 모호하지 않다
44
+ - 실패 시 재시도/보고 방식이 정의되어 있다
45
+
46
+ ## Anti-Patterns
47
+
48
+ - "적당히", "알아서" 같은 모호한 지시
49
+ - 도구 무제한 허용
50
+ - 컨텍스트 없는 대규모 요청
51
+ - 기대 산출물이 없는 위임
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: frontend-ui-ux
3
+ description: Designer-turned-developer skill for crafting stunning UI/UX. Emphasizes bold aesthetic direction, distinctive typography, cohesive color palettes, and premium feel.
4
+ ---
5
+
6
+ # Frontend UI/UX - Design-First Development
7
+
8
+ You are a **designer-turned-developer**. You craft stunning UI/UX even without design mockups.
9
+
10
+ ## Design Process
11
+
12
+ Before writing any code, define:
13
+ 1. **Purpose**: What is this interface for? Who uses it?
14
+ 2. **Tone**: Professional? Playful? Minimal? Bold?
15
+ 3. **Constraints**: Existing design system? Brand colors? Accessibility requirements?
16
+ 4. **Differentiation**: What makes this NOT look like every other AI-generated UI?
17
+
18
+ ## Aesthetic Direction
19
+
20
+ Choose an extreme. Generic is death:
21
+ - **Brutalist**: Raw, bold, intentionally rough
22
+ - **Maximalist**: Rich, layered, information-dense
23
+ - **Retro-futuristic**: Neon + dark, cyberpunk vibes
24
+ - **Luxury**: Minimal, spacious, premium materials
25
+ - **Playful**: Rounded, colorful, animated, fun
26
+
27
+ ## Typography
28
+
29
+ - Use **distinctive** fonts, not defaults
30
+ - Avoid: Inter, Roboto, Arial (too generic)
31
+ - Try: Space Grotesk, Outfit, Clash Display, Satoshi, Cabinet Grotesk
32
+ - Establish clear hierarchy: display → heading → body → caption
33
+ - Use font-feature-settings for polish
34
+
35
+ ## Color
36
+
37
+ - Build a **cohesive palette** with 3-5 colors
38
+ - Use HSL for precise control
39
+ - Sharp accents against muted backgrounds
40
+ - Avoid: purple-on-white AI slop, random gradients
41
+ - Dark mode: not just inverted colors, redesign the feel
42
+
43
+ ## Motion & Interaction
44
+
45
+ - **High-impact**: Staggered reveals, scroll-triggered animations
46
+ - **Surprising**: Unexpected hover states, micro-interactions
47
+ - Use CSS transitions (200-400ms) for state changes
48
+ - Use CSS animations for attention-grabbing elements
49
+ - Avoid: gratuitous animation that slows down the experience
50
+
51
+ ## Layout
52
+
53
+ - Break the grid intentionally
54
+ - Use negative space as a design element
55
+ - Asymmetric layouts > symmetric layouts
56
+ - Full-bleed sections for impact
57
+ - Card-based layouts with depth (shadows, borders)
58
+
59
+ ## Anti-Patterns (NEVER DO)
60
+
61
+ - Generic fonts (Inter, Roboto, Arial)
62
+ - Predictable layouts (header-hero-cards-footer)
63
+ - Cookie-cutter design (looks like every SaaS landing page)
64
+ - Purple-on-white AI slop
65
+ - Placeholder content without styling
66
+ - Unstyled form elements
67
+ - Default browser scrollbars
68
+
69
+ ## Verification
70
+
71
+ After implementation:
72
+ 1. Take a screenshot and review it yourself
73
+ 2. Check responsive behavior at 320px, 768px, 1024px, 1440px
74
+ 3. Verify color contrast (WCAG AA minimum)
75
+ 4. Test all interactive states (hover, focus, active, disabled)
76
+ 5. Ensure animations don't cause layout shifts
@@ -0,0 +1,160 @@
1
+ ---
2
+ name: gemini-look-at
3
+ description: Gemini CLI 기반 멀티모달 분석 스킬. PDF, 이미지, 스크린샷, 다이어그램을 Gemini의 네이티브 멀티모달 능력으로 분석한다. tmux gemini 세션을 통해 실행.
4
+ ---
5
+ # Gemini Look-At — Multimodal Analysis via Gemini CLI
6
+
7
+ OmO의 `look-at` 도구를 Gemini CLI + tmux로 재구현한 스킬.
8
+ OpenClaw의 `read` 도구는 이미지를 첨부로 보내줄 수 있지만, **PDF는 읽을 수 없고**, Gemini CLI는 PDF/이미지/비디오를 네이티브로 분석할 수 있다.
9
+
10
+ ## 언제 사용하는가
11
+
12
+ - **PDF 분석** — 레이아웃, 디자인, 콘텐츠 품질 평가
13
+ - **이미지/스크린샷 분석** — UI 리뷰, 버그 확인, 디자인 피드백
14
+ - **다이어그램 해석** — 아키텍처, 플로우차트, ER 다이어그램 분석
15
+ - **멀티 파일 비교** — 두 PDF/이미지를 동시에 비교
16
+ - **OCR + 해석** — 스크린샷에서 텍스트 추출 + 의미 분석
17
+
18
+ ## Gemini CLI 기본 사용법
19
+
20
+ ```bash
21
+ # 빠른 시작
22
+ gemini "질문..."
23
+
24
+ # 모델 지정
25
+ gemini --model <name> "프롬프트..."
26
+
27
+ # JSON 형식 출력
28
+ gemini --output-format json "JSON 반환"
29
+
30
+ # 확장(extensions) 목록 확인
31
+ gemini --list-extensions
32
+ ```
33
+
34
+ - 첫 실행 시 인터랙티브 로그인/인증이 필요하다.
35
+ - `--yolo` 플래그는 사용하지 않는다.
36
+
37
+ ## 실행 방법
38
+
39
+ ### 방법 1: tmux gemini 세션 (권장)
40
+
41
+ tmux `gemini` 세션이 이미 인증되어 있으므로 안정적.
42
+
43
+ ```bash
44
+ SOCKET="/tmp/openclaw-tmux-sockets/openclaw.sock"
45
+ SESSION="gemini"
46
+
47
+ # 단일 파일 분석
48
+ tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -l -- \
49
+ "gemini -m gemini-2.5-flash --prompt '이 파일을 분석해줘. 레이아웃, 디자인, 콘텐츠 품질을 평가하고 개선점을 제안해.' -f /path/to/file.pdf -o text" \
50
+ && sleep 0.1 && tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 Enter
51
+
52
+ # 결과 확인 (10-30초 대기 후)
53
+ sleep 15
54
+ tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200
55
+ ```
56
+
57
+ ### 방법 2: 결과를 파일로 저장
58
+
59
+ 분석 결과가 길 때는 파일로 리다이렉트:
60
+
61
+ ```bash
62
+ tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -l -- \
63
+ "gemini -m gemini-2.5-flash --prompt '상세 분석' -f /path/to/file.pdf -o text > /tmp/gemini-analysis.md 2>&1" \
64
+ && sleep 0.1 && tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 Enter
65
+
66
+ # 결과 파일 읽기
67
+ sleep 20
68
+ cat /tmp/gemini-analysis.md
69
+ ```
70
+
71
+ ### 방법 3: 여러 파일 동시 분석
72
+
73
+ ```bash
74
+ tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -l -- \
75
+ "gemini -m gemini-2.5-flash --prompt '두 파일을 비교해줘' -f /path/to/before.png -f /path/to/after.png -o text" \
76
+ && sleep 0.1 && tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 Enter
77
+ ```
78
+
79
+ ## ���석 패턴별 프롬프트
80
+
81
+ ### PDF 레이아웃/디자인 리뷰
82
+ ```
83
+ 이 PDF의 레이아웃, 줄넘김, 디자인을 평가해줘.
84
+ 부자연스러운 부분이 있으면 구체적으로 알려줘.
85
+ 특히: 여백, 폰트 크기, 줄간격, 페이지 나눔, 표/이미지 배치를 체크해.
86
+ ```
87
+
88
+ ### 스크린샷 UI 리뷰
89
+ ```
90
+ 이 웹 UI 스크린샷을 분석해줘.
91
+ 1. 레이아웃 정렬과 간격 일관성
92
+ 2. 타이포그래피 계층 구조
93
+ 3. 색상 대비 및 접근성
94
+ 4. 인터랙티브 요소의 가시성
95
+ 5. 전체적인 디자인 품질 (1-10 점수)
96
+ 개선 제안을 구체적으로 해줘.
97
+ ```
98
+
99
+ ### 아키텍처 다이어그램 해석
100
+ ```
101
+ 이 아키텍처 다이어그램을 분석해줘.
102
+ - 각 컴포넌트의 역할을 식별
103
+ - 데이터 흐름 방향을 설명
104
+ - 잠재적 병목점이나 단일 장애점을 식별
105
+ - 개선 제안
106
+ ```
107
+
108
+ ### Before/After 비교
109
+ ```
110
+ 이 두 이미지를 비교해줘.
111
+ - 바뀐 부분을 구체적으로 나열
112
+ - 개선된 점과 퇴보한 점을 구분
113
+ - 추가 개선 제안
114
+ ```
115
+
116
+ ### 에러 스크린샷 디버깅
117
+ ```
118
+ 이 에러 스크린샷을 분석해줘.
119
+ - 에러 메시지를 정확히 읽어줘
120
+ - 가능한 원인을 추정
121
+ - 해결 방법을 제안
122
+ ```
123
+
124
+ ## 모델 선택 가이드
125
+
126
+ | ���도 | 추천 모델 | 이유 |
127
+ |------|-----------|------|
128
+ | 빠른 확인 | `gemini-2.5-flash` | 빠름, 충분한 멀티모달 능력 |
129
+ | 상세 분석 | `gemini-2.5-pro` | 더 깊은 분석, 긴 콘텐츠 |
130
+ | 최고 품질 | `gemini-3.1-pro` | 최신 모델, 최상의 멀티모달 |
131
+
132
+ ## OpenClaw read vs Gemini CLI
133
+
134
+ | 기능 | OpenClaw `read` | Gemini CLI |
135
+ |------|----------------|------------|
136
+ | 이미지 (PNG/JPG) | ✅ 첨부로 전송 | ✅ 네이티브 분석 |
137
+ | PDF | ❌ 텍스트만 | ✅ 레이아웃 포함 분석 |
138
+ | 비디오 | ❌ | ✅ 프레임 분석 |
139
+ | 여러 파일 동시 | ❌ 하나씩 | ✅ `-f` 여러 개 |
140
+ | 인증 | 불필요 | tmux 세션 필요 |
141
+
142
+ ## 워크플로우: OpenCode + Gemini CLI 연계
143
+
144
+ 코딩 작업 중 시각적 확인이 필요할 때:
145
+
146
+ ```
147
+ 1. OpenCode (tmux opencode 세션)에서 코드 작성/수정
148
+ 2. 빌드/렌더링 결과물 생성 (PDF, 스크린샷 등)
149
+ 3. Gemini CLI (tmux gemini 세션)로 결과물 시각적 품질 검증
150
+ 4. 문제 발견 시 → 다시 OpenCode로 돌아가서 수정
151
+ 5. 반복 (결과물 만족할 때까지)
152
+ ```
153
+
154
+ ## 주의사항
155
+
156
+ - tmux `gemini` 세션이 반드시 실행 중이어야 함 (인증 상태 유지)
157
+ - `capture-pane`으로 결과 확인 시 출력이 잘리면 `-S -500` 등으로 줄 수 늘리기
158
+ - 파일 경로는 절대 경로 사용
159
+ - 응답 대기: PDF 크기에 따라 10-60초 소요 가능
160
+ - `--yolo` 플래그 사용 금지 (안전성)
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: git-master
3
+ description: Git expert skill for atomic commits, rebase surgery, and history archaeology. Detects commit styles, splits changes into logical commits, and manages complex git operations.
4
+ ---
5
+
6
+ # Git Master - Git Expert Skill
7
+
8
+ You are **Git Master**, a specialized git operations expert. You have three specializations:
9
+
10
+ ## 1. Commit Architect
11
+ Create clean, atomic commits following the project's conventions.
12
+
13
+ ### Rules
14
+ - **3+ files** → MUST be 2+ commits
15
+ - **5+ files** → MUST be 3+ commits
16
+ - **10+ files** → MUST be 5+ commits
17
+
18
+ ### Automatic Style Detection
19
+ Before committing, analyze the last 30 commits:
20
+ ```bash
21
+ git log --oneline -30
22
+ ```
23
+ Detect:
24
+ - **Language**: Korean or English
25
+ - **Style**: semantic (feat:/fix:/chore:), plain, or short
26
+ - **Scope**: with scope (feat(auth):) or without
27
+
28
+ Match the detected style exactly.
29
+
30
+ ### Commit Process
31
+ 1. `git diff --stat` to see all changes
32
+ 2. Group changes by logical unit (feature, fix, refactor, etc.)
33
+ 3. Stage each group separately: `git add <specific-files>`
34
+ 4. Commit with appropriate message matching detected style
35
+ 5. Verify with `git log --oneline -5`
36
+
37
+ ## 2. Rebase Surgeon
38
+ Handle complex rebase operations safely.
39
+
40
+ ### Operations
41
+ - **Interactive rebase**: `git rebase -i HEAD~N`
42
+ - **Squash commits**: Combine related commits
43
+ - **Reorder commits**: Fix dependency ordering
44
+ - **Conflict resolution**: Systematic approach to merge conflicts
45
+
46
+ ### Safety Rules
47
+ - Always create a backup branch before rebasing: `git branch backup-$(date +%s)`
48
+ - Never force-push to shared branches without explicit permission
49
+ - Document all rebase operations in commit messages
50
+
51
+ ## 3. History Archaeologist
52
+ Find when and where specific changes were introduced.
53
+
54
+ ### Tools
55
+ ```bash
56
+ # Find who wrote specific code
57
+ git blame <file> -L <start>,<end>
58
+
59
+ # Find when a change was introduced
60
+ git log --all -S '<search-term>' --oneline
61
+
62
+ # Find commits touching a file
63
+ git log --follow --oneline -- <file>
64
+
65
+ # Find when a function was added
66
+ git log -p --all -S 'function_name' -- '*.ts'
67
+ ```
68
+
69
+ ## Trigger
70
+ Activate when user mentions: commit, rebase, squash, "who wrote", "when was X added", "git history", "blame"
71
+
72
+ ## Anti-Patterns
73
+ - Do NOT create single monolithic commits for multi-file changes
74
+ - Do NOT use generic messages like "update files" or "fix stuff"
75
+ - Do NOT rebase without creating a backup branch first
76
+ - Do NOT force-push without explicit user consent
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: multimodal-analysis
3
+ description: Multimodal file analysis skill for PDFs, images, and technical diagrams using look-at style patterns.
4
+ ---
5
+
6
+ # Multimodal Analysis - File Analysis Skill
7
+
8
+ OmO `look-at` 도구 패턴을 기반으로, 문서/이미지/다이어그램 분석을 표준화한다.
9
+
10
+ ## Source Pattern (OmO)
11
+
12
+ - `look-at`는 파일 경로 + 분석 목표(goal)를 받아 멀티모달 해석 수행
13
+ - 핵심 입력은 단순하다: **무엇을 볼지** + **무엇을 추출할지**
14
+
15
+ ## Supported Inputs
16
+
17
+ - PDF 문서
18
+ - 일반 이미지(PNG/JPG/WebP)
19
+ - 기술 다이어그램(architecture/flow/UML/ER)
20
+
21
+ ## Analysis Patterns
22
+
23
+ ### 1) PDF Analysis
24
+
25
+ - 목표 예시: 요약, 정책/요건 추출, 변경점 비교
26
+ - 출력: 핵심 항목 bullet + 필요한 경우 구조화 목록
27
+
28
+ ### 2) Image Analysis
29
+
30
+ - 목표 예시: 화면 구성요소 식별, 텍스트/라벨 추출, 상태 비교
31
+ - 출력: 영역별 관찰 + actionable insight
32
+
33
+ ### 3) Diagram Analysis
34
+
35
+ - 목표 예시: 컴포넌트 관계, 데이터 흐름, 병목/리스크 파악
36
+ - 출력: 노드/엣지 해석 + 개선 포인트
37
+
38
+ ## Prompt Template
39
+
40
+ ```text
41
+ Input: <file_path>
42
+ Goal: <what to extract / explain>
43
+ Constraints: <format, scope, language>
44
+ Output: <summary|table|checklist>
45
+ ```
46
+
47
+ ## Recommended Workflow
48
+
49
+ 1. 목표를 1문장으로 명확화
50
+ 2. 파일 유형에 맞는 패턴 선택
51
+ 3. 분석 결과를 실행 가능한 액션으로 변환
52
+ 4. 불확실성은 "추정"으로 명시
53
+
54
+ ## Guardrails
55
+
56
+ - 파일 내용이 불명확하면 단정하지 않는다
57
+ - OCR/시각 해석 결과는 근거와 함께 제시
58
+ - 원문 인용이 필요하면 짧게, 과도한 복붙 금지
@@ -0,0 +1,197 @@
1
+ ---
2
+ name: opencode-controller
3
+ description: tmux의 OpenCode 세션을 제어한다. 세션 관리, 모델 선택, 에이전트 전환(Plan/Build), OmO 위임 패턴을 포함.
4
+ ---
5
+
6
+ # opencode-controller — OpenCode 세션 제어
7
+
8
+ OpenClaw는 직접 코드를 쓰는 실행기가 아니라, OpenCode에 작업을 위임해 결과를 수집/검증하는 오케스트레이터다.
9
+
10
+ ## 핵심 원칙
11
+
12
+ - OpenClaw가 직접 코드를 작성하지 않는다
13
+ - 코딩 작업은 tmux `opencode` 세션으로 위임한다
14
+ - OpenClaw는 작업 분해, 지시, 모니터링, 결과 검증을 담당한다
15
+
16
+ ## Pre-flight 체크
17
+
18
+ ### 1) Provider/모델 선택
19
+
20
+ - 작업 난이도에 따라 OpenCode 모델 선택(quick/deep/ultrabrain)
21
+ - 고난도 작업은 고성능 모델 우선
22
+
23
+ ### 2) 인증 상태
24
+
25
+ - OpenCode CLI 제공자 인증이 완료되어 있어야 함
26
+ - 인증 만료 시 세션 내에서 재로그인 후 재시도
27
+
28
+ ### 3) tmux 세션 확인
29
+
30
+ ```bash
31
+ SOCKET="/tmp/openclaw-tmux-sockets/openclaw.sock"
32
+ tmux -S "$SOCKET" has-session -t opencode
33
+ ```
34
+
35
+ ## 세션 관리
36
+
37
+ ```bash
38
+ SOCKET="/tmp/openclaw-tmux-sockets/openclaw.sock"
39
+
40
+ # 세션 생성
41
+ tmux -S "$SOCKET" new -d -s opencode -n main
42
+
43
+ # 세션 상태
44
+ tmux -S "$SOCKET" list-sessions
45
+
46
+ # 세션 출력 확인
47
+ tmux -S "$SOCKET" capture-pane -p -J -t opencode:0.0 -S -200
48
+ ```
49
+
50
+ ## 에이전트 제어
51
+
52
+ OpenCode 에이전트 전환은 Tab 기반으로 수행한다.
53
+
54
+ | 에이전트 | 용도 | 전환 |
55
+ |----------|------|------|
56
+ | Sisyphus | 기본 구현/수정 | 기본 상태 |
57
+ | Hephaestus | 깊은 구현/리팩토링 | Tab 1회 |
58
+ | Prometheus | 계획 수립/전략화 | Tab 2회 |
59
+
60
+ ```bash
61
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 Tab
62
+ sleep 1
63
+ tmux -S "$SOCKET" capture-pane -p -J -t opencode:0.0 -S -20
64
+ ```
65
+
66
+ ## 모델 선택 가이드
67
+
68
+ - 빠른 수정: 속도 우선 모델
69
+ - 복잡한 리팩토링/설계: 심층 추론 모델
70
+ - 계획 전용 단계: 최고 추론 모델 우선
71
+
72
+ 실행 시점에 프로젝트 표준 라우팅(quick/deep/ultrabrain)을 따른다.
73
+
74
+ ## Plan -> Build 워크플로우
75
+
76
+ 1) Prometheus로 계획 수립
77
+ 2) 계획 승인/정리
78
+ 3) Sisyphus 또는 Hephaestus로 구현 전환
79
+ 4) 테스트/빌드/검증 실행
80
+ 5) 결과를 OpenClaw가 수집해 최종 보고
81
+
82
+ ```bash
83
+ # Plan 단계
84
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 Tab
85
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 Tab
86
+ sleep 0.2
87
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 -l -- '계획 수립: 인증 모듈 리팩토링 범위/리스크/검증전략 작성'
88
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 Enter
89
+
90
+ # Build 단계 전환(예: Sisyphus로 복귀 후 구현)
91
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 Escape
92
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 -l -- 'ultrawork 위 계획 기준으로 구현 시작, 테스트까지 완료'
93
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 Enter
94
+ ```
95
+
96
+ ## OmO 위임 패턴
97
+
98
+ ### 1) tmux 세션 검증
99
+
100
+ ```bash
101
+ SOCKET="/tmp/openclaw-tmux-sockets/openclaw.sock"
102
+ tmux -S "$SOCKET" has-session -t opencode
103
+ ```
104
+
105
+ ### 2) 에이전트 선택표
106
+
107
+ | 목적 | 에이전트 | 전환 |
108
+ |------|----------|------|
109
+ | 기본 실행 | Sisyphus | 기본 |
110
+ | 깊은 구현 | Hephaestus | Tab 1회 |
111
+ | 계획 수립 | Prometheus | Tab 2회 |
112
+
113
+ ### 3) 작업 전송 (`send-keys -l` + Enter 분리)
114
+
115
+ ```bash
116
+ TASK='ultrawork 결제 실패 버그 수정. 재현, 원인 분석, 테스트 추가, 회귀 방지 포함.'
117
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 -l -- "$TASK"
118
+ sleep 0.1
119
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 Enter
120
+ ```
121
+
122
+ ### 4) 작업 템플릿
123
+
124
+ 기능 구현:
125
+ ```text
126
+ ultrawork [기능] 구현.
127
+ 요구사항:
128
+ - [요구 1]
129
+ - [요구 2]
130
+ 기존 [참조 파일] 패턴을 따르고 테스트까지 수행.
131
+ ```
132
+
133
+ 버그 수정:
134
+ ```text
135
+ ultrawork [버그 설명] 수정.
136
+ 재현 경로: [steps]
137
+ 에러: [message]
138
+ 기대 동작: [expected]
139
+ ```
140
+
141
+ 리팩토링:
142
+ ```text
143
+ ultrawork [모듈] 리팩토링.
144
+ 목표:
145
+ - [목표 1]
146
+ - [목표 2]
147
+ 제약:
148
+ - Public API 변경 금지
149
+ - 기존 테스트 통과
150
+ ```
151
+
152
+ 리서치 + 구현:
153
+ ```text
154
+ [/path/to/research.md]를 먼저 읽고,
155
+ ultrawork 연구 결과 기준으로 [기능] 구현.
156
+ ```
157
+
158
+ ### 5) 진행 모니터링 (`capture-pane`)
159
+
160
+ ```bash
161
+ tmux -S "$SOCKET" capture-pane -p -J -t opencode:0.0 -S -200
162
+ ```
163
+
164
+ 권장:
165
+ - 10-30초 주기로 진행 로그 확인
166
+ - 막힘 징후(동일 출력 반복, 프롬프트 대기) 즉시 개입
167
+
168
+ ### 6) 결과 수집 (`git status`/`git diff`)
169
+
170
+ ```bash
171
+ git status
172
+ git diff --stat
173
+ git diff
174
+ ```
175
+
176
+ OpenClaw는 변경 파일/테스트 결과/리스크를 요약해 사용자에게 전달한다.
177
+
178
+ ### 7) 에러 복구
179
+
180
+ ```bash
181
+ # 현재 동작 중단
182
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 Escape
183
+
184
+ # 수정 지시 재전송
185
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 -l -- '직전 단계에서 테스트 실패 원인만 먼저 해결해.'
186
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 Enter
187
+
188
+ # 세션 재시작
189
+ tmux -S "$SOCKET" kill-session -t opencode
190
+ tmux -S "$SOCKET" new -d -s opencode -n main
191
+ ```
192
+
193
+ ## 운영 체크리스트
194
+
195
+ - 세션 alive 확인 -> 에이전트 선택 -> 작업 전송 -> 모니터링 -> 결과 수집
196
+ - 항상 `send-keys -l` + 별도 Enter
197
+ - 결과 보고 전에 `git status`/`git diff`로 변경 검증
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: steering-words
3
+ description: Detect ultrawork/search/analyze family keywords in multilingual prompts and recommend the best agent mode.
4
+ ---
5
+
6
+ # Steering Words - Keyword Detection Skill
7
+
8
+ 키워드 기반으로 사용자 의도를 빠르게 분류하고 적절한 에이전트 모드를 추천한다.
9
+
10
+ ## 목적
11
+
12
+ - 입력 프롬프트에서 **steering words**를 감지
13
+ - `ultrawork / search / analyze` 패밀리로 분류
14
+ - 한국어/일본어/중국어 키워드를 포함해 모드 추천
15
+
16
+ ## Detection Families
17
+
18
+ ### 1) Ultrawork Family
19
+
20
+ - English: `ultrawork`, `ulw`, `full throttle`, `maximum effort`, `deep think`
21
+ - 한국어: `울트라워크`, `풀가동`, `최대 노력`, `끝까지`, `전부 자동`
22
+ - 日本語: `ウルトラワーク`, `全力`, `最大努力`, `最後まで`, `自動実行`
23
+ - 中文: `超强模式`, `全力模式`, `最大努力`, `一路做完`, `全自动`
24
+
25
+ **추천 모드**
26
+ - 우선: `/ultrawork`
27
+ - 대안: 복잡 구현이면 `hephaestus`, 복잡 계획이면 `prometheus`
28
+
29
+ ### 2) Search Family
30
+
31
+ - English: `search`, `find`, `locate`, `lookup`, `scan`, `trace`, `where is`, `list all`
32
+ - 한국어: `찾아`, `검색`, `어디`, `전부 보여`, `목록`
33
+ - 日本語: `探して`, `検索`, `どこ`, `一覧`, `全部見せて`
34
+ - 中文: `查找`, `搜索`, `哪里`, `列出`, `全部显示`
35
+
36
+ **추천 모드**
37
+ - 우선: `explore` (코드베이스 탐색)
38
+ - 외부 문서/OSS 필요 시: `librarian` 병행
39
+
40
+ ### 3) Analyze Family
41
+
42
+ - English: `analyze`, `analyse`, `investigate`, `examine`, `research`, `audit`, `why`, `how does`
43
+ - 한국어: `분석`, `조사`, `검토`, `원인`, `왜`, `어떻게`
44
+ - 日本語: `分析`, `調査`, `検証`, `原因`, `なぜ`, `どうして`
45
+ - 中文: `分析`, `调查`, `排查`, `原因`, `为什么`, `怎么`
46
+
47
+ **추천 모드**
48
+ - 우선: `metis` (의도 분류/범위 정제)
49
+ - 아키텍처 트레이드오프 포함 시: `oracle`
50
+
51
+ ## Scoring Rule
52
+
53
+ 1. 패밀리별 키워드 매칭 수를 집계
54
+ 2. 최다 점수 패밀리를 선택
55
+ 3. 동점이면 우선순위: `ultrawork > analyze > search`
56
+ 4. 모호하면 `metis` 추천 후 재분류
57
+
58
+ ## Output Template
59
+
60
+ ```markdown
61
+ ## Steering Detection
62
+ - Family: <ultrawork|search|analyze>
63
+ - Matched Keywords: <comma-separated>
64
+ - Recommended Mode: <mode/agent>
65
+ - Reason: <one sentence>
66
+ ```
67
+
68
+ ## Guardrails
69
+
70
+ - 키워드 감지는 힌트이며 절대 규칙이 아니다.
71
+ - 명시적 사용자 지시가 있으면 키워드보다 우선한다.
72
+ - 다국어 혼합 입력은 단일 언어로 정규화하지 말고 그대로 매칭한다.
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: tmux-agents
3
+ description: tmux 세션에서 코딩 에이전트(Claude Code, Codex, Gemini, Ollama)를 스폰하고 모니터링한다.
4
+ ---
5
+
6
+ # tmux-agents — 에이전트 스폰/모니터링 가이드
7
+
8
+ tmux 안에서 코딩 에이전트를 띄우고, 상태를 확인하고, 병렬로 운영하는 실행 패턴 모음.
9
+
10
+ ## 에이전트 종류
11
+
12
+ | 구분 | 에이전트 ID | 실행 위치 | 특성 |
13
+ |------|-------------|----------|------|
14
+ | cloud | `claude` | 원격 API | 고품질 추론, 안정적 |
15
+ | cloud | `codex` | 원격 API | 코드 생성/수정 강점 |
16
+ | cloud | `gemini` | 원격 API | 멀티모달/긴 문맥 강점 |
17
+ | local | `ollama-claude` | 로컬 Ollama | 비용 절감, 오프라인 가능 |
18
+ | local | `ollama-codex` | 로컬 Ollama | 로컬 코드 작업 최적화 |
19
+
20
+ ## 빠른 명령 모음
21
+
22
+ 아래 명령은 tmux-agents 헬퍼 스크립트 인터페이스를 기준으로 한다.
23
+
24
+ ```bash
25
+ # 1) 스폰
26
+ ./spawn.sh --agent codex --session opencode-2 --cwd /path/to/project
27
+
28
+ # 2) 목록
29
+ ./status.sh list
30
+
31
+ # 3) 헬스체크
32
+ ./check.sh --session opencode-2
33
+
34
+ # 4) 붙기
35
+ tmux attach -t opencode-2
36
+
37
+ # 5) 지시 전송 (안전 입력)
38
+ tmux send-keys -t opencode-2:0.0 -l -- 'Fix failing tests in auth module'
39
+ tmux send-keys -t opencode-2:0.0 Enter
40
+
41
+ # 6) 종료
42
+ tmux kill-session -t opencode-2
43
+ ```
44
+
45
+ ## 병렬 에이전트 패턴
46
+
47
+ ```bash
48
+ # 병렬 스폰 예시
49
+ ./spawn.sh --agent codex --session opencode --cwd /repo/a
50
+ ./spawn.sh --agent claude --session opencode-2 --cwd /repo/b
51
+ ./spawn.sh --agent gemini --session gemini --cwd /repo/a
52
+
53
+ # 병렬 진행 후 상태 점검
54
+ ./status.sh list
55
+ ./check.sh --session opencode
56
+ ./check.sh --session opencode-2
57
+ ./check.sh --session gemini
58
+ ```
59
+
60
+ 운영 원칙:
61
+ - 구현 세션과 검증 세션을 분리
62
+ - 긴 작업은 10-30초 간격으로 주기 점검
63
+ - 완료 후 세션별 결과를 순차 수집
64
+
65
+ ## Local vs Cloud 선택 기준
66
+
67
+ | 상황 | 권장 | 이유 |
68
+ |------|------|------|
69
+ | 속도보다 품질이 중요 | cloud | 최신 모델 품질/추론 강점 |
70
+ | 장시간 반복 작업 | local | 비용 절감, 호출 제한 없음 |
71
+ | 외부 네트워크 제약 | local | 오프라인/폐쇄망 대응 |
72
+ | 멀티모달 분석 필요 | cloud(gemini) | 이미지/PDF 처리 품질 |
73
+ | 민감 코드 로컬 처리 | local | 데이터 외부 전송 최소화 |
74
+
75
+ ## Ollama 준비
76
+
77
+ ```bash
78
+ # Ollama 실행 확인
79
+ ollama list
80
+
81
+ # 필요한 모델 다운로드(예시)
82
+ ollama pull qwen2.5-coder:14b
83
+ ollama pull llama3.1:8b
84
+
85
+ # 로컬 응답 확인
86
+ curl http://127.0.0.1:11434/api/tags
87
+ ```
88
+
89
+ 권장:
90
+ - 코딩용 모델 + 범용 대화 모델 1개씩 준비
91
+ - RAM/VRAM 한계를 고려해 동시 실행 수 제한
92
+
93
+ ## 팁
94
+
95
+ - 세션 타겟은 항상 `session:window.pane`으로 고정 (`opencode-2:0.0`)
96
+ - 텍스트 입력은 `send-keys -l` 후 Enter 분리
97
+ - 출력 확인은 `capture-pane -p -J -S -200` 기본 사용
98
+ - 실패 세션은 즉시 재생성하고 동일 프롬프트 재투입
99
+
100
+ ## 헬퍼 스크립트 범위
101
+
102
+ `spawn.sh`, `status.sh`, `check.sh`는 공식 `openclaw/skills/tmux-agents` 패키지에서 제공되는 헬퍼 스크립트 인터페이스를 따른다.
103
+ 이 문서는 스크립트 사용법 자체가 아니라, OpenClaw/OmO 운영 관점의 실행 지식을 제공한다.
package/skills/tmux.md ADDED
@@ -0,0 +1,175 @@
1
+ ---
2
+ name: tmux
3
+ description: tmux 세션 원격제어 + 멀티 세션 오케스트레이션. send-keys/capture-pane으로 인터랙티브 CLI를 제어하고 병렬 세션을 운영한다.
4
+ ---
5
+
6
+ # tmux — 세션 제어와 병렬 오케스트레이션
7
+
8
+ OpenClaw에서 tmux를 제어할 때의 표준 패턴.
9
+ 단일 세션 제어부터 OpenCode/Gemini 멀티 세션 병렬 운영까지 다룬다.
10
+
11
+ ## 소켓 규칙
12
+
13
+ - OpenClaw 기본 소켓: `/tmp/openclaw-tmux-sockets/openclaw.sock`
14
+ - 기본 clawdbot 경로를 가정하지 말고 OpenClaw 소켓을 우선 사용
15
+ - 폴백 규칙: `CLAWDBOT_TMUX_SOCKET_DIR`가 있으면 해당 디렉토리의 소켓 사용
16
+
17
+ ```bash
18
+ SOCKET="/tmp/openclaw-tmux-sockets/openclaw.sock"
19
+ if [ -n "${CLAWDBOT_TMUX_SOCKET_DIR:-}" ] && [ -S "$CLAWDBOT_TMUX_SOCKET_DIR/openclaw.sock" ]; then
20
+ SOCKET="$CLAWDBOT_TMUX_SOCKET_DIR/openclaw.sock"
21
+ fi
22
+ ```
23
+
24
+ ## Quickstart (OpenClaw 소켓)
25
+
26
+ ```bash
27
+ SOCKET="/tmp/openclaw-tmux-sockets/openclaw.sock"
28
+
29
+ # 세션 목록
30
+ tmux -S "$SOCKET" list-sessions
31
+
32
+ # opencode 세션이 살아있는지 확인
33
+ tmux -S "$SOCKET" has-session -t opencode && echo READY || echo MISSING
34
+
35
+ # 출력 확인
36
+ tmux -S "$SOCKET" capture-pane -p -J -t opencode:0.0 -S -200
37
+ ```
38
+
39
+ ## 타겟 지정 규칙
40
+
41
+ - 타겟 형식: `session:window.pane`
42
+ - 예시: `opencode:0.0`, `gemini:0.0`, `opencode-2:1.0`
43
+ - 세션명만 주면 모호해질 수 있으므로 가능하면 pane까지 고정
44
+
45
+ ```bash
46
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 -l -- 'pwd'
47
+ sleep 0.1
48
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 Enter
49
+ ```
50
+
51
+ ## 안전한 입력 전송
52
+
53
+ 원칙: `send-keys -l`로 문자열 전송 후 `Enter`를 별도 호출.
54
+
55
+ ```bash
56
+ TARGET="opencode:0.0"
57
+ CMD='git status --short'
58
+
59
+ tmux -S "$SOCKET" send-keys -t "$TARGET" -l -- "$CMD"
60
+ sleep 0.1
61
+ tmux -S "$SOCKET" send-keys -t "$TARGET" Enter
62
+ ```
63
+
64
+ ## 출력 수집 표준
65
+
66
+ 최근 출력은 아래 명령을 기본으로 사용:
67
+
68
+ ```bash
69
+ tmux -S "$SOCKET" capture-pane -p -J -t opencode:0.0 -S -200
70
+ ```
71
+
72
+ - 긴 작업은 `-S -500` 이상으로 확장
73
+ - `-J`로 줄바꿈 연결해 파싱 안정성 확보
74
+
75
+ ## 코딩 에이전트 오케스트레이션
76
+
77
+ 여러 코딩 세션을 병렬 실행하고 완료를 폴링한다.
78
+
79
+ ```bash
80
+ SOCKET="/tmp/openclaw-tmux-sockets/openclaw.sock"
81
+
82
+ # 병렬 지시
83
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 -l -- 'ultrawork auth 버그 수정'
84
+ tmux -S "$SOCKET" send-keys -t opencode:0.0 Enter
85
+
86
+ tmux -S "$SOCKET" send-keys -t opencode-2:0.0 -l -- 'ultrawork 결제 모듈 테스트 보강'
87
+ tmux -S "$SOCKET" send-keys -t opencode-2:0.0 Enter
88
+
89
+ # 완료 폴링
90
+ for i in $(seq 1 20); do
91
+ echo "[poll:$i] opencode"
92
+ tmux -S "$SOCKET" capture-pane -p -J -t opencode:0.0 -S -30
93
+ echo "[poll:$i] opencode-2"
94
+ tmux -S "$SOCKET" capture-pane -p -J -t opencode-2:0.0 -S -30
95
+ sleep 15
96
+ done
97
+ ```
98
+
99
+ 권장 운영 방식:
100
+ - 시작은 병렬, 결과 수집은 순차
101
+ - 폴링 간격은 10-30초
102
+ - 완료 신호(작업 요약/테스트 결과) 확인 후 다음 단계 진행
103
+
104
+ ## 멀티 세션 오케스트레이션 패턴
105
+
106
+ ### 세션 네이밍
107
+
108
+ - 기본: `opencode`, `gemini`
109
+ - 확장: `opencode-2`, `gemini-2`, `opencode-3`, `research`, `build`
110
+ - 규칙: 역할 또는 프로젝트 단위로 명명
111
+
112
+ ### 병렬 시나리오
113
+
114
+ 1) 두 프로젝트 동시 진행
115
+ - `opencode`: 프로젝트 A
116
+ - `opencode-2`: 프로젝트 B
117
+
118
+ 2) 코딩 + 검증 동시 진행
119
+ - `opencode`: 구현/수정
120
+ - `gemini`, `gemini-2`: 결과물 시각 검증
121
+
122
+ 3) 리서치 + 구현 + 빌드
123
+ - `research` 또는 `gemini`: 문서/레퍼런스 분석
124
+ - `opencode`: 구현
125
+ - `build`: 테스트/빌드 감시
126
+
127
+ ### 에이전트 선택표 (OpenCode)
128
+
129
+ | 작업 성격 | 권장 에이전트 | 전환 |
130
+ |-----------|----------------|------|
131
+ | 빠른 수정/구현 | Sisyphus (기본) | 기본 상태 |
132
+ | 복잡한 자율 구현 | Hephaestus | Tab 1회 |
133
+ | 계획/전략 수립 | Prometheus | Tab 2회 |
134
+
135
+ ## 운영 템플릿
136
+
137
+ ```bash
138
+ SOCKET="/tmp/openclaw-tmux-sockets/openclaw.sock"
139
+
140
+ # 세션 생성
141
+ tmux -S "$SOCKET" new -d -s opencode-2 -n main
142
+ tmux -S "$SOCKET" new -d -s gemini-2 -n main
143
+
144
+ # 작업 전송
145
+ tmux -S "$SOCKET" send-keys -t opencode-2:0.0 -l -- 'ultrawork 리팩토링 실행'
146
+ sleep 0.1
147
+ tmux -S "$SOCKET" send-keys -t opencode-2:0.0 Enter
148
+
149
+ # 결과 캡처
150
+ tmux -S "$SOCKET" capture-pane -p -J -t opencode-2:0.0 -S -200
151
+ ```
152
+
153
+ ## 정리(클린업)
154
+
155
+ ```bash
156
+ SOCKET="/tmp/openclaw-tmux-sockets/openclaw.sock"
157
+
158
+ # 단일 세션 종료
159
+ tmux -S "$SOCKET" kill-session -t opencode-2
160
+
161
+ # 기본 세션(opencode, gemini) 제외 전체 종료
162
+ for s in $(tmux -S "$SOCKET" list-sessions -F '#{session_name}' 2>/dev/null); do
163
+ case "$s" in
164
+ opencode|gemini) ;;
165
+ *) tmux -S "$SOCKET" kill-session -t "$s" ;;
166
+ esac
167
+ done
168
+ ```
169
+
170
+ ## 주의사항
171
+
172
+ - Enter를 명령 문자열에 섞지 말고 반드시 분리
173
+ - 경로/인용부호가 복잡한 명령은 스크립트 파일로 실행
174
+ - pane 캡처만으로 부족하면 로그 파일 리다이렉트 병행
175
+ - 세션 수를 늘릴수록 메모리 사용량이 급증하므로 동시성 제한 필요
@@ -0,0 +1,101 @@
1
+ ---
2
+ description: Session recovery workflow with checkpointing, failure detection, and automatic restore using file-based checkpoints + memory_search.
3
+ ---
4
+
5
+ # Auto-Rescue Workflow
6
+
7
+ 장시간 작업 중 실패/중단 상황에서 세션을 자동 복구한다.
8
+
9
+ ## When to Use
10
+
11
+ - 긴 구현/리팩터링 세션
12
+ - 다중 단계 작업(5+ step)
13
+ - 반복 실패 가능성이 높은 디버깅/빌드 복구 작업
14
+
15
+ ## Core Mechanism
16
+
17
+ - **Checkpoint 저장**: 주요 단계마다 `write` 도구로 파일 저장 (`workspace/checkpoints/`)
18
+ - **Checkpoint 조회**: 복구 시 `read` 도구 + `memory_search` (OpenClaw 네이티브)
19
+ - **자동 복원**: 가장 최근 정상 상태부터 재시작
20
+
21
+ > **Note**: OpenClaw의 `group:memory`에는 `memory_search`/`memory_get`만 존재하고
22
+ > `memory_store`는 없다. 저장은 반드시 파일 기반(`write`)으로 수행한다.
23
+
24
+ ## Checkpoint Schema
25
+
26
+ `workspace/checkpoints/checkpoint-<timestamp>.json`에 다음 형태로 저장한다:
27
+
28
+ ```json
29
+ {
30
+ "type": "session-checkpoint",
31
+ "session_id": "<id>",
32
+ "task": "<current task>",
33
+ "step": "<current step>",
34
+ "changed_files": ["path/a", "path/b"],
35
+ "verification": {
36
+ "diagnostics": "pass|fail|not-run",
37
+ "tests": "pass|fail|not-run",
38
+ "build": "pass|fail|not-run"
39
+ },
40
+ "next_action": "<what to do next>",
41
+ "timestamp": "<iso8601>"
42
+ }
43
+ ```
44
+
45
+ ## Workflow Steps
46
+
47
+ ### 1) Start Monitoring
48
+
49
+ 1. 세션 시작 시 checkpoint baseline 저장 (`write` → `workspace/checkpoints/`)
50
+ 2. todo 기준으로 단계 전환마다 checkpoint 갱신
51
+ 3. 실패 가능 작업 전(대규모 edit/build/test) 선저장
52
+
53
+ ### 2) Failure Detection
54
+
55
+ 다음 중 하나면 rescue 트리거:
56
+
57
+ - 동일 오류 3회 연속 발생
58
+ - 빌드/테스트가 연속 실패하고 진행 불가
59
+ - 세션 중단(타임아웃/강제 인터럽트/에이전트 중지)
60
+
61
+ ### 3) Recovery Procedure
62
+
63
+ 1. `read` 도구로 `workspace/checkpoints/` 내 최근 checkpoint 파일 읽기
64
+ 2. 가장 최신 `verification`이 정상(pass)인 지점 선택
65
+ 3. 해당 시점의 `next_action`부터 재개
66
+ 4. 동일 실패 재발 시 한 단계 이전 checkpoint로 롤백
67
+
68
+ ### 4) Post-Recovery
69
+
70
+ 1. 복구 성공 상태를 새 checkpoint 파일로 저장 (`write`)
71
+ 2. 실패 원인/해결을 `workspace/notepads/issues.md`에 기록
72
+ 3. 남은 단계 계속 진행
73
+
74
+ ## OpenClaw Tool Mapping
75
+
76
+ | 동작 | 사용할 도구 | 비고 |
77
+ | --------------- | --------------- | -------------------------------------------- |
78
+ | Checkpoint 저장 | `write` | `workspace/checkpoints/checkpoint-<ts>.json` |
79
+ | Checkpoint 읽기 | `read` | 직접 파일 경로 지정 |
80
+ | 과거 기억 검색 | `memory_search` | OpenClaw `group:memory` |
81
+ | 특정 기억 조회 | `memory_get` | key 기반 |
82
+ | 파일 목록 확인 | `exec` (ls) | checkpoint 디렉토리 스캔 |
83
+
84
+ ## Example
85
+
86
+ ```text
87
+ # 저장
88
+ write({ path: "workspace/checkpoints/checkpoint-2026-02-22T13-00.json", content: "{ ... }" })
89
+
90
+ # 복구 시 읽기
91
+ read({ path: "workspace/checkpoints/checkpoint-2026-02-22T13-00.json" })
92
+
93
+ # 세션 기억에서 관련 컨텍스트 검색
94
+ memory_search({ query: "session-checkpoint auth refactor" })
95
+ ```
96
+
97
+ ## Completion Criteria
98
+
99
+ - 복구 후 작업이 실제로 재개됨
100
+ - 최신 checkpoint 파일이 저장됨
101
+ - 동일 실패 루프가 차단됨
@@ -0,0 +1,84 @@
1
+ ---
2
+ description: OmO src/tools 패턴을 OpenClaw에서 재사용 가능한 실행 패턴으로 매핑하는 워크플로우
3
+ ---
4
+
5
+ # Tool Patterns Workflow (OmO → OpenClaw)
6
+
7
+ OmO의 `src/tools/` 구조를 기준으로, OpenClaw에서 실사용 가능한 도구 패턴을 표준화한다.
8
+
9
+ ## 목적
10
+
11
+ - 도구 선택 실수를 줄이고
12
+ - 반복 가능한 실행 루틴을 만들며
13
+ - 계획/실행/검증 단계를 일관되게 유지한다.
14
+
15
+ ## 패턴 매핑
16
+
17
+ > **중요**: 아래 테이블의 "OpenClaw 도구"는 모두 OpenClaw 공식 도구 인벤토리에 실제 존재하는 도구들이다.
18
+
19
+ | OmO Tool Pattern | 의도 | OpenClaw 도구 & 사용 패턴 |
20
+ | ------------------------- | -------------------- | ------------------------------------------------------------------ |
21
+ | `task/*` (todo-sync) | 작업 상태 추적 | 파일 기반 할 일 관리: `write`로 `workspace/todos.md` 갱신 |
22
+ | `lsp/*` (goto/references) | 코드 탐색/검증 | `exec` 도구로 린터/타입체커 실행 → 결과로 검증 |
23
+ | `interactive-bash` | 장시간/상호작용 셸 | `exec`(`pty: true`) 또는 tmux 연동 |
24
+ | `bash` | 원샷 명령 | `exec`(동기), `exec`(`background: true`) → `process`(`poll`) |
25
+ | `slashcommand` | 명령 워크플로우 구동 | OpenClaw 스킬 `/ultrawork`, `/plan`, `/start-work` (슬래시 커맨드) |
26
+ | `session-manager` | 세션 탐색/재개 | `sessions_list`, `sessions_history`, `session_status` |
27
+ | `skill-mcp` | 스킬 기반 도구 호출 | OpenClaw 스킬 시스템 (`read` → SKILL.md 참조) |
28
+ | `look-at` | 멀티모달 분석 | `image` 도구 + Gemini CLI tmux 연동 |
29
+ | `background-task` | 병렬 작업 | `exec`(`background: true`) → `process`(`poll`/`log`/`kill`) |
30
+ | `file-read/write/edit` | 파일 조작 | `read`, `write`, `edit`, `apply_patch` (`group:fs`) |
31
+ | `web-search` | 웹 검색 | `web_search`, `web_fetch` (`group:web`) |
32
+ | `memory` | 지식 축적 | `memory_search`, `memory_get` (`group:memory`) |
33
+ | `delegation` | 서브에이전트 위임 | `sessions_spawn`(`task`, `agentId`, `model`) |
34
+
35
+ ## OpenClaw Tool Groups 정리
36
+
37
+ | Group | 포함 도구 | 활용 |
38
+ | ---------------- | ------------------------------------------------ | ---------------------------- |
39
+ | `group:fs` | read, write, edit, apply_patch | 파일 조작 전반 |
40
+ | `group:runtime` | exec, bash, process | 명령 실행 + 백그라운드 관리 |
41
+ | `group:sessions` | sessions_list/history/send/spawn, session_status | 멀티 에이전트 |
42
+ | `group:memory` | memory_search, memory_get | 지식 검색 (저장은 파일 기반) |
43
+ | `group:web` | web_search, web_fetch | 웹 검색/페치 |
44
+ | `group:ui` | browser, canvas | 브라우저/UI |
45
+
46
+ ## 실행 절차
47
+
48
+ ### 1) 계획 단계
49
+
50
+ 1. 복잡 작업이면 `write`로 `workspace/todos.md` 생성
51
+ 2. 탐색은 `exec` + grep/find 우선
52
+ 3. 외부 의존성은 `web_search`/`web_fetch` 또는 librarian 에이전트 병행
53
+
54
+ ### 2) 구현 단계
55
+
56
+ 1. 변경 전 `read` + `exec`(grep)로 영향도 파악
57
+ 2. 작은 단위로 `edit`/`apply_patch` 수정
58
+ 3. 필요 시 `sessions_spawn`로 전문 에이전트 위임
59
+
60
+ ### 3) 검증 단계
61
+
62
+ 1. `exec`로 린터/타입체커 실행
63
+ 2. `exec`로 관련 테스트/빌드 실행
64
+ 3. 실패 시 원인-기반 `edit` 후 재검증
65
+
66
+ ### 4) 병렬 작업 관리
67
+
68
+ 1. 독립 탐색/리서치는 `exec`(`background: true`)로 병렬 실행
69
+ 2. `process`(`poll`/`log`)로 결과 수집
70
+ 3. 최종 응답 전 `process`(`kill`)로 정리
71
+
72
+ ## 금지/주의 사항
73
+
74
+ - 구현 미요청 상태에서 코드 변경 금지
75
+ - 검증 없는 완료 보고 금지
76
+ - 장시간 TUI 작업은 `exec`(`pty: true`) 사용
77
+ - 수동 추정으로 API/패턴 확정하지 않기 (검색/근거 필수)
78
+
79
+ ## 체크리스트
80
+
81
+ - [ ] Todo 상태가 `workspace/todos.md`에 실시간 반영되었는가
82
+ - [ ] 사용한 도구가 OpenClaw 공식 도구 인벤토리에 존재하는가
83
+ - [ ] 변경 후 `exec`로 test/build 근거가 있는가
84
+ - [ ] 백그라운드 작업이 `process`(`kill`)로 정리되었는가