Commit 5cc1019
authored
feat(skills): add UX design capability and accessibility Design Intent Records (microsoft#2611)
# 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 microsoft#2609
## Type of Change
Select all that apply:
**Code & Documentation:**
* [ ] Bug fix (non-breaking change fixing an issue)
* [x] New feature (non-breaking change adding functionality)
* [ ] Breaking change (fix or feature causing existing functionality to
change)
* [x] Documentation update
**Infrastructure & Configuration:**
* [ ] GitHub Actions workflow
* [ ] Linting configuration (markdown, PowerShell, etc.)
* [ ] Security configuration
* [ ] DevContainer configuration
* [ ] Dependency update
**AI Artifacts:**
* [x] Reviewed contribution with `hve-builder` and addressed all
actionable findings
* [x] Copilot instructions (`.github/instructions/*.instructions.md`)
* [x] Copilot prompt (`.github/prompts/*.prompt.md`)
* [x] Copilot agent (`.github/agents/*.agent.md`)
* [x] Copilot skill (`.github/skills/*/SKILL.md`)
* [ ] Copilot hook (`.github/hooks/*/*.json`)
* [x] 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](../docs/contributing/skills.md).
> * 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](../docs/contributing/custom-agents.md#agents-not-accepted) and
[Model Version
Requirements](../docs/contributing/ai-artifacts-common.md#model-version-requirements).
**Other:**
* [x] Script/automation (`.ps1`, `.sh`, `.py`)
* [ ] Other (please describe):
## Sample Prompts (for AI Artifact Contributions)
**User Request:**
```text
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:**
```text
.copilot-tracking/ux-artifacts/renewal-flow/returning-customer/map-journey.md
```
```markdown
<!-- 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` | 64 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, pre-existing warnings only |
| `npm run docs:generate:check` | 0 create, 0 update, 0 remove, 232
unchanged |
| `npm run lint:marketplace` | 10 plugins, 0 errors |
| `npm run lint:yaml` | 67 workflow files passed |
| `npm run lint:json` | 57 JSON files passed |
| `npm run lint:ps` | 0 findings |
| `npm run spell-check` | 0 issues across 823 files |
| `npm run validate:docs` | 10 suites, 101 tests passed |
| `npm run lint:py` | All Python skills passed |
| `npm run lint:tables` | Clean |
| `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.
`main` is merged into this branch as of `a228328a`, and CI is green on
that head: 108 checks pass, 0 failures, 0 blocking eval assertions. Link
checking is covered by the CI link-validation lane; the `validate:local`
aggregate that includes `lint:md-links` is being run locally to close
the remaining checklist entries.
## Checklist
### Required Checks
* [x] Documentation is updated (if applicable)
* [x] Files follow existing naming conventions
* [x] Changes are backwards compatible (if applicable)
* [x] Tests added for new functionality (if applicable)
### AI Artifact Contributions
* [x] Used `hve-builder` review mode to review contribution
* [x] Addressed all actionable findings from the `hve-builder` review
* [x] 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`
* [x] Documentation validation (if docs changed): `npm run
validate:docs`
* [x] Spell checking: `npm run spell-check`
* [ ] Link validation: `npm run lint:md-links`
## Security Considerations
* [x] This PR does not contain any sensitive or NDA information
* [ ] Any new dependencies have been reviewed for security issues
* [x] 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 Copilot1 parent 278eb12 commit 5cc1019
81 files changed
Lines changed: 9263 additions & 426 deletions
File tree
- .github
- agents
- design-thinking
- project-planning
- instructions/experimental/mural
- plugin
- prompts/design-thinking
- skills
- accessibility/accessibility
- references
- ci
- design-intent
- frameworks
- scripts/runtime_a11y
- tests/runtime_a11y
- design-thinking
- dt-coaching-foundation/references
- ux-artifacts
- references
- ux-coaching
- references
- docs
- contributing
- design-thinking
- plugins
- reference
- agents
- project-planning
- instructions
- experimental/mural
- prompts
- design-thinking
- skills
- accessibility
- design-thinking
- security
- evals
- agent-behavior
- expectations
- fixtures
- stimuli
- baseline-equivalence/surface-signatures
- behavior-conformance
- scripts
- linting
- schemas
- tests
- fixtures/design-intent/valid-repo
- design-intent
- .verification
- linting
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
| 109 | + | |
| 110 | + | |
109 | 111 | | |
110 | 112 | | |
111 | 113 | | |
| |||
117 | 119 | | |
118 | 120 | | |
119 | 121 | | |
| 122 | + | |
120 | 123 | | |
121 | 124 | | |
122 | 125 | | |
| |||
140 | 143 | | |
141 | 144 | | |
142 | 145 | | |
| 146 | + | |
143 | 147 | | |
144 | 148 | | |
145 | 149 | | |
| |||
166 | 170 | | |
167 | 171 | | |
168 | 172 | | |
| 173 | + | |
169 | 174 | | |
170 | 175 | | |
171 | 176 | | |
172 | 177 | | |
173 | 178 | | |
174 | 179 | | |
175 | 180 | | |
| 181 | + | |
176 | 182 | | |
177 | 183 | | |
178 | 184 | | |
| |||
200 | 206 | | |
201 | 207 | | |
202 | 208 | | |
| 209 | + | |
203 | 210 | | |
204 | 211 | | |
205 | 212 | | |
| |||
213 | 220 | | |
214 | 221 | | |
215 | 222 | | |
| 223 | + | |
216 | 224 | | |
217 | 225 | | |
218 | 226 | | |
219 | 227 | | |
| 228 | + | |
220 | 229 | | |
221 | 230 | | |
222 | 231 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
118 | | - | |
| 118 | + | |
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
| |||
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
127 | | - | |
| 127 | + | |
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
| |||
235 | 235 | | |
236 | 236 | | |
237 | 237 | | |
238 | | - | |
239 | | - | |
| 238 | + | |
| 239 | + | |
240 | 240 | | |
241 | 241 | | |
242 | 242 | | |
| |||
256 | 256 | | |
257 | 257 | | |
258 | 258 | | |
259 | | - | |
| 259 | + | |
260 | 260 | | |
261 | | - | |
| 261 | + | |
262 | 262 | | |
263 | 263 | | |
264 | 264 | | |
| |||
268 | 268 | | |
269 | 269 | | |
270 | 270 | | |
271 | | - | |
272 | | - | |
273 | 271 | | |
274 | 272 | | |
| 273 | + | |
| 274 | + | |
275 | 275 | | |
276 | 276 | | |
277 | | - | |
| 277 | + | |
278 | 278 | | |
279 | 279 | | |
280 | 280 | | |
| |||
283 | 283 | | |
284 | 284 | | |
285 | 285 | | |
286 | | - | |
| 286 | + | |
287 | 287 | | |
288 | 288 | | |
289 | 289 | | |
290 | 290 | | |
291 | | - | |
| 291 | + | |
292 | 292 | | |
293 | 293 | | |
294 | 294 | | |
| |||
340 | 340 | | |
341 | 341 | | |
342 | 342 | | |
343 | | - | |
344 | | - | |
| 343 | + | |
| 344 | + | |
345 | 345 | | |
346 | 346 | | |
347 | 347 | | |
348 | 348 | | |
349 | 349 | | |
350 | 350 | | |
351 | 351 | | |
352 | | - | |
| 352 | + | |
353 | 353 | | |
354 | 354 | | |
355 | 355 | | |
356 | 356 | | |
357 | 357 | | |
358 | | - | |
| 358 | + | |
0 commit comments