liang-opencode-suite 1.0.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.
Files changed (94) hide show
  1. package/PROMPT.md +368 -0
  2. package/README.md +106 -0
  3. package/dist/cli.d.ts +6 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +82 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/steps/check-opencode.d.ts +10 -0
  8. package/dist/steps/check-opencode.d.ts.map +1 -0
  9. package/dist/steps/check-opencode.js +52 -0
  10. package/dist/steps/check-opencode.js.map +1 -0
  11. package/dist/steps/configure-api-keys.d.ts +12 -0
  12. package/dist/steps/configure-api-keys.d.ts.map +1 -0
  13. package/dist/steps/configure-api-keys.js +45 -0
  14. package/dist/steps/configure-api-keys.js.map +1 -0
  15. package/dist/steps/install-agents.d.ts +6 -0
  16. package/dist/steps/install-agents.d.ts.map +1 -0
  17. package/dist/steps/install-agents.js +56 -0
  18. package/dist/steps/install-agents.js.map +1 -0
  19. package/dist/steps/install-commands.d.ts +6 -0
  20. package/dist/steps/install-commands.d.ts.map +1 -0
  21. package/dist/steps/install-commands.js +48 -0
  22. package/dist/steps/install-commands.js.map +1 -0
  23. package/dist/steps/install-skills.d.ts +7 -0
  24. package/dist/steps/install-skills.d.ts.map +1 -0
  25. package/dist/steps/install-skills.js +104 -0
  26. package/dist/steps/install-skills.js.map +1 -0
  27. package/dist/steps/install-superpowers.d.ts +7 -0
  28. package/dist/steps/install-superpowers.d.ts.map +1 -0
  29. package/dist/steps/install-superpowers.js +74 -0
  30. package/dist/steps/install-superpowers.js.map +1 -0
  31. package/dist/steps/select-providers.d.ts +11 -0
  32. package/dist/steps/select-providers.d.ts.map +1 -0
  33. package/dist/steps/select-providers.js +47 -0
  34. package/dist/steps/select-providers.js.map +1 -0
  35. package/dist/steps/setup-minimax-mcp.d.ts +8 -0
  36. package/dist/steps/setup-minimax-mcp.d.ts.map +1 -0
  37. package/dist/steps/setup-minimax-mcp.js +162 -0
  38. package/dist/steps/setup-minimax-mcp.js.map +1 -0
  39. package/dist/steps/verify-installation.d.ts +11 -0
  40. package/dist/steps/verify-installation.d.ts.map +1 -0
  41. package/dist/steps/verify-installation.js +108 -0
  42. package/dist/steps/verify-installation.js.map +1 -0
  43. package/dist/types.d.ts +64 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/dist/types.js +5 -0
  46. package/dist/types.js.map +1 -0
  47. package/dist/utils/file-writer.d.ts +9 -0
  48. package/dist/utils/file-writer.d.ts.map +1 -0
  49. package/dist/utils/file-writer.js +58 -0
  50. package/dist/utils/file-writer.js.map +1 -0
  51. package/dist/utils/git-clone.d.ts +7 -0
  52. package/dist/utils/git-clone.d.ts.map +1 -0
  53. package/dist/utils/git-clone.js +44 -0
  54. package/dist/utils/git-clone.js.map +1 -0
  55. package/dist/utils/index.d.ts +7 -0
  56. package/dist/utils/index.d.ts.map +1 -0
  57. package/dist/utils/index.js +7 -0
  58. package/dist/utils/index.js.map +1 -0
  59. package/dist/utils/logger.d.ts +8 -0
  60. package/dist/utils/logger.d.ts.map +1 -0
  61. package/dist/utils/logger.js +23 -0
  62. package/dist/utils/logger.js.map +1 -0
  63. package/dist/utils/os-utils.d.ts +20 -0
  64. package/dist/utils/os-utils.d.ts.map +1 -0
  65. package/dist/utils/os-utils.js +127 -0
  66. package/dist/utils/os-utils.js.map +1 -0
  67. package/dist/utils/paths.d.ts +14 -0
  68. package/dist/utils/paths.d.ts.map +1 -0
  69. package/dist/utils/paths.js +38 -0
  70. package/dist/utils/paths.js.map +1 -0
  71. package/dist/utils/validators.d.ts +23 -0
  72. package/dist/utils/validators.d.ts.map +1 -0
  73. package/dist/utils/validators.js +63 -0
  74. package/dist/utils/validators.js.map +1 -0
  75. package/dist/wizard.d.ts +10 -0
  76. package/dist/wizard.d.ts.map +1 -0
  77. package/dist/wizard.js +347 -0
  78. package/dist/wizard.js.map +1 -0
  79. package/package.json +62 -0
  80. package/templates/AGENTS.md +199 -0
  81. package/templates/commands/commit.md +6 -0
  82. package/templates/commands/component.md +9 -0
  83. package/templates/commands/explain.md +7 -0
  84. package/templates/commands/review.md +7 -0
  85. package/templates/commands/test.md +8 -0
  86. package/templates/commands/vibe-select.md +147 -0
  87. package/templates/oh-my-openagent.json +129 -0
  88. package/templates/opencode.template.json +39 -0
  89. package/templates/skills/agent-browser/SKILL.md +25 -0
  90. package/templates/skills/find-skills/SKILL.md +22 -0
  91. package/templates/skills/frontend-design/SKILL.md +18 -0
  92. package/templates/skills/skill-creator/SKILL.md +18 -0
  93. package/templates/skills/superpowers/SKILL.md +45 -0
  94. package/templates/skills/vibe-stack-guardian/SKILL.md +22 -0
