specify-cli 0.0.20__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- specify_cli-0.0.20/.devcontainer/devcontainer.json +77 -0
- specify_cli-0.0.20/.devcontainer/post-create.sh +100 -0
- specify_cli-0.0.20/.gitattributes +1 -0
- specify_cli-0.0.20/.github/CODEOWNERS +3 -0
- specify_cli-0.0.20/.github/workflows/docs.yml +68 -0
- specify_cli-0.0.20/.github/workflows/lint.yml +18 -0
- specify_cli-0.0.20/.github/workflows/pypi.yml +45 -0
- specify_cli-0.0.20/.github/workflows/release.yml +60 -0
- specify_cli-0.0.20/.github/workflows/scripts/check-release-exists.sh +21 -0
- specify_cli-0.0.20/.github/workflows/scripts/create-github-release.sh +48 -0
- specify_cli-0.0.20/.github/workflows/scripts/create-release-packages.sh +242 -0
- specify_cli-0.0.20/.github/workflows/scripts/generate-release-notes.sh +40 -0
- specify_cli-0.0.20/.github/workflows/scripts/get-next-version.sh +24 -0
- specify_cli-0.0.20/.github/workflows/scripts/update-version.sh +23 -0
- specify_cli-0.0.20/.gitignore +45 -0
- specify_cli-0.0.20/.markdownlint-cli2.jsonc +24 -0
- specify_cli-0.0.20/AGENTS.md +394 -0
- specify_cli-0.0.20/CHANGELOG.md +167 -0
- specify_cli-0.0.20/CODE_OF_CONDUCT.md +74 -0
- specify_cli-0.0.20/CONTRIBUTING.md +149 -0
- specify_cli-0.0.20/LICENSE +22 -0
- specify_cli-0.0.20/PKG-INFO +12 -0
- specify_cli-0.0.20/README.md +633 -0
- specify_cli-0.0.20/SECURITY.md +31 -0
- specify_cli-0.0.20/SUPPORT.md +19 -0
- specify_cli-0.0.20/docs/.gitignore +9 -0
- specify_cli-0.0.20/docs/README.md +35 -0
- specify_cli-0.0.20/docs/docfx.json +71 -0
- specify_cli-0.0.20/docs/index.md +66 -0
- specify_cli-0.0.20/docs/installation.md +92 -0
- specify_cli-0.0.20/docs/local-development.md +175 -0
- specify_cli-0.0.20/docs/quickstart.md +123 -0
- specify_cli-0.0.20/docs/toc.yml +18 -0
- specify_cli-0.0.20/media/bootstrap-claude-code.gif +0 -0
- specify_cli-0.0.20/media/logo_large.webp +0 -0
- specify_cli-0.0.20/media/logo_small.webp +0 -0
- specify_cli-0.0.20/media/spec-kit-video-header.jpg +0 -0
- specify_cli-0.0.20/media/specify_cli.gif +0 -0
- specify_cli-0.0.20/memory/constitution.md +50 -0
- specify_cli-0.0.20/pyproject.toml +24 -0
- specify_cli-0.0.20/scripts/bash/check-prerequisites.sh +166 -0
- specify_cli-0.0.20/scripts/bash/common.sh +156 -0
- specify_cli-0.0.20/scripts/bash/create-new-feature.sh +260 -0
- specify_cli-0.0.20/scripts/bash/setup-plan.sh +61 -0
- specify_cli-0.0.20/scripts/bash/update-agent-context.sh +772 -0
- specify_cli-0.0.20/scripts/powershell/check-prerequisites.ps1 +148 -0
- specify_cli-0.0.20/scripts/powershell/common.ps1 +137 -0
- specify_cli-0.0.20/scripts/powershell/create-new-feature.ps1 +290 -0
- specify_cli-0.0.20/scripts/powershell/setup-plan.ps1 +62 -0
- specify_cli-0.0.20/scripts/powershell/update-agent-context.ps1 +439 -0
- specify_cli-0.0.20/spec-driven.md +403 -0
- specify_cli-0.0.20/src/specify_cli/__init__.py +1210 -0
- specify_cli-0.0.20/templates/agent-file-template.md +28 -0
- specify_cli-0.0.20/templates/checklist-template.md +40 -0
- specify_cli-0.0.20/templates/commands/analyze.md +187 -0
- specify_cli-0.0.20/templates/commands/checklist.md +297 -0
- specify_cli-0.0.20/templates/commands/clarify.md +180 -0
- specify_cli-0.0.20/templates/commands/constitution.md +78 -0
- specify_cli-0.0.20/templates/commands/implement.md +138 -0
- specify_cli-0.0.20/templates/commands/plan.md +87 -0
- specify_cli-0.0.20/templates/commands/specify.md +252 -0
- specify_cli-0.0.20/templates/commands/tasks.md +131 -0
- specify_cli-0.0.20/templates/plan-template.md +104 -0
- specify_cli-0.0.20/templates/spec-template.md +115 -0
- specify_cli-0.0.20/templates/tasks-template.md +251 -0
- specify_cli-0.0.20/templates/vscode-settings.json +14 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
|
2
|
+
// README at: https://github.com/devcontainers/templates/tree/main/src/python
|
|
3
|
+
{
|
|
4
|
+
"name": "SpecKitDevContainer",
|
|
5
|
+
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
|
|
6
|
+
"image": "mcr.microsoft.com/devcontainers/python:3.13-trixie", // based on Debian "Trixie" (13)
|
|
7
|
+
"features": {
|
|
8
|
+
"ghcr.io/devcontainers/features/common-utils:2": {
|
|
9
|
+
"installZsh": true,
|
|
10
|
+
"installOhMyZsh": true,
|
|
11
|
+
"installOhMyZshConfig": true,
|
|
12
|
+
"upgradePackages": true,
|
|
13
|
+
"username": "devcontainer",
|
|
14
|
+
"userUid": "automatic",
|
|
15
|
+
"userGid": "automatic"
|
|
16
|
+
},
|
|
17
|
+
"ghcr.io/devcontainers/features/dotnet:2": {
|
|
18
|
+
"version": "lts"
|
|
19
|
+
},
|
|
20
|
+
"ghcr.io/devcontainers/features/git:1": {
|
|
21
|
+
"ppa": true,
|
|
22
|
+
"version": "latest"
|
|
23
|
+
},
|
|
24
|
+
"ghcr.io/devcontainers/features/node": {
|
|
25
|
+
"version": "lts"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
|
30
|
+
"forwardPorts": [
|
|
31
|
+
8080 // for Spec-Kit documentation site
|
|
32
|
+
],
|
|
33
|
+
"containerUser": "devcontainer",
|
|
34
|
+
"updateRemoteUserUID": true,
|
|
35
|
+
"postCreateCommand": "chmod +x ./.devcontainer/post-create.sh && ./.devcontainer/post-create.sh",
|
|
36
|
+
"postStartCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
|
|
37
|
+
"customizations": {
|
|
38
|
+
"vscode": {
|
|
39
|
+
"extensions": [
|
|
40
|
+
"mhutchie.git-graph",
|
|
41
|
+
"eamodio.gitlens",
|
|
42
|
+
"anweber.reveal-button",
|
|
43
|
+
"chrisdias.promptboost",
|
|
44
|
+
// Github Copilot
|
|
45
|
+
"GitHub.copilot",
|
|
46
|
+
"GitHub.copilot-chat",
|
|
47
|
+
// Codex
|
|
48
|
+
"openai.chatgpt",
|
|
49
|
+
// Kilo Code
|
|
50
|
+
"kilocode.Kilo-Code",
|
|
51
|
+
// Roo Code
|
|
52
|
+
"RooVeterinaryInc.roo-cline",
|
|
53
|
+
// Amazon Developer Q
|
|
54
|
+
"AmazonWebServices.amazon-q-vscode",
|
|
55
|
+
// Claude Code
|
|
56
|
+
"anthropic.claude-code"
|
|
57
|
+
],
|
|
58
|
+
"settings": {
|
|
59
|
+
"debug.javascript.autoAttachFilter": "disabled", // fix running commands in integrated terminal
|
|
60
|
+
|
|
61
|
+
// Specify settings for Github Copilot
|
|
62
|
+
"git.autofetch": true,
|
|
63
|
+
"chat.promptFilesRecommendations": {
|
|
64
|
+
"speckit.constitution": true,
|
|
65
|
+
"speckit.specify": true,
|
|
66
|
+
"speckit.plan": true,
|
|
67
|
+
"speckit.tasks": true,
|
|
68
|
+
"speckit.implement": true
|
|
69
|
+
},
|
|
70
|
+
"chat.tools.terminal.autoApprove": {
|
|
71
|
+
".specify/scripts/bash/": true,
|
|
72
|
+
".specify/scripts/powershell/": true
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Exit immediately on error, treat unset variables as an error, and fail if any command in a pipeline fails.
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
# Function to run a command and show logs only on error
|
|
7
|
+
run_command() {
|
|
8
|
+
local command_to_run="$*"
|
|
9
|
+
local output
|
|
10
|
+
local exit_code
|
|
11
|
+
|
|
12
|
+
# Capture all output (stdout and stderr)
|
|
13
|
+
output=$(eval "$command_to_run" 2>&1) || exit_code=$?
|
|
14
|
+
exit_code=${exit_code:-0}
|
|
15
|
+
|
|
16
|
+
if [ $exit_code -ne 0 ]; then
|
|
17
|
+
echo -e "\033[0;31m[ERROR] Command failed (Exit Code $exit_code): $command_to_run\033[0m" >&2
|
|
18
|
+
echo -e "\033[0;31m$output\033[0m" >&2
|
|
19
|
+
|
|
20
|
+
exit $exit_code
|
|
21
|
+
fi
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
# Installing CLI-based AI Agents
|
|
25
|
+
|
|
26
|
+
echo -e "\n🤖 Installing Copilot CLI..."
|
|
27
|
+
run_command "npm install -g @github/copilot@latest"
|
|
28
|
+
echo "✅ Done"
|
|
29
|
+
|
|
30
|
+
echo -e "\n🤖 Installing Claude CLI..."
|
|
31
|
+
run_command "npm install -g @anthropic-ai/claude-code@latest"
|
|
32
|
+
echo "✅ Done"
|
|
33
|
+
|
|
34
|
+
echo -e "\n🤖 Installing Codex CLI..."
|
|
35
|
+
run_command "npm install -g @openai/codex@latest"
|
|
36
|
+
echo "✅ Done"
|
|
37
|
+
|
|
38
|
+
echo -e "\n🤖 Installing Gemini CLI..."
|
|
39
|
+
run_command "npm install -g @google/gemini-cli@latest"
|
|
40
|
+
echo "✅ Done"
|
|
41
|
+
|
|
42
|
+
echo -e "\n🤖 Installing Augie CLI..."
|
|
43
|
+
run_command "npm install -g @augmentcode/auggie@latest"
|
|
44
|
+
echo "✅ Done"
|
|
45
|
+
|
|
46
|
+
echo -e "\n🤖 Installing Qwen Code CLI..."
|
|
47
|
+
run_command "npm install -g @qwen-code/qwen-code@latest"
|
|
48
|
+
echo "✅ Done"
|
|
49
|
+
|
|
50
|
+
echo -e "\n🤖 Installing OpenCode CLI..."
|
|
51
|
+
run_command "npm install -g opencode-ai@latest"
|
|
52
|
+
echo "✅ Done"
|
|
53
|
+
|
|
54
|
+
echo -e "\n🤖 Installing Amazon Q CLI..."
|
|
55
|
+
# 👉🏾 https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-verify-download.html
|
|
56
|
+
|
|
57
|
+
run_command "curl --proto '=https' --tlsv1.2 -sSf 'https://desktop-release.q.us-east-1.amazonaws.com/latest/q-x86_64-linux.zip' -o 'q.zip'"
|
|
58
|
+
run_command "curl --proto '=https' --tlsv1.2 -sSf 'https://desktop-release.q.us-east-1.amazonaws.com/latest/q-x86_64-linux.zip.sig' -o 'q.zip.sig'"
|
|
59
|
+
cat > amazonq-public-key.asc << 'EOF'
|
|
60
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
61
|
+
|
|
62
|
+
mDMEZig60RYJKwYBBAHaRw8BAQdAy/+G05U5/EOA72WlcD4WkYn5SInri8pc4Z6D
|
|
63
|
+
BKNNGOm0JEFtYXpvbiBRIENMSSBUZWFtIDxxLWNsaUBhbWF6b24uY29tPoiZBBMW
|
|
64
|
+
CgBBFiEEmvYEF+gnQskUPgPsUNx6jcJMVmcFAmYoOtECGwMFCQPCZwAFCwkIBwIC
|
|
65
|
+
IgIGFQoJCAsCBBYCAwECHgcCF4AACgkQUNx6jcJMVmef5QD/QWWEGG/cOnbDnp68
|
|
66
|
+
SJXuFkwiNwlH2rPw9ZRIQMnfAS0A/0V6ZsGB4kOylBfc7CNfzRFGtovdBBgHqA6P
|
|
67
|
+
zQ/PNscGuDgEZig60RIKKwYBBAGXVQEFAQEHQC4qleONMBCq3+wJwbZSr0vbuRba
|
|
68
|
+
D1xr4wUPn4Avn4AnAwEIB4h+BBgWCgAmFiEEmvYEF+gnQskUPgPsUNx6jcJMVmcF
|
|
69
|
+
AmYoOtECGwwFCQPCZwAACgkQUNx6jcJMVmchMgEA6l3RveCM0YHAGQaSFMkguoAo
|
|
70
|
+
vK6FgOkDawgP0NPIP2oA/jIAO4gsAntuQgMOsPunEdDeji2t+AhV02+DQIsXZpoB
|
|
71
|
+
=f8yY
|
|
72
|
+
-----END PGP PUBLIC KEY BLOCK-----
|
|
73
|
+
EOF
|
|
74
|
+
run_command "gpg --batch --import amazonq-public-key.asc"
|
|
75
|
+
run_command "gpg --verify q.zip.sig q.zip"
|
|
76
|
+
run_command "unzip -q q.zip"
|
|
77
|
+
run_command "chmod +x ./q/install.sh"
|
|
78
|
+
run_command "./q/install.sh --no-confirm"
|
|
79
|
+
run_command "rm -rf ./q q.zip q.zip.sig amazonq-public-key.asc"
|
|
80
|
+
echo "✅ Done"
|
|
81
|
+
|
|
82
|
+
echo -e "\n🤖 Installing CodeBuddy CLI..."
|
|
83
|
+
run_command "npm install -g @tencent-ai/codebuddy-code@latest"
|
|
84
|
+
echo "✅ Done"
|
|
85
|
+
|
|
86
|
+
# Installing UV (Python package manager)
|
|
87
|
+
echo -e "\n🐍 Installing UV - Python Package Manager..."
|
|
88
|
+
run_command "pipx install uv"
|
|
89
|
+
echo "✅ Done"
|
|
90
|
+
|
|
91
|
+
# Installing DocFx (for documentation site)
|
|
92
|
+
echo -e "\n📚 Installing DocFx..."
|
|
93
|
+
run_command "dotnet tool update -g docfx"
|
|
94
|
+
echo "✅ Done"
|
|
95
|
+
|
|
96
|
+
echo -e "\n🧹 Cleaning cache..."
|
|
97
|
+
run_command "sudo apt-get autoclean"
|
|
98
|
+
run_command "sudo apt-get clean"
|
|
99
|
+
|
|
100
|
+
echo "✅ Setup completed. Happy coding! 🚀"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* text=auto eol=lf
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Build and deploy DocFX documentation to GitHub Pages
|
|
2
|
+
name: Deploy Documentation to Pages
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
# Runs on pushes targeting the default branch
|
|
6
|
+
push:
|
|
7
|
+
branches: ["main"]
|
|
8
|
+
paths:
|
|
9
|
+
- 'docs/**'
|
|
10
|
+
|
|
11
|
+
# Allows you to run this workflow manually from the Actions tab
|
|
12
|
+
workflow_dispatch:
|
|
13
|
+
|
|
14
|
+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
pages: write
|
|
18
|
+
id-token: write
|
|
19
|
+
|
|
20
|
+
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
|
|
21
|
+
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
|
|
22
|
+
concurrency:
|
|
23
|
+
group: "pages"
|
|
24
|
+
cancel-in-progress: false
|
|
25
|
+
|
|
26
|
+
jobs:
|
|
27
|
+
# Build job
|
|
28
|
+
build:
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
steps:
|
|
31
|
+
- name: Checkout
|
|
32
|
+
uses: actions/checkout@v4
|
|
33
|
+
with:
|
|
34
|
+
fetch-depth: 0 # Fetch all history for git info
|
|
35
|
+
|
|
36
|
+
- name: Setup .NET
|
|
37
|
+
uses: actions/setup-dotnet@v4
|
|
38
|
+
with:
|
|
39
|
+
dotnet-version: '8.x'
|
|
40
|
+
|
|
41
|
+
- name: Setup DocFX
|
|
42
|
+
run: dotnet tool install -g docfx
|
|
43
|
+
|
|
44
|
+
- name: Build with DocFX
|
|
45
|
+
run: |
|
|
46
|
+
cd docs
|
|
47
|
+
docfx docfx.json
|
|
48
|
+
|
|
49
|
+
- name: Setup Pages
|
|
50
|
+
uses: actions/configure-pages@v5
|
|
51
|
+
|
|
52
|
+
- name: Upload artifact
|
|
53
|
+
uses: actions/upload-pages-artifact@v3
|
|
54
|
+
with:
|
|
55
|
+
path: 'docs/_site'
|
|
56
|
+
|
|
57
|
+
# Deploy job
|
|
58
|
+
deploy:
|
|
59
|
+
environment:
|
|
60
|
+
name: github-pages
|
|
61
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
62
|
+
runs-on: ubuntu-latest
|
|
63
|
+
needs: build
|
|
64
|
+
steps:
|
|
65
|
+
- name: Deploy to GitHub Pages
|
|
66
|
+
id: deployment
|
|
67
|
+
uses: actions/deploy-pages@v4
|
|
68
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
name: Lint
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
markdownlint:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- name: Checkout
|
|
13
|
+
uses: actions/checkout@v4
|
|
14
|
+
|
|
15
|
+
- name: Run markdownlint-cli2
|
|
16
|
+
uses: DavidAnson/markdownlint-cli2-action@v19
|
|
17
|
+
with:
|
|
18
|
+
globs: '**/*.md'
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [created]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
|
|
17
|
+
- name: Set up Python
|
|
18
|
+
uses: actions/setup-python@v5
|
|
19
|
+
with:
|
|
20
|
+
python-version: '3.11'
|
|
21
|
+
|
|
22
|
+
- name: Install build dependencies
|
|
23
|
+
run: |
|
|
24
|
+
python -m pip install --upgrade pip
|
|
25
|
+
pip install build twine hatchling
|
|
26
|
+
|
|
27
|
+
- name: Build package
|
|
28
|
+
run: |
|
|
29
|
+
python -m build
|
|
30
|
+
|
|
31
|
+
- name: Check distribution
|
|
32
|
+
run: |
|
|
33
|
+
python -m twine check dist/*
|
|
34
|
+
|
|
35
|
+
- name: Upload distribution to PyPI
|
|
36
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
37
|
+
with:
|
|
38
|
+
user: __token__
|
|
39
|
+
password: ${{ secrets.AI_CODESPARK_PYPI_TOKEN }}
|
|
40
|
+
|
|
41
|
+
- name: Upload artifacts
|
|
42
|
+
uses: actions/upload-artifact@v4
|
|
43
|
+
with:
|
|
44
|
+
name: dist
|
|
45
|
+
path: dist/
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
name: Create Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
paths:
|
|
7
|
+
- 'memory/**'
|
|
8
|
+
- 'scripts/**'
|
|
9
|
+
- 'templates/**'
|
|
10
|
+
- '.github/workflows/**'
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
release:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
permissions:
|
|
17
|
+
contents: write
|
|
18
|
+
pull-requests: write
|
|
19
|
+
steps:
|
|
20
|
+
- name: Checkout repository
|
|
21
|
+
uses: actions/checkout@v4
|
|
22
|
+
with:
|
|
23
|
+
fetch-depth: 0
|
|
24
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
25
|
+
- name: Get latest tag
|
|
26
|
+
id: get_tag
|
|
27
|
+
run: |
|
|
28
|
+
chmod +x .github/workflows/scripts/get-next-version.sh
|
|
29
|
+
.github/workflows/scripts/get-next-version.sh
|
|
30
|
+
- name: Check if release already exists
|
|
31
|
+
id: check_release
|
|
32
|
+
run: |
|
|
33
|
+
chmod +x .github/workflows/scripts/check-release-exists.sh
|
|
34
|
+
.github/workflows/scripts/check-release-exists.sh ${{ steps.get_tag.outputs.new_version }}
|
|
35
|
+
env:
|
|
36
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
37
|
+
- name: Create release package variants
|
|
38
|
+
if: steps.check_release.outputs.exists == 'false'
|
|
39
|
+
run: |
|
|
40
|
+
chmod +x .github/workflows/scripts/create-release-packages.sh
|
|
41
|
+
.github/workflows/scripts/create-release-packages.sh ${{ steps.get_tag.outputs.new_version }}
|
|
42
|
+
- name: Generate release notes
|
|
43
|
+
if: steps.check_release.outputs.exists == 'false'
|
|
44
|
+
id: release_notes
|
|
45
|
+
run: |
|
|
46
|
+
chmod +x .github/workflows/scripts/generate-release-notes.sh
|
|
47
|
+
.github/workflows/scripts/generate-release-notes.sh ${{ steps.get_tag.outputs.new_version }} ${{ steps.get_tag.outputs.latest_tag }}
|
|
48
|
+
- name: Create GitHub Release
|
|
49
|
+
if: steps.check_release.outputs.exists == 'false'
|
|
50
|
+
run: |
|
|
51
|
+
chmod +x .github/workflows/scripts/create-github-release.sh
|
|
52
|
+
.github/workflows/scripts/create-github-release.sh ${{ steps.get_tag.outputs.new_version }}
|
|
53
|
+
env:
|
|
54
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
55
|
+
- name: Update version in pyproject.toml (for release artifacts only)
|
|
56
|
+
if: steps.check_release.outputs.exists == 'false'
|
|
57
|
+
run: |
|
|
58
|
+
chmod +x .github/workflows/scripts/update-version.sh
|
|
59
|
+
.github/workflows/scripts/update-version.sh ${{ steps.get_tag.outputs.new_version }}
|
|
60
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# check-release-exists.sh
|
|
5
|
+
# Check if a GitHub release already exists for the given version
|
|
6
|
+
# Usage: check-release-exists.sh <version>
|
|
7
|
+
|
|
8
|
+
if [[ $# -ne 1 ]]; then
|
|
9
|
+
echo "Usage: $0 <version>" >&2
|
|
10
|
+
exit 1
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
VERSION="$1"
|
|
14
|
+
|
|
15
|
+
if gh release view "$VERSION" >/dev/null 2>&1; then
|
|
16
|
+
echo "exists=true" >> $GITHUB_OUTPUT
|
|
17
|
+
echo "Release $VERSION already exists, skipping..."
|
|
18
|
+
else
|
|
19
|
+
echo "exists=false" >> $GITHUB_OUTPUT
|
|
20
|
+
echo "Release $VERSION does not exist, proceeding..."
|
|
21
|
+
fi
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# create-github-release.sh
|
|
5
|
+
# Create a GitHub release with all template zip files
|
|
6
|
+
# Usage: create-github-release.sh <version>
|
|
7
|
+
|
|
8
|
+
if [[ $# -ne 1 ]]; then
|
|
9
|
+
echo "Usage: $0 <version>" >&2
|
|
10
|
+
exit 1
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
VERSION="$1"
|
|
14
|
+
|
|
15
|
+
# Remove 'v' prefix from version for release title
|
|
16
|
+
VERSION_NO_V=${VERSION#v}
|
|
17
|
+
|
|
18
|
+
gh release create "$VERSION" \
|
|
19
|
+
.genreleases/spec-kit-template-copilot-sh-"$VERSION".zip \
|
|
20
|
+
.genreleases/spec-kit-template-copilot-ps-"$VERSION".zip \
|
|
21
|
+
.genreleases/spec-kit-template-claude-sh-"$VERSION".zip \
|
|
22
|
+
.genreleases/spec-kit-template-claude-ps-"$VERSION".zip \
|
|
23
|
+
.genreleases/spec-kit-template-gemini-sh-"$VERSION".zip \
|
|
24
|
+
.genreleases/spec-kit-template-gemini-ps-"$VERSION".zip \
|
|
25
|
+
.genreleases/spec-kit-template-cursor-agent-sh-"$VERSION".zip \
|
|
26
|
+
.genreleases/spec-kit-template-cursor-agent-ps-"$VERSION".zip \
|
|
27
|
+
.genreleases/spec-kit-template-opencode-sh-"$VERSION".zip \
|
|
28
|
+
.genreleases/spec-kit-template-opencode-ps-"$VERSION".zip \
|
|
29
|
+
.genreleases/spec-kit-template-qwen-sh-"$VERSION".zip \
|
|
30
|
+
.genreleases/spec-kit-template-qwen-ps-"$VERSION".zip \
|
|
31
|
+
.genreleases/spec-kit-template-windsurf-sh-"$VERSION".zip \
|
|
32
|
+
.genreleases/spec-kit-template-windsurf-ps-"$VERSION".zip \
|
|
33
|
+
.genreleases/spec-kit-template-codex-sh-"$VERSION".zip \
|
|
34
|
+
.genreleases/spec-kit-template-codex-ps-"$VERSION".zip \
|
|
35
|
+
.genreleases/spec-kit-template-kilocode-sh-"$VERSION".zip \
|
|
36
|
+
.genreleases/spec-kit-template-kilocode-ps-"$VERSION".zip \
|
|
37
|
+
.genreleases/spec-kit-template-auggie-sh-"$VERSION".zip \
|
|
38
|
+
.genreleases/spec-kit-template-auggie-ps-"$VERSION".zip \
|
|
39
|
+
.genreleases/spec-kit-template-roo-sh-"$VERSION".zip \
|
|
40
|
+
.genreleases/spec-kit-template-roo-ps-"$VERSION".zip \
|
|
41
|
+
.genreleases/spec-kit-template-codebuddy-sh-"$VERSION".zip \
|
|
42
|
+
.genreleases/spec-kit-template-codebuddy-ps-"$VERSION".zip \
|
|
43
|
+
.genreleases/spec-kit-template-amp-sh-"$VERSION".zip \
|
|
44
|
+
.genreleases/spec-kit-template-amp-ps-"$VERSION".zip \
|
|
45
|
+
.genreleases/spec-kit-template-q-sh-"$VERSION".zip \
|
|
46
|
+
.genreleases/spec-kit-template-q-ps-"$VERSION".zip \
|
|
47
|
+
--title "Spec Kit Templates - $VERSION_NO_V" \
|
|
48
|
+
--notes-file release_notes.md
|