Skip to content

feat: introduce terminal-ux-design skill and instruction for delightful command UX #214

Description

@stiwicourage

Summary

Introduce a canonical terminal UX guidance layer in the agentic copilot so that cmdlets, nova CLI routes, and downstream nova init projects share one bar for terminal user experience. The new skill consolidates two complementary frameworks:

  • Atlassian's 10 design principles for delightful CLIs — CLI-specific tactics (help, progress, errors, flags, next best step, etc.).
  • Jakob Nielsen's 10 usability heuristics for user interface design — general usability heuristics adapted to terminal interfaces (match real world, error prevention, recognition vs. recall, flexibility/efficiency, aesthetic minimalism, etc.).

This issue covers the guidance only; existing commands are audited in separate follow-on issues (#215#229).

Why

NovaModuleTools and every module scaffolded by nova init expose themselves to users only through a terminal. We currently have no shared standard for help discoverability, progress visibility, human-readable errors, sensible defaults, next-step hints, exit safety, flags-vs-args, terminology that matches users' mental models, error prevention, recognizable defaults, expert shortcuts, or minimal output. New work drifts on personal taste, and reviewer/architect/developer agents have nothing concrete to validate UX choices against.

Scope

  • New skill .github/skills/terminal-ux-design/SKILL.md containing both frameworks in our own words:
    • Section Atlassian's 10 design principles for delightful CLIs — one paragraph per principle with explicit PowerShell-cmdlet and nova CLI mappings.
    • Section Jakob Nielsen's 10 usability heuristics for user interface design — one paragraph per heuristic with explicit PowerShell-cmdlet and nova CLI mappings.
    • One combined mapping table with columns for Concern, Concrete PowerShell / nova mechanism, Atlassian principle(s), Nielsen heuristic(s) — so each row makes both framework links explicit.
    • The usual When to use, Expected practices, Common pitfalls, and Definition of done blocks.
  • New thin universal instruction .github/instructions/terminal-ux-design.instructions.md with applyTo: "**" that points at the skill and states the rule applies to any code defining a user-facing command or emitting terminal output.
  • Add terminal-ux-design to Skills to use in architect.agent.md, powershell-developer.agent.md, and reviewer.agent.md.
  • Update .github/copilot-instructions.md task map (design-change, implement-issue, review-change rows) and Related guidance section.
  • Run ./scripts/build/Sync-AgenticCopilotScaffold.ps1 and commit the regenerated src/resources/agentic-copilot/ tree so nova init projects inherit the guidance.
  • CHANGELOG.md entry under Unreleased → Added.

Out of scope

Acceptance criteria

  • .github/skills/terminal-ux-design/SKILL.md exists with both framework sections and one combined mapping table as described above.
  • .github/instructions/terminal-ux-design.instructions.md exists with applyTo: "**" and stays ≤ 25 lines.
  • architect.agent.md, powershell-developer.agent.md, and reviewer.agent.md list the new skill under Skills to use.
  • .github/copilot-instructions.md task map and Related guidance are updated.
  • src/resources/agentic-copilot/ is regenerated via Sync-AgenticCopilotScaffold.ps1 and committed.
  • CHANGELOG.md has a new entry under Unreleased → Added.
  • pwsh -NoLogo -NoProfile -File ./run.ps1 passes locally.
  • ./scripts/build/Invoke-ScriptAnalyzerCI.ps1 reports no new findings.
  • Per-command follow-on audit issues (refactor(Deploy-NovaPackage): align with terminal-ux-design principles #215refactor(Update-NovaModuleVersion): align with terminal-ux-design principles #229) reference this issue and use both frameworks in their audit checklists.

Validation

  • pwsh -NoLogo -NoProfile -File ./run.ps1
  • ./scripts/build/Invoke-ScriptAnalyzerCI.ps1
  • ./scripts/build/Sync-AgenticCopilotScaffold.ps1

Recommended follow-on agent

powershell-developer for implementation; reviewer for merge gate.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions