主要靠[[linear]]的设计哲学去规范
这是一个很好的工作流设计问题。让我梳理一个 Git + Linear 的有机集成方案。
一、核心设计
1.1 命名规范(Issue ↔ Branch 双向关联)
- Linear Issue: P-123 实现词汇高亮功能
- Git Branch: P-123-vocab-highlight
- GitHub PR: [P-123] 实现词汇高亮功能
Linear 自动识别:当 commit message 或 PR 标题包含 P-123 时,Linear 会自动关联。
1.2 状态流转
```
┌─────────┐ ┌─────────────┐ ┌───────────┐ ┌──────────┐ ┌──────┐
│ Todo │ → │ In Progress │ → │ In Review │ → │ 待人测试 │ → │ Done │
└─────────┘ └─────────────┘ └───────────┘ └──────────┘ └──────┘
│ │ │ │ │
│ 创建分支 提交 PR PR merged 测试通过
│ 开始开发 请求 review 部署预览环境 手动确认
```
二、Labels 扩展
在现有标签基础上新增:
| Label | 说明 | 触发条件 |
| :------- | :---------------- | :----------------- |
| 待人测试 | 需要人工 GUI 测试 | PR merged 后自动打上 |
| 测试通过 | 人工测试完成 | 手动确认 |
| 有回归 | 测试发现问题 | 手动标记,需要返工 |
Labels 组合示例
[P-123] 词汇高亮功能
- 前端
- App端
- 待人测试 ← PR merged 后自动添加
三、Worktree 策略
用 worktree 支持并行开发多个 Issue:
```
# 主目录保持 main 分支
~/projects/viva/
# 每个 Issue 一个 worktree
~/projects/viva-worktrees/
├── P-123-vocab-highlight/ # 词汇高亮
├── P-124-settings-page/ # 设置页面
└── P-125-bug-fix/ # 紧急修复
```
创建命令:
```
git worktree add ../viva-worktrees/P-123-vocab-highlight -b P-123-vocab-highlight
```
四、自动化集成
4.1 GitHub Actions → Linear
```yaml
# .github/workflows/linear-sync.yml
name: Sync to Linear
on:
pull_request:
types: [opened, closed, merged]
jobs:
update-linear:
runs-on: ubuntu-latest
steps:
- name: Extract Issue ID
id: extract
run: |
# 从 PR 标题提取 P-xxx
ISSUE_ID=$(echo "${{ github.event.pull_request.title }}" | grep -oE 'P-[0-9]+')
echo "issue_id=$ISSUE_ID" >> $GITHUB_OUTPUT
- name: Update Linear Status
if: github.event.action == 'closed' && github.event.pull_request.merged
run: |
# PR merged → 状态改为「待人测试」+ 添加标签
curl -X POST https://api.linear.app/graphql \
-H "Authorization: ${{ secrets.LINEAR_API_KEY }}" \
-d '...'
```
4.2 Linear Issue Description 模板
sessionId: <session_id>
## 任务描述
<具体要做什么>
## 开发信息
- **Branch**: `P-123-vocab-highlight`
- **Worktree**: `~/projects/viva-worktrees/P-123-vocab-highlight`
- **PR**: (待创建)
- **预览环境**: (PR merged 后自动部署)
## 测试清单
- [ ] 词汇高亮显示正常
- [ ] 点击高亮词弹出释义
- [ ] 深色模式下颜色正确
- [ ] iPad 横屏布局正常
## 相关链接
- GitHub: https://github.com/xxx/viva
- Figma: https://figma.com/xxx
五、人工测试流程
5.1 「待人测试」状态的 Issue
在 Linear 中创建一个 View:
Filter:
- Team = 产品事业部
- Label contains 待人测试
- Status != Done
这个 View 就是你的「测试队列」。
5.2 测试完成后
通过:
1. 移除「待人测试」标签
2. 添加「测试通过」标签
3. 状态改为 Done
有问题:
4. 移除「待人测试」标签
5. 添加「有回归」标签
6. 状态改回 In Progress
7. 在 comment 里记录问题
六、Claude Code 集成点
6.1 创建 Issue 时自动填充
## 开发信息
- **Branch**: `P-{issue_number}-{slug}`
- **建议 Worktree**: `~/projects/{project}-worktrees/P-{issue_number}-{slug}`
6.2 开发完成时提醒
当检测到 git push 且分支名包含 P-xxx 时:
```
检测到推送分支 P-123-vocab-highlight
是否创建 PR 并关联 Linear Issue P-123?
```
6.3 PR Merged 后自动更新
Hook 检测到 PR merged → 调用 Linear API:
1. 状态改为「待人测试」
2. 添加「待人测试」标签
3. Comment 里加上预览环境链接
七、实施建议
| 优先级 | 任务 | 复杂度 |
| :----- | :--------------------------------------------------- | :----- |
| P0 | 在 Linear 创建「待人测试」「测试通过」「有回归」标签 | 低 |
| P0 | 制定分支命名规范 P-xxx-slug | 低 |
| P1 | 更新 Issue Description 模板 | 低 |
| P1 | 创建「测试队列」View | 低 |
| P2 | GitHub Actions 自动同步状态 | 中 |
| P2 | Claude Code Hook 集成 | 中 |
---
需要我帮你在线性创建这些标签,或者写一个 GitHub Actions 的完整配置吗?