Skip to content

Consolidate Spec Kit scripts into a single Bun/Node.js CLI to reduce maintenance overhead #280

@sanathusk

Description

@sanathusk

Summary

  • Replace duplicated Bash and PowerShell scripts with a single cross‑platform CLI implemented in Bun/Node.js to reduce drift, simplify maintenance, and ensure consistent behavior across Windows, macOS, and Linux.

Motivation

  • The repo maintains parallel Bash and PowerShell variants for common tasks, increasing upkeep and risk of divergence.
  • Shell differences around quoting, path handling, env, and exit codes create fragile workflows for contributors and CI.
  • JSON/FS/process orchestration and richer UX (prompts, colors, structured logs) are more robust in JS than in shell.

Proposal

  • Introduce a unified CLI package (e.g., “spec-kit”) in TypeScript targeting Bun and Node.js, exposing existing scripts as subcommands.
  • Bun‑first for speed and DX, Node‑compatible for ubiquity in CI and contributor environments.

Scope (initial port)

  • scripts/check-task-prerequisites.sh → spec-kit check.
  • scripts/create-new-feature.sh → spec-kit feature create.
  • scripts/get-feature-paths.sh → spec-kit feature paths.
  • scripts/setup-plan.sh → spec-kit plan setup.
  • scripts/update-claude-md.sh → spec-kit docs update.

Command mapping

Current script Purpose Proposed command
check-task-prerequisites.sh Tooling/env validation spec-kit check
create-new-feature.sh Branch + spec bootstrap spec-kit feature create
get-feature-paths.sh Resolve spec paths spec-kit feature paths
setup-plan.sh Initialize planning artifacts spec-kit plan setup
update-claude-md.sh Sync/update docs spec-kit docs update

Migration plan

  1. MVP: implement spec-kit check and spec-kit feature create with parity outputs/exit codes.
  2. Port remaining scripts and add E2E tests comparing against current shell behavior.
  3. Deprecate shell scripts via thin shims delegating to spec-kit for one release.
  4. Remove legacy scripts after one minor release with clear notes in README and releases.

Requested feedback

  • Agreement on approach and package name, plus any additional scripts to include in the first wave.

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions