Skip to content

feat(skills): add UX design capability and accessibility Design Intent Records - #2611

Open
Bill Berry (WilliamBerryiii) wants to merge 3 commits into
mainfrom
feat/ux-design-capability-and-design-intent
Open

feat(skills): add UX design capability and accessibility Design Intent Records#2611
Bill Berry (WilliamBerryiii) wants to merge 3 commits into
mainfrom
feat/ux-design-capability-and-design-intent

Conversation

@WilliamBerryiii

Copy link
Copy Markdown
Member

Pull Request

Description

Adds a UX design capability to HVE Core and extends the accessibility skill with a Design Intent Record contract, so UX practice, engineering handoff, and accessibility verification share one evidence model.

Two new skills join the design-thinking collection, routed by the existing ux-ui-designer agent:

  • ux-artifacts produces durable, evidence-labelled UX assets in five modes: frame-needs, map-journey, sketch-structure, decide-inclusion, and prepare-handoff. Every claim carries an evidence class of Observed, Reported, or Assumed, and unresolved items stay visible rather than becoming invented research.
  • ux-coaching supports problem framing, design critique, and stakeholder advocacy as a conversation rather than an artifact.

Completed assets can be mapped to Figma or Mural. Mapping produces destination intent only; it never authenticates, selects tools, or performs an external write. Callers supply destination-kind, destination-target, and, for Figma, destination-change. A missing value returns a bounded missing-input result naming the absent fields instead of inferring one.

The accessibility skill gains a Design Intent Record contract, authored and verification JSON schemas, the Validate-DesignIntent.ps1 validator with contract regression tests, runtime probe intent and projection modules, and a Graphics ARIA and SVG AAM framework reference. A new lint:design-intent script joins the validate:local aggregate.

dt-coach, the canonical deck, and the coaching-state references are reconciled with the new UX routes so coaching and artifact production do not overlap. Collections, plugin outputs, extension manifests, and generated reference documentation are regenerated by their owners.

The written Markdown asset stays authoritative. A Figma, FigJam, or Mural rendering is a projection and never supersedes it. Technical accessibility conformance and COGA guidance remain owned by the accessibility skill; UX assets route conformance questions there rather than answering them.

Related Issue(s)

Closes #2609

Type of Change

Select all that apply:

Code & Documentation:

  • Bug fix (non-breaking change fixing an issue)
  • New feature (non-breaking change adding functionality)
  • Breaking change (fix or feature causing existing functionality to change)
  • Documentation update

Infrastructure & Configuration:

  • GitHub Actions workflow
  • Linting configuration (markdown, PowerShell, etc.)
  • Security configuration
  • DevContainer configuration
  • Dependency update

