Skip to content

fix: provision Spec Kit CLI + assess extension in feature-assess host setup steps - #4195

Merged
mnriem merged 1 commit into
github:mainfrom
mnriem:mnriem-fix-feature-assess-cli-provisioning
Aug 18, 2026
Merged

fix: provision Spec Kit CLI + assess extension in feature-assess host setup steps#4195
mnriem merged 1 commit into
github:mainfrom
mnriem:mnriem-fix-feature-assess-cli-provisioning

Conversation

@mnriem

@mnriem mnriem commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

Problem

The feature-assess workflow could not actually run Spec Kit. The prior fix (#4193) added setup-uv/setup-python actions, but the CLI was still installed by the agent at runtime, which cannot work inside the gh-aw firewall container:

  • uv is not on the container PATH (setup-uv doesn't place its binary under a tool-cache bin dir the container rebuilds PATH from).
  • Bare python3 resolves to PyPy 3.9, not the CPython 3.14 that actions/setup-python installed.
  • The Copilot permission gate (--no-ask-user) blocks ad-hoc interpreter/installer fallbacks (uv tool install, curl … | sh, versioned python3.12, full-path pythons).

Net effect: specify never installed, and the run only "succeeded" because the agent fell back to reading extensions/assess/commands/*.md directly — the speckit.assess.* skills were never provisioned.

Fix

Move all provisioning into host setup steps that run before the agent starts (full network, working host PATH):

  1. Install Spec Kit CLIuv pip install --system "${{ github.workspace }}", so the specify entry point lands in the tool-cache Python bin the agent container adds to PATH.
  2. Initialize Spec Kit and install the assess extensionspecify init --here --integration copilot --script sh --force then specify extension add assess, so the five speckit.assess.* skills exist when the agent runs.

Supporting changes:

  • Rewrote the intro and Step 1 so the agent confirms (not installs) the preinstalled environment, and renumbered the pipeline steps.
  • Marked the setup steps continue-on-error so a provisioning failure still lets the agent start and post the operational-failure comment instead of hard-failing the job. (The compiler hoists the recognized Setup uv action and strips the flag from it; the failure-prone custom steps keep it.)
  • Recompiled feature-assess.lock.yml. Diff vs the current lock is minimal: metadata hash + the new setup steps.

Notes

  • This mirrors the working bug-test workflow's uv pip install --system setup pattern.
  • No changes to .gitattributes or .github/aw/actions-lock.json.

This PR was authored autonomously by GitHub Copilot (model: Claude Opus 4.8) on behalf of @mnriem. Commits carry Assisted-by: trailers per the repository's agent-disclosure policy.

…st setup steps

The prior fix (github#4193) added setup-uv/setup-python actions but the CLI was
still installed by the agent at runtime, which fails: inside the gh-aw
firewall container `uv` is not on PATH, bare `python3` resolves to PyPy, and
the Copilot permission gate blocks ad-hoc interpreter/installer fallbacks. As
a result `specify` never installed and the assess skills only "worked" by the
agent reading raw command files.

Move provisioning into host setup steps that run before the agent starts
(full network, working PATH):
- Install the CLI with `uv pip install --system` so the `specify` entry point
  lands in the tool-cache Python bin the agent container adds to PATH.
- Run `specify init --here --integration copilot` and
  `specify extension add assess` on the host so the five `speckit.assess.*`
  skills exist when the agent runs.

Rewrite intro + Step 1 so the agent confirms (not installs) the preinstalled
environment, and renumber the pipeline steps accordingly. Mark the setup steps
`continue-on-error` so a provisioning failure still lets the agent start and
post the operational-failure comment instead of hard-failing the job.

Recompile feature-assess.lock.yml.

Assisted-by: GitHub Copilot (model: Claude Opus 4.8, autonomous)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ed10e45c-6fce-48c8-815f-cf905a4e553f
Copilot AI balanced review requested due to automatic review settings August 18, 2026 19:23
@mnriem
mnriem merged commit f1673cb into github:main Aug 18, 2026
13 checks passed
@mnriem
mnriem deleted the mnriem-fix-feature-assess-cli-provisioning branch August 18, 2026 19:24

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Moves Spec Kit and assess extension provisioning into pre-agent host steps.

Changes:

  • Installs and initializes Spec Kit before Copilot starts.
  • Updates agent instructions and failure handling.
  • Regenerates the compiled workflow.
Show a summary per file
File Description
.github/workflows/feature-assess.md Adds provisioning steps and revises agent guidance.
.github/workflows/feature-assess.lock.yml Updates generated workflow setup and metadata.

Review details

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

  • Files reviewed: 2/2 changed files
  • Comments generated: 2
  • Review effort level: Balanced

Comment on lines +135 to +147
For each pipeline stage below, "run the `<stage>` assess command" means: locate
that installed command's definition (search under the Copilot command/skill
files created by the setup steps — e.g. `.github/`-scoped skill files — and under
`.specify/` and `extensions/assess/`) and **follow its instructions faithfully**
against the idea, honouring its non-interactive branch. Stay inside each stage's
lane — earlier stages capture and gather; they do not decide.

If the environment is missing (no `specify` on `PATH`, or the `assess` command
definitions cannot be found), **stop**: post one comment explaining the
**operational/environment failure** and stop **without applying any verdict
label**. An install or environment failure is an operational problem with the
runner, not a judgment about the request — do **not** apply `feature-invalid`
(that label is reserved for unassessable request content, per Step 5).
Comment on lines +47 to +49
- name: Install Spec Kit CLI
continue-on-error: true
run: uv pip install --system "${{ github.workspace }}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants