oh-my-opencode 4.13.0 → 4.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/codex-qa/SKILL.md +15 -0
- package/.agents/skills/codex-qa/references/isolation.md +1 -1
- package/.agents/skills/codex-qa/references/logging-debug.md +12 -0
- package/.agents/skills/opencode-qa/SKILL.md +17 -0
- package/.agents/skills/opencode-qa/references/tui-tmux.md +17 -0
- package/.agents/skills/work-with-pr/SKILL.md +18 -10
- package/.opencode/skills/work-with-pr/SKILL.md +18 -10
- package/README.md +3 -3
- package/dist/cli/doctor/checks/telemetry.d.ts +2 -0
- package/dist/cli/doctor/framework/constants.d.ts +1 -0
- package/dist/cli/doctor/framework/doctor-target.d.ts +1 -1
- package/dist/cli/doctor/framework/types.d.ts +2 -0
- package/dist/cli/index.js +24779 -17857
- package/dist/cli-node/index.js +24779 -17857
- package/dist/config/schema/oh-my-opencode-config.d.ts +1 -0
- package/dist/features/team-mode/test-support/async-test-helpers.d.ts +19 -0
- package/dist/hooks/atlas/final-wave-approval-gate.d.ts +1 -0
- package/dist/hooks/atlas/subagent-completion-reminder.d.ts +30 -0
- package/dist/hooks/atlas/types.d.ts +2 -0
- package/dist/hooks/atlas/verification-reminders.d.ts +3 -0
- package/dist/hooks/team-session-events/team-idle-wake-hint.d.ts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +43845 -26631
- package/dist/mcp/context7.d.ts +9 -8
- package/dist/oh-my-opencode.schema.json +4 -0
- package/dist/plugin/native-skills.d.ts +9 -0
- package/dist/plugin/system-transform.d.ts +1 -1
- package/dist/shared/posthog.d.ts +17 -10
- package/dist/shared/telemetry-product-identity.d.ts +2 -0
- package/dist/skills/coding-agent-sessions/SKILL.md +128 -0
- package/dist/skills/coding-agent-sessions/agents/openai.yaml +4 -0
- package/dist/skills/coding-agent-sessions/references/all-platforms.md +71 -0
- package/dist/skills/coding-agent-sessions/references/claude.md +32 -0
- package/dist/skills/coding-agent-sessions/references/codex.md +30 -0
- package/dist/skills/coding-agent-sessions/references/opencode.md +43 -0
- package/dist/skills/coding-agent-sessions/references/senpi.md +17 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/__init__.py +1 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/claude.py +66 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +283 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/codex.py +105 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/file_scanners.py +275 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/jsonio.py +55 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/kiro_scanner.py +91 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/opencode.py +289 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +92 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_optional_scanners.py +203 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_scanners.py +177 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/timeparse.py +51 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/transcript.py +149 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/types.py +57 -0
- package/dist/skills/coding-agent-sessions/scripts/find-agent-sessions.py +19 -0
- package/dist/skills/frontend/ATTRIBUTION.md +52 -8
- package/dist/skills/frontend/SKILL.md +29 -8
- package/dist/skills/frontend/references/design/README.md +29 -12
- package/dist/skills/frontend/references/design/_INDEX.md +3 -3
- package/dist/skills/frontend/references/design/design-system-architecture.md +22 -19
- package/dist/skills/frontend/references/designpowers/EVIDENCE.md +89 -0
- package/dist/skills/frontend/references/designpowers/README.md +48 -0
- package/dist/skills/frontend/references/designpowers/UPSTREAM.md +80 -0
- package/dist/skills/frontend/references/designpowers/lane-a-direction.md +64 -0
- package/dist/skills/frontend/references/designpowers/lane-b-execution.md +65 -0
- package/dist/skills/frontend/references/designpowers/lane-c-review.md +65 -0
- package/dist/skills/frontend/references/designpowers/lane-d-memory.md +83 -0
- package/dist/skills/frontend/references/designpowers/orchestration.md +80 -0
- package/dist/skills/frontend/references/designpowers/routing.md +79 -0
- package/dist/skills/frontend/references/designpowers/vendor/LICENSE +21 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/content-writer.md +132 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/design-builder.md +109 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/design-critic.md +89 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/design-lead.md +113 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/design-scout.md +78 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/design-strategist.md +121 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/motion-designer.md +120 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/accessible-content/SKILL.md +101 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/adaptive-interfaces/SKILL.md +109 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/cognitive-accessibility/SKILL.md +107 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/design-debate/SKILL.md +199 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/design-debt-tracker/SKILL.md +174 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/design-handoff/SKILL.md +125 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/design-md/SKILL.md +106 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/design-retrospective/SKILL.md +266 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/design-review/SKILL.md +123 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/design-system-alignment/SKILL.md +120 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/designpowers-critique/SKILL.md +164 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/heuristic-evaluation/SKILL.md +85 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/inclusive-personas/SKILL.md +98 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/inspiration-scouting/SKILL.md +165 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/interaction-design/SKILL.md +122 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/motion-choreography/SKILL.md +81 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/research-planning/SKILL.md +96 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/responsive-patterns/SKILL.md +77 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/synthetic-user-testing/SKILL.md +192 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/taste-feedback/SKILL.md +165 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/taste-report/SKILL.md +78 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/token-architecture/SKILL.md +75 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/ui-composition/SKILL.md +117 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/usability-testing/SKILL.md +78 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/verification-before-shipping/SKILL.md +125 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/voice-and-tone/SKILL.md +79 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/writing-design-plans/SKILL.md +119 -0
- package/dist/skills/frontend/references/ui-ux-db/scripts/core.py +0 -0
- package/dist/skills/git-master/SKILL.md +4 -0
- package/dist/skills/lcx-contribute-bug-fix/SKILL.md +44 -13
- package/dist/skills/lcx-contribute-bug-fix/agents/openai.yaml +1 -1
- package/dist/skills/lcx-doctor/SKILL.md +48 -13
- package/dist/skills/lcx-doctor/agents/openai.yaml +1 -1
- package/dist/skills/lcx-report-bug/SKILL.md +44 -13
- package/dist/skills/lcx-report-bug/agents/openai.yaml +1 -1
- package/dist/skills/review-work/SKILL.md +3 -3
- package/dist/skills/start-work/SKILL.md +7 -5
- package/dist/skills/ultraresearch/SKILL.md +4 -252
- package/dist/skills/ulw-plan/SKILL.md +8 -6
- package/dist/skills/ulw-plan/references/full-workflow.md +11 -6
- package/dist/skills/ulw-plan/references/intent-clear.md +3 -3
- package/dist/skills/ulw-plan/references/intent-unclear.md +1 -1
- package/{packages/shared-skills/skills/ultraresearch → dist/skills/ulw-research}/ATTRIBUTION.md +1 -1
- package/dist/skills/ulw-research/SKILL.md +260 -0
- package/dist/skills/visual-qa/SKILL.md +109 -18
- package/dist/skills/visual-qa/references/agent-browser-setup.md +5 -4
- package/dist/skills/visual-qa/scripts/cli.test.ts +7 -2
- package/dist/skills/visual-qa/scripts/skill-prompt-contract.test.ts +130 -3
- package/dist/skills/visual-qa/scripts/visual-qa.mjs +530 -0
- package/dist/testing/create-plugin-module.d.ts +2 -0
- package/dist/tools/delegate-task/skill-resolver.d.ts +1 -0
- package/dist/tools/delegate-task/types.d.ts +2 -0
- package/dist/tools/skill/types.d.ts +1 -0
- package/dist/tui.js +23917 -16117
- package/docs/reference/github-attachment-upload.md +51 -0
- package/docs/reference/web-terminal-visual-qa.md +81 -0
- package/package.json +33 -14
- package/packages/git-bash-mcp/dist/cli.js +2 -0
- package/packages/lsp-core/src/lsp/process.ts +4 -1
- package/packages/lsp-core/src/mcp.ts +1 -0
- package/packages/lsp-daemon/dist/cli.js +20 -5
- package/packages/lsp-daemon/dist/ensure-daemon.d.ts +1 -0
- package/packages/lsp-daemon/dist/ensure-daemon.js +9 -3
- package/packages/lsp-daemon/dist/index.js +20 -5
- package/packages/lsp-daemon/dist/paths.d.ts +1 -0
- package/packages/lsp-daemon/dist/paths.js +6 -1
- package/packages/lsp-daemon/dist/proxy.js +1 -0
- package/packages/lsp-tools-mcp/dist/cli.js +5 -1
- package/packages/lsp-tools-mcp/dist/lsp/manager.js +4 -1
- package/packages/lsp-tools-mcp/dist/mcp.js +5 -1
- package/packages/lsp-tools-mcp/dist/tools.js +4 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +327 -69
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/scripts/bootstrap.ps1 +37 -68
- package/packages/omo-codex/plugin/components/bootstrap/scripts/node-dispatch.ps1 +75 -0
- package/packages/omo-codex/plugin/components/bootstrap/src/cli.ts +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/src/setup.ts +3 -19
- package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +688 -334
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +317 -39
- package/packages/omo-codex/plugin/components/codegraph/package.json +2 -2
- package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +7 -1
- package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +103 -3
- package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +231 -0
- package/packages/omo-codex/plugin/components/codegraph/src/serve-invocation.ts +29 -0
- package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +31 -57
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +7 -4
- package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +43 -9
- package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +287 -0
- package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +12 -7
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +71 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +94 -26
- package/packages/omo-codex/plugin/components/lsp/dist/codex-hook.js +2 -0
- package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.d.ts +2 -0
- package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.js +56 -0
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/src/cli.ts +2 -5
- package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +2 -0
- package/packages/omo-codex/plugin/components/lsp/src/daemon-cli-path.ts +65 -0
- package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +6 -1
- package/packages/omo-codex/plugin/components/rules/dist/cli.js +8 -106
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +4 -17
- package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +6 -6
- package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +23 -0
- package/packages/omo-codex/plugin/components/teammode/dist/cli.js +22 -4
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/skills/teammode/SKILL.md +57 -7
- package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team-guide.mjs +32 -5
- package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team-state.mjs +63 -1
- package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team.mjs +87 -53
- package/packages/omo-codex/plugin/components/teammode/src/codex-hook.ts +19 -4
- package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +32 -2
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/README.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +18 -10
- package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +6 -4
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +11 -6
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +3 -3
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/src/codex-hook.ts +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook-trigger-policy.test.ts +24 -0
- package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +7 -28
- package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/README.md +25 -21
- package/packages/omo-codex/plugin/components/ulw-loop/biome.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +373 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.js +14 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +145 -14
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.d.ts +6 -3
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.js +16 -6
- package/packages/omo-codex/plugin/components/ulw-loop/dist/ultrawork-directive.d.ts +5 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/ultrawork-directive.js +104 -0
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +5 -2
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +22 -14
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-steering.ts +14 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +4 -2
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +28 -6
- package/packages/omo-codex/plugin/components/ulw-loop/src/ultrawork-directive.ts +113 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +33 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering-kind-guidance.test.ts +31 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +13 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/sample-quality-gate.json +7 -7
- package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +39 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-doc.test.ts +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +7 -6
- package/packages/omo-codex/plugin/components/ulw-loop/test/skill-contract.test.ts +12 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +64 -0
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +2 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +2 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +2 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +2 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +2 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +2 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +2 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +2 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +2 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +2 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +2 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +2 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +2 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +2 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +2 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +2 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +2 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +2 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +2 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +2 -1
- package/packages/omo-codex/plugin/package-lock.json +16 -56
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/scripts/auto-update.mjs +9 -5
- package/packages/omo-codex/plugin/scripts/materialize-shared-upstreams.mjs +1 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/context7-placeholder-guard.mjs +131 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-mode-guard.mjs +60 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +3 -10
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/root-settings.mjs +31 -1
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/subagent-limit-guard.mjs +73 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config.mjs +20 -3
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +30 -8
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +128 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/agents/openai.yaml +4 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +71 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/claude.md +32 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/codex.md +30 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/opencode.md +43 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +17 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/__init__.py +1 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/claude.py +66 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +283 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/codex.py +105 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/file_scanners.py +275 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/jsonio.py +55 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/kiro_scanner.py +91 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/opencode.py +289 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +92 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_optional_scanners.py +203 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_scanners.py +177 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/timeparse.py +51 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/transcript.py +149 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/types.py +57 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/find-agent-sessions.py +19 -0
- package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +52 -8
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +29 -8
- package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +29 -12
- package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +3 -3
- package/packages/omo-codex/plugin/skills/frontend/references/design/design-system-architecture.md +22 -19
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/EVIDENCE.md +89 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +48 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/UPSTREAM.md +80 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +64 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +65 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-c-review.md +65 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-d-memory.md +83 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/orchestration.md +80 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +79 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/LICENSE +21 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/content-writer.md +132 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-builder.md +109 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-critic.md +89 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-lead.md +113 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-scout.md +78 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-strategist.md +121 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/motion-designer.md +120 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/accessible-content/SKILL.md +101 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/adaptive-interfaces/SKILL.md +109 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/cognitive-accessibility/SKILL.md +107 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-debate/SKILL.md +199 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-debt-tracker/SKILL.md +174 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-handoff/SKILL.md +125 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-md/SKILL.md +106 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-retrospective/SKILL.md +266 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-review/SKILL.md +123 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-system-alignment/SKILL.md +120 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/designpowers-critique/SKILL.md +164 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/heuristic-evaluation/SKILL.md +85 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/inclusive-personas/SKILL.md +98 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/inspiration-scouting/SKILL.md +165 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/interaction-design/SKILL.md +122 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/motion-choreography/SKILL.md +81 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/research-planning/SKILL.md +96 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/responsive-patterns/SKILL.md +77 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/synthetic-user-testing/SKILL.md +192 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/taste-feedback/SKILL.md +165 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/taste-report/SKILL.md +78 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/token-architecture/SKILL.md +75 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/ui-composition/SKILL.md +117 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/usability-testing/SKILL.md +78 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/verification-before-shipping/SKILL.md +125 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/voice-and-tone/SKILL.md +79 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/writing-design-plans/SKILL.md +119 -0
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/scripts/core.py +0 -0
- package/packages/omo-codex/plugin/skills/git-master/SKILL.md +4 -0
- package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +4 -0
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/SKILL.md +44 -13
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/agents/openai.yaml +1 -1
- package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +48 -13
- package/packages/omo-codex/plugin/skills/lcx-doctor/agents/openai.yaml +1 -1
- package/packages/omo-codex/plugin/skills/lcx-report-bug/SKILL.md +44 -13
- package/packages/omo-codex/plugin/skills/lcx-report-bug/agents/openai.yaml +1 -1
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +4 -0
- package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +4 -0
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +12 -4
- package/packages/omo-codex/plugin/skills/start-work/SKILL.md +14 -8
- package/packages/omo-codex/plugin/skills/teammode/SKILL.md +57 -7
- package/packages/omo-codex/plugin/skills/teammode/scripts/team-guide.mjs +32 -5
- package/packages/omo-codex/plugin/skills/teammode/scripts/team-state.mjs +63 -1
- package/packages/omo-codex/plugin/skills/teammode/scripts/team.mjs +87 -53
- package/packages/omo-codex/plugin/skills/ultraresearch/SKILL.md +4 -250
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +22 -14
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +6 -4
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +11 -6
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +3 -3
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +1 -1
- package/{dist/skills/ultraresearch → packages/omo-codex/plugin/skills/ulw-research}/ATTRIBUTION.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +262 -0
- package/packages/omo-codex/plugin/skills/ulw-research/agents/openai.yaml +2 -0
- package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +113 -18
- package/packages/omo-codex/plugin/skills/visual-qa/references/agent-browser-setup.md +5 -4
- package/packages/omo-codex/plugin/skills/visual-qa/scripts/visual-qa.mjs +530 -0
- package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +23 -0
- package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +1 -0
- package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +1 -0
- package/packages/omo-codex/plugin/test/auto-update-restart-notice.test.mjs +24 -1
- package/packages/omo-codex/plugin/test/bootstrap-binlinks.test.mjs +61 -7
- package/packages/omo-codex/plugin/test/bootstrap-hooks.test.mjs +38 -0
- package/packages/omo-codex/plugin/test/bootstrap-ps-guard.test.mjs +25 -0
- package/packages/omo-codex/plugin/test/bootstrap-setup.test.mjs +1 -7
- package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +12 -11
- package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +99 -1
- package/packages/omo-codex/plugin/test/lcx-bug-skills.test.mjs +62 -8
- package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +206 -6
- package/packages/omo-codex/plugin/test/node-install-surface.test.mjs +1 -0
- package/packages/omo-codex/plugin/test/subagent-limit-migration.test.mjs +44 -0
- package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +50 -1
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +10 -7
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +28 -2
- package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +102 -0
- package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +20 -0
- package/packages/omo-codex/plugin/test/teammode-safety-fixture.mjs +41 -1
- package/packages/omo-codex/plugin/test/teammode-safety.test.mjs +93 -0
- package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +117 -0
- package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +5 -2
- package/packages/omo-codex/plugin/test/ulw-research-skill-contract.test.mjs +285 -0
- package/packages/omo-codex/scripts/install-bin-links.test.mjs +12 -1
- package/packages/omo-codex/scripts/install-cache-copy.test.mjs +79 -0
- package/packages/omo-codex/scripts/install-config-autonomous-features.test.mjs +43 -3
- package/packages/omo-codex/scripts/install-config.test.mjs +198 -17
- package/packages/omo-codex/scripts/install-delegated-command.test.mjs +93 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +803 -309
- package/packages/omo-codex/scripts/install-local-entrypoint.test.mjs +21 -2
- package/packages/omo-codex/scripts/install-local-git-bash-preflight.test.mjs +24 -15
- package/packages/omo-codex/scripts/install-local.test.mjs +5 -2
- package/packages/omo-codex/scripts/install-mcp-context7-runtime.test.mjs +84 -0
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +128 -0
- package/packages/shared-skills/skills/coding-agent-sessions/agents/openai.yaml +4 -0
- package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +71 -0
- package/packages/shared-skills/skills/coding-agent-sessions/references/claude.md +32 -0
- package/packages/shared-skills/skills/coding-agent-sessions/references/codex.md +30 -0
- package/packages/shared-skills/skills/coding-agent-sessions/references/opencode.md +43 -0
- package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +17 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/__init__.py +1 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/claude.py +66 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +283 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/codex.py +105 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/file_scanners.py +275 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/jsonio.py +55 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/kiro_scanner.py +91 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/opencode.py +289 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +92 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_optional_scanners.py +203 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_scanners.py +177 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/timeparse.py +51 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/transcript.py +149 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/types.py +57 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/find-agent-sessions.py +19 -0
- package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +52 -8
- package/packages/shared-skills/skills/frontend/SKILL.md +29 -8
- package/packages/shared-skills/skills/frontend/references/design/README.md +29 -12
- package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +3 -3
- package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md +22 -19
- package/packages/shared-skills/skills/frontend/references/designpowers/EVIDENCE.md +89 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/README.md +48 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/UPSTREAM.md +80 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +64 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +65 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-c-review.md +65 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-d-memory.md +83 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/orchestration.md +80 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +79 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/LICENSE +21 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/content-writer.md +132 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-builder.md +109 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-critic.md +89 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-lead.md +113 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-scout.md +78 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-strategist.md +121 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/motion-designer.md +120 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/accessible-content/SKILL.md +101 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/adaptive-interfaces/SKILL.md +109 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/cognitive-accessibility/SKILL.md +107 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-debate/SKILL.md +199 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-debt-tracker/SKILL.md +174 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-handoff/SKILL.md +125 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-md/SKILL.md +106 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-retrospective/SKILL.md +266 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-review/SKILL.md +123 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-system-alignment/SKILL.md +120 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/designpowers-critique/SKILL.md +164 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/heuristic-evaluation/SKILL.md +85 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/inclusive-personas/SKILL.md +98 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/inspiration-scouting/SKILL.md +165 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/interaction-design/SKILL.md +122 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/motion-choreography/SKILL.md +81 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/research-planning/SKILL.md +96 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/responsive-patterns/SKILL.md +77 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/synthetic-user-testing/SKILL.md +192 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/taste-feedback/SKILL.md +165 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/taste-report/SKILL.md +78 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/token-architecture/SKILL.md +75 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/ui-composition/SKILL.md +117 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/usability-testing/SKILL.md +78 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/verification-before-shipping/SKILL.md +125 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/voice-and-tone/SKILL.md +79 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/writing-design-plans/SKILL.md +119 -0
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/scripts/core.py +0 -0
- package/packages/shared-skills/skills/git-master/SKILL.md +4 -0
- package/packages/shared-skills/skills/lcx-contribute-bug-fix/SKILL.md +44 -13
- package/packages/shared-skills/skills/lcx-contribute-bug-fix/agents/openai.yaml +1 -1
- package/packages/shared-skills/skills/lcx-doctor/SKILL.md +48 -13
- package/packages/shared-skills/skills/lcx-doctor/agents/openai.yaml +1 -1
- package/packages/shared-skills/skills/lcx-report-bug/SKILL.md +44 -13
- package/packages/shared-skills/skills/lcx-report-bug/agents/openai.yaml +1 -1
- package/packages/shared-skills/skills/review-work/SKILL.md +3 -3
- package/packages/shared-skills/skills/start-work/SKILL.md +7 -5
- package/packages/shared-skills/skills/ultraresearch/SKILL.md +4 -252
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +8 -6
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +11 -6
- package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +3 -3
- package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +1 -1
- package/packages/{omo-codex/plugin/skills/ultraresearch → shared-skills/skills/ulw-research}/ATTRIBUTION.md +1 -1
- package/packages/shared-skills/skills/ulw-research/SKILL.md +260 -0
- package/packages/shared-skills/skills/visual-qa/SKILL.md +109 -18
- package/packages/shared-skills/skills/visual-qa/references/agent-browser-setup.md +5 -4
- package/packages/shared-skills/skills/visual-qa/scripts/cli.test.ts +7 -2
- package/packages/shared-skills/skills/visual-qa/scripts/skill-prompt-contract.test.ts +130 -3
- package/packages/shared-skills/skills/visual-qa/scripts/visual-qa.mjs +530 -0
- package/script/qa/web-terminal-redaction.d.mts +13 -0
- package/script/qa/web-terminal-redaction.mjs +43 -0
- package/script/qa/web-terminal-renderer.mjs +218 -0
- package/script/qa/web-terminal-visual-qa.mjs +264 -0
- package/dist/cli/sparkshell-appserver-websocket.d.ts +0 -4
- package/dist/cli/sparkshell-appserver.d.ts +0 -16
- package/dist/cli/sparkshell-condense.d.ts +0 -10
- package/dist/cli/sparkshell-parse.d.ts +0 -24
- package/dist/cli/sparkshell-session-context.d.ts +0 -20
- package/dist/cli/sparkshell-spark.d.ts +0 -23
- package/dist/cli/sparkshell.d.ts +0 -33
- package/dist/shared/sparkshell-awareness.d.ts +0 -5
- package/packages/omo-codex/plugin/components/rules/src/sparkshell-awareness.ts +0 -106
- package/packages/omo-codex/plugin/components/rules/test/sparkshell-awareness.test.ts +0 -346
- package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/tests/test_cookie_domain_filter.py +0 -110
- package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/tests/test_extract_cookies.py +0 -245
- package/packages/omo-codex/plugin/test/ultraresearch-skill-contract.test.mjs +0 -204
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: interaction-design
|
|
3
|
+
description: "Use when designing states, transitions, animations, error handling, loading patterns, feedback, or any behaviour that responds to user action — ensures interactions are perceivable, operable, and inclusive"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Interaction Design
|
|
7
|
+
|
|
8
|
+
Interactions are promises. Every button says "click me and something will happen." Every loading spinner says "wait, it is coming." This skill ensures those promises are kept for everyone, regardless of how they interact with the interface.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- Designing component states (default, hover, active, focus, disabled, error)
|
|
13
|
+
- Creating transitions or animations
|
|
14
|
+
- Handling errors, empty states, or edge cases
|
|
15
|
+
- Designing loading and progress patterns
|
|
16
|
+
- Defining feedback mechanisms (success, warning, error confirmations)
|
|
17
|
+
- Designing gesture or touch interactions
|
|
18
|
+
|
|
19
|
+
## Process
|
|
20
|
+
|
|
21
|
+
### Step 1: Map All States
|
|
22
|
+
|
|
23
|
+
For every interactive element, define:
|
|
24
|
+
|
|
25
|
+
| State | Visual | Screen Reader | Keyboard | Touch |
|
|
26
|
+
|-------|--------|--------------|----------|-------|
|
|
27
|
+
| Default | [appearance] | [announcement] | [behaviour] | [behaviour] |
|
|
28
|
+
| Hover | [appearance] | n/a | n/a | n/a |
|
|
29
|
+
| Focus | [appearance + focus ring] | [announcement] | [how to reach] | n/a |
|
|
30
|
+
| Active/Pressed | [appearance] | [announcement] | [trigger key] | [gesture] |
|
|
31
|
+
| Disabled | [appearance, not just greyed] | [announcement + reason] | [skip in tab order?] | [behaviour] |
|
|
32
|
+
| Error | [appearance + message] | [announcement + guidance] | [focus moved?] | [behaviour] |
|
|
33
|
+
| Loading | [appearance] | [live region update] | [interaction blocked?] | [behaviour] |
|
|
34
|
+
| Success | [appearance] | [announcement] | [next focus target] | [behaviour] |
|
|
35
|
+
|
|
36
|
+
### Step 2: Design Feedback Patterns
|
|
37
|
+
|
|
38
|
+
Every user action deserves a response. Map the feedback:
|
|
39
|
+
|
|
40
|
+
**Immediate feedback (< 100ms):**
|
|
41
|
+
- Visual state change on interaction (button press, toggle flip)
|
|
42
|
+
- Must be perceivable without relying on colour alone
|
|
43
|
+
|
|
44
|
+
**Short wait feedback (100ms - 1s):**
|
|
45
|
+
- Loading indicator or skeleton screen
|
|
46
|
+
- ARIA live region announcement: "Loading..."
|
|
47
|
+
|
|
48
|
+
**Long wait feedback (> 1s):**
|
|
49
|
+
- Progress indicator with estimated time or progress percentage
|
|
50
|
+
- Ability to cancel or navigate away
|
|
51
|
+
- ARIA live region updates at intervals
|
|
52
|
+
|
|
53
|
+
**Completion feedback:**
|
|
54
|
+
- Clear success or error state
|
|
55
|
+
- Screen reader announcement of outcome
|
|
56
|
+
- Logical next focus target
|
|
57
|
+
|
|
58
|
+
### Step 3: Error Handling
|
|
59
|
+
|
|
60
|
+
Errors are not edge cases — they are guaranteed states. Design for them:
|
|
61
|
+
|
|
62
|
+
1. **Prevention first** — inline validation, clear constraints, sensible defaults
|
|
63
|
+
2. **Clear identification** — what went wrong, in plain language
|
|
64
|
+
3. **Specific guidance** — what the person should do next
|
|
65
|
+
4. **Accessible delivery** — errors announced to screen readers, focus moved to the error, not just a colour change
|
|
66
|
+
5. **Recovery path** — preserve user input, allow correction without starting over
|
|
67
|
+
|
|
68
|
+
Error message format: **[What happened] + [What to do about it]**
|
|
69
|
+
- Yes: "That email address is already registered. Try signing in instead, or use a different email."
|
|
70
|
+
- No: "Error: invalid input"
|
|
71
|
+
|
|
72
|
+
### Step 4: Animation and Motion
|
|
73
|
+
|
|
74
|
+
Animations serve a purpose or they serve nobody:
|
|
75
|
+
|
|
76
|
+
**When to animate:**
|
|
77
|
+
- To show a relationship between elements (a panel sliding in from its trigger)
|
|
78
|
+
- To maintain spatial orientation (a page transition showing direction)
|
|
79
|
+
- To provide feedback (a subtle bounce on a successful action)
|
|
80
|
+
|
|
81
|
+
**When NOT to animate:**
|
|
82
|
+
- Decoration without function
|
|
83
|
+
- Anything that delays the user from completing their task
|
|
84
|
+
- Anything that loops indefinitely
|
|
85
|
+
|
|
86
|
+
**Inclusive motion:**
|
|
87
|
+
- Respect `prefers-reduced-motion` — always provide a reduced or no-motion alternative
|
|
88
|
+
- Keep durations short: 150-300ms for micro-interactions, 300-500ms for transitions
|
|
89
|
+
- Avoid parallax, auto-playing video, flashing content (3 flashes per second maximum per WCAG)
|
|
90
|
+
- Provide pause/stop controls for any animation longer than 5 seconds
|
|
91
|
+
|
|
92
|
+
### Step 5: Gesture and Input Design
|
|
93
|
+
|
|
94
|
+
If the design includes gesture interactions:
|
|
95
|
+
- Every gesture must have a non-gesture alternative (button, keyboard shortcut)
|
|
96
|
+
- Swipe actions must be discoverable without trial-and-error
|
|
97
|
+
- Drag-and-drop must have a keyboard-accessible alternative
|
|
98
|
+
- Touch targets: 44x44px minimum, with adequate spacing between targets
|
|
99
|
+
|
|
100
|
+
### Step 6: Document the Interaction Spec
|
|
101
|
+
|
|
102
|
+
For each interaction, document:
|
|
103
|
+
- Trigger (what initiates the interaction)
|
|
104
|
+
- Behaviour (what happens, step by step)
|
|
105
|
+
- States (all states the element passes through)
|
|
106
|
+
- Feedback (what the user perceives at each stage)
|
|
107
|
+
- Accessibility (screen reader announcements, keyboard behaviour, motion reduction)
|
|
108
|
+
|
|
109
|
+
## Integration
|
|
110
|
+
|
|
111
|
+
- **Called by:** `writing-design-plans` (as part of plan execution)
|
|
112
|
+
- **Pairs with:** `ui-composition` (visual states), `cognitive-accessibility` (interaction complexity), `accessible-content` (error messages)
|
|
113
|
+
- **Reviewed by:** `designpowers-critique`
|
|
114
|
+
|
|
115
|
+
## Red Flags
|
|
116
|
+
|
|
117
|
+
| Flag | Response |
|
|
118
|
+
|------|----------|
|
|
119
|
+
| Component with only default and hover states | Map ALL states including focus, error, loading, disabled |
|
|
120
|
+
| Animation without prefers-reduced-motion support | Add motion reduction. This is not optional |
|
|
121
|
+
| Error state that only changes colour | Add text, icon, and screen reader announcement |
|
|
122
|
+
| Gesture without alternative input method | Add keyboard and/or button alternative |
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: motion-choreography
|
|
3
|
+
description: "Use when designing animation sequences, page transitions, micro-interactions, loading states, or any motion that communicates meaning — ensures motion is purposeful, performant, and safe for motion-sensitive users"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Motion Choreography
|
|
7
|
+
|
|
8
|
+
Motion is communication. Every animation answers a question the user didn't know they had. If it doesn't answer one, cut it.
|
|
9
|
+
|
|
10
|
+
## The Three Questions
|
|
11
|
+
|
|
12
|
+
Before adding any animation:
|
|
13
|
+
1. **What changed?** — the animation makes it visible
|
|
14
|
+
2. **What should I look at next?** — directs attention
|
|
15
|
+
3. **How are these related?** — shows spatial/hierarchical relationship
|
|
16
|
+
|
|
17
|
+
Can't answer at least one? The animation is decoration. Cut it.
|
|
18
|
+
|
|
19
|
+
## Duration Guide
|
|
20
|
+
|
|
21
|
+
| Context | Duration |
|
|
22
|
+
|---------|----------|
|
|
23
|
+
| Micro-interaction (button, toggle) | 100-200ms |
|
|
24
|
+
| State change (card expand, tab) | 200-300ms |
|
|
25
|
+
| Screen transition | 250-400ms |
|
|
26
|
+
| Complex choreography | 400-700ms total |
|
|
27
|
+
|
|
28
|
+
Nothing over 1 second unless it's a loading indicator.
|
|
29
|
+
|
|
30
|
+
## Easing Reference
|
|
31
|
+
|
|
32
|
+
| Context | Easing |
|
|
33
|
+
|---------|--------|
|
|
34
|
+
| Entering | ease-out (decelerate) |
|
|
35
|
+
| Leaving | ease-in (accelerate) |
|
|
36
|
+
| State change | ease-in-out |
|
|
37
|
+
| Micro-interaction | spring (stiffness 300-500) |
|
|
38
|
+
|
|
39
|
+
## Stagger Patterns
|
|
40
|
+
|
|
41
|
+
- 50-80ms delay between items
|
|
42
|
+
- Maximum 5 items staggered, rest appear instantly
|
|
43
|
+
- Follow reading order
|
|
44
|
+
- Reveal hierarchy — important items first
|
|
45
|
+
|
|
46
|
+
## Reduced Motion
|
|
47
|
+
|
|
48
|
+
`prefers-reduced-motion: reduce` means reduce, not remove.
|
|
49
|
+
|
|
50
|
+
| Standard | Reduced alternative |
|
|
51
|
+
|----------|-------------------|
|
|
52
|
+
| Slide in | Fade in |
|
|
53
|
+
| Scale with bounce | Instant appearance |
|
|
54
|
+
| Parallax scroll | Static |
|
|
55
|
+
| Staggered reveal | Simultaneous fade |
|
|
56
|
+
| Continuous pulse | Static state |
|
|
57
|
+
|
|
58
|
+
**Every animation must have a reduced-motion alternative. No exceptions.**
|
|
59
|
+
|
|
60
|
+
## What NOT to Animate
|
|
61
|
+
|
|
62
|
+
- Text colour changes (photosensitive risk)
|
|
63
|
+
- Layout properties in performance paths (use transform)
|
|
64
|
+
- Anything that delays task completion
|
|
65
|
+
- Decorative loops without user control
|
|
66
|
+
|
|
67
|
+
## Performance
|
|
68
|
+
|
|
69
|
+
Only animate: `transform`, `opacity`, `filter`. These are GPU-composited.
|
|
70
|
+
|
|
71
|
+
## What You Deliver
|
|
72
|
+
|
|
73
|
+
- Animation specs with durations, easings, triggers
|
|
74
|
+
- Reduced-motion alternatives for every animation
|
|
75
|
+
- Performance annotations
|
|
76
|
+
- Sequence diagrams for complex choreography
|
|
77
|
+
|
|
78
|
+
## Integration
|
|
79
|
+
|
|
80
|
+
- **Informed by:** `design-lead`, `interaction-design`
|
|
81
|
+
- **Feeds into:** `motion-designer` agent, `accessibility-reviewer`, `design-builder`
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: research-planning
|
|
3
|
+
description: "Use when user needs are unclear, assumptions need validation, or the design brief identifies gaps in understanding — plans what to learn, which methods to use, and from whom"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Research Planning
|
|
7
|
+
|
|
8
|
+
Research is how we replace assumptions with evidence. This skill structures what you need to learn before committing to a design direction.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- The design brief identifies unknowns about users, context, or behaviour
|
|
13
|
+
- The team is making decisions based on assumptions rather than evidence
|
|
14
|
+
- A design is being created for a new audience or unfamiliar context
|
|
15
|
+
- Stakeholders disagree about user needs
|
|
16
|
+
|
|
17
|
+
## Process
|
|
18
|
+
|
|
19
|
+
### Step 1: Identify Knowledge Gaps
|
|
20
|
+
|
|
21
|
+
Review the design brief and list:
|
|
22
|
+
- What do we **know** about the people who will use this? (Evidence-backed)
|
|
23
|
+
- What do we **assume**? (Believed but unverified)
|
|
24
|
+
- What do we **not know**? (Acknowledged gaps)
|
|
25
|
+
|
|
26
|
+
Present this to the user. Assumptions and unknowns become research questions.
|
|
27
|
+
|
|
28
|
+
### Step 2: Frame Research Questions
|
|
29
|
+
|
|
30
|
+
Convert gaps into answerable questions. Good research questions are:
|
|
31
|
+
- **Specific** — "How do users with screen readers navigate multi-step forms?" not "Is the form accessible?"
|
|
32
|
+
- **Observable** — focused on behaviour, not opinion
|
|
33
|
+
- **Actionable** — the answer will change a design decision
|
|
34
|
+
|
|
35
|
+
Aim for 3-5 research questions. More than that means you need to narrow scope.
|
|
36
|
+
|
|
37
|
+
### Step 3: Select Methods
|
|
38
|
+
|
|
39
|
+
Match methods to questions:
|
|
40
|
+
|
|
41
|
+
| Question Type | Recommended Methods |
|
|
42
|
+
|--------------|-------------------|
|
|
43
|
+
| "What do people currently do?" | Journey mapping, diary studies, contextual inquiry |
|
|
44
|
+
| "Why do people struggle with X?" | Usability testing, think-aloud protocols |
|
|
45
|
+
| "What do people need?" | Interviews, jobs-to-be-done analysis |
|
|
46
|
+
| "Which approach works better?" | A/B testing, preference testing, card sorting |
|
|
47
|
+
| "How does our offering compare?" | Competitive analysis, heuristic evaluation |
|
|
48
|
+
| "Who are we designing for?" | Persona development, ability spectrum mapping |
|
|
49
|
+
|
|
50
|
+
### Step 4: Plan for Inclusion
|
|
51
|
+
|
|
52
|
+
Every research plan must address:
|
|
53
|
+
- **Participant diversity** — include people with disabilities, different ages, different technical literacy, different languages
|
|
54
|
+
- **Method accessibility** — ensure research methods themselves are accessible (e.g., interview formats that work for people with communication differences)
|
|
55
|
+
- **Situational contexts** — include scenarios of stress, distraction, low bandwidth, unfamiliar environments
|
|
56
|
+
|
|
57
|
+
### Step 5: Write the Research Plan
|
|
58
|
+
|
|
59
|
+
```markdown
|
|
60
|
+
# Research Plan: [Topic]
|
|
61
|
+
|
|
62
|
+
## Research Questions
|
|
63
|
+
1. [Question]
|
|
64
|
+
2. [Question]
|
|
65
|
+
3. [Question]
|
|
66
|
+
|
|
67
|
+
## Methods
|
|
68
|
+
| Method | Questions Addressed | Participants | Timeline |
|
|
69
|
+
|--------|-------------------|-------------|----------|
|
|
70
|
+
| [Method] | Q1, Q2 | [Who and how many] | [When] |
|
|
71
|
+
|
|
72
|
+
## Inclusion Considerations
|
|
73
|
+
[How participant diversity and method accessibility will be ensured]
|
|
74
|
+
|
|
75
|
+
## Expected Outputs
|
|
76
|
+
[What deliverables this research will produce — personas, journey maps, findings report]
|
|
77
|
+
|
|
78
|
+
## Decision Points
|
|
79
|
+
[Which design decisions this research will inform]
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Save to: `docs/designpowers/research/YYYY-MM-DD-<topic>-plan.md`
|
|
83
|
+
|
|
84
|
+
### Step 6: User Review
|
|
85
|
+
|
|
86
|
+
Present the plan. Confirm scope, methods, and timeline are realistic.
|
|
87
|
+
|
|
88
|
+
## Integration
|
|
89
|
+
|
|
90
|
+
- **Called by:** `design-discovery`
|
|
91
|
+
- **Calls:** `inclusive-personas` (when persona development is a research output)
|
|
92
|
+
- **Pairs with:** `design-strategy` (research informs strategy)
|
|
93
|
+
|
|
94
|
+
## What This Skill Does NOT Do
|
|
95
|
+
|
|
96
|
+
This skill plans research — it does not execute it. Execution happens with real people in the real world. The plan ensures that when research happens, it is structured, inclusive, and actionable.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: responsive-patterns
|
|
3
|
+
description: "Use when designing complex responsive layouts — breakpoint strategy, layout shifts, content reflow, responsive typography, container queries, and ensuring the experience works across the full device spectrum"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Responsive Patterns
|
|
7
|
+
|
|
8
|
+
Responsive design is not "make it fit on a phone." It is designing for every context — one-handed on a bus, zoomed to 200% on a desktop, on a tablet in sunlight.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- When `ui-composition` defines a layout that spans breakpoints
|
|
13
|
+
- When the design-critic flags responsive issues
|
|
14
|
+
- When building anything more complex than single-column
|
|
15
|
+
|
|
16
|
+
## Breakpoint Strategy
|
|
17
|
+
|
|
18
|
+
Content drives breakpoints, not devices. Do not use 768px because "that's tablet." Use the width where your content breaks.
|
|
19
|
+
|
|
20
|
+
1. Start at 320px
|
|
21
|
+
2. Widen slowly
|
|
22
|
+
3. When the layout looks wrong — that's a breakpoint
|
|
23
|
+
4. Name by behaviour, not device
|
|
24
|
+
|
|
25
|
+
```css
|
|
26
|
+
--bp-stack: 0;
|
|
27
|
+
--bp-sidebar: 640px;
|
|
28
|
+
--bp-columns: 900px;
|
|
29
|
+
--bp-wide: 1200px;
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Content Priority Shifting
|
|
33
|
+
|
|
34
|
+
At narrow widths, decide what gets:
|
|
35
|
+
- **Kept** — essential for the task
|
|
36
|
+
- **Collapsed** — behind a toggle
|
|
37
|
+
- **Deferred** — lower in scroll order
|
|
38
|
+
- **Hidden** — removed (last resort)
|
|
39
|
+
|
|
40
|
+
Document these decisions.
|
|
41
|
+
|
|
42
|
+
## Responsive Typography
|
|
43
|
+
|
|
44
|
+
```css
|
|
45
|
+
--font-size-body: clamp(1rem, 0.9rem + 0.5vw, 1.125rem);
|
|
46
|
+
--font-size-h1: clamp(1.75rem, 1.5rem + 1.25vw, 2.5rem);
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Body text minimum 16px. Line length 45-75 characters. At 200% zoom, no horizontal scroll (WCAG 1.4.10).
|
|
50
|
+
|
|
51
|
+
## Container Queries vs Media Queries
|
|
52
|
+
|
|
53
|
+
| Use case | Use |
|
|
54
|
+
|----------|-----|
|
|
55
|
+
| Page-level layout | `@media` |
|
|
56
|
+
| Component adaptation | `@container` |
|
|
57
|
+
|
|
58
|
+
## Touch Targets
|
|
59
|
+
|
|
60
|
+
44x44px minimum at mobile. 8px minimum gap between adjacent targets.
|
|
61
|
+
|
|
62
|
+
## Testing
|
|
63
|
+
|
|
64
|
+
Test at: 320px, one pixel below each breakpoint, 200% zoom at 1280px, landscape phone, and real devices.
|
|
65
|
+
|
|
66
|
+
## What You Deliver
|
|
67
|
+
|
|
68
|
+
- Breakpoint definitions with rationale
|
|
69
|
+
- Layout behaviour at each breakpoint
|
|
70
|
+
- Content priority decisions
|
|
71
|
+
- Typography scale with clamp() values
|
|
72
|
+
- Touch target verification
|
|
73
|
+
|
|
74
|
+
## Integration
|
|
75
|
+
|
|
76
|
+
- **Informed by:** `ui-composition`, `design-discovery`
|
|
77
|
+
- **Feeds into:** `design-builder`, `accessibility-reviewer`
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: synthetic-user-testing
|
|
3
|
+
description: "Use after the fix round to validate the design by walking through key tasks as each persona — simulating how Jordan (low-vision), Priya (non-native speaker), Marcus (motor impairment), or any project persona would actually experience the interface. Catches the issues that code review misses because they only surface in the act of using"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Synthetic User Testing
|
|
7
|
+
|
|
8
|
+
Synthetic user testing is the closest thing to putting the design in front of real people without leaving the pipeline. You walk through the interface as each persona, attempting real tasks, and report what works, what breaks, and what feels wrong — from their perspective, not yours.
|
|
9
|
+
|
|
10
|
+
This is not a checklist exercise. It is an act of empathy disciplined by specifics. When you test as Jordan (low-vision, uses 200% zoom and high contrast), you don't ask "is contrast sufficient?" — you ask "can Jordan find the 'continue reading' button at 200% zoom when three articles are competing for attention?"
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
|
|
14
|
+
- **After the fix round** — the design-builder has addressed findings from critic, accessibility-reviewer, and heuristic-evaluator. Now validate that the fixes work and no new issues were introduced
|
|
15
|
+
- **Before verification-before-shipping** — synthetic testing feeds directly into the persona walkthrough in the verification report
|
|
16
|
+
- **When the design-critic flags persona coverage gaps** — if the critique says "unclear whether Persona X can complete Task Y," run a synthetic test to find out
|
|
17
|
+
- **When the team is unsure about a flow** — synthetic testing turns "I think this works for screen reader users" into "here's exactly where a screen reader user would get stuck"
|
|
18
|
+
|
|
19
|
+
## Process
|
|
20
|
+
|
|
21
|
+
### Step 1: Gather Test Context
|
|
22
|
+
|
|
23
|
+
Before testing, assemble:
|
|
24
|
+
- **Personas** from `inclusive-personas` (via `design-state.md`)
|
|
25
|
+
- **Key tasks** from the design brief — the things the design must enable
|
|
26
|
+
- **The build** — test the actual implementation, not the spec
|
|
27
|
+
- **Assistive technology context** — for each persona, what tools they use and how (zoom level, screen reader, keyboard-only, switch access, etc.)
|
|
28
|
+
|
|
29
|
+
### Step 2: Define Test Scenarios
|
|
30
|
+
|
|
31
|
+
For each key task in the brief, write a scenario that a persona would actually encounter. Scenarios are not "test case 1" — they are moments:
|
|
32
|
+
|
|
33
|
+
**Format:**
|
|
34
|
+
```
|
|
35
|
+
SCENARIO: [Natural situation trigger]
|
|
36
|
+
TASK: [What the persona is trying to accomplish]
|
|
37
|
+
PERSONA: [Name] — [key ability context]
|
|
38
|
+
SUCCESS: [What "done" looks like for this persona]
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Example:**
|
|
42
|
+
```
|
|
43
|
+
SCENARIO: Jordan is on the train home and wants to finish an article
|
|
44
|
+
they started yesterday.
|
|
45
|
+
TASK: Find and continue a partially-read article.
|
|
46
|
+
PERSONA: Jordan — low vision, uses 200% zoom, high contrast mode,
|
|
47
|
+
reads on a phone with one hand.
|
|
48
|
+
SUCCESS: Jordan locates the article, picks up where they left off,
|
|
49
|
+
and the progress updates when they finish.
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Step 3: Walk Through as Each Persona
|
|
53
|
+
|
|
54
|
+
For each scenario, simulate the persona's experience step by step. This is not "would this work?" — it is "let me try to do this the way [Persona] would."
|
|
55
|
+
|
|
56
|
+
**For each step, document:**
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
STEP [N]: [What the persona does]
|
|
60
|
+
USING: [Input method — touch, keyboard, screen reader, switch, etc.]
|
|
61
|
+
SEES: [What the interface presents — at their zoom level, contrast
|
|
62
|
+
setting, screen size]
|
|
63
|
+
THINKS: [What the persona would likely think or feel]
|
|
64
|
+
RESULT: ✓ succeeds / ⚠ succeeds with difficulty / ✗ fails / ? unclear
|
|
65
|
+
|
|
66
|
+
FINDING: [If ⚠, ✗, or ? — what went wrong and why]
|
|
67
|
+
WHO IS AFFECTED: [This persona, and any others with similar needs]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Critical rules for walking through:**
|
|
71
|
+
1. **Stay in character** — if the persona uses a screen reader, evaluate what the screen reader would announce, not what the sighted experience looks like
|
|
72
|
+
2. **Use their device** — if the persona reads on a phone at 200% zoom, evaluate at that zoom on a phone viewport
|
|
73
|
+
3. **Include emotional state** — a stressed parent and a relaxed commuter approach the same interface differently. The scenario sets the emotional context
|
|
74
|
+
4. **Test error paths** — what happens if the persona makes a mistake? Can they recover? How much does recovery cost them?
|
|
75
|
+
5. **Note friction, not just failure** — a task that technically succeeds but requires 8 taps and 3 scrolls has a friction problem even if it "works"
|
|
76
|
+
|
|
77
|
+
### Step 4: Cross-Persona Analysis
|
|
78
|
+
|
|
79
|
+
After walking through all scenarios, look for patterns across personas:
|
|
80
|
+
|
|
81
|
+
**Barrier matrix:**
|
|
82
|
+
```
|
|
83
|
+
| Task | Jordan | Priya | Marcus | [Persona] |
|
|
84
|
+
| | (low vis) | (ESL) | (motor) | |
|
|
85
|
+
|-------------------|-----------|-----------|-----------|-----------|
|
|
86
|
+
| Find article | ⚠ zoom | ✓ | ✗ target | ... |
|
|
87
|
+
| Continue reading | ✓ | ⚠ jargon | ✓ | ... |
|
|
88
|
+
| Mark complete | ✗ no fbk | ✓ | ⚠ gesture | ... |
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Pattern analysis:**
|
|
92
|
+
- **Universal barriers** — issues that affect 2+ personas → likely a design problem, not an edge case
|
|
93
|
+
- **Persona-specific barriers** — issues that affect only one persona → may need targeted fix or alternative path
|
|
94
|
+
- **Friction hotspots** — steps where multiple personas struggle, even if they eventually succeed
|
|
95
|
+
- **Emotional patterns** — where do personas feel confused, frustrated, or lost?
|
|
96
|
+
|
|
97
|
+
### Step 5: Synthesise Findings
|
|
98
|
+
|
|
99
|
+
Compile findings into a structured report (see "What You Deliver" below). Every finding must:
|
|
100
|
+
- Name the specific persona affected
|
|
101
|
+
- Describe the exact step where the issue occurs
|
|
102
|
+
- Explain why it's a problem from the persona's perspective
|
|
103
|
+
- Suggest a fix
|
|
104
|
+
- Classify severity (Critical / Major / Minor)
|
|
105
|
+
|
|
106
|
+
**Severity in synthetic testing:**
|
|
107
|
+
| Severity | Definition |
|
|
108
|
+
|----------|-----------|
|
|
109
|
+
| **Critical** | Persona cannot complete the task at all |
|
|
110
|
+
| **Major** | Persona completes the task but with significant difficulty, confusion, or emotional friction |
|
|
111
|
+
| **Minor** | Persona completes the task but the experience is rougher than it should be |
|
|
112
|
+
|
|
113
|
+
### Step 6: Feed Results Forward
|
|
114
|
+
|
|
115
|
+
Synthetic testing results feed into two places:
|
|
116
|
+
1. **design-builder** — if fixes are needed, dispatch the builder with specific findings
|
|
117
|
+
2. **verification-before-shipping** — the persona walkthrough section of the verification report should reference synthetic test results, not guesswork
|
|
118
|
+
|
|
119
|
+
## What You Deliver
|
|
120
|
+
|
|
121
|
+
```markdown
|
|
122
|
+
# Synthetic User Test Results: [Project Name]
|
|
123
|
+
|
|
124
|
+
**Date:** [YYYY-MM-DD]
|
|
125
|
+
**Build tested:** [what was tested]
|
|
126
|
+
**Personas tested:** [list]
|
|
127
|
+
**Tasks tested:** [list]
|
|
128
|
+
|
|
129
|
+
## Summary
|
|
130
|
+
[2-3 sentences: overall findings — who can use this, who can't,
|
|
131
|
+
and the biggest gap]
|
|
132
|
+
|
|
133
|
+
## Scenario Results
|
|
134
|
+
|
|
135
|
+
### Scenario 1: [Scenario name]
|
|
136
|
+
**Persona:** [Name] — [context]
|
|
137
|
+
**Task:** [what they're trying to do]
|
|
138
|
+
**Result:** ✓ / ⚠ / ✗
|
|
139
|
+
|
|
140
|
+
[Step-by-step walkthrough with findings]
|
|
141
|
+
|
|
142
|
+
### Scenario 2: ...
|
|
143
|
+
|
|
144
|
+
## Barrier Matrix
|
|
145
|
+
|
|
146
|
+
| Task | [Persona 1] | [Persona 2] | [Persona 3] | ... |
|
|
147
|
+
|------|-------------|-------------|-------------|-----|
|
|
148
|
+
| ... | ✓/⚠/✗ | ✓/⚠/✗ | ✓/⚠/✗ | ... |
|
|
149
|
+
|
|
150
|
+
## Cross-Persona Patterns
|
|
151
|
+
- **Universal barriers:** [issues affecting 2+ personas]
|
|
152
|
+
- **Friction hotspots:** [steps with clustered difficulty]
|
|
153
|
+
- **Emotional patterns:** [where confusion/frustration clusters]
|
|
154
|
+
|
|
155
|
+
## Findings by Severity
|
|
156
|
+
|
|
157
|
+
### Critical
|
|
158
|
+
- [Persona] cannot [task] because [specific reason] → [Fix]
|
|
159
|
+
|
|
160
|
+
### Major
|
|
161
|
+
- [Persona] struggles with [task] at [step] because [reason] → [Fix]
|
|
162
|
+
|
|
163
|
+
### Minor
|
|
164
|
+
- [Persona] experiences friction at [step] because [reason] → [Fix]
|
|
165
|
+
|
|
166
|
+
## Comparison: Pre-Fix vs Post-Fix
|
|
167
|
+
[If this is a re-test after fixes, show what improved and what didn't]
|
|
168
|
+
|
|
169
|
+
## Recommendation
|
|
170
|
+
[Ship / Fix and re-test / Rethink flow for [persona]]
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Integration
|
|
174
|
+
|
|
175
|
+
- **Runs after:** Fix round (design-builder has addressed critic, accessibility-reviewer, and heuristic-evaluator findings)
|
|
176
|
+
- **Runs before:** `verification-before-shipping`
|
|
177
|
+
- **Informed by:** `inclusive-personas`, `design-discovery` (brief), `design-state` (all decisions)
|
|
178
|
+
- **Feeds into:** `verification-before-shipping` (persona walkthrough evidence), `design-builder` (if fixes needed), `design-debt-tracker` (deferred findings)
|
|
179
|
+
- **Complements:** `usability-testing` (which plans tests with real people — synthetic testing validates before real testing begins)
|
|
180
|
+
|
|
181
|
+
## The Difference from Usability Testing
|
|
182
|
+
|
|
183
|
+
| | Synthetic User Testing | Usability Testing |
|
|
184
|
+
|---|---|---|
|
|
185
|
+
| **Who** | AI walks through as each persona | Real people use the interface |
|
|
186
|
+
| **When** | After fix round, inside the pipeline | After shipping or during user research |
|
|
187
|
+
| **Speed** | Minutes | Days to weeks |
|
|
188
|
+
| **Catches** | Predictable barriers, flow breaks, friction | Unexpected behaviour, mental model mismatches, emotional reactions |
|
|
189
|
+
| **Misses** | True surprises — things no persona model predicts | Nothing (but expensive and slow) |
|
|
190
|
+
| **Value** | Closes the gap between build and validation without leaving the pipeline | Ground truth |
|
|
191
|
+
|
|
192
|
+
Synthetic testing does not replace real usability testing. It makes real testing more efficient by catching the obvious issues first, so real participants encounter the design at its best — and surface the surprises only humans can find.
|