Skip to content

Commit fa56dbd

Browse files
committed
Merge branch 'main' of https://github.com/github/spec-kit
2 parents c96f6e1 + 793e517 commit fa56dbd

File tree

10 files changed

+22
-19
lines changed

10 files changed

+22
-19
lines changed

README.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
<strong>An effort to allow organizations to focus on product scenarios rather than writing undifferentiated code with the help of Spec-Driven Development.</strong>
99
</p>
1010

11+
[![Release](https://github.com/github/spec-kit/actions/workflows/release.yml/badge.svg)](https://github.com/github/spec-kit/actions/workflows/release.yml)
12+
1113
---
1214

1315
## Table of Contents
@@ -205,7 +207,7 @@ At this stage, your project folder contents should resemble the following:
205207
│ ├── setup-plan.sh
206208
│ └── update-claude-md.sh
207209
├── specs
208-
│ └── 002-create-taskify
210+
│ └── 001-create-taskify
209211
│ └── spec.md
210212
└── templates
211213
├── CLAUDE-template.md
@@ -258,7 +260,7 @@ The output of this step will include a number of implementation detail documents
258260
│ ├── setup-plan.sh
259261
│ └── update-claude-md.sh
260262
├── specs
261-
│ └── 002-create-taskify
263+
│ └── 001-create-taskify
262264
│ ├── contracts
263265
│ │ ├── api-spec.json
264266
│ │ └── signalr-spec.md
@@ -346,7 +348,7 @@ Once the implementation step is done, ask Claude Code to try to run the applicat
346348
If you're having issues with Git authentication on Linux, you can install Git Credential Manager:
347349

348350
```bash
349-
#!/bin/bash
351+
#!/usr/bin/env bash
350352
set -e
351353
echo "Downloading Git Credential Manager v2.6.1..."
352354
wget https://github.com/git-ecosystem/git-credential-manager/releases/download/v2.6.1/gcm-linux_amd64.2.6.1.deb
@@ -361,6 +363,7 @@ rm gcm-linux_amd64.2.6.1.deb
361363
## Maintainers
362364

363365
- Den Delimarsky ([@localden](https://github.com/localden))
366+
- John Lam ([@jflam](https://github.com/jflam))
364367

365368
## Support
366369

scripts/check-task-prerequisites.sh

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/bash
1+
#!/usr/bin/env bash
22
# Check that implementation plan exists and find optional design documents
33
# Usage: ./check-task-prerequisites.sh [--json]
44

scripts/common.sh

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/bash
1+
#!/usr/bin/env bash
22
# Common functions and variables for all scripts
33

44
# Get repository root

scripts/create-new-feature.sh

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/bash
1+
#!/usr/bin/env bash
22
# Create a new feature with branch, directory structure, and template
33
# Usage: ./create-new-feature.sh "feature description"
44
# ./create-new-feature.sh --json "feature description"

scripts/get-feature-paths.sh

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/bash
1+
#!/usr/bin/env bash
22
# Get paths for current feature branch without creating anything
33
# Used by commands that need to find existing feature files
44

scripts/setup-plan.sh

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/bash
1+
#!/usr/bin/env bash
22
# Setup implementation plan structure for current branch
33
# Returns paths needed for implementation plan generation
44
# Usage: ./setup-plan.sh [--json]

scripts/update-agent-context.sh

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/bash
1+
#!/usr/bin/env bash
22
# Incrementally update agent context files based on new feature plan
33
# Supports: CLAUDE.md, GEMINI.md, and .github/copilot-instructions.md
44
# O(1) operation - only reads current context file and new plan.md

spec-driven.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## The Power Inversion
44

5-
For decades, code has been king. Specifications served code—they were the scaffolding we built and then discarded once the "real work" of coding began. We wrote PRDs to guide development, created design docs to inform implementation, drew diagrams to visualize architecture. But these were always subordinate to the code itself. Code was truth. Everything else was, at best, good intentions. Code was the source of truth, as it mvoed forward, and spec's rarely kept pace. As the asset (code) and the implementation are one, it's not easy to have a parallel implementation without trying to build from the code.
5+
For decades, code has been king. Specifications served code—they were the scaffolding we built and then discarded once the "real work" of coding began. We wrote PRDs to guide development, created design docs to inform implementation, drew diagrams to visualize architecture. But these were always subordinate to the code itself. Code was truth. Everything else was, at best, good intentions. Code was the source of truth, as it moved forward, and spec's rarely kept pace. As the asset (code) and the implementation are one, it's not easy to have a parallel implementation without trying to build from the code.
66

77
Spec-Driven Development (SDD) inverts this power structure. Specifications don't serve code—code serves specifications. The (Product Requirements Document-Specification) PRD isn't a guide for implementation; it's the source that generates implementation. Technical plans aren't documents that inform coding; they're precise definitions that produce code. This isn't an incremental improvement to how we build software. It's a fundamental rethinking of what drives development.
88

@@ -34,13 +34,13 @@ The feedback loop extends beyond initial development. Production metrics and inc
3434

3535
Three trends make SDD not just possible but necessary:
3636

37-
First, AI capabilities have reached a threshold where natural language specifications can reliably generate working code. This isn't about replacing developers—it's about amplifying their effectiveness by automating the mechanical translation from specification to implementation. It can amplify exploration and creativity, it can support "start-over" easily, it supports addition substraction and critical thinking.
37+
First, AI capabilities have reached a threshold where natural language specifications can reliably generate working code. This isn't about replacing developers—it's about amplifying their effectiveness by automating the mechanical translation from specification to implementation. It can amplify exploration and creativity, it can support "start-over" easily, it supports addition subtraction and critical thinking.
3838

39-
Second, software complexity continues to grow exponentially. Modern systems integrate dozens of services, frameworks, and dependencies. Keeping all these pieces aligned with original intent through manual processes becomes increasingly difficult. SDD provides systematic alignment through specification-driven generation. Frameworks may eviolve to provide AI-first support, not human-first support, or architect around reusable components.
39+
Second, software complexity continues to grow exponentially. Modern systems integrate dozens of services, frameworks, and dependencies. Keeping all these pieces aligned with original intent through manual processes becomes increasingly difficult. SDD provides systematic alignment through specification-driven generation. Frameworks may evolve to provide AI-first support, not human-first support, or architect around reusable components.
4040

4141
Third, the pace of change accelerates. Requirements change far more rapidly today than ever before. Pivoting is no longer exceptional—it's expected. Modern product development demands rapid iteration based on user feedback, market conditions, and competitive pressures. Traditional development treats these changes as disruptions. Each pivot requires manually propagating changes through documentation, design, and code. The result is either slow, careful updates that limit velocity, or fast, reckless changes that accumulate technical debt.
4242

43-
SDD can support what-if/simulation experiments, "If we need to re-implement of change the application to promote a business need to sell more T-shirts, how would we implement and experiment for that?".
43+
SDD can support what-if/simulation experiments, "If we need to re-implement or change the application to promote a business need to sell more T-shirts, how would we implement and experiment for that?".
4444

4545
SDD transforms requirement changes from obstacles into normal workflow. When specifications drive implementation, pivots become systematic regenerations rather than manual rewrites. Change a core requirement in the PRD, and affected implementation plans update automatically. Modify a user story, and corresponding API endpoints regenerate. This isn't just about initial development—it's about maintaining engineering velocity through inevitable changes.
4646

@@ -256,7 +256,7 @@ The constitution defines nine articles that shape every aspect of the developmen
256256
#### Article I: Library-First Principle
257257
Every feature must begin as a standalone library—no exceptions. This forces modular design from the start:
258258
```
259-
Every feature in Specify2 MUST begin its existence as a standalone library.
259+
Every feature in Specify MUST begin its existence as a standalone library.
260260
No feature shall be implemented directly within application code without
261261
first being abstracted into a reusable library component.
262262
```

src/specify_cli/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
Usage:
1616
uvx specify-cli.py init <project-name>
1717
uvx specify-cli.py init --here
18-
18+
1919
Or install globally:
2020
uv tool install --from specify-cli.py specify-cli
2121
specify init <project-name>
@@ -813,12 +813,12 @@ def init(
813813
if selected_ai == "claude":
814814
steps_lines.append(f"{step_num}. Open in Visual Studio Code and start using / commands with Claude Code")
815815
steps_lines.append(" - Type / in any file to see available commands")
816-
steps_lines.append(" - Use /spec to create specifications")
816+
steps_lines.append(" - Use /specify to create specifications")
817817
steps_lines.append(" - Use /plan to create implementation plans")
818818
steps_lines.append(" - Use /tasks to generate tasks")
819819
elif selected_ai == "gemini":
820820
steps_lines.append(f"{step_num}. Use / commands with Gemini CLI")
821-
steps_lines.append(" - Run gemini /spec to create specifications")
821+
steps_lines.append(" - Run gemini /specify to create specifications")
822822
steps_lines.append(" - Run gemini /plan to create implementation plans")
823823
steps_lines.append(" - See GEMINI.md for all available commands")
824824
elif selected_ai == "copilot":
@@ -868,4 +868,4 @@ def main():
868868

869869

870870
if __name__ == "__main__":
871-
main()
871+
main()

templates/commands/plan.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Given the implementation details provided as an argument, do this:
1919
3. Read the constitution at `/memory/constitution.md` to understand constitutional requirements.
2020

2121
4. Execute the implementation plan template:
22-
- Load `/templates/implementation-plan-template.md` (already copied to IMPL_PLAN path)
22+
- Load `/templates/plan-template.md` (already copied to IMPL_PLAN path)
2323
- Set Input path to FEATURE_SPEC
2424
- Run the Execution Flow (main) function steps 1-10
2525
- The template is self-contained and executable

0 commit comments

Comments
 (0)