Compare commits

...

23 Commits

Author SHA1 Message Date
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
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
54c7f9c19b Merge pull request #4 from lucasmodrich/fix-typo
doco(spec-driven): Fix small typo in spec-driven.md
2025-09-02 21:03:51 -07:00
Lucas Modrich
81fea96e42 doco(spec-driven): Fix small typo in document 2025-09-03 10:58:10 +10:00
Den Delimarsky
b5b02b3961 Merge pull request #3 from github/update-readme-contributors
Update README.md
2025-08-25 14:10:32 -07:00
Den Delimarsky 🌺
c3ff114c5f Update README.md 2025-08-25 14:09:38 -07:00
Den Delimarsky
5ee736b677 Merge pull request #2 from github/update-readme-contributors
Fix release workflow to work with repository rules
2025-08-25 14:09:19 -07:00
Den Delimarsky
704e272a00 Update .github/workflows/release.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-25 14:09:09 -07:00
Den Delimarsky 🌺
f755bcfb43 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:30 -07:00
Den Delimarsky
dc6556d102 Merge pull request #1 from github/update-readme-contributors
Add John Lam as contributor and release badge
2025-08-25 14:01:28 -07:00
Den Delimarsky 🌺
084d111d68 Add John Lam as contributor and release badge
- Add John Lam (@jflam) to maintainers section
- Include GitHub Actions release workflow badge in header
- Update README formatting for better visibility
2025-08-25 11:26:20 -07:00
Den Delimarsky 🌺
f20105daab Merge branch 'main' of https://github.com/github/spec-kit 2025-08-22 12:19:47 -07:00
Den Delimarsky 🌺
56120b2ff0 Update requirements 2025-08-22 12:19:42 -07:00
GitHub Action
a378163c3c chore: bump version to v0.0.2 2025-08-22 17:27:08 +00:00
Den Delimarsky 🌺
855be88df1 Merge branch 'main' of https://github.com/github/spec-kit 2025-08-22 10:26:42 -07:00
Den Delimarsky 🌺
26da1c13b8 Update README.md 2025-08-22 10:26:30 -07:00
GitHub Action
6710a2a595 chore: bump version to v0.0.1 2025-08-22 17:24:44 +00:00
12 changed files with 23 additions and 28 deletions

View File

@@ -11,6 +11,7 @@ jobs:
permissions: permissions:
contents: write contents: write
pull-requests: write
steps: steps:
- name: Checkout repository - name: Checkout repository
@@ -204,7 +205,7 @@ jobs:
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Update version in pyproject.toml - name: Update version in pyproject.toml (for release artifacts only)
if: steps.check_release.outputs.exists == 'false' if: steps.check_release.outputs.exists == 'false'
run: | run: |
# Update version in pyproject.toml (remove 'v' prefix for Python versioning) # Update version in pyproject.toml (remove 'v' prefix for Python versioning)
@@ -213,19 +214,8 @@ jobs:
if [ -f "pyproject.toml" ]; then if [ -f "pyproject.toml" ]; then
sed -i "s/version = \".*\"/version = \"$PYTHON_VERSION\"/" pyproject.toml sed -i "s/version = \".*\"/version = \"$PYTHON_VERSION\"/" pyproject.toml
echo "Updated pyproject.toml version to $PYTHON_VERSION" echo "Updated pyproject.toml version to $PYTHON_VERSION (for release artifacts only)"
fi fi
- name: Commit version update # Note: No longer committing version changes back to main branch
if: steps.check_release.outputs.exists == 'false' # The version is only updated in the release artifacts
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
if git diff --quiet; then
echo "No changes to commit"
else
git add pyproject.toml
git commit -m "chore: bump version to ${{ steps.get_tag.outputs.new_version }}"
git push
fi

View File

@@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2025 GitHub Copyright GitHub, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@@ -8,6 +8,8 @@
<strong>An effort to allow organizations to focus on product scenarios rather than writing undifferentiated code with the help of Spec-Driven Development.</strong> <strong>An effort to allow organizations to focus on product scenarios rather than writing undifferentiated code with the help of Spec-Driven Development.</strong>
</p> </p>
[![Release](https://github.com/github/spec-kit/actions/workflows/release.yml/badge.svg)](https://github.com/github/spec-kit/actions/workflows/release.yml)
--- ---
## Table of Contents ## Table of Contents
@@ -205,14 +207,13 @@ 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
├── plan-template.md ├── plan-template.md
├── spec-template.md ├── spec-template.md
── tasks-template.md ── tasks-template.md
└── worktree-setup.sh
``` ```
### **STEP 2:** Functional specification clarification ### **STEP 2:** Functional specification clarification
@@ -259,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
@@ -272,8 +273,7 @@ The output of this step will include a number of implementation detail documents
├── CLAUDE-template.md ├── CLAUDE-template.md
├── plan-template.md ├── plan-template.md
├── spec-template.md ├── spec-template.md
── tasks-template.md ── tasks-template.md
└── worktree-setup.sh
``` ```
Check the `research.md` document to ensure that the right tech stack is used, based on your instructions. You can ask Claude Code to refine it if any of the components stand out, or even have it check the locally-installed version of the platform/framework you want to use (e.g., .NET). Check the `research.md` document to ensure that the right tech stack is used, based on your instructions. You can ask Claude Code to refine it if any of the components stand out, or even have it check the locally-installed version of the platform/framework you want to use (e.g., .NET).
@@ -363,6 +363,7 @@ rm gcm-linux_amd64.2.6.1.deb
## Maintainers ## Maintainers
- Den Delimarsky ([@localden](https://github.com/localden)) - Den Delimarsky ([@localden](https://github.com/localden))
- John Lam ([@jflam](https://github.com/jflam))
## Support ## Support
@@ -371,3 +372,7 @@ For support, please open a [GitHub issue](https://github.com/github/spec-kit/iss
## Acknowledgements ## Acknowledgements
This project is heavily influenced by and based on the work and research of [John Lam](https://github.com/jflam). This project is heavily influenced by and based on the work and research of [John Lam](https://github.com/jflam).
## License
This project is licensed under the terms of the MIT open source license. Please refer to the [LICENSE](./LICENSE) file for the full terms.

View File

@@ -1,6 +1,6 @@
[project] [project]
name = "specify-cli" name = "specify-cli"
version = "0.0.48" version = "0.0.2"
description = "Setup tool for Specify spec-driven development projects" description = "Setup tool for Specify spec-driven development projects"
requires-python = ">=3.11" requires-python = ">=3.11"
dependencies = [ dependencies = [

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

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

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

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

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

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

View File

@@ -2,7 +2,7 @@
## The Power Inversion ## The Power Inversion
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. 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.
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. 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.
@@ -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

@@ -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":