Skip to content

refactor(workflow-preset): make UI/UX specification template-owned - #70

Merged
bigsmartben merged 1 commit into
mainfrom
feat/63-ui-ux-spec-template
Jul 26, 2026
Merged

refactor(workflow-preset): make UI/UX specification template-owned#70
bigsmartben merged 1 commit into
mainfrom
feat/63-ui-ux-spec-template

Conversation

@bigsmartben

Copy link
Copy Markdown
Owner

Description

Refactors workflow-preset so UI/UX specification is source-agnostic and its durable structure is owned by templates instead of command prose.

  • adds a wrapping spec-template with stable UI-### and UX-### requirements
  • keeps Applicability (Required, Not Applicable, Unknown) separate from Readiness (Ready, Blocked)
  • removes design-provider, external-intake, SSOT/IR evidence, asset-binding, and provider-blocker dependencies from runtime commands, templates, validators, protocols, and public documentation
  • keeps commands responsible for stage behavior while templates own stable headings, matrices, fields, enums, and examples
  • propagates the source-agnostic UI/UX contract through clarify, checklist, plan, tasks, implement, receipt validation, cross-agent documentation, catalog metadata, and tests
  • leaves extensions/intake/ unchanged

This prevents /speckit.specify and /speckit.checklist from becoming coupled to a particular design source or extraction workflow. Users can provide confirmed product requirements from any source while downstream stages consume stable UI/UX requirement IDs and readiness decisions.

Closes #63

Testing

  • Tested locally with uv run specify --help
  • Ran existing tests with uv sync && uv run pytest
  • Tested with a sample project (if applicable)

Focused validation:

  • presets/workflow-preset: 141 passed, 2 skipped
  • tests/test_presets.py: 331 passed
  • workflow-preset CLI integration selection: 2 passed, 86 deselected
  • runtime source-coupling scan: no matches
  • git diff --check: passed

The full repository suite was attempted and stopped at approximately 34% after repeated failures in shared Markdown integration tests. The reproduced failure expects spec.md (FEATURE_SPEC) is required, while the current core checklist template renders `spec.md` (`FEATURE_SPEC`) is required. The failure occurs across unrelated integrations and is outside this PR's changed files.

Preset / Extension Contract

  • Component choice and boundary: Preset change; it customizes existing Spec Kit specification, clarification, checklist, planning, task, analysis, and implementation stages without adding tooling or source acquisition.
  • Contract split: Commands own stage-local behavior; spec-template and the behavior checklist template own stable Markdown structures; existing implement schemas and validators retain machine-readable handoff contracts.
  • Platform neutrality: Runtime prompts contain no Figma, design-provider, external-intake, Visual/HTML SSOT, structured IR, provider-blocker, or asset-binding dependencies.
  • Lifecycle evidence: Existing preset install/resolve coverage passes through tests/test_presets.py and the workflow-preset CLI integration tests.
  • Component validation: 141 passed, 2 skipped; preset/catalog regression 331 passed; workflow-preset CLI integration 2 passed.
  • Prompt behavior evidence: Contract tests verify template ownership, source-agnostic command behavior, UI/UX ID propagation, and applicability/readiness separation.

Community Catalog Submission

  • Submission route: n/a
  • Catalog type: n/a
  • Source repository: n/a
  • Source version: n/a
  • Source commit: n/a
  • Download URL: n/a
  • Related issue: n/a
  • Maintainer direct PR approval: n/a

AI Disclosure

  • I did not use AI assistance for this contribution
  • I did use AI assistance (describe below)

Implemented, tested, and posted on behalf of @bigsmartben by Codex (model: GPT-5, autonomous).

Assisted-by: Codex (model: GPT-5, autonomous)
@bigsmartben
bigsmartben force-pushed the feat/63-ui-ux-spec-template branch from 48a2c14 to be1e554 Compare July 26, 2026 08:37
@bigsmartben
bigsmartben marked this pull request as ready for review July 26, 2026 08:39
@bigsmartben
bigsmartben merged commit e94ee6a into main Jul 26, 2026
14 of 15 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: be1e554b39

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Set `Gate Status: PASS` only when every applicable readiness item is checked and `Blocking Items: none`. Otherwise set `Gate Status: BLOCKED` and list each unchecked readiness item that prevents behavior projection or downstream planning.

Unchecked readiness items that prevent behavior projection or downstream planning are blocking items. Do not proceed to `/speckit.plan`. Requirement ambiguity returns to `/speckit.clarify` or `/speckit.specify` to resolve missing requirements before planning. Provider evidence readiness blockers return to the external intake extension, not `/speckit.clarify`.
Unchecked readiness items that prevent downstream planning return to `/speckit.clarify` or `/speckit.specify`. Do not repair requirements inside the checklist command and do not proceed to `/speckit.plan`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Remove provider gates from the composed checklist flow

When this wrap command is resolved against the bundled core, {CORE_TEMPLATE} still inserts templates/commands/checklist.md, whose lines 61-99 require a separate visual domain and explicitly define provider-evidence blockers routed to intake; the wrapped clarify command likewise preserves that route at templates/commands/clarify.md:77-84 and 247-248. Consequently, UI features can still produce the source-specific blockers this change claims to remove, contradicting this new clarify/specify-only routing. Reconcile those core instructions or use a replacement that actually implements the source-agnostic contract.

AGENTS.md reference: presets/workflow-preset/AGENTS.md:L17-L17

Useful? React with 👍 / 👎.

Comment on lines +326 to +328
"UI-",
"UX-",
"UI/UX Requirement ID",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Match receipt evidence to the handed-off requirement

For a UI/UX handoff referencing UI-001, this marker-only check accepts evidence for an unrelated requirement such as UI-999; it even accepts generic text like UI-component tests passed or UI/UX Requirement ID not verified. validate_receipt_structure() can therefore approve completion without evidence for the requirement actually assigned in the handoff. Extract the concrete UI-[0-9]+/UX-[0-9]+ IDs from the handoff and require the receipt to reference the same IDs.

Useful? React with 👍 / 👎.

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.

refactor(workflow-preset): decouple design-provider intake and make UI/UX specification template-owned

1 participant