@xulthekl/team-flow 0.32.1 → 0.32.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/.claude/always/phase-guard.md +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.cursor-plugin/marketplace.json +1 -1
- package/.cursor-plugin/plugin.json +1 -1
- package/.github/plugin/marketplace.json +2 -2
- package/CHANGELOG.md +22 -0
- package/GEMINI.md +1 -1
- package/INSTALL.md +1 -1
- package/README.md +1 -1
- package/docs/README_en.md +1 -1
- package/gemini-extension.json +1 -1
- package/hooks/pre-tool-use-guard +43 -2
- package/hooks/session-start +2 -2
- package/llms.txt +1 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/scripts/guard/guard.mjs +6 -1
- package/scripts/lib/cmd-version.mjs +26 -21
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
{
|
|
10
10
|
"name": "team-flow",
|
|
11
11
|
"description": "8-state spec workflow + compound global compounding + architecture-design (4A/DDD) + local HTML prototype + product-level orchestration + bootstrap + e2e + session handoff + workflow feedback. 24 skills + 15 agents with embedded TDD, SDD, code review, debugging, delta spec sync, and design-system-driven prototyping.",
|
|
12
|
-
"version": "0.32.
|
|
12
|
+
"version": "0.32.2",
|
|
13
13
|
"source": "./",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "LT",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "team-flow",
|
|
3
|
-
"version": "0.32.
|
|
3
|
+
"version": "0.32.2",
|
|
4
4
|
"description": "Unified workflow plugin: team-flow (spec-driven dev: TDD/SDD/code-review/debugging) + compound-engineering core subset (brainstorm/plan/compound/strategy/ideate/proof, global compounding) + architecture-design (4A+DDD incremental design & global compounding) + prototype (local HTML prototype, zero external deps) + e2e (Playwright E2E, AC-driven) + workflow-orchestrator (product-level workflow orchestration) + workflow-bootstrap (existing project onboarding) + session-handoff (context transfer) + workflow-feedback (issue tracking). 24 skills + 15 agents, one install.",
|
|
5
5
|
"source": "./",
|
|
6
6
|
"author": {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "team-flow",
|
|
3
3
|
"displayName": "team-flow",
|
|
4
4
|
"description": "Unified workflow plugin: team-flow (spec-driven dev: TDD/SDD/code-review/debugging) + compound-engineering core subset (brainstorm/plan/compound/strategy/ideate/proof, global compounding) + architecture-design (4A+DDD incremental design & global compounding) + prototype (local HTML prototype, zero external deps) + e2e (Playwright E2E, AC-driven) + workflow-orchestrator (product-level workflow orchestration) + workflow-bootstrap (existing project onboarding) + session-handoff (context transfer) + workflow-feedback (issue tracking). 24 skills + 15 agents, one install.",
|
|
5
|
-
"version": "0.32.
|
|
5
|
+
"version": "0.32.2",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "LT",
|
|
8
8
|
"url": "https://github.com/LT"
|
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Unified workflow plugins and skills for AI coding agents (team-flow: team-flow + compound + architecture-design + prototype).",
|
|
9
|
-
"version": "0.32.
|
|
9
|
+
"version": "0.32.2"
|
|
10
10
|
},
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "team-flow",
|
|
14
14
|
"description": "Unified workflow with planning artifacts, execution contracts, TDD, review gates, systematic debugging, delta spec sync, architecture-design, and local HTML prototyping.",
|
|
15
|
-
"version": "0.32.
|
|
15
|
+
"version": "0.32.2",
|
|
16
16
|
"source": ".",
|
|
17
17
|
"author": {
|
|
18
18
|
"name": "LT",
|
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,28 @@ The format loosely follows Keep a Changelog.
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.32.2] - 2026-08-03
|
|
10
|
+
|
|
11
|
+
### Fixed(C1 死锁链修复三件套,设计见工作区级文档 team-flow-workspace/docs/plan/v0.32.2-hook-and-gate-fix.md)
|
|
12
|
+
|
|
13
|
+
#### pre-tool-use-guard 路径化(P1-44,死锁环1)
|
|
14
|
+
- **hooks/pre-tool-use-guard**:新增产物区豁免——Write/Edit/MultiEdit 目标在活动 change 目录内(architecture/、specs/、proposal/design/tasks、contract、test-matrix、reviews 等工作流产物)→ 全状态放行;change 目录外(实现代码)→ 维持状态门禁(仅 approved-for-build/executing/debugging)。修复 exploring/specifying/bridging 阶段产物写入被一刀切拦截、LLM 被迫 Bash 绕过(写入彻底脱管)的死锁
|
|
15
|
+
- `.team-flow.yaml` 本身恒受状态门禁(state 禁写红线保留)
|
|
16
|
+
- macOS symlink 归一化(/private/var ↔ /var 双侧对齐),防物理/逻辑路径前缀失配
|
|
17
|
+
|
|
18
|
+
#### exploring→specifying 门禁时序(P3-10,死锁环2)
|
|
19
|
+
- **scripts/guard/guard.mjs**:`exploring:specifying` 移除 `artifacts-exist` 维度(四件规划产物由 spec-writer 在 specifying 阶段生成,转换前要求属鸡生蛋死锁);产物齐全性由 `specifying:bridging` 独家负责(该维度本就挂着,单一责任人)
|
|
20
|
+
|
|
21
|
+
#### hooks 版本同步(P2-40,发版中断根治)
|
|
22
|
+
- **scripts/lib/cmd-version.mjs**:hooks/session-start 纳入自动同步——头部注释行 pattern 后缀改通配(根因:旧 pattern 写死 `: conditional injection` 措辞,hook 注释演进后失配,v0.27.2~v0.32.1 四次发版中断)+ PLUGIN_VERSION 变量首次纳入同步
|
|
23
|
+
- 顺带修复:major 版本号硬编码为 0 的缺陷(v1.0.0 里程碑会静默写成 0.x.y)——解构补 major + 全部 replacement 改 %MAJOR% 占位 + 全部 pattern 首段泛化(`0\.` → `\d+`,支持 1.x 匹配)
|
|
24
|
+
|
|
25
|
+
### Tests
|
|
26
|
+
- tests/lib/hook-pre-tool-use.test.mjs:路径化判定 9 场景矩阵(产物区放行/代码区拦截/构建态/禁写红线/无 change/非 Write 工具/相对路径)
|
|
27
|
+
- tests/lib/cmd-version-hooks.test.mjs:hooks 双位置同步 + 幂等 + pattern 防腐化 3 例
|
|
28
|
+
- guard.test.mjs / guard-dimensions.test.mjs:artifacts-exist 断言迁移至 specifying→bridging + exploring→specifying 新语义断言
|
|
29
|
+
- 全量回归:lib 498/498 + Tier1 e2e 68/68 + check-versions ✅
|
|
30
|
+
|
|
9
31
|
## [0.32.1] - 2026-08-03
|
|
10
32
|
|
|
11
33
|
> 版本号说明:0.32.0 因 `.npmignore` 缺失 `/tests/` 排除项,误将 61.8M e2e 基线归档打入 tarball(72MB),发布后 30 分钟内撤回;npm 版本号一经发布不可复用,故以 **0.32.1** 重发(内容完全一致 + 打包修复)。
|
package/GEMINI.md
CHANGED
|
@@ -8,7 +8,7 @@ The workflow is self-contained and does not require OpenSpec or Superpowers at r
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
<!-- team-flow-phase-guard-start -->
|
|
11
|
-
# team-flow v0.32.
|
|
11
|
+
# team-flow v0.32.2 | 阶段: {{state}} | 工作流: {{workflow}}
|
|
12
12
|
当前阶段允许的操作由 workflow-start 路由规则定义。
|
|
13
13
|
禁止跨越 DP gate 进入下一阶段。变更范围以 execution-contract.md 的 Intent Lock 为准。
|
|
14
14
|
<!-- team-flow-phase-guard-end -->
|
package/INSTALL.md
CHANGED
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# team-flow
|
|
2
2
|
|
|
3
|
-
> 当前版本:`v0.32.
|
|
3
|
+
> 当前版本:`v0.32.2`
|
|
4
4
|
|
|
5
5
|
> 统一插件:**team-flow**(spec 驱动开发)+ **compound-engineering 核心子集**(全局复利)+ **architecture-design**(4A+DDD 增量设计)+ **prototype**(本地 HTML 原型)+ **e2e**(AC 驱动 E2E)+ **workflow-orchestrator**(产品级编排)+ **workflow-bootstrap**(既有项目接入)。一次安装,七套能力协同。
|
|
6
6
|
|
package/docs/README_en.md
CHANGED
|
@@ -126,7 +126,7 @@ npm install -g team-flow
|
|
|
126
126
|
|
|
127
127
|
### Version
|
|
128
128
|
|
|
129
|
-
- Current: `v0.32.
|
|
129
|
+
- Current: `v0.32.2`
|
|
130
130
|
- v0.9.1 highlights: DP-4 execution-mode recommendations, a portable runtime across 17 platforms, and a raw-package smoke with no plugin-root variable.
|
|
131
131
|
- Self-contained — no OpenSpec or Superpowers runtime required
|
|
132
132
|
- Upstream: [Fission-AI/OpenSpec](https://github.com/Fission-AI/OpenSpec), [obra/superpowers](https://github.com/obra/superpowers)
|
package/gemini-extension.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "team-flow",
|
|
3
3
|
"description": "Unified workflow plugin: team-flow (spec-driven dev) + compound-engineering core subset + architecture-design (4A/DDD) + prototype (local HTML). 24 skills, one install.",
|
|
4
|
-
"version": "0.32.
|
|
4
|
+
"version": "0.32.2",
|
|
5
5
|
"contextFileName": "GEMINI.md"
|
|
6
6
|
}
|
package/hooks/pre-tool-use-guard
CHANGED
|
@@ -5,12 +5,21 @@
|
|
|
5
5
|
# ----------------------------------------------------------------------------
|
|
6
6
|
# Purpose
|
|
7
7
|
# ----------------------------------------------------------------------------
|
|
8
|
-
# Blocks Write/Edit/MultiEdit
|
|
8
|
+
# Blocks Write/Edit/MultiEdit IMPLEMENTATION edits unless the active
|
|
9
9
|
# team-flow change is in a state that permits building. This enforces the
|
|
10
10
|
# state-machine rule that "no implementation is allowed" outside the
|
|
11
11
|
# build-permitted states (exploring / specifying / bridging must finish and be
|
|
12
12
|
# approved before any code is written).
|
|
13
13
|
#
|
|
14
|
+
# v0.32.2 (P1-44): path-based artifact-zone exemption. The workflow itself
|
|
15
|
+
# REQUIRES artifact writes during non-build states (architecture/*.md while
|
|
16
|
+
# exploring, proposal/specs/design/tasks while specifying, contract/matrix
|
|
17
|
+
# while bridging). The original state-only gate blocked those too, forcing
|
|
18
|
+
# LLMs to bypass via Bash writes (which are not gated at all). Now writes
|
|
19
|
+
# INSIDE the active change directory (artifact zone) are allowed; only writes
|
|
20
|
+
# OUTSIDE it (implementation code) remain state-gated. `.team-flow.yaml`
|
|
21
|
+
# itself stays state-gated even inside the change dir (state 禁写红线).
|
|
22
|
+
#
|
|
14
23
|
# ----------------------------------------------------------------------------
|
|
15
24
|
# Guard logic
|
|
16
25
|
# ----------------------------------------------------------------------------
|
|
@@ -19,6 +28,9 @@
|
|
|
19
28
|
# - Not found -> ALLOW (no active team-flow change in scope).
|
|
20
29
|
# 2. Read the current workflow state from the `state:` line of the yaml.
|
|
21
30
|
# 3. For Write/Edit/MultiEdit only:
|
|
31
|
+
# 3a. Target path inside the change directory (artifact zone) AND not
|
|
32
|
+
# `.team-flow.yaml` -> ALLOW (workflow artifacts are state-agnostic).
|
|
33
|
+
# 3b. Otherwise by state:
|
|
22
34
|
# - state in {approved-for-build, executing, debugging} -> ALLOW
|
|
23
35
|
# - any other state (exploring/specifying/bridging/closing/abandoned/
|
|
24
36
|
# unknown) -> BLOCK with an explanatory reason.
|
|
@@ -101,13 +113,42 @@ state="$(grep -E '^[[:space:]]*state:[[:space:]]*' "$yaml" 2>/dev/null \
|
|
|
101
113
|
# Could not determine state -> defensive allow (never block on parse failure).
|
|
102
114
|
[ -n "$state" ] || allow
|
|
103
115
|
|
|
116
|
+
# --- v0.32.2 (P1-44): artifact-zone exemption ------------------------------
|
|
117
|
+
# Writes targeting the active change directory itself are workflow artifacts
|
|
118
|
+
# (architecture/, specs/, proposal/design/tasks, contract, test-matrix,
|
|
119
|
+
# reviews, learnings...) — required by the workflow in EVERY state, so they
|
|
120
|
+
# are exempt from the build-state gate. Only writes outside the change dir
|
|
121
|
+
# (implementation code) are gated. `.team-flow.yaml` remains gated (state 禁写).
|
|
122
|
+
file_path="$(printf '%s' "$INPUT" \
|
|
123
|
+
| grep -o '"file_path"[[:space:]]*:[[:space:]]*"[^"]*"' \
|
|
124
|
+
| head -1 \
|
|
125
|
+
| sed 's/.*:"//; s/"$//')"
|
|
126
|
+
# Relative target -> absolutize against $PWD for a stable prefix comparison.
|
|
127
|
+
case "$file_path" in
|
|
128
|
+
''|/*) : ;;
|
|
129
|
+
*) file_path="$PWD/$file_path" ;;
|
|
130
|
+
esac
|
|
131
|
+
if [ -n "$file_path" ] && [ "${file_path##*/}" != ".team-flow.yaml" ]; then
|
|
132
|
+
case "$file_path" in
|
|
133
|
+
"$dir"/*) allow ;; # artifact zone: inside the change directory
|
|
134
|
+
esac
|
|
135
|
+
# macOS symlink normalization: /var,/tmp are symlinks to /private/var,/private/tmp.
|
|
136
|
+
# $PWD may be physical (child-process chdir) while file_path is logical, or vice
|
|
137
|
+
# versa — strip the /private prefix on both sides before comparing.
|
|
138
|
+
norm_dir="${dir#/private}"
|
|
139
|
+
norm_fp="${file_path#/private}"
|
|
140
|
+
case "$norm_fp" in
|
|
141
|
+
"$norm_dir"/*) allow ;;
|
|
142
|
+
esac
|
|
143
|
+
fi
|
|
144
|
+
|
|
104
145
|
# --- decision --------------------------------------------------------------
|
|
105
146
|
case "$state" in
|
|
106
147
|
approved-for-build|executing|debugging)
|
|
107
148
|
allow
|
|
108
149
|
;;
|
|
109
150
|
*)
|
|
110
|
-
reason="team-flow guard: implementation edits (Write/Edit/MultiEdit) are blocked while the change is in state '$state'.
|
|
151
|
+
reason="team-flow guard: implementation edits (Write/Edit/MultiEdit) OUTSIDE the change directory are blocked while the change is in state '$state'. Code edits are only allowed in states: approved-for-build, executing, debugging. Artifact writes inside the change directory are always permitted (v0.32.2). Advance the workflow to an approved build state first (see docs/state-machine.md or /team-flow:workflow-start). If no change is actually active, remove or fix the stray .team-flow.yaml."
|
|
111
152
|
# Escape backslashes and double quotes for safe JSON string embedding.
|
|
112
153
|
reason_esc="$(printf '%s' "$reason" | sed 's/\\/\\\\/g; s/"/\\"/g')"
|
|
113
154
|
printf '{"decision":"block","reason":"%s"}\n' "$reason_esc"
|
package/hooks/session-start
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# v0.32.
|
|
2
|
+
# v0.32.2: auto-sync CLI version with plugin version
|
|
3
3
|
set -e
|
|
4
4
|
|
|
5
5
|
# ═══════════════════════════════════════════════════════════════
|
|
6
6
|
# Plugin version (update this when releasing new versions)
|
|
7
7
|
# ═══════════════════════════════════════════════════════════════
|
|
8
|
-
PLUGIN_VERSION="0.32.
|
|
8
|
+
PLUGIN_VERSION="0.32.2"
|
|
9
9
|
|
|
10
10
|
# ═══════════════════════════════════════════════════════════════
|
|
11
11
|
# Step 1: Auto-sync CLI version with plugin version
|
package/llms.txt
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
## Overview
|
|
4
4
|
spec-superflow is a self-contained workflow integration plugin for Claude Code, Cursor, OpenAI Codex CLI/App, GitHub Copilot CLI, Gemini CLI, OpenCode, WorkBuddy, and Trae. It merges spec-driven planning artifacts (proposal, specs, design, tasks) with disciplined execution guardrails (TDD, review gates, controlled handoff) into one unified workflow.
|
|
5
5
|
|
|
6
|
-
Current version: v0.32.
|
|
6
|
+
Current version: v0.32.2.
|
|
7
7
|
|
|
8
8
|
## Key Documents
|
|
9
9
|
- README.md: Chinese homepage with full usage guide and FAQ
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xulthekl/team-flow",
|
|
3
|
-
"version": "0.32.
|
|
3
|
+
"version": "0.32.2",
|
|
4
4
|
"description": "Unified plugin (24 skills + 15 agents) integrating team-flow, compound-engineering, architecture-design, prototype, design-system, workflow-orchestrator, workflow-bootstrap, e2e, session-handoff, workflow-feedback for multi-agent coding tools.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
package/plugin.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "team-flow",
|
|
3
|
-
"version": "0.32.
|
|
3
|
+
"version": "0.32.2",
|
|
4
4
|
"description": "Unified workflow plugin: team-flow (spec-driven dev: TDD/SDD/code-review/debugging) + compound-engineering core subset (brainstorm/plan/compound/strategy/ideate/proof, global compounding) + architecture-design (4A+DDD incremental design & global compounding) + prototype (local HTML prototype, zero external deps) + e2e (Playwright E2E, AC-driven) + workflow-orchestrator (product-level workflow orchestration) + workflow-bootstrap (existing project onboarding) + session-handoff (context transfer) + workflow-feedback (issue tracking). 24 skills + 15 agents, one install.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "LT"
|
package/scripts/guard/guard.mjs
CHANGED
|
@@ -20,7 +20,12 @@ import { checkTestMatrixReady } from './checks/test-matrix-ready.mjs';
|
|
|
20
20
|
// Transition matrix: <from>:<to> → required check dimensions
|
|
21
21
|
const TRANSITION_CHECKS = {
|
|
22
22
|
// Forward transitions
|
|
23
|
-
|
|
23
|
+
// v0.32.2 (P3-10): artifacts-exist removed from exploring:specifying —
|
|
24
|
+
// the four planning artifacts are PRODUCED by spec-writer during specifying,
|
|
25
|
+
// so requiring them before the transition was a chicken-and-egg deadlock
|
|
26
|
+
// (C1 事件:主代理被此门禁逼出绕行行为)。Artifact completeness is enforced
|
|
27
|
+
// by specifying:bridging (artifacts-exist remains there, single owner).
|
|
28
|
+
'exploring:specifying': ['arch-design'],
|
|
24
29
|
'specifying:bridging': ['artifacts-exist', 'schema-valid'],
|
|
25
30
|
'bridging:approved-for-build': ['artifacts-exist', 'schema-valid', 'contract-fresh', 'dp-gate-passed'],
|
|
26
31
|
// v0.13 §49:test-matrix-ready 门禁前移——full 模式进入 executing 前强制测试准备度
|
|
@@ -19,25 +19,30 @@ const MANIFESTS = [
|
|
|
19
19
|
// ── Text files with regex patterns (first capture group = version to replace) ──
|
|
20
20
|
// Note: CLAUDE.md is intentionally gitignored (project-local AI instructions).
|
|
21
21
|
const TEXT_FILES = [
|
|
22
|
-
{ file: 'README.md', pattern: /(当前版本:`v?)
|
|
23
|
-
{ file: 'INSTALL.md', pattern: /(当前发布版本:\*\*v)
|
|
24
|
-
{ file: 'docs/README_en.md', pattern: /(Current: `v)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
{ file: '
|
|
30
|
-
{ file: '
|
|
31
|
-
{ file: '
|
|
32
|
-
{ file: '
|
|
33
|
-
{ file: '
|
|
34
|
-
{ file: 'skills/
|
|
35
|
-
{ file: 'skills/
|
|
36
|
-
{ file: 'skills/
|
|
37
|
-
{ file: 'skills/
|
|
38
|
-
{ file: 'skills/
|
|
39
|
-
{ file: 'skills/
|
|
40
|
-
{ file: 'skills/
|
|
22
|
+
{ file: 'README.md', pattern: /(当前版本:`v?)\d+\.\d+\.\d+(`?)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
23
|
+
{ file: 'INSTALL.md', pattern: /(当前发布版本:\*\*v)\d+\.\d+\.\d+(\*\*)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
24
|
+
{ file: 'docs/README_en.md', pattern: /(Current: `v)\d+\.\d+\.\d+(`)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
25
|
+
// v0.32.2(P2-40):hooks/session-start 两处版本号都纳入同步——
|
|
26
|
+
// ① 头部注释行(后缀用通配 `:.*`,防止注释措辞变更导致 pattern 腐化失配,
|
|
27
|
+
// v0.27.2~v0.32.1 四次发版中断的根因即旧 pattern 写死了后缀措辞);
|
|
28
|
+
// ② PLUGIN_VERSION 变量(check-version-consistency 的门禁判据)。
|
|
29
|
+
{ file: 'hooks/session-start', pattern: /(# v)\d+\.\d+\.\d+(:.*)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
30
|
+
{ file: 'hooks/session-start', pattern: /(PLUGIN_VERSION=")\d+\.\d+\.\d+(")/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
31
|
+
{ file: 'llms.txt', pattern: /(Current version: v)\d+\.\d+\.\d+(\.)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
32
|
+
{ file: '.claude/always/phase-guard.md', pattern: /(# team-flow v)\d+\.\d+\.\d+( \|)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
33
|
+
{ file: 'GEMINI.md', pattern: /(# team-flow v)\d+\.\d+\.\d+( \|)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
34
|
+
{ file: 'skills/workflow-start/SKILL.md', pattern: /(npx --yes --package @xulthekl\/team-flow@)\d+\.\d+\.\d+( tf)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
35
|
+
{ file: 'skills/need-explorer/SKILL.md', pattern: /(npx --yes --package @xulthekl\/team-flow@)\d+\.\d+\.\d+( tf)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
36
|
+
{ file: 'skills/spec-writer/SKILL.md', pattern: /(npx --yes --package @xulthekl\/team-flow@)\d+\.\d+\.\d+( tf)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
37
|
+
{ file: 'skills/contract-builder/SKILL.md', pattern: /(npx --yes --package @xulthekl\/team-flow@)\d+\.\d+\.\d+( tf)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
38
|
+
{ file: 'skills/build-executor/SKILL.md', pattern: /(npx --yes --package @xulthekl\/team-flow@)\d+\.\d+\.\d+( tf)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
39
|
+
{ file: 'skills/build-executor/implementer-prompt.md', pattern: /(npx --yes --package @xulthekl\/team-flow@)\d+\.\d+\.\d+( tf)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
40
|
+
{ file: 'skills/build-executor/task-reviewer-prompt.md', pattern: /(npx --yes --package @xulthekl\/team-flow@)\d+\.\d+\.\d+( tf)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
41
|
+
{ file: 'skills/code-reviewer/SKILL.md', pattern: /(npx --yes --package @xulthekl\/team-flow@)\d+\.\d+\.\d+( tf)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
42
|
+
{ file: 'skills/code-reviewer/code-reviewer-prompt.md', pattern: /(npx --yes --package @xulthekl\/team-flow@)\d+\.\d+\.\d+( tf)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
43
|
+
{ file: 'skills/bug-investigator/SKILL.md', pattern: /(npx --yes --package @xulthekl\/team-flow@)\d+\.\d+\.\d+( tf)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
44
|
+
{ file: 'skills/release-archivist/SKILL.md', pattern: /(npx --yes --package @xulthekl\/team-flow@)\d+\.\d+\.\d+( tf)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
45
|
+
{ file: 'skills/spec-merger/SKILL.md', pattern: /(npx --yes --package @xulthekl\/team-flow@)\d+\.\d+\.\d+( tf)/g, replacement: '$1%MAJOR%.%MINOR%.%PATCH%$2' },
|
|
41
46
|
];
|
|
42
47
|
|
|
43
48
|
function getNestedValue(obj, pathParts) {
|
|
@@ -72,7 +77,7 @@ export async function run(args) {
|
|
|
72
77
|
console.error(`Invalid semver: ${newVersion}`);
|
|
73
78
|
process.exit(2);
|
|
74
79
|
}
|
|
75
|
-
const [, , minor, patch] = match;
|
|
80
|
+
const [, major, minor, patch] = match;
|
|
76
81
|
|
|
77
82
|
console.log(`Version sync → ${newVersion}${dryRun ? ' (dry run)' : ''}\n`);
|
|
78
83
|
let changed = 0;
|
|
@@ -122,7 +127,7 @@ export async function run(args) {
|
|
|
122
127
|
|
|
123
128
|
const content = readFileSync(filePath, 'utf-8');
|
|
124
129
|
const replacement = entry.replacement
|
|
125
|
-
.replace('%MINOR%', minor)
|
|
130
|
+
.replace('%MAJOR%', major).replace('%MINOR%', minor)
|
|
126
131
|
.replace('%PATCH%', patch);
|
|
127
132
|
|
|
128
133
|
const newContent = content.replace(entry.pattern, replacement);
|