From 900021bbbb9f3e76c144c48e754dde8c427dd873 Mon Sep 17 00:00:00 2001 From: Paul Hanson Date: Thu, 5 Feb 2026 06:11:43 -0800 Subject: [PATCH 1/7] Add SLSA generic generator workflow This workflow generates SLSA provenance files for projects, satisfying level 3 requirements. It includes steps for building artifacts and generating subjects for provenance. --- .../generator-generic-ossf-slsa3-publish.yml | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .github/workflows/generator-generic-ossf-slsa3-publish.yml diff --git a/.github/workflows/generator-generic-ossf-slsa3-publish.yml b/.github/workflows/generator-generic-ossf-slsa3-publish.yml new file mode 100644 index 0000000000..35c829b139 --- /dev/null +++ b/.github/workflows/generator-generic-ossf-slsa3-publish.yml @@ -0,0 +1,66 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# This workflow lets you generate SLSA provenance file for your project. +# The generation satisfies level 3 for the provenance requirements - see https://slsa.dev/spec/v0.1/requirements +# The project is an initiative of the OpenSSF (openssf.org) and is developed at +# https://github.com/slsa-framework/slsa-github-generator. +# The provenance file can be verified using https://github.com/slsa-framework/slsa-verifier. +# For more information about SLSA and how it improves the supply-chain, visit slsa.dev. + +name: SLSA generic generator +on: + workflow_dispatch: + release: + types: [created] + +jobs: + build: + runs-on: ubuntu-latest + outputs: + digests: ${{ steps.hash.outputs.digests }} + + steps: + - uses: actions/checkout@v4 + + # ======================================================== + # + # Step 1: Build your artifacts. + # + # ======================================================== + - name: Build artifacts + run: | + # These are some amazing artifacts. + echo "artifact1" > artifact1 + echo "artifact2" > artifact2 + + # ======================================================== + # + # Step 2: Add a step to generate the provenance subjects + # as shown below. Update the sha256 sum arguments + # to include all binaries that you generate + # provenance for. + # + # ======================================================== + - name: Generate subject for provenance + id: hash + run: | + set -euo pipefail + + # List the artifacts the provenance will refer to. + files=$(ls artifact*) + # Generate the subjects (base64 encoded). + echo "hashes=$(sha256sum $files | base64 -w0)" >> "${GITHUB_OUTPUT}" + + provenance: + needs: [build] + permissions: + actions: read # To read the workflow path. + id-token: write # To sign the provenance. + contents: write # To add assets to a release. + uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.4.0 + with: + base64-subjects: "${{ needs.build.outputs.digests }}" + upload-assets: true # Optional: Upload to a new release From afb60097f2de1c2a7698f9ee8e25240fe81a6cf4 Mon Sep 17 00:00:00 2001 From: Paul Hanson Date: Thu, 5 Feb 2026 06:22:51 -0800 Subject: [PATCH 2/7] Update .github/workflows/generator-generic-ossf-slsa3-publish.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/generator-generic-ossf-slsa3-publish.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/generator-generic-ossf-slsa3-publish.yml b/.github/workflows/generator-generic-ossf-slsa3-publish.yml index 35c829b139..cf01b71488 100644 --- a/.github/workflows/generator-generic-ossf-slsa3-publish.yml +++ b/.github/workflows/generator-generic-ossf-slsa3-publish.yml @@ -50,7 +50,11 @@ jobs: set -euo pipefail # List the artifacts the provenance will refer to. - files=$(ls artifact*) + files=$(compgen -G "artifact*" || true) + if [ -z "$files" ]; then + echo "Error: no artifacts found matching pattern 'artifact*'." >&2 + exit 1 + fi # Generate the subjects (base64 encoded). echo "hashes=$(sha256sum $files | base64 -w0)" >> "${GITHUB_OUTPUT}" From 4d98e10da598c953f93c073758ba4e0c125fba5c Mon Sep 17 00:00:00 2001 From: Paul Hanson Date: Thu, 5 Feb 2026 06:23:20 -0800 Subject: [PATCH 3/7] Update .github/workflows/generator-generic-ossf-slsa3-publish.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/generator-generic-ossf-slsa3-publish.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/generator-generic-ossf-slsa3-publish.yml b/.github/workflows/generator-generic-ossf-slsa3-publish.yml index cf01b71488..6d95599da0 100644 --- a/.github/workflows/generator-generic-ossf-slsa3-publish.yml +++ b/.github/workflows/generator-generic-ossf-slsa3-publish.yml @@ -36,6 +36,11 @@ jobs: echo "artifact1" > artifact1 echo "artifact2" > artifact2 + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: build-artifacts + path: artifact* # ======================================================== # # Step 2: Add a step to generate the provenance subjects From ea38f916f13868a161f1ab33192de10226e2150c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Feb 2026 06:37:39 +0000 Subject: [PATCH 4/7] Initial plan From de34ba3bc665378cf53bcb94035db738d959dce4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Feb 2026 06:43:50 +0000 Subject: [PATCH 5/7] Add 'run' command to execute Spec Kit scripts Co-authored-by: paulthanson082-glitch <252514830+paulthanson082-glitch@users.noreply.github.com> --- CHANGELOG.md | 11 +++ README.md | 35 ++++++++ pyproject.toml | 2 +- specs/001-test-feature/plan.md | 0 specs/001-test-feature/spec.md | 0 src/specify_cli/__init__.py | 146 +++++++++++++++++++++++++++++++++ 6 files changed, 193 insertions(+), 1 deletion(-) create mode 100644 specs/001-test-feature/plan.md create mode 100644 specs/001-test-feature/spec.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e2ac3697f..d6d6c57073 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,17 @@ All notable changes to the Specify CLI and templates are documented here. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Added + +- New `run` command to execute Spec Kit scripts from the CLI + - Automatically detects platform (Linux/macOS vs Windows) and runs appropriate scripts + - Supports both bash scripts (`.sh`) and PowerShell scripts (`.ps1`) + - Passes all arguments directly to the underlying script + - Includes `--verbose` flag for debugging + - Examples: `specify run check-prerequisites.sh --json`, `specify run setup-plan.sh --json` + ## [0.0.22] - 2025-11-07 - Support for VS Code/Copilot agents, and moving away from prompts to proper agents with hand-offs. diff --git a/README.md b/README.md index 76149512f6..bf24b60893 100644 --- a/README.md +++ b/README.md @@ -173,6 +173,7 @@ The `specify` command supports the following options: | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `init` | Initialize a new Specify project from the latest template | | `check` | Check for installed tools (`git`, `claude`, `gemini`, `code`/`code-insiders`, `cursor-agent`, `windsurf`, `qwen`, `opencode`, `codex`, `shai`, `qoder`) | +| `run` | Execute a Spec Kit script from the scripts directory (bash or PowerShell) | ### `specify init` Arguments & Options @@ -242,6 +243,40 @@ specify init my-project --ai claude --github-token ghp_your_token_here specify check ``` +### `specify run` Arguments & Options + +| Argument/Option | Type | Description | +| ----------------- | -------- | ------------------------------------------------------------------------------ | +| `