I found two shell-script behaviors in current main at 51e6a14 while vendoring Spec Kit into a repo and testing the generated Claude integration.
1. check-prerequisites.sh --paths-only still validates branch name
The help text says --paths-only should output path variables with no prerequisite validation. The Claude /speckit-clarify skill also calls:
.specify/scripts/bash/check-prerequisites.sh --json --paths-only
But check_feature_branch "$CURRENT_BRANCH" "$HAS_GIT" runs before the PATHS_ONLY early exit. In a normal non-Spec branch, --paths-only can fail before returning paths.
Suggested fix: move branch validation after the PATHS_ONLY block.
2. setup-plan.sh overwrites existing plan.md
setup-plan.sh unconditionally copies the plan template to $IMPL_PLAN:
cp "$TEMPLATE" "$IMPL_PLAN"
On reruns this can overwrite an already authored implementation plan.
Suggested fix: only copy/touch when $IMPL_PLAN does not exist, unless an explicit force mode is added. Also send status messages to stderr in --json mode so stdout remains parseable JSON.
I tested equivalent local patches in a temp Spec Kit directory:
check-prerequisites.sh --json --paths-only returns JSON on a normal branch.
setup-plan.sh --json preserves an existing plan.md.
setup-plan.sh --json creates a missing plan.md and still emits parseable JSON.
I found two shell-script behaviors in current
mainat51e6a14while vendoring Spec Kit into a repo and testing the generated Claude integration.1.
check-prerequisites.sh --paths-onlystill validates branch nameThe help text says
--paths-onlyshould output path variables with no prerequisite validation. The Claude/speckit-clarifyskill also calls:But
check_feature_branch "$CURRENT_BRANCH" "$HAS_GIT"runs before thePATHS_ONLYearly exit. In a normal non-Spec branch,--paths-onlycan fail before returning paths.Suggested fix: move branch validation after the
PATHS_ONLYblock.2.
setup-plan.shoverwrites existingplan.mdsetup-plan.shunconditionally copies the plan template to$IMPL_PLAN:On reruns this can overwrite an already authored implementation plan.
Suggested fix: only copy/touch when
$IMPL_PLANdoes not exist, unless an explicit force mode is added. Also send status messages to stderr in--jsonmode so stdout remains parseable JSON.I tested equivalent local patches in a temp Spec Kit directory:
check-prerequisites.sh --json --paths-onlyreturns JSON on a normal branch.setup-plan.sh --jsonpreserves an existingplan.md.setup-plan.sh --jsoncreates a missingplan.mdand still emits parseable JSON.