# gstack-opencode

Garry Tan 的 gstack 移植至 OpenCode。完整的 AI 工程工作流程，內含 27 項技能。

## 內容總覽

### 衝刺技能（20 項）
| 技能 | 功能說明 |
|------|----------|
| `/office-hours` | YC 辦公時間 — 重新定義你的產品概念 |
| `/plan-ceo-review` | CEO 審查 — 找出 10 星級產品 |
| `/plan-eng-review` | 工程經理 — 鎖定架構、資料流、測試 |
| `/plan-design-review` | 設計師審查 — 各維度評分 0-10 |
| `/design-consultation` | 從零建立設計系統 |
| `/review` | 資深工程師 — 找出能通過 CI 的錯誤 |
| `/ship` | 發佈工程師 — 測試、推送、建立 PR |
| `/land-and-deploy` | 合併 PR、CI、部署、驗證 |
| `/qa` | QA 主管 — 瀏覽器測試、修復錯誤 |
| `/qa-only` | QA 報告員 — 僅產生錯誤報告 |
| `/design-review` | 設計師稽核 + 自動修復 |
| `/canary` | SRE — 部署後監控 |
| `/benchmark` | 效能工程師 — Core Web Vitals |
| `/document-release` | 技術文件撰寫 — 更新文件 |
| `/retro` | 工程經理 — 每週回顧 |
| `/investigate` | 除錯器 — 系統性根因分析 |
| `/cso` | 資安長 — OWASP + STRIDE |
| `/codex` | 第二意見 — OpenAI Codex 審查 |
| `/autoplan` | 自動審查流水線 |
| `/setup-deploy` | 部署設定器 |

### 安全技能（4 項）
| 技能 | 功能說明 |
|------|----------|
| `/careful` | 破壞性指令前發出警告 |
| `/freeze` | 鎖定編輯範圍至單一目錄 |
| `/guard` | 完整安全防護：careful + freeze |
| `/unfreeze` | 解除 freeze 限制 |

### 瀏覽技能（8 項）
| 技能 | 功能說明 |
|------|----------|
| `/browse` | 無頭 Chromium — 約 100 毫秒/指令 |
| `/setup-browser-cookies` | 從真實瀏覽器匯入 Cookie |
| `/qa` | 瀏覽器基礎的 QA 測試 |
| `/design-review` | 使用截圖進行視覺稽核 |
| `/canary` | 監控已部署的應用程式 |
| `/benchmark` | 效能基準測試 |
| `/land-and-deploy` | 部署後驗證 |
| `/setup-browser-cookies` | 工作階段管理 |

## 安裝說明

### 系統需求
- [OpenCode](https://opencode.ai)
- [Bun](https://bun.sh) v1.0+
- [Git](https://git-scm.com/)

### 快速安裝

```bash
# 複製此儲存庫
git clone https://github.com/your-username/gstack-opencode.git ~/gstack-opencode

# 執行安裝腳本
cd ~/gstack-opencode && ./setup

# 加入至你的 Shell 設定檔
echo 'source ~/gstack-opencode/bin/gstack-env.sh' >> ~/.zshrc
source ~/.zshrc
```

### 手動安裝

```bash
# 1. 複製 gstack
git clone https://github.com/garrytan/gstack.git ~/gstack-opencode/source

# 2. 編譯 browse
cd ~/gstack-opencode/source
bun install
bun build --compile browse/src/cli.ts --outfile ~/gstack-opencode/browse/dist/browse

# 3. 將技能連結至 OpenCode
mkdir -p ~/.config/opencode/skills/gstack
ln -sf ~/gstack-opencode/skills/* ~/.config/opencode/skills/gstack/
```

## 目錄結構

```
~/gstack-opencode/
├── skills/                    # 27 項 OpenCode 技能
│   ├── office-hours/SKILL.md
│   ├── review/SKILL.md
│   ├── browse/SKILL.md
│   └── ...
├── browse/                    # 無頭瀏覽器引擎
│   └── dist/browse            # 已編譯的二進位檔（63MB）
├── bin/                       # 工具指令稿
│   ├── gstack-env.sh          # 環境設定
│   ├── gstack-slug            # 產生儲存庫 slug
│   └── ...
├── plugin/                    # OpenCode 外掛
│   └── gstack-guardian.js     # 安全機制
├── review/                    # 共用資產
│   ├── checklist.md
│   └── ...
├── ETHOS.md                   # 建構者理念
├── BROWSER.md                 # 瀏覽器指令參考
├── setup                      # 安裝指令稿
└── README.md                  # 本檔案
```

## 環境變數

| 變數名稱 | 說明 |
|----------|------|
| `GSTACK_OPENCODE_DIR` | gstack-opencode 目錄的路徑 |
| `GSTACK_BROWSE` | browse 二進位檔的路徑 |

## 安全機制

`/careful`、`/freeze` 和 `/guard` 技能透過 OpenCode 外掛（`plugin/gstack-guardian.js`）實作。它會攔截：

- **破壞性指令：** `rm -rf`、`DROP TABLE`、`git push --force` 等。
- **Freeze 違規：** 在鎖定目錄外的編輯操作。

## 與原版 gstack 的差異

| 面向 | Claude Code | OpenCode |
|------|-------------|----------|
| 鉤子機制 | PreToolUse hooks | 外掛 `tool.execute.before` |
| 環境變數 | `${CLAUDE_SKILL_DIR}` | `${GSTACK_OPENCODE_DIR}` |
| 安全技能 | Shell 指令稿 | JavaScript 外掛 |
| 技能格式 | YAML + Markdown | YAML + Markdown（簡化版） |

## 致謝

原版 gstack 由 [Garry Tan](https://github.com/garrytan/gstack) 開發 — MIT 授權條款

OpenCode 移植由 gstack-opencode 貢獻者完成

## 授權條款

MIT