Compare commits

..

18 Commits

Author SHA1 Message Date
Den Delimarsky 🌺
fa56dbd8b0 Merge branch 'main' of https://github.com/github/spec-kit 2025-09-07 00:55:55 -07:00
Den Delimarsky
793e5176ef Merge pull request #54 from y-yagi/fixes_shebang
Use `/usr/bin/env bash` instead of `/bin/bash` for shebang
2025-09-07 00:46:20 -07:00
Yuji Yaginuma
29eb082e2a Use /usr/bin/env bash instead of /bin/bash for shebang
Some systems like NixOS don't have `/bin/bash`.
Ref: https://discourse.nixos.org/t/add-bin-bash-to-avoid-unnecessary-pain/5673

This changes allow to run scripts in those systems.

Fixes #43.
2025-09-07 15:24:27 +09:00
Den Delimarsky
7176d2dea3 Merge pull request #27 from riya-amemiya/riya-amemiya/fix-typos
fix: correct typos in spec-driven.md
2025-09-04 23:33:45 -07:00
Riya Amemiya
6cade67360 fix: correct typos in spec-driven.md
- Fixed spelling: substraction → subtraction
- Fixed spelling: eviolve → evolve
- Fixed grammar: re-implement of change → re-implement or change
2025-09-05 12:04:22 +09:00
Den Delimarsky
c106281eff Merge pull request #24 from np-yoe/patch-1
Fix formatting in usage instructions
2025-09-04 12:34:18 -07:00
np-yoe
74ccf93512 Fix formatting in usage instructions 2025-09-05 02:17:29 +09:00
Den Delimarsky
decccc4e95 Merge pull request #13 from yamkazu/fix-plan-temaplate-name
Fix template path in plan command
2025-09-04 09:46:51 -07:00
Den Delimarsky
23c6bf1b71 Merge pull request #19 from adam-paterson/fix/really-important-documentation-fix
fix: incorrect tree structure in examples
2025-09-04 09:46:32 -07:00
Den Delimarsky
36fbb85c65 Merge pull request #21 from thegovind/main
fix minor typo in constitution's Article I
2025-09-04 09:46:05 -07:00
Govind Kamtamneni
f077e90a24 fix minor typo in Article I 2025-09-04 13:46:36 +00:00
adam.paterson
f88f6c8c05 fix: incorrect tree structure in examples 2025-09-04 13:42:39 +01:00
Kazuki YAMAMOTO
fd517699a4 Fix template path in plan command documentation 2025-09-04 10:59:07 +09:00
Den Delimarsky
b4833cb7ea Merge pull request #8 from Insik-Han/patch-1
chore: Fix typo
2025-09-03 09:22:34 -07:00
Insik Han
2fc7ebeebe Update CLI commands from '/spec' to '/specify' 2025-09-03 19:24:27 +09:00
Den Delimarsky
b4b31f167c Merge pull request #7 from chanezon/add-execute-perm-to-shell-scripts
adding executable permission to the scripts so they execute when the …
2025-09-02 21:48:45 -07:00
PATRICK CHANEZON
f3fb55d183 adding executable permission to the scripts so they execute when the coding agent launches them 2025-09-02 21:20:42 -07:00
Den Delimarsky 🌺
c96f6e1a1b Fix release workflow to work with repository rules
- Remove problematic direct push to main branch
- Keep version updates only for release artifacts
- Add pull-requests permission for future flexibility
- Releases/tags created via API don't require branch pushes
2025-08-25 14:07:00 -07:00
11 changed files with 19 additions and 18 deletions

View File

@@ -18,6 +18,7 @@ jobs:
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Get latest tag - name: Get latest tag
id: get_tag id: get_tag

View File

@@ -207,7 +207,7 @@ At this stage, your project folder contents should resemble the following:
│ ├── setup-plan.sh │ ├── setup-plan.sh
│ └── update-claude-md.sh │ └── update-claude-md.sh
├── specs ├── specs
│ └── 002-create-taskify │ └── 001-create-taskify
│ └── spec.md │ └── spec.md
└── templates └── templates
├── CLAUDE-template.md ├── CLAUDE-template.md
@@ -260,7 +260,7 @@ The output of this step will include a number of implementation detail documents
│ ├── setup-plan.sh │ ├── setup-plan.sh
│ └── update-claude-md.sh │ └── update-claude-md.sh
├── specs ├── specs
│ └── 002-create-taskify │ └── 001-create-taskify
│ ├── contracts │ ├── contracts
│ │ ├── api-spec.json │ │ ├── api-spec.json
│ │ └── signalr-spec.md │ │ └── signalr-spec.md
@@ -348,7 +348,7 @@ Once the implementation step is done, ask Claude Code to try to run the applicat
If you're having issues with Git authentication on Linux, you can install Git Credential Manager: If you're having issues with Git authentication on Linux, you can install Git Credential Manager:
```bash ```bash
#!/bin/bash #!/usr/bin/env bash
set -e set -e
echo "Downloading Git Credential Manager v2.6.1..." echo "Downloading Git Credential Manager v2.6.1..."
wget https://github.com/git-ecosystem/git-credential-manager/releases/download/v2.6.1/gcm-linux_amd64.2.6.1.deb wget https://github.com/git-ecosystem/git-credential-manager/releases/download/v2.6.1/gcm-linux_amd64.2.6.1.deb