package/PROMPT.md ADDED
@@ -0,0 +1,368 @@
1
+ # šŸš€ Liang's OpenCode Suite - One-Click Installer
2
+
3
+ **Copy and paste this entire prompt into your AI agent (Claude Code, Cursor, AmpCode, etc.) to install.**
4
+
5
+ ---
6
+
7
+ ## šŸŽÆ Your Mission
8
+
9
+ You are an expert DevOps engineer. Install the **Liang OpenCode Suite** on this system.
10
+
11
+ The suite includes:
12
+ - āœ… **oh-my-openagent** - 9 AI agents with optimized configurations
13
+ - āœ… **7 Custom Skills** - Specialized workflows for development
14
+ - āœ… **6 Custom Commands** - Streamlined CLI shortcuts
15
+ - āœ… **Superpowers** - 14 sub-skills for advanced automation (REQUIRED)
16
+ - āœ… **MiniMax MCP** - AI-powered web search and image understanding (Optional)
17
+
18
+ ---
19
+
20
+ ## šŸ” PHASE 1: System Detection
21
+
22
+ Execute these commands and report the results:
23
+
24
+ ```bash
25
+ # Detect OS
26
+ echo "OS: $(uname -s 2>/dev/null || echo 'Windows')"
27
+ echo "Platform: $(uname -m 2>/dev/null || echo 'unknown')"
28
+
29
+ # Check if virtual machine
30
+ if [ -f /proc/cpuinfo ]; then grep -i "hypervisor\|vmware\|virtualbox\|qemu\|xen" /proc/cpuinfo | head -1; fi
31
+ system_profiler SPHardwareDataType 2>/dev/null | grep -i "virtual" || echo "Not VM or unknown"
32
+ ```
33
+
34
+ **Report:** `OS: ___ | VM: Yes/No`
35
+
36
+ ---
37
+
38
+ ## āœ… PHASE 2: Prerequisites Check
39
+
40
+ Check if these are installed (run commands, show output):
41
+
42
+ | Tool | Check Command | Install if Missing |
43
+ |------|---------------|-------------------|
44
+ | **OpenCode** | `opencode --version` | https://opencode.ai |
45
+ | **Node.js** | `node --version` | https://nodejs.org (v18+) |
46
+ | **Git** | `git --version` | https://git-scm.com |
47
+ | **uv** (optional) | `uv --version` | See below |
48
+
49
+ ### Install uv (if MiniMax MCP desired):
50
+
51
+ **macOS/Linux:**
52
+ ```bash
53
+ curl -LsSf https://astral.sh/uv/install.sh | sh
54
+ ```
55
+
56
+ **Windows (PowerShell as Admin):**
57
+ ```powershell
58
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
59
+ ```
60
+
61
+ **Report which tools are missing and install them.**
62
+
63
+ ---
64
+
65
+ ## šŸ“ PHASE 3: Directory Setup
66
+
67
+ Create the configuration directory:
68
+
69
+ ```bash
70
+ # macOS/Linux
71
+ mkdir -p ~/.config/opencode
72
+
73
+ # Windows (Git Bash)
74
+ mkdir -p ~/.config/opencode
75
+
76
+ # Windows (PowerShell)
77
+ New-Item -ItemType Directory -Force -Path "$env:APPDATA\opencode"
78
+ ```
79
+
80
+ Set `CONFIG_DIR`:
81
+ - macOS/Linux: `~/.config/opencode`
82
+ - Windows: `$env:APPDATA\opencode` or `~/.config/opencode` (Git Bash)
83
+
84
+ ---
85
+
86
+ ## šŸ”§ PHASE 4: Core Configuration
87
+
88
+ ### Step 4.1: Create `oh-my-openagent.json`
89
+
90
+ Save this to `$CONFIG_DIR/oh-my-openagent.json`:
91
+
92
+ ```json
93
+ {
94
+ "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-opencode.schema.json",
95
+ "agents": {
96
+ "sisyphus": {
97
+ "model": "kimi-for-coding/k2-thinking",
98
+ "max_tokens": 32768,
99
+ "thinking": { "type": "enabled", "budgetTokens": 16000, "clear_thinking": false }
100
+ },
101
+ "hephaestus": {
102
+ "model": "minimax-cn-coding-plan/MiniMax-M2.7-highspeed",
103
+ "variant": "medium",
104
+ "max_tokens": 32768,
105
+ "thinking": { "type": "enabled", "budgetTokens": 16000, "clear_thinking": false }
106
+ },
107
+ "oracle": { "model": "minimax-cn-coding-plan/MiniMax-M2.7-highspeed", "variant": "high" },
108
+ "explore": { "model": "minimax-cn-coding-plan/MiniMax-M2.7-highspeed" },
109
+ "multimodal-looker": { "model": "minimax-cn-coding-plan/MiniMax-M2.7-highspeed" },
110
+ "prometheus": {
111
+ "model": "kimi-for-coding/k2p5",
112
+ "max_tokens": 32768,
113
+ "thinking": { "type": "enabled", "budgetTokens": 16000, "clear_thinking": false },
114
+ "interleaved": { "field": "reasoning_content" }
115
+ },
116
+ "metis": { "model": "minimax-cn-coding-plan/MiniMax-M2.7-highspeed" },
117
+ "momus": { "model": "minimax-cn-coding-plan/MiniMax-M2.7-highspeed" },
118
+ "atlas": { "model": "minimax-cn-coding-plan/MiniMax-M2.7-highspeed" }
119
+ },
120
+ "categories": {
121
+ "visual-engineering": { "model": "minimax-cn-coding-plan/MiniMax-M2.7-highspeed", "max_tokens": 32768, "thinking": { "type": "enabled", "budgetTokens": 16000, "clear_thinking": false } },
122
+ "ultrabrain": { "model": "minimax-cn-coding-plan/MiniMax-M2.7-highspeed", "max_tokens": 32768, "thinking": { "type": "enabled", "budgetTokens": 16000, "clear_thinking": false } },
123
+ "deep": { "model": "minimax-cn-coding-plan/MiniMax-M2.7-highspeed", "max_tokens": 32768, "thinking": { "type": "enabled", "budgetTokens": 16000, "clear_thinking": false } },
124
+ "artistry": { "model": "minimax-cn-coding-plan/MiniMax-M2.7-highspeed", "max_tokens": 32768, "thinking": { "type": "enabled", "budgetTokens": 16000, "clear_thinking": false } },
125
+ "quick": { "model": "minimax-cn-coding-plan/MiniMax-M2.7-highspeed", "max_tokens": 32768, "thinking": { "type": "enabled", "budgetTokens": 16000, "clear_thinking": false } },
126
+ "unspecified-low": { "model": "minimax-cn-coding-plan/MiniMax-M2.7-highspeed", "max_tokens": 32768, "thinking": { "type": "enabled", "budgetTokens": 16000, "clear_thinking": false } },
127
+ "unspecified-high": { "model": "minimax-cn-coding-plan/MiniMax-M2.7-highspeed", "max_tokens": 32768, "thinking": { "type": "enabled", "budgetTokens": 16000, "clear_thinking": false } },
128
+ "writing": { "model": "minimax-cn-coding-plan/MiniMax-M2.7-highspeed", "max_tokens": 32768, "thinking": { "type": "enabled", "budgetTokens": 16000, "clear_thinking": false } }
129
+ }
130
+ }
131
+ ```
132
+
133
+ ### Step 4.2: Create `AGENTS.md`
134
+
135
+ Download from:
136
+ ```bash
137
+ curl -o "$CONFIG_DIR/AGENTS.md" https://raw.githubusercontent.com/liang/liang-opencode-suite/main/templates/AGENTS.md
138
+ ```
139
+
140
+ ---
141
+
142
+ ## šŸ”‘ PHASE 5: API Key Configuration
143
+
144
+ **Ask the user:**
145
+
146
+ > Which AI providers would you like to configure? (Select all that apply)
147
+ > - [ ] Kimi (Moonshot AI) - https://platform.moonshot.cn
148
+ > - [ ] MiniMax - https://platform.minimax.com/subscribe/token-plan
149
+ > - [ ] Claude (Anthropic) - https://console.anthropic.com
150
+
151
+ For each selected provider, ask for their API key:
152
+
153
+ > Enter your [Provider] API Key: [masked input]
154
+
155
+ Then create `$CONFIG_DIR/opencode.json`:
156
+
157
+ ```json
158
+ {
159
+ "$schema": "https://opencode.ai/config.json",
160
+ "plugin": ["oh-my-openagent@latest"],
161
+ "provider": {
162
+ "moonshotai-cn": {
163
+ "npm": "@ai-sdk/openai-compatible",
164
+ "options": {
165
+ "baseURL": "https://api.moonshot.cn/v1",
166
+ "apiKey": "KIMI_API_KEY_HERE"
167
+ }
168
+ },
169
+ "minimax-cn": {
170
+ "npm": "@ai-sdk/openai-compatible",
171
+ "options": {
172
+ "baseURL": "https://api.minimaxi.com/v1",
173
+ "apiKey": "MINIMAX_API_KEY_HERE"
174
+ }
175
+ }
176
+ },
177
+ "model": "kimi-for-coding/k2-thinking"
178
+ }
179
+ ```
180
+
181
+ ---
182
+
183
+ ## šŸ› ļø PHASE 6: Install Skills
184
+
185
+ ### Step 6.1: Create Skills Directory
186
+ ```bash
187
+ mkdir -p "$CONFIG_DIR/skills"
188
+ ```
189
+
190
+ ### Step 6.2: Install Core Skills (6 Required)
191
+
192
+ Download each skill's SKILL.md:
193
+
194
+ ```bash
195
+ # Base URL for skills
196
+ SKILLS_BASE="https://raw.githubusercontent.com/liang/liang-opencode-suite/main/templates/skills"
197
+
198
+ # Create directories and download skills
199
+ for skill in superpowers frontend-design skill-creator agent-browser find-skills vibe-stack-guardian; do
200
+ mkdir -p "$CONFIG_DIR/skills/$skill"
201
+ curl -o "$CONFIG_DIR/skills/$skill/SKILL.md" "$SKILLS_BASE/$skill/SKILL.md"
202
+ echo "āœ… $skill"
203
+ done
204
+ ```
205
+
206
+ ### Step 6.3: Optional Skill
207
+
208
+ **Ask user:**
209
+ > Install lingjing-ux-core? (Lingjing Aviation Intelligence Platform - proprietary business logic) [y/N]
210
+
211
+ If yes:
212
+ ```bash
213
+ mkdir -p "$CONFIG_DIR/skills/lingjing-ux-core"
214
+ curl -o "$CONFIG_DIR/skills/lingjing-ux-core/SKILL.md" "$SKILLS_BASE/lingjing-ux-core/SKILL.md"
215
+ ```
216
+
217
+ ---
218
+
219
+ ## āŒØļø PHASE 7: Install Commands
220
+
221
+ ### Step 7.1: Create Commands Directory
222
+ ```bash
223
+ mkdir -p "$CONFIG_DIR/commands"
224
+ ```
225
+
226
+ ### Step 7.2: Download Commands
227
+
228
+ ```bash
229
+ COMMANDS_BASE="https://raw.githubusercontent.com/liang/liang-opencode-suite/main/templates/commands"
230
+
231
+ for cmd in commit component explain review test vibe-select; do
232
+ curl -o "$CONFIG_DIR/commands/${cmd}.md" "$COMMANDS_BASE/${cmd}.md"
233
+ echo "āœ… $cmd command"
234
+ done
235
+ ```
236
+
237
+ ---
238
+
239
+ ## ⚔ PHASE 8: Install Superpowers (REQUIRED)
240
+
241
+ **āš ļø This step is REQUIRED and cannot be skipped.**
242
+
243
+ Superpowers contains 14 essential workflow skills:
244
+ - brainstorming, writing-plans, executing-plans
245
+ - test-driven-development, systematic-debugging
246
+ - subagent-driven-development, dispatching-parallel-agents
247
+ - using-git-worktrees, finishing-a-development-branch
248
+ - requesting-code-review, receiving-code-review
249
+ - verification-before-completion, using-superpowers, writing-skills
250
+
251
+ ### Step 8.1: Clone Repository
252
+ ```bash
253
+ cd "$CONFIG_DIR"
254
+ git clone https://github.com/opencode-ai/superpowers.git
255
+ ```
256
+
257
+ ### Step 8.2: Initialize Submodules
258
+ ```bash
259
+ cd "$CONFIG_DIR/superpowers"
260
+ git submodule update --init --recursive
261
+ ```
262
+
263
+ ---
264
+
265
+ ## šŸ”Œ PHASE 9: MiniMax MCP Setup (Optional)
266
+
267
+ **Ask user:**
268
+ > Would you like to set up MiniMax MCP for web search and image understanding? [y/N]
269
+
270
+ If yes:
271
+
272
+ 1. Ensure uv is installed (see Phase 2)
273
+ 2. Ask for MiniMax API key (from https://platform.minimax.com)
274
+ 3. Update `$CONFIG_DIR/opencode.json`:
275
+
276
+ ```json
277
+ {
278
+ "mcp": {
279
+ "MiniMax": {
280
+ "type": "local",
281
+ "command": ["uvx", "minimax-coding-plan-mcp", "-y"],
282
+ "environment": {
283
+ "MINIMAX_API_KEY": "USER_MINIMAX_KEY_HERE",
284
+ "MINIMAX_API_HOST": "https://api.minimaxi.com"
285
+ },
286
+ "enabled": true
287
+ }
288
+ }
289
+ }
290
+ ```
291
+
292
+ ---
293
+
294
+ ## āœ… PHASE 10: Verification
295
+
296
+ Run these checks and report results:
297
+
298
+ ```bash
299
+ echo "=== Verification ==="
300
+ echo "Config directory: $CONFIG_DIR"
301
+ echo ""
302
+ echo "Files:"
303
+ ls -la "$CONFIG_DIR"
304
+ echo ""
305
+ echo "Skills ($(ls "$CONFIG_DIR/skills" | wc -l) installed):"
306
+ ls "$CONFIG_DIR/skills"
307
+ echo ""
308
+ echo "Commands ($(ls "$CONFIG_DIR/commands" | wc -l) installed):"
309
+ ls "$CONFIG_DIR/commands"
310
+ echo ""
311
+ echo "Superpowers submodules:"
312
+ ls "$CONFIG_DIR/superpowers/skills" 2>/dev/null | wc -l
313
+ echo ""
314
+ echo "OpenCode version:"
315
+ opencode --version 2>/dev/null || echo "Not found"
316
+ ```
317
+
318
+ **Expected:**
319
+ - āœ… 7-8 skills directories
320
+ - āœ… 6 command files
321
+ - āœ… 14 superpowers sub-skills
322
+ - āœ… oh-my-openagent.json exists
323
+ - āœ… opencode.json exists
324
+
325
+ ---
326
+
327
+ ## šŸŽ‰ COMPLETION
328
+
329
+ When all phases are complete, output:
330
+
331
+ ```
332
+ ╔════════════════════════════════════════════════════════════╗
333
+ ā•‘ āœ… OpenCode AI Suite - Installation Complete! ā•‘
334
+ ╠════════════════════════════════════════════════════════════╣
335
+ ā•‘ šŸ“¦ Components Installed: ā•‘
336
+ ā•‘ • oh-my-openagent (9 agents, 8 categories) ā•‘
337
+ ā•‘ • 6-7 skills (core + optional) ā•‘
338
+ ā•‘ • 6 custom commands ā•‘
339
+ ā•‘ • Superpowers (14 sub-skills) ā•‘
340
+ ā•‘ • MiniMax MCP (if selected) ā•‘
341
+ ā•‘ ā•‘
342
+ ā•‘ šŸš€ Next Steps: ā•‘
343
+ ā•‘ 1. Restart your terminal ā•‘
344
+ ā•‘ 2. Run: opencode ā•‘
345
+ ā•‘ 3. Try: /commit, /review, /test ā•‘
346
+ ā•‘ ā•‘
347
+ ā•‘ šŸ“š Documentation: https://github.com/liang/liang-opencode-suite ā•‘
348
+ ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•
349
+ ```
350
+
351
+ ---
352
+
353
+ ## āš ļø ERROR HANDLING
354
+
355
+ If any phase fails:
356
+ 1. **STOP** and report the exact error
357
+ 2. Show the command that failed
358
+ 3. Provide manual fallback instructions
359
+ 4. Ask user if they want to continue or abort
360
+
361
+ **Common Issues:**
362
+ - Permission denied → Use `sudo` or check directory permissions
363
+ - Git clone fails → Check internet connection or Git configuration
364
+ - API key invalid → Verify key at provider's dashboard
365
+
366
+ ---
367
+
368
+ **End of Installation Prompt - Thank you for using Liang's OpenCode Suite! šŸ™**
package/README.md ADDED
@@ -0,0 +1,106 @@
1
+ # šŸš€ Liang's OpenCode Suite
2
+
3
+ CLI tool to quickly set up OpenCode with Liang's optimized configuration.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/liang-opencode-suite.svg)](https://www.npmjs.com/package/liang-opencode-suite)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ ## ✨ Features
9
+
10
+ - šŸ¤– **oh-my-openagent** - Full Sisyphus orchestration framework with 9 agents
11
+ - šŸ› ļø **7 Custom Skills** - Specialized workflows for development tasks
12
+ - āŒØļø **6 Custom Commands** - Streamlined CLI shortcuts
13
+ - ⚔ **Superpowers Workflow** - 14 sub-skills for advanced automation
14
+ - šŸ”Œ **MiniMax MCP** - Web search & image understanding integration
15
+ - šŸ–„ļø **Cross-Platform** - macOS, Windows, Linux support
16
+ - šŸ’» **VM Detection** - Handles virtual machine environments
17
+
18
+ ## šŸ“¦ Installation
19
+
20
+ ### Option 1: CLI Installation (Recommended)
21
+
22
+ \`\`\`bash
23
+ npx liang-opencode-suite@latest init
24
+ \`\`\`
25
+
26
+ Or install globally:
27
+
28
+ \`\`\`bash
29
+ npm install -g liang-opencode-suite
30
+ liang-opencode-suite init
31
+ \`\`\`
32
+
33
+ ### Option 2: For LLM Agents
34
+
35
+ Copy and paste this prompt to your LLM agent (Claude Code, AmpCode, Cursor, etc.):
36
+
37
+ \`\`\`
38
+ Install and configure liang-opencode-suite by following the instructions here:
39
+ https://raw.githubusercontent.com/l17396917969-cell/liang-opencode-suite/main/docs/guide/installation.md
40
+ \`\`\`
41
+
42
+ Or fetch the installation guide directly:
43
+
44
+ \`\`\`bash
45
+ curl -s https://raw.githubusercontent.com/l17396917969-cell/liang-opencode-suite/main/docs/guide/installation.md
46
+ \`\`\`
47
+
48
+ ## šŸ–„ļø Platform Support
49
+
50
+ | Platform | Status | Notes |
51
+ |----------|--------|-------|
52
+ | **macOS** | āœ… Fully Supported | Intel & Apple Silicon |
53
+ | **Linux** | āœ… Fully Supported | Ubuntu, Debian, CentOS, etc. |
54
+ | **Windows** | āœ… Fully Supported | Native & WSL |
55
+ | **VMs** | āœ… Detected & Supported | VMware, VirtualBox, Parallels |
56
+
57
+ ## šŸ“‹ Prerequisites
58
+
59
+ - **Node.js** 18.0.0+ → https://nodejs.org
60
+ - **OpenCode CLI** → https://opencode.ai
61
+ - **Git** → https://git-scm.com
62
+ - **uv** (optional, for MiniMax MCP) → https://astral.sh/uv
63
+
64
+ ## šŸŽÆ What Gets Installed
65
+
66
+ ### Core Components
67
+
68
+ - \`oh-my-openagent.json\` - 9 agents + 8 categories
69
+ - \`AGENTS.md\` - Sisyphus workflow definition
70
+ - \`opencode.json\` - Provider configuration
71
+
72
+ ### Skills (7 Total)
73
+
74
+ 6 core + 1 optional (lingjing-ux-core)
75
+
76
+ ### Commands (6 Total)
77
+
78
+ \`/commit\`, \`/component\`, \`/explain\`, \`/review\`, \`/test\`, \`/vibe-select\`
79
+
80
+ ### Superpowers (14 Sub-skills)
81
+
82
+ brainstorming, writing-plans, executing-plans, test-driven-development, systematic-debugging, and 9 more.
83
+
84
+ ## šŸ“– Documentation
85
+
86
+ - **Full Installation Guide**: [docs/guide/installation.md](./docs/guide/installation.md)
87
+ - **GitHub Repository**: https://github.com/l17396917969-cell/liang-opencode-suite
88
+ - **NPM Package**: https://www.npmjs.com/package/liang-opencode-suite
89
+
90
+ ## šŸ¤ Contributing
91
+
92
+ Contributions welcome! Please read our [Contributing Guide](./CONTRIBUTING.md).
93
+
94
+ ## šŸ“„ License
95
+
96
+ MIT Ā© [Liang](https://github.com/l17396917969-cell)
97
+
98
+ ## šŸ™ Acknowledgments
99
+
100
+ - [OpenCode](https://opencode.ai) - The AI IDE
101
+ - [oh-my-openagent](https://github.com/code-yeongyu/oh-my-openagent) - Agent orchestration
102
+ - [Superpowers](https://github.com/opencode-ai/superpowers) - Workflow skills
103
+
104
+ ---
105
+
106
+ **Made with ā¤ļø for the AI-powered development community**
package/dist/cli.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * CLI Entry Point for liang-opencode-suite
3
+ * Handles command line argument parsing and orchestrates the wizard
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
package/dist/cli.js ADDED
@@ -0,0 +1,82 @@
1
+ /**
2
+ * CLI Entry Point for liang-opencode-suite
3
+ * Handles command line argument parsing and orchestrates the wizard
4
+ */
5
+ import { runWizard } from './wizard.js';
6
+ import chalk from 'chalk';
7
+ /**
8
+ * Parse command line arguments from process.argv
9
+ */
10
+ function parseArgs() {
11
+ const args = {};
12
+ const argv = process.argv.slice(2);
13
+ for (let i = 0; i < argv.length; i++) {
14
+ const arg = argv[i];
15
+ if (arg === 'init') {
16
+ args.command = 'init';
17
+ }
18
+ else if (arg === '--skip-welcome' || arg === '-s') {
19
+ args.skipWelcome = true;
20
+ }
21
+ else if (arg === '--yes' || arg === '-y') {
22
+ args.autoConfirm = true;
23
+ }
24
+ }
25
+ return args;
26
+ }
27
+ /**
28
+ * Display usage information
29
+ */
30
+ function printUsage() {
31
+ console.log(`
32
+ ${chalk.cyan('liang-opencode-suite')}
33
+
34
+ ${chalk.bold('Usage:')}
35
+ liang-opencode [command] [options]
36
+
37
+ ${chalk.bold('Commands:')}
38
+ init Run the installation wizard
39
+
40
+ ${chalk.bold('Options:')}
41
+ --skip-welcome, -s Skip the welcome banner
42
+ --yes, -y Skip all confirmations (auto-approve)
43
+ --help, -h Show this help message
44
+
45
+ ${chalk.bold('Examples:')}
46
+ liang-opencode init
47
+ liang-opencode init --skip-welcome
48
+ liang-opencode init --yes
49
+ `);
50
+ }
51
+ /**
52
+ * Main CLI handler
53
+ */
54
+ async function main() {
55
+ const args = parseArgs();
56
+ // Show help if requested or no command provided
57
+ if (args.command === undefined && process.argv.includes('--help')) {
58
+ printUsage();
59
+ process.exit(0);
60
+ }
61
+ if (args.command !== 'init') {
62
+ console.error(chalk.red('Error: Unknown command'));
63
+ console.error(chalk.red('Run "liang-opencode --help" for usage information'));
64
+ process.exit(1);
65
+ }
66
+ try {
67
+ await runWizard({
68
+ skipWelcome: args.skipWelcome ?? false,
69
+ autoConfirm: args.autoConfirm ?? false,
70
+ });
71
+ process.exit(0);
72
+ }
73
+ catch (error) {
74
+ console.error(chalk.red('\nāœ– Installation failed:'));
75
+ if (error instanceof Error) {
76
+ console.error(chalk.red(` ${error.message}`));
77
+ }
78
+ process.exit(1);
79
+ }
80
+ }
81
+ main();
82
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B;;GAEG;AACH,SAAS,SAAS;IAChB,MAAM,IAAI,GAAY,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACxB,CAAC;aAAM,IAAI,GAAG,KAAK,gBAAgB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC;EACZ,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC;;EAElC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;;;EAGpB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;;;EAGvB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;;;;;EAKtB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;;;;CAIxB,CAAC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;IAEzB,gDAAgD;IAChD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClE,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,CAAC;YACd,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;YACtC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;SACvC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACrD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface CheckOpencodeResult {
2
+ success: boolean;
3
+ message: string;
4
+ opencodeInstalled: boolean;
5
+ configDirExists: boolean;
6
+ platform: string;
7
+ isVM: boolean;
8
+ }
9
+ export declare function checkOpencode(): Promise<CheckOpencodeResult>;
10
+ //# sourceMappingURL=check-opencode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-opencode.d.ts","sourceRoot":"","sources":["../../src/steps/check-opencode.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAmDlE"}
@@ -0,0 +1,52 @@
1
+ import { execSync } from 'child_process';
2
+ import { existsSync } from 'fs';
3
+ import { getOpencodeConfigDir, commandExists, getPlatform, isVirtualMachine } from '../utils/os-utils';
4
+ export async function checkOpencode() {
5
+ console.log('šŸ” Checking opencode CLI installation...');
6
+ const platform = getPlatform();
7
+ const isVM = isVirtualMachine();
8
+ if (isVM) {
9
+ console.log('šŸ’» Detected virtual machine environment');
10
+ }
11
+ console.log(`šŸ–„ļø Platform: ${platform}`);
12
+ const opencodeInstalled = commandExists('opencode');
13
+ if (opencodeInstalled) {
14
+ try {
15
+ const version = execSync('opencode --version', { stdio: 'pipe', encoding: 'utf-8' });
16
+ console.log(`āœ… opencode CLI found (${version.trim()})`);
17
+ }
18
+ catch {
19
+ console.log('āœ… opencode CLI found');
20
+ }
21
+ }
22
+ else {
23
+ console.log('āš ļø opencode CLI not found in PATH');
24
+ }
25
+ const configDir = getOpencodeConfigDir();
26
+ const configDirExists = existsSync(configDir);
27
+ if (configDirExists) {
28
+ console.log('āœ… Config directory exists at', configDir);
29
+ }
30
+ else {
31
+ console.log('āš ļø Config directory not found at', configDir, '(will be created)');
32
+ }
33
+ let message;
34
+ if (opencodeInstalled && configDirExists) {
35
+ message = 'opencode is installed and configured';
36
+ }
37
+ else if (opencodeInstalled) {
38
+ message = 'opencode CLI is installed but config directory not found (will be created)';
39
+ }
40
+ else {
41
+ message = 'opencode CLI is not installed. Please install it from https://opencode.ai first.';
42
+ }
43
+ return {
44
+ success: opencodeInstalled,
45
+ message,
46
+ opencodeInstalled,
47
+ configDirExists,
48
+ platform,
49
+ isVM,
50
+ };
51
+ }
52
+ //# sourceMappingURL=check-opencode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-opencode.js","sourceRoot":"","sources":["../../src/steps/check-opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAWvG,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAExD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAEhC,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,EAAE,CAAC,CAAC;IAE1C,MAAM,iBAAiB,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAEpD,IAAI,iBAAiB,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,QAAQ,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YACrF,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAC;IACzC,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,OAAe,CAAC;IACpB,IAAI,iBAAiB,IAAI,eAAe,EAAE,CAAC;QACzC,OAAO,GAAG,sCAAsC,CAAC;IACnD,CAAC;SAAM,IAAI,iBAAiB,EAAE,CAAC;QAC7B,OAAO,GAAG,4EAA4E,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,kFAAkF,CAAC;IAC/F,CAAC;IAED,OAAO;QACL,OAAO,EAAE,iBAAiB;QAC1B,OAAO;QACP,iBAAiB;QACjB,eAAe;QACf,QAAQ;QACR,IAAI;KACL,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Provider } from './select-providers';
2
+ export interface ApiKeyConfig {
3
+ provider: string;
4
+ apiKey: string;
5
+ skipped: boolean;
6
+ }
7
+ export interface ConfigureApiKeysResult {
8
+ apiKeys: Record<string, string>;
9
+ skipped: string[];
10
+ }
11
+ export declare function configureApiKeys(providers: Provider[]): Promise<ConfigureApiKeysResult>;
12
+ //# sourceMappingURL=configure-api-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure-api-keys.d.ts","sourceRoot":"","sources":["../../src/steps/configure-api-keys.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,sBAAsB,CAAC,CAkDjC"}