team-skills 1.6.1 → 1.6.2

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/CHANGELOG.md CHANGED
@@ -7,6 +7,16 @@
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.6.2] - 2026-06-29
11
+
12
+ ### 变更
13
+
14
+ - team-orchestrator: Step 1.5.2 从自动创建功能分支改为分支策略选择(Fork/不Fork),用户显式选择是否创建新分支
15
+ - team-orchestrator: 移除"当前分支≠基准分支时自动跳过"的隐式规则,仅保留 `--no-branch` 显式跳过
16
+ - team-orchestrator: Mermaid + ASCII 流程图分支步骤标签同步更新
17
+ - team-finish: Step 2 新增当前分支获取 + 基准分支守卫(`branch == base_branch` 时 BLOCKED)
18
+ - team-finish: Step 3 选项模板增加分支信息展示,选项描述使用具名分支变量 `{branch}`
19
+
10
20
  ## [1.6.1] - 2026-06-28
11
21
 
12
22
  ### 变更
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "team-skills",
3
- "version": "1.6.1",
3
+ "version": "1.6.2",
4
4
  "description": "AI Agent Skills framework — Spec-Driven development with directed-graph rollback and quality gates",
5
5
  "type": "module",
6
6
  "bin": {
@@ -94,10 +94,12 @@ NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
94
94
  - **IF** `exit_code == 0` → 逐条排除占位符/测试值/注释 → 真实凭证 → **BLOCKED**,**WRITE**(对话中)凭证位置,要求修复后重新验证
95
95
  - **ELSE** → **GOTO** Step 2
96
96
 
97
- ### Step 2:确定基准分支
97
+ ### Step 2:确定当前分支与基准分支
98
98
 
99
99
  > 精确找到合并目标。基准错误 = 合并到错误分支,后果比不合并更糟。
100
100
 
101
+ **EXEC** `git branch --show-current` → **ASSERT** `exit_code == 0` → 获取 `branch`
102
+
101
103
  **RESOLVE** `base_branch`(首个命中即停):
102
104
 
103
105
  1. `READ("docs/tasks/{slug}/.checkpoint.json").base_branch`
@@ -112,6 +114,8 @@ NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
112
114
 
113
115
  - 失败(分支无公共祖先)→ **BLOCKED**,触发 **ASK_HUMAN**
114
116
 
117
+ **IF** `branch == base_branch` → **WRITE**(对话中)"当前已在基准分支 {base_branch} 上,无功能分支需要完成。" → **BLOCKED**
118
+
115
119
  ### Step 3:展示选项
116
120
 
117
121
  > 让用户在完整信息下做选择。选项列表必须覆盖所有合理路径,不替用户预判。
@@ -119,22 +123,23 @@ NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
119
123
  **WRITE**(对话中)选项列表:
120
124
 
121
125
  ```
126
+ 当前分支:{branch},基准分支:{base_branch}
122
127
  实现完成,测试已通过。请选择集成方式:
123
128
 
124
129
  1. [默认] 合并到 {base_branch} 并推送
125
- → push 功能分支(留档)merge {base_branch} → push {base_branch} → 清理本地功能分支
130
+ → push {branch}(留档)切换到 {base_branch} → merge → push → 清理 {branch}
126
131
  适用:有合并权限,可直接集成
127
132
 
128
133
  2. 创建 Pull Request
129
- → push 功能分支 → 创建 PR 等待审查
134
+ → push {branch} → 创建 PR 等待审查
130
135
  适用:需要 Code Review 或 CI 门禁
131
136
 
132
137
  3. 保留当前分支
133
- 不做任何操作,功能分支原样保留
138
+ 不做任何操作,{branch} 原样保留
134
139
  适用:尚需打磨,或等待外部依赖就绪
135
140
 
136
141
  4. 丢弃本次工作(需二次确认)
137
- 切回 {base_branch} → 强制删除功能分支
142
+ 切换到 {base_branch} → 强制删除 {branch}
138
143
  适用:实验性工作,确认不再需要
139
144
 
140
145
  请选择 [1]:
@@ -11,7 +11,7 @@ description: Use when task needs full spec→impl→test→review pipeline with
11
11
 
12
12
  ```mermaid
13
13
  flowchart TD
14
- CONFIRM_GOAL["CONFIRM_GOAL: 人类确认目标"] --> branch["创建功能分支"]
14
+ CONFIRM_GOAL["CONFIRM_GOAL: 人类确认目标"] --> branch["分支策略选择(Fork/不Fork)"]
15
15
  branch --> team-spec["team-spec: 规格制定"]
16
16
  team-spec --> CONFIRM_SPEC["CONFIRM_SPEC: 人类确认规格"]
17
17
  CONFIRM_SPEC --> team-impl["team-impl: TDD 实现"]
@@ -102,8 +102,8 @@ NO AGENT DISPATCH WITHOUT CONFIRM_GOAL HUMAN CONFIRMATION FIRST
102
102
  │ 确认 │ 不确认 → 返回修改
103
103
  ▼ └────────┐
104
104
  ┌──────────────────┐ │
105
- 创建功能分支 │ │
106
- {slug} 分支 │ │
105
+ 分支策略选择 │ │
106
+ Fork / 不Fork │ │
107
107
  └──────┬───────────┘ │
108
108
  │ │
109
109
  ▼ │
@@ -417,14 +417,34 @@ NO AGENT DISPATCH WITHOUT CONFIRM_GOAL HUMAN CONFIRMATION FIRST
417
417
  3. **FOR** `name` **IN** [`main`, `master`, `develop`]:**EXEC** `git show-ref --verify refs/heads/{name}` → **IF** `exit_code == 0` → 首个存在即停
418
418
  4. *NONE* → **ASK_HUMAN**,请求用户指定基准分支
419
419
 
420
- #### 1.5.2 创建功能分支
420
+ #### 1.5.2 分支策略选择
421
421
 
422
- 1. **EXEC** `git branch --show-current` → **ASSERT** `exit_code == 0` → 获取当前分支名
422
+ 1. **EXEC** `git branch --show-current` → **ASSERT** `exit_code == 0` → 获取 `current_branch`
423
423
  2. **EXEC** `git status --porcelain` → **ASSERT** `exit_code == 0`
424
424
  - **IF** `output` NOT_EMPTY → **GOTO** 1.5.2.1
425
- 3. **EXEC** `git checkout -b {slug}`
426
- - **IF** `exit_code != 0`(分支已存在)→ **EXEC** `git checkout {slug}` → **ASSERT** `exit_code == 0`
427
- 4. **WRITE** checkpoint:`current_step=Step 2, branch={slug}, base_branch={基准分支名}, completed_steps 追加 Step 1.5`
425
+
426
+ 3. **WRITE**(对话中)分支策略选项:
427
+
428
+ ```
429
+ 当前分支:{current_branch},基准分支:{base_branch}
430
+ 请选择分支策略:
431
+
432
+ 1. [默认] Fork — 从当前位置创建新分支 {slug}
433
+ 适用:功能开发需要隔离,便于回退和 PR
434
+
435
+ 2. 不 Fork — 直接在当前分支 {current_branch} 上工作
436
+ 适用:当前分支已是工作分支,或不需要分支隔离
437
+
438
+ 请选择 [1]:
439
+ ```
440
+
441
+ **MATCH** `user_choice`:
442
+
443
+ - `Option 1`(Fork,默认)→ **EXEC** `git checkout -b {slug}`
444
+ - **IF** `exit_code != 0`(分支已存在)→ **EXEC** `git checkout {slug}` → **ASSERT** `exit_code == 0`
445
+ - **WRITE** checkpoint:`current_step=Step 2, branch={slug}, base_branch={基准分支名}, completed_steps 追加 Step 1.5`
446
+ - `Option 2`(不 Fork)→ **WRITE** checkpoint:`current_step=Step 2, branch={current_branch}, base_branch={基准分支名}, completed_steps 追加 Step 1.5`
447
+ - *DEFAULT* → 请求用户从以上选项中选择
428
448
 
429
449
  #### 1.5.2.1:处理未提交变更
430
450
 
@@ -434,16 +454,15 @@ NO AGENT DISPATCH WITHOUT CONFIRM_GOAL HUMAN CONFIRMATION FIRST
434
454
 
435
455
  **MATCH** `user_choice`:
436
456
 
437
- - `stash 后继续` → **EXEC** `git stash` → **ASSERT** `exit_code == 0` → **GOTO** 1.5.2 步骤 3
438
- - `先提交再继续` → 等待用户提交 → **GOTO** 1.5.2 步骤 3
457
+ - `stash 后继续` → **EXEC** `git stash` → **ASSERT** `exit_code == 0` → **GOTO** 1.5.2 步骤 3(展示分支策略选项)
458
+ - `先提交再继续` → 等待用户提交 → **GOTO** 1.5.2 步骤 3(展示分支策略选项)
439
459
  - `取消` → **BLOCKED**
440
460
  - *DEFAULT* → 请求用户从以上选项中选择
441
461
 
442
462
  不自动 stash 或丢弃。
443
463
 
444
- **跳过条件**(不创建分支):
464
+ **跳过条件**(跳过分支策略选择,不展示选项):
445
465
 
446
- - **IF** 当前分支名 ≠ `base_branch` → 使用当前分支,checkpoint 中 `branch` 记录当前分支名
447
466
  - **IF** 用户指定 `--no-branch` → 直接在当前分支上工作
448
467
 
449
468
  **恢复场景**:**IF** 断点续传(checkpoint 已有 `branch` 字段)→ **ASSERT** `当前分支 == checkpoint.branch`。不一致 → 提示用户切换分支,不自动切换。