Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b4833cb7ea | ||
|
|
2fc7ebeebe | ||
|
|
b4b31f167c | ||
|
|
f3fb55d183 | ||
|
|
54c7f9c19b | ||
|
|
81fea96e42 | ||
|
|
b5b02b3961 | ||
|
|
c3ff114c5f | ||
|
|
5ee736b677 | ||
|
|
704e272a00 | ||
|
|
f755bcfb43 | ||
|
|
dc6556d102 | ||
|
|
084d111d68 | ||
|
|
f20105daab | ||
|
|
56120b2ff0 | ||
|
|
a378163c3c |
20
.github/workflows/release.yml
vendored
20
.github/workflows/release.yml
vendored
@@ -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
|
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|
||||||
|
[](https://github.com/github/spec-kit/actions/workflows/release.yml)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
@@ -361,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
|
||||||
|
|
||||||
@@ -369,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.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "specify-cli"
|
name = "specify-cli"
|
||||||
version = "0.0.1"
|
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
0
scripts/check-task-prerequisites.sh
Normal file → Executable file
0
scripts/common.sh
Normal file → Executable file
0
scripts/common.sh
Normal file → Executable file
0
scripts/create-new-feature.sh
Normal file → Executable file
0
scripts/create-new-feature.sh
Normal file → Executable file
0
scripts/get-feature-paths.sh
Normal file → Executable file
0
scripts/get-feature-paths.sh
Normal file → Executable file
0
scripts/setup-plan.sh
Normal file → Executable file
0
scripts/setup-plan.sh
Normal file → Executable file
0
scripts/update-agent-context.sh
Normal file → Executable file
0
scripts/update-agent-context.sh
Normal file → Executable 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.
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user