[Bug]: PowerShell common.ps1 uses wrong base path for specs directory

未关闭 适合新手
#1,923 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
88/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
powershell
领域
tooling

调研方向

从 .specify/scripts/powershell/common.ps1 开始,重点关注 Get-CurrentBranch 和 Get-FeatureDir。在功能分支上运行 .specify/scripts/powershell/setup-plan.ps1 -Json,并检查生成的路径。完成的标准是文件放置在 .specify/specs/ 下,不包含额外的 feature/ 目录,同时现有工作流继续正常运行。

由索引模型根据 Issue 内容生成。

描述

stale
Bug Description

The PowerShell common functions in .specify/scripts/powershell/common.ps1 use incorrect paths, causing spec files to be created in specs/ at the repository root instead of .specify/specs/ as documented and expected by the framework.

Steps to Reproduce
  1. Clone a spec-kit project
  2. Check out a feature branch (e.g., feature/US123-my-feature)
  3. Run .specify/scripts/powershell/setup-plan.ps1 -Json
  4. Observe files are created in specs/feature/US123-my-feature/ instead of .specify/specs/US123-my-feature/
Expected Behavior

All spec files should be created under the .specify/specs/ directory as documented throughout the framework and in .specify/specs/README.md.

Actual Behavior
  • Files are created in specs/ at the repository root (wrong location)
  • When using feature branches like feature/something, an extra nested feature/ directory is created: specs/feature/something/
  • This violates the documented .specify/ prefix convention
  • Requires manual cleanup after every planning operation
Specify CLI Version

0.2.1

AI Agent

GitHub Copilot

Operating System

Windows 10.0.26200 AMD64

Python Version

3.12.4

Error Logs

Additional Context

Component

Scripts (.specify/scripts/)

AI Agent (if applicable)

Affects all agents that use /speckit.plan, /speckit.tasks, and related commands

Additional Context

File: .specify/scripts/powershell/common.ps1

Line 38 (in Get-CurrentBranch function):

$specsDir = Join-Path $repoRoot "specs"

Should be:

$specsDir = Join-Path $repoRoot ".specify/specs"

Line 98 (in Get-FeatureDir function):

Join-Path $repoRoot "specs/$Branch"

Should be:

$dirName = $Branch -replace '^feature/', ''  # Strip branch prefix
Join-Path $repoRoot ".specify/specs/$dirName"

Proposed Fix

function Get-FeatureDir {
    param([string]$RepoRoot, [string]$Branch)
    # Strip feature/ prefix if present for specs directory naming
    $dirName = $Branch -replace '^feature/', ''
    Join-Path $RepoRoot ".specify/specs/$dirName"
}

Also update line 38 in Get-CurrentBranch:

$specsDir = Join-Path $repoRoot ".specify/specs"
主要语言
Python
星标
138k
派生
12.4k
平均合并
3 天 6 小时
30 天内合并 PR
136

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

github/spec-kit 的其他 Issue

查看 github/spec-kit 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。