spec-runner 1.0.23 → 1.0.24

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-runner",
3
- "version": "1.0.23",
3
+ "version": "1.0.24",
4
4
  "description": "フェーズ駆動で設計先行を強制。npx で .spec-runner を展開し、次のステップ .md に従って進める",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -18,6 +18,11 @@ REPO_ROOT="${REPO_ROOT:-$(git rev-parse --show-toplevel 2>/dev/null || echo ".")
18
18
  cd "$REPO_ROOT"
19
19
  BRANCH_DIR="$(cd "$(dirname "$0")" && pwd)"
20
20
 
21
+ # Git 未初期化ワークスペースでは最小構成で初期化する(main を既定化)
22
+ if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
23
+ git init -b main >/dev/null 2>&1 || git init >/dev/null 2>&1
24
+ fi
25
+
21
26
  YES_MODE=false
22
27
  ARGS=()
23
28
  for a in "$@"; do
@@ -44,6 +49,17 @@ BRANCH_PREFIX="$(jq -r '.naming.branch_prefix' "$PROJECT_JSON")"
44
49
  exit 1
45
50
  }
46
51
 
52
+ # 憲章の未コミット変更があれば、AI によるレビュー付きコミットを先に行う
53
+ CHARTER_DOC="$REPO_ROOT/docs/01_憲章/憲章.md"
54
+ if [[ -f "$CHARTER_DOC" ]]; then
55
+ if [[ -n "$(git status --porcelain -- "$CHARTER_DOC")" ]]; then
56
+ echo "Error: 憲章に未コミット変更があります: $CHARTER_DOC" >&2
57
+ echo " 先に AI に差分を確認させ、適切なコミットメッセージでコミットしてください。" >&2
58
+ echo " その後に uc-next-start.sh を再実行してください。" >&2
59
+ exit 1
60
+ fi
61
+ fi
62
+
47
63
  next_uc_id() {
48
64
  # docs/02_ユースケース仕様/<カテゴリ>/UC-*.md から次に使う UC-N を返す
49
65
  local dir="$REPO_ROOT/docs/02_ユースケース仕様"
@@ -158,8 +174,20 @@ if [[ "$YES_MODE" != true ]]; then
158
174
  esac
159
175
  fi
160
176
 
161
- git checkout "$MAIN_BRANCH"
162
- git pull --ff-only 2>/dev/null || true
177
+ # 初回コミット前(unborn HEAD)は checkout main が失敗し得るためフォールバックする
178
+ if git rev-parse --verify HEAD >/dev/null 2>&1; then
179
+ git checkout "$MAIN_BRANCH"
180
+ git pull --ff-only 2>/dev/null || true
181
+ else
182
+ CURRENT_HEAD="$(git symbolic-ref --short -q HEAD 2>/dev/null || echo "")"
183
+ if [[ -z "$MAIN_BRANCH" ]]; then
184
+ MAIN_BRANCH="${CURRENT_HEAD:-main}"
185
+ fi
186
+ if [[ "$CURRENT_HEAD" != "$MAIN_BRANCH" ]]; then
187
+ git checkout -b "$MAIN_BRANCH" >/dev/null 2>&1 || true
188
+ fi
189
+ echo "Info: 初回コミット前のため pull はスキップします。"
190
+ fi
163
191
 
164
192
  # ブランチ作成 + UC 仕様書作成(統合)
165
193
  UC_ID_PATTERN="^${UC_ID_RE}$"
@@ -62,6 +62,7 @@ $ARGUMENTS
62
62
 
63
63
  ### 2. ブランチと仕様の作成
64
64
 
65
+ - `docs/01_憲章/憲章.md` は先に確定する。未コミット差分がある場合は、**AI が差分を確認してコミットメッセージを作成し、コミット完了後**に `uc-next-start.sh` を実行する。
65
66
  - `.spec-runner/scripts/branch/uc-next-start.sh [UC-ID] "$SLUG" "$TITLE" "$CATEGORY" [--yes]`
66
67
  - UC-ID は省略可(省略時は自動採番)。**SLUG / TITLE / CATEGORY は必須**(空文字禁止)。
67
68
  - CATEGORY で配置先が決まる(カテゴリ名は日本語可)。**機能ごとに 1 回だけ**。