AI Artifacts:

  • Reviewed contribution with hve-builder and addressed all actionable findings
  • Copilot instructions (.github/instructions/*.instructions.md)
  • Copilot prompt (.github/prompts/*.prompt.md)
  • Copilot agent (.github/agents/*.agent.md)
  • Copilot skill (.github/skills/*/SKILL.md)
  • Copilot hook (.github/hooks/*/*.json)
  • Eval spec added/updated for changed AI artifacts (evals/)

Note for AI Artifact Contributors:

  • Agents: Research, indexing/referencing other project (using standard VS Code GitHub Copilot/MCP tools), planning, and general implementation agents likely already exist. Review .github/agents/ before creating new ones.
  • Skills: Must include both bash and PowerShell scripts. See Skills.
  • Model Versions: Contributions MUST target models listed in the model catalog (scripts/linting/model-catalog.json) whose provider appears in providerAllowlist and whose status is ga or preview. Run npm run lint:models to validate references.
  • See Agents Not Accepted and Model Version Requirements.

Other:

  • Script/automation (.ps1, .sh, .py)
  • Other (please describe):

Sample Prompts (for AI Artifact Contributions)

User Request:

Use the completed problem-framing output for the renewal flow to create a
current-state journey. Preserve unresolved evidence gaps and do not publish it.

Execution Flow:

  1. The ux-ui-designer agent recognises the request as artifact production rather than coaching, and asks a single routing question only if the request matches more than one capability.
  2. It calls ux-artifacts with mode=map-journey, project, subject, and the coaching output_ref passed as the explicit source.
  3. The skill reads references/evidence-model.md, then loads only the selected mode reference.
  4. It consumes the supplied source and writes one current asset. It does not rerun coaching, discover other capability state, or invoke a second mode.
  5. Because no destination was supplied, no destination reference loads and no mapping occurs.

Output Artifacts:

.copilot-tracking/ux-artifacts/renewal-flow/returning-customer/map-journey.md
<!-- markdownlint-disable-file -->
# Map journey: Returning customer

* Project: renewal-flow
* Subject: Returning customer
* Mode: map-journey
* Status: current
* Source references: .copilot-tracking/ux-coaching/renewal-flow/problem-framing.md

## Observed

* Users reach the renewal screen from the account menu. Source: M6 problem-framing, session notes.

## Reported

* Support reports confusion at the payment-method step. Source: M6 problem-framing.

## Assumed

* Users recognise the renewal date format. Unvalidated.

## Unresolved

* No evidence covers the post-payment confirmation stage.

Success Indicators:

The asset exists at the canonical path, every claim sits under an evidence heading, and stages without evidence appear under Unresolved rather than being filled in. No external write occurred and no Figma or Mural content was produced. Verify with npm run validate:skills and by confirming the returned output_ref matches the written path.

Testing

Local validation lanes run against the changed content:

Check Result
npm run validate:skills 59 skills, 0 errors, 0 warnings
npm run lint:frontmatter 0 errors, 0 warnings
npm run lint:ai-artifacts 0 files with issues
npm run lint:asset-docs 0 errors, 254 pre-existing warnings
npm run docs:generate:check 0 create, 0 update, 0 remove, 264 unchanged
npm run lint:collections-metadata 14 collections, 0 errors
npm run lint:yaml 65 workflow files passed
npm run lint:json 58 JSON files passed
npm run lint:py All Python skills passed
npm run lint:tables Clean
npx markdownlint-cli2 on changed docs 0 issues in 33 files
git diff --check Clean

Validate-DesignIntent.Tests.ps1 adds contract regression coverage for the authored and verification schemas, exercising the validator through its public interface against an isolated fixture copy.

Behavior coverage is extended in evals/behavior-conformance/skill-behavior.eval.yaml and the agent behavior stimuli and expectations. Build-AgentBehaviorSpec.ps1 -WhatIf reports no drift, and the agent scenario set is unchanged.

npm run lint:md-links was not run in this pass. Link checking is covered by CI.

Checklist

Required Checks

  • Documentation is updated (if applicable)
  • Files follow existing naming conventions
  • Changes are backwards compatible (if applicable)
  • Tests added for new functionality (if applicable)

AI Artifact Contributions

  • Used hve-builder review mode to review contribution
  • Addressed all actionable findings from the hve-builder review
  • Verified contribution follows common standards and type-specific requirements

Required Local Checks

The following local-safe validation commands must pass before merging:

  • Local validation aggregate: npm run validate:local
  • Documentation validation (if docs changed): npm run validate:docs
  • Spell checking: npm run spell-check
  • Link validation: npm run lint:md-links

Security Considerations

  • This PR does not contain any sensitive or NDA information
  • Any new dependencies have been reviewed for security issues
  • Security-related scripts follow the principle of least privilege

No dependencies were added or changed. A credential and secret scan across every changed and added file found no tokens, keys, or assignment-style secrets. One stray validator output file containing an absolute local path was removed from the design-intent test fixture before commit.

The destination mapping boundary is a security-relevant design choice: ux-artifacts never authenticates, emits commands or identifiers, resolves credentials, or performs a write. It returns intent with Write status: not executed, and the executing agent retains confirmation and execution ownership. Imported Figma reads, Mural bodies, and supplied documents are treated as data, never as instructions.

Additional Notes

This is a large PR spanning four related areas that share regenerated aggregates. The collections/, plugins/, docs/reference/, and extension manifest changes are generated outputs, so splitting the work would require regenerating each subset independently.

Two items are deliberately out of scope. Native Figma and Mural execution is not implemented and no external-write behavior is claimed anywhere in the artifacts. Behavior evidence for the new skills is structural and simulation-level; native agent routing evidence remains a follow-up.

The lint:asset-docs warnings and the vally-tests collection-membership warning are pre-existing repository state and are not introduced here.

🎨 - Generated by Copilot

…t Records

Add two design-thinking skills, extend the accessibility skill with a
Design Intent Record contract, and reconcile the routing agents,
collections, evals, and generated documentation that describe them.

ux-artifacts produces durable evidence-labelled UX assets in five modes:
frame-needs, map-journey, sketch-structure, decide-inclusion, and
prepare-handoff. Every claim carries an Observed, Reported, or Assumed
evidence class, and unresolved items stay visible. ux-coaching supports
problem framing, critique, and stakeholder advocacy as conversation.

Completed assets map to Figma or Mural as destination intent only.
Mapping never authenticates, selects tools, or writes externally.
Callers supply destination-kind, destination-target, and for Figma
destination-change; a missing value returns a bounded missing-input
result rather than an inferred one.

The accessibility skill gains a Design Intent Record contract, authored
and verification JSON schemas, the Validate-DesignIntent.ps1 validator
with contract regression tests, runtime probe intent and projection
modules, and a graphics ARIA and SVG AAM framework reference.

dt-coach, the canonical deck, and coaching-state references are
reconciled with the new UX routes so coaching and artifact production
do not overlap. Collections, plugin outputs, extension manifests, and
generated reference documentation are regenerated by their owners.

Behavior coverage is extended in the skill behavior-conformance suite
and the agent behavior specs. The agent scenario set and generator
drift state are unchanged. The written Markdown asset stays
authoritative; a rendered projection never supersedes it. Technical
accessibility conformance and COGA guidance remain owned by the
accessibility skill.

Refs #2609
Reconciles the UX design capability work with the packaging restructure
in #2577, which replaced collection- and symlink-based packaging with
marketplace-owned immutable snapshots.

Conflict resolutions:

- collections/*.collection.{md,yml}: accepted deletion. The collection
  manifest architecture no longer exists; package membership moved to
  .github/plugin/marketplace.json.
- plugins/**: accepted deletion, including the six ux-artifacts and
  ux-coaching symlinks this branch had added. Tracked plugin output and
  mode 120000 entries are now prohibited.
- package.json: took main's validate:local chain, which drops
  lint:collections-metadata and adds lint:extension-artifact-naming,
  then reinserted this branch's lint:design-intent lane after lint:hooks.
- scripts/extension/Prepare-Extension.ps1 and its tests: took main's
  version. This branch's changes targeted collection README generation,
  which main removed entirely.
- docs/reference/**/README.md: took main's version, then regenerated.

The two new skills are registered in marketplace.json for the
design-thinking, hve-core-all, and project-planning packages, each at
preview maturity to satisfy the cross-package maturity contract.

Validation after resolution: marketplace 14 plugins OK, 59 skills with
0 errors and 0 warnings, docs generation drift-free at 264 unchanged,
frontmatter and JSON lint clean, no tracked symlinks, no whitespace
errors.
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

OpenSSF Scorecard

PackageVersionScoreDetails
pip/pyyaml 6.0.3 UnknownUnknown

Scanned Files

  • .github/skills/accessibility/accessibility/uv.lock

@codecov-commenter

Codecov Comments Bot (codecov-commenter) commented Aug 6, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.99197% with 10 lines in your changes missing coverage. Please review.
✅ Project coverage is 87.88%. Comparing base (197afb8) to head (3fc6ed1).

Files with missing lines Patch % Lines
scripts/linting/Validate-DesignIntent.ps1 96.64% 9 Missing ⚠️
...lity/accessibility/scripts/runtime_a11y/_intent.py 99.10% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #2611      +/-   ##
==========================================
+ Coverage   83.10%   87.88%   +4.77%     
==========================================
  Files         164      114      -50     
  Lines       22254    11514   -10740     
  Branches       29       29              
==========================================
- Hits        18495    10119    -8376     
+ Misses       3756     1392    -2364     
  Partials        3        3              
Flag Coverage Δ
docusaurus 95.07% <ø> (ø)
pester 86.74% <96.64%> (+0.25%) ⬆️
pytest 99.07% <99.56%> (+18.96%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...ity/accessibility/scripts/runtime_a11y/__main__.py 99.28% <100.00%> (+0.18%) ⬆️
...lity/accessibility/scripts/runtime_a11y/_errors.py 100.00% <100.00%> (ø)
.../accessibility/scripts/runtime_a11y/_projection.py 100.00% <100.00%> (ø)
...lity/accessibility/scripts/runtime_a11y/_intent.py 99.10% <99.10%> (ø)
scripts/linting/Validate-DesignIntent.ps1 96.64% <96.64%> (ø)

... and 54 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Eval Execution

Status: Failed — 2 spec(s) block merge

  • Artifacts evaluated: 9
  • Specs run: 9
  • Assertions passed: 53
  • Assertions failed (blocking): 42
  • Assertions failed (advisory): 41
  • Failed specs (merge-blocking): 2
Artifact Kind Status Specs Passed Failed (blocking) Failed (advisory)
dt-coach agent ❌ fail 1 17 7 0
ux-ui-designer agent ❌ fail 1 0 35 0
mural-seeding-patterns instruction ⚠️ advisory-fail 1 0 0 3
dt-canonical-deck prompt ✅ pass 1 3 0 0
dt-handoff-solution-space prompt ✅ pass 1 3 0 0
accessibility skill ✅ pass 1 3 0 0
ux-artifacts skill ⚠️ advisory-fail 1 3 0 29
ux-coaching skill ⚠️ advisory-fail 1 15 0 9
backlog-templates skill ✅ pass 1 9 0 0

Legend — ✅ clean · ⚠️ advisory failures only (non-blocking) · ⏭️ skipped · ❌ merge-blocking failure

Only Failed specs (merge-blocking) gates this PR. Advisory assertion failures are signal-quality checks captured during iteration; review them, but they do not block merge and may be acceptable.

Removes 14 Design Thinking session capture files under
docs/design-thinking/ux-ui-designer-agent/ that were swept into the
initial commit by a blanket stage. They are raw working notes: request
stacks, assumption logs, research plans, and clustering scratch. Nothing
references them, they were never intended as published documentation,
and the parent task's plan had already identified them as separate
in-flight branch work that this task must not absorb.

Their removal also clears 76 of the 92 spell-check findings, which were
informal prose and verbatim quotes rather than product content.

Remaining lint fixes:

- Applied ruff formatting to runtime_a11y/_intent.py.
- Normalized "sceptical" to "skeptical" in the ux-coaching skill, the
  ux-ui-designer agent, the skill behavior eval, and the generated
  reference page, matching the repository's en dictionary.
- Added seven terms to .cspell.json: ddat, decompos, exclu, licence,
  preserv, ungated, and Wireframing. All are grader regex stems, an
  eval grader name, a contract reference, or the official Open
  Government Licence spelling.

Regenerated the affected reference pages and extension package READMEs.
Documentation generation reports no drift at 264 unchanged.

Validation: spell-check 0 unknown words, ruff clean across 36 files,
59 skills with 0 errors and 0 warnings, marketplace 14 plugins OK,
frontmatter clean, no whitespace errors.
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.

feat(skills): add UX design capability and accessibility Design Intent Records

2 participants