2
scripts/check-task-prerequisites.sh Normal file → Executable file
View File

@@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# Check that implementation plan exists and find optional design documents # Check that implementation plan exists and find optional design documents
# Usage: ./check-task-prerequisites.sh [--json] # Usage: ./check-task-prerequisites.sh [--json]

2
scripts/common.sh Normal file → Executable file
View File

@@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# Common functions and variables for all scripts # Common functions and variables for all scripts
# Get repository root # Get repository root

2
scripts/create-new-feature.sh Normal file → Executable file
View File

@@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# Create a new feature with branch, directory structure, and template # Create a new feature with branch, directory structure, and template
# Usage: ./create-new-feature.sh "feature description" # Usage: ./create-new-feature.sh "feature description"
# ./create-new-feature.sh --json "feature description" # ./create-new-feature.sh --json "feature description"

2
scripts/get-feature-paths.sh Normal file → Executable file
View File

@@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# Get paths for current feature branch without creating anything # Get paths for current feature branch without creating anything
# Used by commands that need to find existing feature files # Used by commands that need to find existing feature files

2
scripts/setup-plan.sh Normal file → Executable file
View File

@@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# Setup implementation plan structure for current branch # Setup implementation plan structure for current branch
# Returns paths needed for implementation plan generation # Returns paths needed for implementation plan generation
# Usage: ./setup-plan.sh [--json] # Usage: ./setup-plan.sh [--json]

2
scripts/update-agent-context.sh Normal file → Executable file
View File

@@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# Incrementally update agent context files based on new feature plan # Incrementally update agent context files based on new feature plan
# Supports: CLAUDE.md, GEMINI.md, and .github/copilot-instructions.md # Supports: CLAUDE.md, GEMINI.md, and .github/copilot-instructions.md
# O(1) operation - only reads current context file and new plan.md # O(1) operation - only reads current context file and new plan.md

View File

@@ -34,13 +34,13 @@ The feedback loop extends beyond initial development. Production metrics and inc
Three trends make SDD not just possible but necessary: Three trends make SDD not just possible but necessary:
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. 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.
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. 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.
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. 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.
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?". 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?".
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. 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.
@@ -256,7 +256,7 @@ The constitution defines nine articles that shape every aspect of the developmen
#### Article I: Library-First Principle #### Article I: Library-First Principle
Every feature must begin as a standalone library—no exceptions. This forces modular design from the start: Every feature must begin as a standalone library—no exceptions. This forces modular design from the start:
``` ```
Every feature in Specify2 MUST begin its existence as a standalone library. Every feature in Specify MUST begin its existence as a standalone library.
No feature shall be implemented directly within application code without No feature shall be implemented directly within application code without
first being abstracted into a reusable library component. first being abstracted into a reusable library component.
``` ```

View File

@@ -15,7 +15,7 @@ Specify CLI - Setup tool for Specify projects
Usage: Usage:
uvx specify-cli.py init <project-name> uvx specify-cli.py init <project-name>
uvx specify-cli.py init --here uvx specify-cli.py init --here
Or install globally: Or install globally:
uv tool install --from specify-cli.py specify-cli uv tool install --from specify-cli.py specify-cli
specify init <project-name> specify init <project-name>
@@ -813,12 +813,12 @@ def init(
if selected_ai == "claude": if selected_ai == "claude":
steps_lines.append(f"{step_num}. Open in Visual Studio Code and start using / commands with Claude Code") steps_lines.append(f"{step_num}. Open in Visual Studio Code and start using / commands with Claude Code")
steps_lines.append(" - Type / in any file to see available commands") steps_lines.append(" - Type / in any file to see available commands")
steps_lines.append(" - Use /spec to create specifications") steps_lines.append(" - Use /specify to create specifications")
steps_lines.append(" - Use /plan to create implementation plans") steps_lines.append(" - Use /plan to create implementation plans")
steps_lines.append(" - Use /tasks to generate tasks") steps_lines.append(" - Use /tasks to generate tasks")
elif selected_ai == "gemini": elif selected_ai == "gemini":
steps_lines.append(f"{step_num}. Use / commands with Gemini CLI") steps_lines.append(f"{step_num}. Use / commands with Gemini CLI")
steps_lines.append(" - Run gemini /spec to create specifications") steps_lines.append(" - Run gemini /specify to create specifications")
steps_lines.append(" - Run gemini /plan to create implementation plans") steps_lines.append(" - Run gemini /plan to create implementation plans")
steps_lines.append(" - See GEMINI.md for all available commands") steps_lines.append(" - See GEMINI.md for all available commands")
elif selected_ai == "copilot": elif selected_ai == "copilot":
@@ -868,4 +868,4 @@ def main():
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@@ -19,7 +19,7 @@ Given the implementation details provided as an argument, do this:
3. Read the constitution at `/memory/constitution.md` to understand constitutional requirements. 3. Read the constitution at `/memory/constitution.md` to understand constitutional requirements.
4. Execute the implementation plan template: 4. Execute the implementation plan template:
- Load `/templates/implementation-plan-template.md` (already copied to IMPL_PLAN path) - Load `/templates/plan-template.md` (already copied to IMPL_PLAN path)
- Set Input path to FEATURE_SPEC - Set Input path to FEATURE_SPEC
- Run the Execution Flow (main) function steps 1-10 - Run the Execution Flow (main) function steps 1-10
- The template is self-contained and executable - The template is self-contained and executable