github / github/spec-kit

[Bug]: check-prerequisites.sh --paths-only still runs branch validation, contradicting --help

Đang mở
#2,477 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
stale
Ngôn ngữ chính
Python
Star
137k
Fork
12.3k
Merge trung bình
2 ngày 7 giờ
Pull request đã merge (30 ngày)
155

Mô tả

## Bug Description

`scripts/bash/check-prerequisites.sh --paths-only` is documented as "no validation" / "no prerequisite validation", but the script runs `check_feature_branch` **before** the `--paths-only` early exit. The result: when the current branch does not match the feature-branch naming convention, `--paths-only` exits non-zero with a branch-format error, even though the caller asked for paths only and explicitly opted out of validation.

Source: https://github.com/github/spec-kit/blob/main/scripts/bash/check-prerequisites.sh#L81-L113

```bash
# Get feature paths and validate branch
_paths_output=$(get_feature_paths) || { ... ; exit 1; }
eval "$_paths_output"
unset _paths_output
check_feature_branch "$CURRENT_BRANCH" "$HAS_GIT" || exit 1 # ← runs even with --paths-only

# If paths-only mode, output paths and exit (support JSON + paths-only combined)
if \$PATHS_ONLY; then
...
exit 0
fi
```

The header documentation (line 14) says: \`--paths-only Only output path variables (no validation)\` and \`--help\` (line 54) says \`(no prerequisite validation)\`. Branch validation is the most user-visible form of validation, so this contradicts the documented behavior.

## Steps to Reproduce

1. Initialize a Spec Kit project: \`specify init test-paths-only --integration claude\`
2. Switch to a non-feature branch: \`git checkout -b chore/some-cleanup\`
3. Run paths-only: \`./.specify/scripts/bash/check-prerequisites.sh --paths-only\`

## Expected Behavior

\`--paths-only\` succeeds and emits \`REPO_ROOT\`, \`BRANCH\`, \`FEATURE_DIR\`, etc., regardless of branch name (the caller asked for paths, not validation).

## Actual Behavior

Exit 1 with branch-validation error (the message produced by \`check_feature_branch\` in \`common.sh\`), no path variables emitted.

## Specify CLI Version

0.7.4.dev0

## AI Agent

Claude Code

## Suggested Fix

Move \`check_feature_branch\` after the \`if \$PATHS_ONLY; then ... exit 0; fi\` block so \`--paths-only\` truly skips validation. Same source ordering already exists in \`scripts/powershell/check-prerequisites.ps1\` — please verify both are aligned.

## Context

Surfaced while bulk-installing Spec Kit across 20 internal projects. \`/speckit-tasks\` and similar commands invoke \`check-prerequisites.sh --paths-only --json\` from non-feature chore branches and unexpectedly fail with branch-format errors despite the documented opt-out.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.