@happycastle/oh-my-openclaw 0.3.0 → 0.4.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.
@@ -1,12 +1,17 @@
1
1
  import { readFileSync } from 'fs';
2
- import { join } from 'path';
2
+ import { dirname, join } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ const __filename = fileURLToPath(import.meta.url);
5
+ const __dirname = dirname(__filename);
6
+ // From dist/commands/ → plugin root is ../../
7
+ const PLUGIN_ROOT = join(__dirname, '..', '..');
3
8
  function readWorkflow(workflowName) {
4
9
  try {
5
- const workflowPath = join(process.cwd(), 'workflows', `${workflowName}.md`);
10
+ const workflowPath = join(PLUGIN_ROOT, 'workflows', `${workflowName}.md`);
6
11
  return readFileSync(workflowPath, 'utf-8');
7
12
  }
8
13
  catch {
9
- return `Error: Could not read workflow file 'workflows/${workflowName}.md'. Make sure the oh-my-openclaw skill directory is accessible.`;
14
+ return `Error: Could not read workflow file 'workflows/${workflowName}.md'. Plugin root: ${PLUGIN_ROOT}`;
10
15
  }
11
16
  }
12
17
  export function registerWorkflowCommands(api) {
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.3.0`);
14
+ api.logger.info(`[${PLUGIN_ID}] Initializing plugin v0.3.1`);
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.3.0',
82
+ version: '0.3.1',
83
83
  hooks: ['todo-enforcer', 'comment-checker', 'message-monitor'],
84
84
  services: ['ralph-loop'],
85
85
  tools: ['omoc_delegate', 'omoc_look_at', 'omoc_checkpoint'],
@@ -2,7 +2,7 @@
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.3.0",
5
+ "version": "0.4.0",
6
6
  "skills": ["skills"],
7
7
  "configSchema": {
8
8
  "type": "object",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happycastle/oh-my-openclaw",
3
- "version": "0.3.0",
3
+ "version": "0.4.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",
@@ -36,6 +36,7 @@
36
36
  "dist",
37
37
  "bin",
38
38
  "skills",
39
+ "workflows",
39
40
  "openclaw.plugin.json"
40
41
  ],
41
42
  "keywords": [
@@ -0,0 +1,155 @@
1
+ ---
2
+ name: web-search
3
+ description: 웹 검색 및 정보 수집 스킬. OmO의 websearch/context7/grep_app MCP 패턴을 OpenClaw 네이티브 도구 + mcporter MCP로 통합. 웹 검색, 페이지 읽기, 라이브러리 문서 검색, 오픈소스 코드 검색을 지원한다.
4
+ ---
5
+
6
+ # Web Search Skill
7
+
8
+ 웹에서 정보를 수집하는 통합 스킬. OpenClaw 네이티브 도구(`web_fetch`)와 mcporter MCP 서버를 조합하여 다양한 검색 전략을 제공한다.
9
+
10
+ ## 도구 우선순위
11
+
12
+ 상황에 따라 최적의 도구를 선택:
13
+
14
+ ### 1. OpenClaw 네이티브 `web_fetch` (기본)
15
+ 가장 빠르고 간단. URL을 알고 있거나 간단한 페이지 읽기에 적합.
16
+ ```
17
+ web_fetch(url="https://example.com", extractMode="markdown")
18
+ ```
19
+ - 별도 설정 불필요
20
+ - HTML → markdown/text 자동 변환
21
+ - `maxChars`로 응답 크기 제한 가능
22
+
23
+ ### 2. mcporter `web-search-prime` (웹 검색)
24
+ 키워드 기반 웹 검색. 최신 정보, 뉴스, 기술 블로그 검색에 적합.
25
+ ```bash
26
+ mcporter call web-search-prime.webSearchPrime \
27
+ search_query="검색어" \
28
+ location="us" \
29
+ content_size="medium"
30
+ ```
31
+ **파라미터:**
32
+ - `search_query` (필수): 검색 키워드
33
+ - `location`: `us` | `kr` | `jp` 등 (기본: `us`)
34
+ - `content_size`: `medium` (기본) | `high` (상세, ~2500자)
35
+ - `search_recency_filter`: `oneDay` | `oneWeek` | `oneMonth` | `oneYear` | `noLimit`
36
+
37
+ ### 3. mcporter `web-reader` (페이지 전문 읽기)
38
+ 특정 URL의 전체 내용을 깔끔하게 추출. `web_fetch`보다 정확한 추출이 필요할 때.
39
+ ```bash
40
+ mcporter call web-reader.webReader \
41
+ url="https://example.com" \
42
+ return_format="markdown"
43
+ ```
44
+ **파라미터:**
45
+ - `url` (필수): 읽을 URL
46
+ - `return_format`: `markdown` (기본) | `text`
47
+ - `retain_images`: `true` (기본) | `false`
48
+ - `with_links_summary`: `true` | `false` (문서 내 링크 요약)
49
+
50
+ ### 4. mcporter `exa` (시맨틱 웹 검색)
51
+ OmO의 기본 웹서치. 의미 기반(semantic) 검색으로 키워드보다 정확한 결과.
52
+ ```bash
53
+ mcporter call exa.web_search_exa \
54
+ query="검색어"
55
+ ```
56
+ - API 키 없이도 동작 (기본 제공)
57
+ - 시맨틱 검색 지원 (질문 형태로 검색하면 더 좋은 결과)
58
+
59
+ ### 5. mcporter `context7` (라이브러리 문서 검색)
60
+ 프로그래밍 라이브러리/프레임워크의 공식 문서를 검색.
61
+ ```bash
62
+ # 라이브러리 검색
63
+ mcporter call context7.resolve-library-id \
64
+ libraryName="react"
65
+
66
+ # 문서 검색
67
+ mcporter call context7.get-library-docs \
68
+ context7CompatibleLibraryID="/facebook/react" \
69
+ topic="hooks"
70
+ ```
71
+ **용도:**
72
+ - 라이브러리 API 레퍼런스 확인
73
+ - 프레임워크 사용법 검색
74
+ - 최신 버전 변경사항 확인
75
+
76
+ ### 6. mcporter `grep_app` (오픈소스 코드 검색)
77
+ GitHub 등 오픈소스 코드에서 패턴/사용 예시를 검색.
78
+ ```bash
79
+ mcporter call grep_app.search \
80
+ query="useEffect cleanup" \
81
+ language="typescript"
82
+ ```
83
+ **용도:**
84
+ - 실제 프로젝트에서의 API 사용 예시 찾기
85
+ - 특정 패턴/에러의 해결책 검색
86
+ - 라이브러리 통합 방법 확인
87
+
88
+ ### 7. mcporter `zread` (GitHub 리포 직접 탐색)
89
+ 특정 GitHub 리포지토리의 파일/문서를 직접 읽기.
90
+ ```bash
91
+ # 리포 구조 확인
92
+ mcporter call zread.get_repo_structure \
93
+ repo_name="owner/repo"
94
+
95
+ # 파일 읽기
96
+ mcporter call zread.read_file \
97
+ repo_name="owner/repo" \
98
+ file_path="src/index.ts"
99
+
100
+ # 문서/이슈 검색
101
+ mcporter call zread.search_doc \
102
+ repo_name="owner/repo" \
103
+ query="검색어"
104
+ ```
105
+
106
+ ## 검색 전략 가이드
107
+
108
+ ### 일반 검색 (뉴스, 블로그, 일반 정보)
109
+ 1. `web-search-prime` → 검색 결과 → `web_fetch`로 상세 페이지 읽기
110
+
111
+ ### 기술 문서 검색
112
+ 1. `context7`로 라이브러리 문서 직접 검색
113
+ 2. 없으면 `web-search-prime`으로 공식 문서 URL 찾기 → `web_fetch`
114
+
115
+ ### 코드 예시 검색
116
+ 1. `grep_app`으로 오픈소스 코드에서 패턴 검색
117
+ 2. `zread`로 특정 리포 파일 직접 읽기
118
+ 3. `context7`로 라이브러리 공식 예시 확인
119
+
120
+ ### 특정 사이트 정보
121
+ 1. `web_fetch`로 직접 URL 읽기 (가장 빠름)
122
+ 2. 내용 추출이 불완전하면 `web-reader`로 재시도
123
+
124
+ ### 최신 정보 (오늘/이번 주)
125
+ 1. `web-search-prime` + `search_recency_filter="oneDay"` 또는 `"oneWeek"`
126
+ 2. `exa`로 시맨틱 검색 보완
127
+
128
+ ## mcporter 설정
129
+
130
+ MCP 서버들은 `~/.openclaw/workspace/config/mcporter.json`에 설정되어 있다:
131
+
132
+ ```json
133
+ {
134
+ "mcpServers": {
135
+ "web-search-prime": { "type": "remote", "url": "https://api.z.ai/api/mcp/web_search_prime/mcp" },
136
+ "web-reader": { "type": "remote", "url": "https://api.z.ai/api/mcp/web_reader/mcp" },
137
+ "exa": { "type": "remote", "url": "https://mcp.exa.ai/mcp?tools=web_search_exa" },
138
+ "context7": { "type": "remote", "url": "https://mcp.context7.com/mcp" },
139
+ "grep_app": { "type": "remote", "url": "https://mcp.grep.app" },
140
+ "zread": { "type": "remote", "url": "https://api.z.ai/api/mcp/zread/mcp" }
141
+ }
142
+ }
143
+ ```
144
+
145
+ ## OmO 대응표
146
+
147
+ | OmO (MCP) | oh-my-openclaw 대응 |
148
+ |------------------|--------------------------------------------------|
149
+ | `websearch` (Exa)| `mcporter call exa.web_search_exa` + `web_fetch` |
150
+ | `websearch` (Tavily)| `mcporter call web-search-prime.webSearchPrime`|
151
+ | `context7` | `mcporter call context7.resolve-library-id` / `.get-library-docs` |
152
+ | `grep_app` | `mcporter call grep_app.search` |
153
+ | *(없음)* | `web_fetch` (OpenClaw 네이티브) |
154
+ | *(없음)* | `web-reader` (MCP, 깔끔한 페이지 추출) |
155
+ | *(없음)* | `zread` (MCP, GitHub 리포 직접 탐색) |
@@ -0,0 +1,115 @@
1
+ ---
2
+ description: Strategic planning workflow - analyze requirements and create execution plan
3
+ ---
4
+
5
+ # Plan Workflow
6
+
7
+ Strategic planning workflow that analyzes requirements and creates a structured execution plan before any implementation begins.
8
+
9
+ ## When to Use
10
+
11
+ - Starting a new feature or project
12
+ - Complex multi-step tasks
13
+ - When requirements are ambiguous and need clarification
14
+ - Before any `/ultrawork` or `/start-work` invocation
15
+
16
+ ## Workflow Steps
17
+
18
+ ### Phase 1: Context Gathering
19
+
20
+ 1. **Read existing context**
21
+ - Check workspace for existing plans: `workspace/plans/`
22
+ - Check wisdom notepads: `workspace/notepads/`
23
+ - Review any relevant AGENTS.md or project documentation
24
+
25
+ 2. **Analyze the request**
26
+ - What is the user asking for?
27
+ - What are the explicit requirements?
28
+ - What are the implicit requirements?
29
+ - What constraints exist?
30
+
31
+ ### Phase 2: Gap Analysis
32
+
33
+ 3. **Identify unknowns**
34
+ - What information is missing?
35
+ - What assumptions are being made?
36
+ - What dependencies exist?
37
+
38
+ 4. **Ask clarifying questions** (if needed)
39
+ - Only ask questions that materially affect the plan
40
+ - Batch questions together, don't ask one at a time
41
+ - Provide default assumptions if the user doesn't respond
42
+
43
+ ### Phase 3: Plan Creation
44
+
45
+ 5. **Create the execution plan**
46
+ - Save to `workspace/plans/YYYY-MM-DD_<slug>.md`
47
+ - Use the following structure:
48
+
49
+ ```markdown
50
+ # Plan: <Title>
51
+
52
+ **Created**: YYYY-MM-DD HH:MM
53
+ **Status**: draft | approved | in-progress | completed
54
+ **Category**: quick | deep | ultrabrain | visual-engineering
55
+
56
+ ## Goal
57
+ <One sentence description of what we're building>
58
+
59
+ ## Requirements
60
+ - [ ] Requirement 1
61
+ - [ ] Requirement 2
62
+
63
+ ## Tasks
64
+ ### Task 1: <Name>
65
+ - **Category**: quick | deep
66
+ - **Agent**: sisyphus-junior | oracle | explore | librarian
67
+ - **Dependencies**: none | Task N
68
+ - **Description**: What needs to be done
69
+ - **Acceptance Criteria**:
70
+ - [ ] Criterion 1
71
+ - [ ] Criterion 2
72
+
73
+ ### Task 2: <Name>
74
+ ...
75
+
76
+ ## Execution Order
77
+ 1. Task 1 (no dependencies)
78
+ 2. Task 2, Task 3 (parallel, depend on Task 1)
79
+ 3. Task 4 (depends on Task 2 + Task 3)
80
+
81
+ ## Risks
82
+ - Risk 1: mitigation strategy
83
+ - Risk 2: mitigation strategy
84
+
85
+ ## Verification
86
+ - [ ] All acceptance criteria met
87
+ - [ ] Code builds without errors
88
+ - [ ] Tests pass (if applicable)
89
+ ```
90
+
91
+ ### Phase 4: Plan Review
92
+
93
+ 6. **Self-review the plan**
94
+ - Is every task actionable and specific?
95
+ - Are dependencies correctly identified?
96
+ - Is the execution order optimal (maximize parallelism)?
97
+ - Are acceptance criteria measurable?
98
+
99
+ 7. **Present plan to user**
100
+ - Show the plan summary
101
+ - Highlight any risks or assumptions
102
+ - Ask for approval before proceeding
103
+
104
+ ## Integration with Other Workflows
105
+
106
+ - After plan approval, use `/start-work` to begin execution
107
+ - Or use `/ultrawork` for fully automated execution without stops
108
+ - Plan files persist in `workspace/plans/` for future reference
109
+
110
+ ## Wisdom Integration
111
+
112
+ After planning, record any insights:
113
+ - New patterns discovered → `workspace/notepads/learnings.md`
114
+ - Key decisions made → `workspace/notepads/decisions.md`
115
+ - Potential issues identified → `workspace/notepads/issues.md`
@@ -0,0 +1,110 @@
1
+ ---
2
+ description: Start execution from an approved plan - delegate tasks to worker agents
3
+ ---
4
+
5
+ # Start Work Workflow
6
+
7
+ Execute an approved plan by delegating tasks to appropriate worker agents, tracking progress, and verifying completion.
8
+
9
+ ## Prerequisites
10
+
11
+ - An approved plan exists in `workspace/plans/`
12
+ - Plan status is "approved" or "in-progress"
13
+
14
+ ## Workflow Steps
15
+
16
+ ### Phase 1: Plan Loading
17
+
18
+ 1. **Load the plan**
19
+ - Read the most recent plan from `workspace/plans/`
20
+ - Or specify a plan: `/start-work <plan-file>`
21
+ - Verify plan status is "approved"
22
+ - Update plan status to "in-progress"
23
+
24
+ 2. **Initialize tracking**
25
+ - Create todo items for each task in the plan
26
+ - Set up wisdom notepads if not already present
27
+
28
+ ### Phase 2: Task Execution
29
+
30
+ 3. **Execute tasks in dependency order**
31
+
32
+ For each task (respecting execution order from plan):
33
+
34
+ a. **Mark task as in-progress** in todo list
35
+
36
+ b. **Select the right agent** based on task category:
37
+
38
+ | Category | Agent | Model |
39
+ |----------|-------|-------|
40
+ | quick | sisyphus-junior | claude-sonnet-4-6 |
41
+ | deep | sisyphus-junior | claude-opus-4-6-thinking |
42
+ | ultrabrain | oracle | claude-opus-4-5-thinking |
43
+ | visual-engineering | sisyphus-junior | claude-opus-4-6-thinking |
44
+
45
+ c. **Delegate the task** with clear instructions:
46
+ ```
47
+ Task: <task name>
48
+ Description: <from plan>
49
+ Acceptance Criteria:
50
+ - <criterion 1>
51
+ - <criterion 2>
52
+ Context: <relevant files, dependencies>
53
+ ```
54
+
55
+ d. **Verify task completion** against acceptance criteria
56
+
57
+ e. **Mark task as completed** in todo list
58
+
59
+ f. **Record wisdom** if any insights were gained
60
+
61
+ 4. **Handle parallel tasks**
62
+ - Tasks with no mutual dependencies can run in parallel
63
+ - Use multiple agent spawns simultaneously
64
+ - Wait for all parallel tasks before moving to dependent tasks
65
+
66
+ ### Phase 3: Error Handling
67
+
68
+ 5. **On task failure**
69
+ - Record the error in `workspace/notepads/issues.md`
70
+ - Attempt retry with more context (max 2 retries)
71
+ - If still failing, escalate to oracle agent for debugging
72
+ - If oracle can't resolve, pause and ask user
73
+
74
+ 6. **On blocking dependency**
75
+ - Skip blocked tasks, continue with independent tasks
76
+ - Return to blocked tasks when dependency resolves
77
+
78
+ ### Phase 4: Completion
79
+
80
+ 7. **Verify all tasks**
81
+ - Check all acceptance criteria are met
82
+ - Run build/test verification if applicable
83
+ - Review overall coherence of changes
84
+
85
+ 8. **Update plan status**
86
+ - Mark plan as "completed"
87
+ - Record completion time
88
+ - Summarize what was accomplished
89
+
90
+ 9. **Final wisdom capture**
91
+ - Record learnings in `workspace/notepads/learnings.md`
92
+ - Record any decisions in `workspace/notepads/decisions.md`
93
+ - Note any remaining issues in `workspace/notepads/issues.md`
94
+
95
+ ## Status Update Format
96
+
97
+ After each task completion, output:
98
+
99
+ ```
100
+ [N/M] Task: <name> - COMPLETED
101
+ - <what was done>
102
+ - <files modified>
103
+ Next: <next task name>
104
+ ```
105
+
106
+ ## Integration
107
+
108
+ - Plans come from `/plan` workflow
109
+ - `/ultrawork` combines `/plan` + `/start-work` automatically
110
+ - Wisdom notepads persist across sessions for future reference
@@ -0,0 +1,90 @@
1
+ ---
2
+ description: One-command full automation workflow. Analyzes task, creates plan, executes all steps, verifies results.
3
+ ---
4
+
5
+ # Ultrawork Workflow
6
+
7
+ Complete automation workflow that takes a task from analysis to verified completion.
8
+
9
+ ## Trigger
10
+ When the user invokes `/ultrawork [task description]` or ultrawork mode is activated.
11
+
12
+ ## Prerequisites
13
+ - Task description must be clear and actionable
14
+ - Working directory must be a valid project
15
+
16
+ ## Workflow Steps
17
+
18
+ ### Phase 1: Analysis (Prometheus)
19
+ ```
20
+ 1. Read the task description carefully
21
+ 2. Analyze the current codebase state
22
+ - Run `git status` to check working tree
23
+ - Read relevant files to understand context
24
+ - Identify affected modules and dependencies
25
+ 3. Create a structured plan with:
26
+ - Clear task breakdown (numbered steps)
27
+ - Dependencies between steps
28
+ - Category assignment for each step (quick/deep/ultrabrain/visual-engineering)
29
+ - Verification criteria for each step
30
+ 4. Save plan to `workspace/plans/ultrawork-[timestamp].md`
31
+ ```
32
+
33
+ ### Phase 2: Execution (Atlas + Workers)
34
+ ```
35
+ 5. For each step in the plan:
36
+ a. Mark step as in_progress in todo list
37
+ b. Execute the step using appropriate tools
38
+ c. Verify the step's completion criteria
39
+ d. Record any learnings in wisdom notepad
40
+ e. Mark step as completed
41
+ f. If step fails:
42
+ - Analyze the failure
43
+ - Attempt fix (max 3 retries)
44
+ - If still failing, record issue and continue with next independent step
45
+ ```
46
+
47
+ ### Phase 3: Verification
48
+ ```
49
+ 6. Run full verification:
50
+ - Build check (if applicable): `npm run build`, `cargo build`, `go build`, etc.
51
+ - Lint check (if applicable)
52
+ - Test check (if applicable)
53
+ - LSP diagnostics check
54
+ 7. Fix any issues found during verification
55
+ 8. Run verification again until clean
56
+ ```
57
+
58
+ ### Phase 4: Completion
59
+ ```
60
+ 9. Generate completion summary:
61
+ - What was done
62
+ - What was changed (files modified/created/deleted)
63
+ - Any issues encountered and how they were resolved
64
+ - Wisdom accumulated
65
+ 10. Update wisdom notepads with final learnings
66
+ 11. Mark all todos as completed
67
+ ```
68
+
69
+ ## Todo Enforcer Integration
70
+
71
+ During ultrawork execution, the following directive is active:
72
+
73
+ > You MUST use TodoWrite to track every task. Mark tasks in_progress when starting,
74
+ > completed when done. NEVER leave tasks unmarked. If you discover new subtasks,
75
+ > add them immediately. Do not stop until all tasks are completed.
76
+
77
+ ## Error Handling
78
+
79
+ - **Build failures**: Fix immediately, re-verify
80
+ - **Test failures**: Fix the code, not the test (unless test is wrong)
81
+ - **Lint errors**: Auto-fix where possible, manual fix otherwise
82
+ - **Timeout**: Save progress, report partial completion with clear next steps
83
+
84
+ ## Output
85
+
86
+ The workflow produces:
87
+ 1. Completed task with all changes applied
88
+ 2. Plan file in `workspace/plans/`
89
+ 3. Updated wisdom notepads (if learnings occurred)
90
+ 4. Completion summary in the conversation