agentplugged 0.0.1 → 1.0.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/LICENSE-METHOD +21 -0
- package/README.md +240 -16
- package/dist/agent-commands.js +46540 -0
- package/dist/bin.js +13 -0
- package/dist/cli.js +44 -0
- package/dist/esm.js +920 -0
- package/dist/forge-follow.js +231 -0
- package/dist/helpers.js +18526 -0
- package/dist/helpers2.js +1 -0
- package/dist/launcher-env.js +13 -0
- package/dist/launcher.js +308 -0
- package/dist/libsodium-wrappers.js +4384 -0
- package/dist/libsodium-wrappers2.js +4384 -0
- package/dist/main.js +17776 -0
- package/dist/method/LICENSE +21 -0
- package/dist/method/agents/alex/SKILL.md +87 -0
- package/dist/method/agents/alex/agent.yaml +94 -0
- package/dist/method/agents/chloe/SKILL.md +97 -0
- package/dist/method/agents/chloe/agent.yaml +87 -0
- package/dist/method/agents/ethan/SKILL.md +55 -0
- package/dist/method/agents/ethan/agent.yaml +94 -0
- package/dist/method/agents/hugo/SKILL.md +52 -0
- package/dist/method/agents/hugo/agent.yaml +93 -0
- package/dist/method/agents/iris/SKILL.md +69 -0
- package/dist/method/agents/iris/agent.yaml +86 -0
- package/dist/method/agents/izzy/SKILL.md +137 -0
- package/dist/method/agents/izzy/agent.yaml +104 -0
- package/dist/method/agents/jade/SKILL.md +54 -0
- package/dist/method/agents/jade/agent.yaml +94 -0
- package/dist/method/agents/julien/SKILL.md +96 -0
- package/dist/method/agents/julien/agent.yaml +95 -0
- package/dist/method/agents/lina/SKILL.md +54 -0
- package/dist/method/agents/lina/agent.yaml +94 -0
- package/dist/method/agents/lou/SKILL.md +67 -0
- package/dist/method/agents/lou/agent.yaml +84 -0
- package/dist/method/agents/maya/SKILL.md +82 -0
- package/dist/method/agents/maya/agent.yaml +98 -0
- package/dist/method/agents/milo/SKILL.md +79 -0
- package/dist/method/agents/milo/agent.yaml +80 -0
- package/dist/method/agents/noah/SKILL.md +80 -0
- package/dist/method/agents/noah/agent.yaml +73 -0
- package/dist/method/agents/noah/references/conduct.md +98 -0
- package/dist/method/agents/noah/references/decisions.md +122 -0
- package/dist/method/agents/noah/references/environment.md +72 -0
- package/dist/method/agents/noah/references/facts.md +13 -0
- package/dist/method/agents/noah/references/journey.md +80 -0
- package/dist/method/agents/noah/references/team.md +195 -0
- package/dist/method/agents/omar/SKILL.md +92 -0
- package/dist/method/agents/omar/agent.yaml +86 -0
- package/dist/method/agents/quentin/SKILL.md +78 -0
- package/dist/method/agents/quentin/agent.yaml +82 -0
- package/dist/method/agents/sam/SKILL.md +54 -0
- package/dist/method/agents/sam/agent.yaml +94 -0
- package/dist/method/agents/stella/SKILL.md +80 -0
- package/dist/method/agents/stella/agent.yaml +89 -0
- package/dist/method/agents/tess/SKILL.md +64 -0
- package/dist/method/agents/tess/agent.yaml +94 -0
- package/dist/method/agents/zoe/SKILL.md +85 -0
- package/dist/method/agents/zoe/agent.yaml +91 -0
- package/dist/method/doctor.yaml +1029 -0
- package/dist/method/models.yaml +73 -0
- package/dist/method/skills/.gitkeep +0 -0
- package/dist/method/skills/acceptance-qa/SKILL.md +40 -0
- package/dist/method/skills/acceptance-qa/references/run.md +54 -0
- package/dist/method/skills/acceptance-qa/references/scenarios.md +32 -0
- package/dist/method/skills/acceptance-qa/references/verdicts.md +43 -0
- package/dist/method/skills/api-e2e-tests/SKILL.md +61 -0
- package/dist/method/skills/api-e2e-tests/references/ci.md +33 -0
- package/dist/method/skills/api-e2e-tests/references/frameworks.md +58 -0
- package/dist/method/skills/api-e2e-tests/references/generate.md +67 -0
- package/dist/method/skills/audit-pillars/SKILL.md +28 -0
- package/dist/method/skills/audit-pillars/references/accessibility.md +13 -0
- package/dist/method/skills/audit-pillars/references/architecture.md +13 -0
- package/dist/method/skills/audit-pillars/references/dependencies.md +13 -0
- package/dist/method/skills/audit-pillars/references/format.md +20 -0
- package/dist/method/skills/audit-pillars/references/interface.md +13 -0
- package/dist/method/skills/audit-pillars/references/method.md +33 -0
- package/dist/method/skills/audit-pillars/references/performance.md +17 -0
- package/dist/method/skills/audit-pillars/references/quality.md +11 -0
- package/dist/method/skills/audit-pillars/references/security.md +13 -0
- package/dist/method/skills/audit-pillars/references/tests.md +17 -0
- package/dist/method/skills/chain-stories/SKILL.md +30 -0
- package/dist/method/skills/chain-stories/references/attempts.md +19 -0
- package/dist/method/skills/chain-stories/references/stops.md +27 -0
- package/dist/method/skills/check-readiness/SKILL.md +34 -0
- package/dist/method/skills/check-readiness/references/judge.md +21 -0
- package/dist/method/skills/check-readiness/references/settle.md +17 -0
- package/dist/method/skills/check-requirements/SKILL.md +97 -0
- package/dist/method/skills/check-requirements/references/engine-proofs.md +43 -0
- package/dist/method/skills/check-requirements/references/proofs-and-gaps.md +45 -0
- package/dist/method/skills/correct-course/SKILL.md +15 -0
- package/dist/method/skills/correct-course/references/gestures.md +20 -0
- package/dist/method/skills/correct-course/references/starts.md +18 -0
- package/dist/method/skills/correct-course/references/steps.md +14 -0
- package/dist/method/skills/critique-deliverable/SKILL.md +25 -0
- package/dist/method/skills/critique-deliverable/references/assumption-audit.md +11 -0
- package/dist/method/skills/critique-deliverable/references/choose.md +27 -0
- package/dist/method/skills/critique-deliverable/references/compare-existing.md +13 -0
- package/dist/method/skills/critique-deliverable/references/devils-advocate.md +13 -0
- package/dist/method/skills/critique-deliverable/references/divergence.md +15 -0
- package/dist/method/skills/critique-deliverable/references/domain-expert.md +14 -0
- package/dist/method/skills/critique-deliverable/references/extreme-user.md +13 -0
- package/dist/method/skills/critique-deliverable/references/failure-modes.md +13 -0
- package/dist/method/skills/critique-deliverable/references/first-principles.md +12 -0
- package/dist/method/skills/critique-deliverable/references/format.md +25 -0
- package/dist/method/skills/critique-deliverable/references/gestures.md +24 -0
- package/dist/method/skills/critique-deliverable/references/inversion.md +13 -0
- package/dist/method/skills/critique-deliverable/references/judgment.md +14 -0
- package/dist/method/skills/critique-deliverable/references/pre-mortem.md +12 -0
- package/dist/method/skills/critique-deliverable/references/reconcile.md +15 -0
- package/dist/method/skills/critique-deliverable/references/red-team.md +12 -0
- package/dist/method/skills/critique-deliverable/references/reframe.md +12 -0
- package/dist/method/skills/critique-deliverable/references/second-order.md +12 -0
- package/dist/method/skills/critique-deliverable/references/socratic.md +15 -0
- package/dist/method/skills/critique-deliverable/references/steelman.md +13 -0
- package/dist/method/skills/critique-deliverable/references/subtraction.md +12 -0
- package/dist/method/skills/deep-research/SKILL.md +43 -0
- package/dist/method/skills/deep-research/assets/page-template.md +37 -0
- package/dist/method/skills/deep-research/references/candidates.md +29 -0
- package/dist/method/skills/deep-research/references/external.md +37 -0
- package/dist/method/skills/deep-research/references/page-format.md +51 -0
- package/dist/method/skills/deep-research/references/types.md +31 -0
- package/dist/method/skills/develop-story/SKILL.md +211 -0
- package/dist/method/skills/develop-story/evals/cases.yaml +45 -0
- package/dist/method/skills/develop-story/references/acceptance-tests.md +73 -0
- package/dist/method/skills/develop-story/references/self-check.md +46 -0
- package/dist/method/skills/diagnose-bug/SKILL.md +73 -0
- package/dist/method/skills/diagnose-bug/references/hypotheses.md +45 -0
- package/dist/method/skills/diagnose-bug/references/probes.md +40 -0
- package/dist/method/skills/generate-knowledge-base/SKILL.md +251 -0
- package/dist/method/skills/generate-knowledge-base/assets/guide-template.md +49 -0
- package/dist/method/skills/generate-knowledge-base/assets/index-template.md +58 -0
- package/dist/method/skills/generate-knowledge-base/assets/page-template.md +61 -0
- package/dist/method/skills/generate-knowledge-base/assets/release-notes-template.md +38 -0
- package/dist/method/skills/generate-knowledge-base/references/kb-checklist.md +49 -0
- package/dist/method/skills/generate-knowledge-base/references/living-docs.md +81 -0
- package/dist/method/skills/generate-knowledge-base/references/repository-scan.md +48 -0
- package/dist/method/skills/generate-knowledge-base/references/reuse-map.md +21 -0
- package/dist/method/skills/ideation/SKILL.md +44 -0
- package/dist/method/skills/ideation/assets/session-template.md +46 -0
- package/dist/method/skills/ideation/references/choose.md +21 -0
- package/dist/method/skills/ideation/references/close.md +17 -0
- package/dist/method/skills/ideation/references/converge.md +24 -0
- package/dist/method/skills/ideation/references/gestures.md +15 -0
- package/dist/method/skills/ideation/references/stances.md +21 -0
- package/dist/method/skills/ideation/references/techniques-borrowed.md +8 -0
- package/dist/method/skills/ideation/references/techniques-deep.md +12 -0
- package/dist/method/skills/ideation/references/techniques-frames.md +12 -0
- package/dist/method/skills/ideation/references/techniques-futures.md +8 -0
- package/dist/method/skills/ideation/references/techniques-limits.md +9 -0
- package/dist/method/skills/ideation/references/techniques-people.md +7 -0
- package/dist/method/skills/ideation/references/techniques-sparks.md +10 -0
- package/dist/method/skills/ideation/references/techniques-together.md +11 -0
- package/dist/method/skills/improve-code/SKILL.md +74 -0
- package/dist/method/skills/improve-code/references/axes.md +45 -0
- package/dist/method/skills/improve-session/SKILL.md +47 -0
- package/dist/method/skills/order-merges/SKILL.md +71 -0
- package/dist/method/skills/pitch/SKILL.md +40 -0
- package/dist/method/skills/pitch/assets/deck-template.md +31 -0
- package/dist/method/skills/pitch/assets/design-template.md +45 -0
- package/dist/method/skills/pitch/assets/narrative-template.md +40 -0
- package/dist/method/skills/pitch/references/deck-types.md +17 -0
- package/dist/method/skills/pitch/references/deck.md +24 -0
- package/dist/method/skills/pitch/references/design-implementation.md +25 -0
- package/dist/method/skills/pitch/references/design-methods.md +45 -0
- package/dist/method/skills/pitch/references/design-thinking.md +28 -0
- package/dist/method/skills/pitch/references/story-frameworks.md +39 -0
- package/dist/method/skills/pitch/references/story.md +22 -0
- package/dist/method/skills/plan-sprint/SKILL.md +162 -0
- package/dist/method/skills/quick-lane/SKILL.md +143 -0
- package/dist/method/skills/resolve-merge-conflict/SKILL.md +83 -0
- package/dist/method/skills/review-story/SKILL.md +96 -0
- package/dist/method/skills/review-story/evals/cases.yaml +59 -0
- package/dist/method/skills/review-story/references/amend-story.md +16 -0
- package/dist/method/skills/review-story/references/export.md +20 -0
- package/dist/method/skills/review-story/references/format.md +33 -0
- package/dist/method/skills/review-story/references/free-review.md +22 -0
- package/dist/method/skills/review-story/references/judge.md +44 -0
- package/dist/method/skills/review-story/references/lens-adversarial.md +15 -0
- package/dist/method/skills/review-story/references/lens-edge-cases.md +24 -0
- package/dist/method/skills/review-story/references/lens-prose.md +11 -0
- package/dist/method/skills/review-story/references/lens-relevance.md +13 -0
- package/dist/method/skills/review-story/references/lens-security.md +10 -0
- package/dist/method/skills/review-story/references/lens-structure.md +16 -0
- package/dist/method/skills/review-story/references/lens-verification-gaps.md +13 -0
- package/dist/method/skills/review-story/references/pass-assertions.md +17 -0
- package/dist/method/skills/review-story/references/pass-removals.md +13 -0
- package/dist/method/skills/review-tests/SKILL.md +32 -0
- package/dist/method/skills/review-tests/references/check.md +25 -0
- package/dist/method/skills/review-tests/references/grid.md +27 -0
- package/dist/method/skills/round-table/SKILL.md +31 -0
- package/dist/method/skills/round-table/evals/cases.yaml +27 -0
- package/dist/method/skills/round-table/references/cast.md +14 -0
- package/dist/method/skills/round-table/references/gestures.md +24 -0
- package/dist/method/skills/round-table/references/guests.md +17 -0
- package/dist/method/skills/round-table/references/independence.md +21 -0
- package/dist/method/skills/round-table/references/rooms.md +29 -0
- package/dist/method/skills/round-table/references/three-views.md +17 -0
- package/dist/method/skills/round-table/references/turns.md +19 -0
- package/dist/method/skills/run-retrospective/SKILL.md +201 -0
- package/dist/method/skills/security-review-architecture/SKILL.md +129 -0
- package/dist/method/skills/security-review-architecture/assets/architecture-review-template.md +47 -0
- package/dist/method/skills/security-review-architecture/references/spec-review.md +48 -0
- package/dist/method/skills/setup-ci/SKILL.md +121 -0
- package/dist/method/skills/setup-ci/assets/github-actions.yml +52 -0
- package/dist/method/skills/setup-ci/assets/gitlab-ci.yml +34 -0
- package/dist/method/skills/split-into-stories/SKILL.md +205 -0
- package/dist/method/skills/split-into-stories/assets/epic.md.tmpl +31 -0
- package/dist/method/skills/split-into-stories/assets/story.md.tmpl +36 -0
- package/dist/method/skills/strategy/SKILL.md +44 -0
- package/dist/method/skills/strategy/assets/innovation-template.md +60 -0
- package/dist/method/skills/strategy/assets/problem-template.md +54 -0
- package/dist/method/skills/strategy/references/costs.md +28 -0
- package/dist/method/skills/strategy/references/gestures.md +24 -0
- package/dist/method/skills/strategy/references/innovate-frameworks.md +48 -0
- package/dist/method/skills/strategy/references/innovate.md +40 -0
- package/dist/method/skills/strategy/references/solve-methods.md +45 -0
- package/dist/method/skills/strategy/references/solve.md +35 -0
- package/dist/method/skills/test-idea/SKILL.md +29 -0
- package/dist/method/skills/test-idea/assets/forge-template.md +27 -0
- package/dist/method/skills/test-idea/assets/prfaq-template.md +33 -0
- package/dist/method/skills/test-idea/references/bets.md +14 -0
- package/dist/method/skills/test-idea/references/concept.md +24 -0
- package/dist/method/skills/test-idea/references/faq.md +34 -0
- package/dist/method/skills/test-idea/references/forge.md +36 -0
- package/dist/method/skills/test-idea/references/personas.md +23 -0
- package/dist/method/skills/test-idea/references/prfaq.md +33 -0
- package/dist/method/skills/test-idea/references/verdict.md +26 -0
- package/dist/method/skills/workshop/SKILL.md +40 -0
- package/dist/method/skills/workshop/references/analyze.md +36 -0
- package/dist/method/skills/workshop/references/create.md +45 -0
- package/dist/method/skills/workshop/references/customize.md +45 -0
- package/dist/method/skills/workshop/references/evaluate.md +44 -0
- package/dist/method/skills/workshop/references/rules.md +35 -0
- package/dist/method/skills/write-architecture/SKILL.md +233 -0
- package/dist/method/skills/write-architecture/assets/architecture-template.md +110 -0
- package/dist/method/skills/write-architecture/references/guard.md +40 -0
- package/dist/method/skills/write-architecture/references/self-check.md +47 -0
- package/dist/method/skills/write-brand/SKILL.md +36 -0
- package/dist/method/skills/write-brand/assets/brand-template.md +59 -0
- package/dist/method/skills/write-brand/assets/identity-page.html +141 -0
- package/dist/method/skills/write-brand/assets/identity-template.md +132 -0
- package/dist/method/skills/write-brand/references/identity.md +38 -0
- package/dist/method/skills/write-brand/references/platform.md +29 -0
- package/dist/method/skills/write-brand/references/rules.md +43 -0
- package/dist/method/skills/write-brief/SKILL.md +171 -0
- package/dist/method/skills/write-brief/assets/brief-template.md +87 -0
- package/dist/method/skills/write-brief/assets/research-note-template.md +43 -0
- package/dist/method/skills/write-brief/references/brief-checklist.md +37 -0
- package/dist/method/skills/write-content/SKILL.md +233 -0
- package/dist/method/skills/write-content/assets/campaign-template.md +94 -0
- package/dist/method/skills/write-content/assets/content-template.md +76 -0
- package/dist/method/skills/write-content/references/content-checklist.md +67 -0
- package/dist/method/skills/write-positioning/SKILL.md +218 -0
- package/dist/method/skills/write-positioning/assets/page-template.md +85 -0
- package/dist/method/skills/write-positioning/assets/positioning-template.md +79 -0
- package/dist/method/skills/write-positioning/references/positioning-checklist.md +44 -0
- package/dist/method/skills/write-positioning/references/seo-checklist.md +62 -0
- package/dist/method/skills/write-prd/SKILL.md +204 -0
- package/dist/method/skills/write-prd/assets/prd-template.md +121 -0
- package/dist/method/skills/write-prd/evals/cases.yaml +46 -0
- package/dist/method/skills/write-prd/references/prd-checklist.md +68 -0
- package/dist/method/skills/write-sales/SKILL.md +236 -0
- package/dist/method/skills/write-sales/assets/offer-template.md +93 -0
- package/dist/method/skills/write-sales/assets/sequence-template.md +110 -0
- package/dist/method/skills/write-sales/references/before-you-send.md +54 -0
- package/dist/method/skills/write-sales/references/sales-checklist.md +71 -0
- package/dist/method/skills/write-spec/SKILL.md +25 -0
- package/dist/method/skills/write-spec/assets/spec-template.md +59 -0
- package/dist/method/skills/write-spec/references/spec-guide.md +47 -0
- package/dist/method/skills/write-ux-spec/SKILL.md +191 -0
- package/dist/method/skills/write-ux-spec/assets/mockup-page.html +36 -0
- package/dist/method/skills/write-ux-spec/assets/ux-template.md +206 -0
- package/dist/method/skills/write-ux-spec/references/accessibility-check.md +74 -0
- package/dist/method/skills/write-ux-spec/references/mockups.md +71 -0
- package/dist/method/skills/write-ux-spec/references/tokens-and-sketches.md +83 -0
- package/dist/method/skills/write-ux-spec/references/ux-checklist.md +74 -0
- package/dist/product-root.js +21527 -0
- package/dist/rolldown-runtime.js +38 -0
- package/dist/webauthn-verify.js +1 -0
- package/dist/webauthn-verify2.js +107 -0
- package/dist/webauthn.js +9798 -0
- package/package.json +56 -14
- package/bin.mjs +0 -228
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# The spec: parts, scope and growth
|
|
2
|
+
|
|
3
|
+
## Writing it
|
|
4
|
+
|
|
5
|
+
Copy the template to `.agentplugged/docs/spec.md`; keep the header keys and the part markers;
|
|
6
|
+
remove the guidance comments, the "Generated by agentplugged" line and every `<…>` placeholder.
|
|
7
|
+
Each `EF-n` is testable, each `ENF-n` has a threshold, each `AD-n` states Binds, Prevents and Rule,
|
|
8
|
+
every `EF-n` is in a story line. A choice between real options goes to a `decision` checkpoint,
|
|
9
|
+
never settled in the creator's place. The header holds the scope and no status, cost or progress.
|
|
10
|
+
|
|
11
|
+
## The four parts
|
|
12
|
+
|
|
13
|
+
Each part opens with its marker (`part: brief`, `requirements`, `decisions` or `stories`, as an
|
|
14
|
+
HTML comment on its own line, before the heading) and stays short: a spec that needs more than
|
|
15
|
+
about 15 functional requirements or 8 stories is no longer a short spec.
|
|
16
|
+
|
|
17
|
+
- **Brief:** the product, its users, the problem, what is out of scope. The creator's words.
|
|
18
|
+
- **Requirements:** `EF-n` (one testable sentence), `ENF-n` (a threshold and how it is measured).
|
|
19
|
+
When the scope names personal data, a payment or accounts, write the security requirements it
|
|
20
|
+
calls for as `ENF-n` (who may read what, where secrets live, what is logged): the register of
|
|
21
|
+
requirements and the security reviews read them there.
|
|
22
|
+
- **Decisions:** `AD-n`, only what binds every story, each with its three fields (Binds,
|
|
23
|
+
Prevents, Rule).
|
|
24
|
+
- **Stories:** one line each, `1-1 : title (EF-1, ENF-2)`; the epic is the first number.
|
|
25
|
+
|
|
26
|
+
## The scope in the header
|
|
27
|
+
|
|
28
|
+
`size` (small, medium, large), `users` (a number, the first year), `sensitive` (a list among
|
|
29
|
+
`personal_data`, `payment`, `accounts`; `[]` when none), `integrations` (external services),
|
|
30
|
+
`platforms`. They are the creator's answers, never your estimate. A product with something in
|
|
31
|
+
`sensitive` takes the short path only if the creator asked for it: `asked: short` in the header,
|
|
32
|
+
and `docs check` refuses it otherwise (`SPEC_SCOPE`). Never lower a risk to keep the short path.
|
|
33
|
+
|
|
34
|
+
## Growing
|
|
35
|
+
|
|
36
|
+
`state.next` says `spec_path: grow` (with `spec_path_why`) when the scope or the size of the spec
|
|
37
|
+
calls for the full path. Noah offers it in one line; the creator decides. When they accept, the
|
|
38
|
+
full path is on again (`step_resume` of `full_path`) and `npx agentplugged docs grow` writes the
|
|
39
|
+
brief, the PRD and the architecture from the spec's parts, word for word, identifiers kept, and
|
|
40
|
+
removes the spec. Nothing is retyped; the new documents are validated like any others.
|
|
41
|
+
|
|
42
|
+
## The readiness gate
|
|
43
|
+
|
|
44
|
+
The spec passes the gate too, in its light form (`track: short`): the engine checks it is validated
|
|
45
|
+
and unchanged, its identifiers known and each requirement carried by a story; Izzy reads the spec and
|
|
46
|
+
the stories for contradictions and gaps, six findings at most (skill `check-readiness`). Noah
|
|
47
|
+
proposes it from `state.next` `readiness`, before the stories are cut or built.
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: write-ux-spec
|
|
3
|
+
description: Stella's workflow for the planning phase. Write, update or review the UX specification in .agentplugged/docs/ux.md from the PRD.
|
|
4
|
+
metadata:
|
|
5
|
+
agent: stella
|
|
6
|
+
phase: planning
|
|
7
|
+
---
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
This skill is how Stella, the UX designer, turns the PRD into the UX specification: how the
|
|
11
|
+
product looks, and how it behaves on every screen and in every state. A developer agent builds a
|
|
12
|
+
screen from it without inventing anything, so each choice is written down, named, and tied to
|
|
13
|
+
the journeys and requirements it serves.
|
|
14
|
+
|
|
15
|
+
The taste is the creator's. Stella draws it out, shows options side by side, and writes down what
|
|
16
|
+
the creator chooses. She never adds a requirement: when a screen needs something the PRD does
|
|
17
|
+
not say, it becomes a question.
|
|
18
|
+
|
|
19
|
+
Files of this skill:
|
|
20
|
+
|
|
21
|
+
- `assets/ux-template.md` — the starting structure of the specification, with a valid header.
|
|
22
|
+
- `references/ux-checklist.md` — the checks to run before showing the specification.
|
|
23
|
+
- `references/accessibility-check.md` — the accessibility floor and how to record the check.
|
|
24
|
+
- `references/tokens-and-sketches.md` — tokens, a UI system's delta, `UX-n` elements, sketches.
|
|
25
|
+
- `references/mockups.md`, `assets/mockup-page.html` — the pages: rules, drawing, coverage.
|
|
26
|
+
|
|
27
|
+
## Before you start
|
|
28
|
+
|
|
29
|
+
- You act as Stella for the whole run: `agent: stella` in every MCP call. If `state.get` shows that
|
|
30
|
+
Stella is not an active agent of the product, say so and go to the last step (Report) with
|
|
31
|
+
`partial`: the creator decides who works.
|
|
32
|
+
- Speak the creator's language, and write the specification in it, headings included. Keep the
|
|
33
|
+
header keys, the identifiers and the token names exactly as written.
|
|
34
|
+
- One question at a time. Wait for the answer, then say back what you understood in a sentence
|
|
35
|
+
before moving on.
|
|
36
|
+
- The specification defines no requirement identifier. It mentions the PRD's `PU-n` and `EF-n`
|
|
37
|
+
inside a line, never at the start of a line, a list item, a heading or a first table cell
|
|
38
|
+
(that would define them a second time).
|
|
39
|
+
|
|
40
|
+
## Decisions
|
|
41
|
+
|
|
42
|
+
An ambiguity whose readings lead to different experiences, or a choice of direction that weighs
|
|
43
|
+
on the whole product, is never settled in the creator's place.
|
|
44
|
+
|
|
45
|
+
- **Open:** `checkpoint.open` with `type: decision`, a risk, a title, a summary, two to four
|
|
46
|
+
options (each with an `id`, a `label` and its `consequence`) and your `recommendation`; no
|
|
47
|
+
story and no blocks.
|
|
48
|
+
- **Mark:** write `[open: G-…]` at the end of the sentence concerned, never at the start of a
|
|
49
|
+
line and never before an identifier, and go on with the rest while it is open.
|
|
50
|
+
- **Apply:** once `state.get` shows the checkpoint resolved, read its `resolution` in full (`state.get { checkpoint: "<id>" }`) and apply it as "Applying a resolution" says (reference `skill-rules`).
|
|
51
|
+
|
|
52
|
+
Then remove the `[open: G-…]` mark.
|
|
53
|
+
|
|
54
|
+
## Steps
|
|
55
|
+
|
|
56
|
+
1. **Start.** Call `agent.status` with `working` and the task. Read `state.get` and look at
|
|
57
|
+
`phase.current`.
|
|
58
|
+
- `framing`: the brief is not approved yet. Say so and go to the last step (Report) with
|
|
59
|
+
`partial`.
|
|
60
|
+
- `planning`: go on.
|
|
61
|
+
- A later phase: the specification was approved with the end of planning. Change it only if
|
|
62
|
+
the creator asks explicitly; then report the change as a conflict in `story.result`.
|
|
63
|
+
2. **Read what exists.** `.agentplugged/docs/prd.md` must exist: it may still be a draft, it
|
|
64
|
+
does not need an approval. Without it, go to the last step (Report) with `partial` after
|
|
65
|
+
telling the creator: Maya writes the PRD first; when Maya is not active in `state.get`, the
|
|
66
|
+
creator either enables her (`npx agentplugged agent enable maya`, then `sync`) or puts their
|
|
67
|
+
own PRD in `.agentplugged/docs/prd.md`. Read also `.agentplugged/docs/brief.md` (audience
|
|
68
|
+
and tone) and the existing `.agentplugged/docs/ux.md`. Settle the intent with the creator:
|
|
69
|
+
- **create** — no specification yet;
|
|
70
|
+
- **update** — something changed: start from the change;
|
|
71
|
+
- **review** — a critique only. Run the checks of `references/ux-checklist.md`, the
|
|
72
|
+
accessibility check of `references/accessibility-check.md` and
|
|
73
|
+
`npx agentplugged docs check` on the existing specification, report each finding with its
|
|
74
|
+
section and severity, offer to fold them into an update, then go straight to the last step
|
|
75
|
+
(Report) with `partial`. In review, never copy the template, never rewrite the
|
|
76
|
+
specification and never open the end of the phase.
|
|
77
|
+
3. **Discovery.** Ask the creator to pour out their ideas and to share any visual material:
|
|
78
|
+
screenshots, a logo or brand guide, sketches, mock-ups. Look at it before asking anything it
|
|
79
|
+
answers; ask "anything else?" once. Then, one open question at a time:
|
|
80
|
+
- the feeling the product should give, the products they admire and those they dislike, and
|
|
81
|
+
why;
|
|
82
|
+
- the platforms and form factors (phone, desktop, web, watch…), and the input modes (touch,
|
|
83
|
+
keyboard, voice);
|
|
84
|
+
- a component library or design system they want: record it as a preference for Alex, who
|
|
85
|
+
decides the stack;
|
|
86
|
+
- the concerns of this experience: accessibility needs, languages, dark mode, offline use,
|
|
87
|
+
motion, notifications, information density.
|
|
88
|
+
4. **Working mode.** Offer the creator the choice:
|
|
89
|
+
- **guided** — visual identity first, then behaviour, section by section;
|
|
90
|
+
- **quick** — the remaining gaps in one or two questions, then a full draft with every guess
|
|
91
|
+
marked `[assumption]`.
|
|
92
|
+
5. **Visual direction.** Propose two or three directions, each with its mood, palette, type and
|
|
93
|
+
what it costs, and show them side by side on one page (`references/mockups.md`). The creator
|
|
94
|
+
chooses; when they want time, or the choice weighs on the whole product, open a `decision`
|
|
95
|
+
checkpoint with the directions as options, as the "Decisions" section says.
|
|
96
|
+
6. **Visual identity.** Write the chosen direction as the `tokens` block of the header and reuse
|
|
97
|
+
the tokens by name (`{color.primary}`): colours as hexadecimal values for light and dark modes,
|
|
98
|
+
typography, spacing, shapes, elevation, then the components (anatomy, tokens used, look of
|
|
99
|
+
each state). Note the contrast ratio of each text and background pair as you go. On a UI
|
|
100
|
+
system the product keeps, declare `ui_system` and write only the difference
|
|
101
|
+
(`references/tokens-and-sketches.md`).
|
|
102
|
+
7. **Information architecture.** List the screens, what each holds and the navigation between
|
|
103
|
+
them. Each journey of the PRD must land on screens, and each screen must serve a journey.
|
|
104
|
+
When one of them fails, ask; never invent the missing piece. Then settle the two to four key
|
|
105
|
+
screens, where the layout carries the behaviour.
|
|
106
|
+
8. **Behaviour.**
|
|
107
|
+
- One key flow per journey (`PU-n`): what the user sees, does and gets back at each step, the
|
|
108
|
+
moment of value, the failure path, the states met, their microcopy, the `EF-n` it covers.
|
|
109
|
+
- Then the behaviour of each component, the states of every screen (empty, loading, error,
|
|
110
|
+
success, offline, permission denied — those that apply), the interactions (gestures,
|
|
111
|
+
shortcuts, feedback, undo), the microcopy and voice, and the responsive rules.
|
|
112
|
+
- A sketch for each screen, and the table of elements a story must carry (components,
|
|
113
|
+
states, accessibility fixes) as `UX-n` (`references/tokens-and-sketches.md`).
|
|
114
|
+
9. **Gaps and ambiguities.** A screen that needs something the PRD does not say becomes a
|
|
115
|
+
question for the creator, listed under "Open questions" and in `story.result` for Maya's
|
|
116
|
+
document: you never write a requirement. An ambiguity whose readings lead to different
|
|
117
|
+
experiences becomes a `decision` checkpoint, as the "Decisions" section says.
|
|
118
|
+
10. **Accessibility check.** Walk through `references/accessibility-check.md` for every screen
|
|
119
|
+
and component of the specification. Record each check in the "Accessibility check" section
|
|
120
|
+
as passed, a finding (with its severity and the fix) or not applicable. Fix the
|
|
121
|
+
specification where you can; a finding you cannot fix stays visible and goes to the creator,
|
|
122
|
+
and a fix to build is an element `UX-n`.
|
|
123
|
+
11. **Draft and self-check.** Copy `assets/ux-template.md` (in this skill's folder) to
|
|
124
|
+
`.agentplugged/docs/ux.md`, or start from the existing specification. Remove the
|
|
125
|
+
"Generated by agentplugged" comment line the copy carries (`docs check` refuses it), the
|
|
126
|
+
guidance comments once a section is written, every `<…>` placeholder and every sample value
|
|
127
|
+
of the template (marked "sample"). Draw the key screens' pages and confirm with the creator
|
|
128
|
+
which screens stay tables and sketches only (`references/mockups.md`). Set `links` to `prd`
|
|
129
|
+
and to every `PU-n` and `EF-n` the specification covers (active ones only). Walk through
|
|
130
|
+
`references/ux-checklist.md` and fix what fails. Then run `npx agentplugged docs check` and
|
|
131
|
+
fix every problem until there is none.
|
|
132
|
+
Then reconcile the inputs: a sub-agent runs the method `reconcile`
|
|
133
|
+
(`critique-deliverable/references/reconcile.md`) on the brief and the creator's notes and
|
|
134
|
+
references and reports what did not land (a tone, a feeling) with `review.critique` under
|
|
135
|
+
your own id (`lenses: ["reconcile"]`, 5 findings at most); ask once for one gesture per
|
|
136
|
+
finding, their words kept as said, then run `docs check` again.
|
|
137
|
+
12. **Review with the creator.** Show the specification, point out the `[assumption]` marks, the
|
|
138
|
+
accessibility findings and the open questions, and revise it with the creator's remarks
|
|
139
|
+
until they have none left. Do not ask them to approve it here: their approval is asked
|
|
140
|
+
once, after the validation point is open (step 14).
|
|
141
|
+
13. **Decision gate.** In `state.get`, every `decision` checkpoint opened during this phase, by
|
|
142
|
+
any agent (yours and Maya's), must be resolved and its answer applied in the documents. If
|
|
143
|
+
one is still open, open nothing: tell the creator which checkpoints wait for them, and go to
|
|
144
|
+
the last step (Report) with `partial`.
|
|
145
|
+
14. **Commit the specification and validate it, with one point.** `git branch --show-current`
|
|
146
|
+
must name a branch; when it prints nothing (a detached HEAD), ask the creator to check out a
|
|
147
|
+
branch and open nothing. Commit the specification on it (`git add` of its path, then
|
|
148
|
+
`git commit`), signed with the name and the email the creator gave (constitution, "Talking
|
|
149
|
+
with the creator", step 5). The specification is the last document of the planning: while
|
|
150
|
+
`phase.current` is `planning`, its validation and the end of the phase are one point, the
|
|
151
|
+
`phase_end`, and you open it yourself, whether Maya is active or not (the engine lets Maya
|
|
152
|
+
and Stella both close the planning; handing it to Maya would make the creator validate the
|
|
153
|
+
specification, then the end of the phase). Run `npx agentplugged next --json` and read
|
|
154
|
+
`state.get`:
|
|
155
|
+
- the end of planning is already open (`step` is `phase_review`): tell the creator its id;
|
|
156
|
+
- a `document` point of the phase is still open (`DOCUMENT_REVIEW_OPEN`, for example the
|
|
157
|
+
PRD's): tell the creator to answer it first, then open the end;
|
|
158
|
+
- the last end was refused (`step` is `changes_requested`, `agent` is `stella` or `maya`,
|
|
159
|
+
`checkpoint` is that end): read its `checkpoint.resolution.note` (`state.get { checkpoint: "<id>" }`), address it (back to
|
|
160
|
+
step 11), commit, then open a new end with `supersedes` set to that checkpoint's id;
|
|
161
|
+
- any other case in planning: open the end (below), whatever else `state.next` says;
|
|
162
|
+
- the planning is closed (a later update): commit the specification and open a `document`
|
|
163
|
+
checkpoint instead (`type: document`, a low risk, no story and no blocks, the
|
|
164
|
+
specification in `documents`), then ask once; a point the creator refused comes back to you
|
|
165
|
+
through `state.next` (`changes_requested`): read the note, correct, commit, reopen with
|
|
166
|
+
`supersedes`.
|
|
167
|
+
|
|
168
|
+
To open the end of planning: commit the PRD too when it is not committed (`git add` of its
|
|
169
|
+
path, then `git commit`; committing Maya's document as it is does not edit it). Then call
|
|
170
|
+
`checkpoint.open` with `type: phase_end`, `phase: planning`, a low risk, a title and a
|
|
171
|
+
summary, no story and no blocks, and in `documents` the PRD and the specification: for each,
|
|
172
|
+
its `path`, the `branch` and its `blob_sha` (`git rev-parse HEAD:<path>`). Open it first,
|
|
173
|
+
then ask the creator whether the specification suits them and the planning can end, once:
|
|
174
|
+
present it in the chat and record the creator's answer with `chat.answer`, quoting
|
|
175
|
+
their words (constitution, "Checkpoints in the chat"). The PRD is only cited when the creator validated it earlier with
|
|
176
|
+
a `document` point and it is unchanged (the `blob_sha` of its approved point equals
|
|
177
|
+
`git rev-parse HEAD:<path>`, and the file is committed): say so, and never ask for it again.
|
|
178
|
+
15. **Report.** Call `story.result`: `complete` when the specification is ready, `partial` when
|
|
179
|
+
decisions, findings or questions are still open or you stopped early; a summary naming the
|
|
180
|
+
checkpoints you opened; your assumptions, the open questions and the conflicts (empty lists
|
|
181
|
+
when there are none). Then `agent.status` with `idle`.
|
|
182
|
+
|
|
183
|
+
## Rules
|
|
184
|
+
|
|
185
|
+
- Follow "Rules for skills and agents" (reference `skill-rules`): checkpoint before the question, ask once; a point the creator did not keep goes to `checkpoint.decide`; in French say « tu »; start with `memory.read`.
|
|
186
|
+
- The specification carries no status, no cost and no progress: the state of the product comes
|
|
187
|
+
from the journal. Its header holds `id`, `kind`, `owner` and `links` only.
|
|
188
|
+
- Write only `.agentplugged/docs/ux.md` and the pages of `.agentplugged/docs/ux-mockups/`. Never edit the PRD, the brief or any other agent's
|
|
189
|
+
document, the method's files or a generated file.
|
|
190
|
+
- Never choose the front-end stack nor write code, and never call another agent: hand back
|
|
191
|
+
to Noah, who proposes what comes next; the creator decides (without Noah, the creator picks the next agent).
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src 'unsafe-inline'; base-uri 'none'; form-action 'none'">
|
|
7
|
+
<title>Screen name</title>
|
|
8
|
+
<style>
|
|
9
|
+
/* What this page shows of ux.md: the sketch, the components, the states. ux.md wins over the page. */
|
|
10
|
+
:root {
|
|
11
|
+
--color-background: #ffffff;
|
|
12
|
+
--color-text: #1a1a1a;
|
|
13
|
+
--color-primary: #0f62fe;
|
|
14
|
+
--space-2: 8px;
|
|
15
|
+
--space-4: 16px;
|
|
16
|
+
--radius-md: 8px;
|
|
17
|
+
}
|
|
18
|
+
@media (prefers-color-scheme: dark) {
|
|
19
|
+
:root {
|
|
20
|
+
--color-background: #111111;
|
|
21
|
+
--color-text: #f2f2f2;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
body { margin: 0; background: var(--color-background); color: var(--color-text); font: 16px/1.5 system-ui, sans-serif; }
|
|
25
|
+
.frame { max-width: 390px; margin: var(--space-4) auto; border: 1px solid currentColor; border-radius: var(--radius-md); padding: var(--space-4); }
|
|
26
|
+
button { background: var(--color-primary); color: var(--color-background); border: 0; border-radius: var(--radius-md); padding: var(--space-2) var(--space-4); font: inherit; }
|
|
27
|
+
</style>
|
|
28
|
+
</head>
|
|
29
|
+
<body>
|
|
30
|
+
<main class="frame" aria-label="Screen name">
|
|
31
|
+
<h1>Screen name</h1>
|
|
32
|
+
<p>Real content of the product goes here.</p>
|
|
33
|
+
<button type="button">Action</button>
|
|
34
|
+
</main>
|
|
35
|
+
</body>
|
|
36
|
+
</html>
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ux
|
|
3
|
+
kind: ux
|
|
4
|
+
owner: stella
|
|
5
|
+
links:
|
|
6
|
+
- prd
|
|
7
|
+
- PU-1
|
|
8
|
+
- EF-1
|
|
9
|
+
# The design tokens, defined once, here. Groups: color, type, space, radius, shadow. A colour is a
|
|
10
|
+
# hexadecimal value (or light/dark). Every value marked (sample) is replaced by the creator's choice.
|
|
11
|
+
# On top of a UI system the product keeps, add `ui_system: <its name>` and write only the difference.
|
|
12
|
+
tokens:
|
|
13
|
+
color:
|
|
14
|
+
background: { light: "#FFFFFF", dark: "#111111" } # (sample)
|
|
15
|
+
text: { light: "#1A1A1A", dark: "#F2F2F2" } # (sample)
|
|
16
|
+
primary: { light: "#0F62FE", dark: "#78A9FF" } # (sample)
|
|
17
|
+
type:
|
|
18
|
+
body: { family: "system-ui", size: 16px, weight: 400, line: 1.5 } # (sample)
|
|
19
|
+
title: { family: "system-ui", size: 24px, weight: 600, line: 1.25 } # (sample)
|
|
20
|
+
space:
|
|
21
|
+
"1": 4px # (sample)
|
|
22
|
+
"2": 8px # (sample)
|
|
23
|
+
radius:
|
|
24
|
+
md: 8px # (sample)
|
|
25
|
+
shadow:
|
|
26
|
+
"1": "0 1px 3px rgba(0, 0, 0, 0.2)" # (sample)
|
|
27
|
+
---
|
|
28
|
+
<!-- UX specification template (skill write-ux-spec). Copy it to .agentplugged/docs/ux.md, write it
|
|
29
|
+
in the creator's language, and remove these guidance comments as each section is written, along with
|
|
30
|
+
the "Generated by agentplugged" line, every <…> placeholder and every value marked (sample): they show
|
|
31
|
+
the expected form only. `links` names the PRD and every journey and requirement the specification
|
|
32
|
+
covers (PU-1 and EF-1 are placeholders). Never add a status, a cost or a progress to the header.
|
|
33
|
+
|
|
34
|
+
This document defines no requirement identifier: it mentions those of the PRD inside a line, never at
|
|
35
|
+
the start of a line, a list item, a heading or a first table cell. A token is defined in the header and
|
|
36
|
+
written `{color.primary}` everywhere else. Its own elements are `UX-n`, defined in one table. -->
|
|
37
|
+
|
|
38
|
+
# UX specification: <product name>
|
|
39
|
+
|
|
40
|
+
## Foundation
|
|
41
|
+
|
|
42
|
+
<!-- Platforms and form factors, input modes, the component library or UI system the creator keeps
|
|
43
|
+
(a preference for the architect, not a decision), and the products that inspire or repel the creator. -->
|
|
44
|
+
|
|
45
|
+
- Platforms: <phone, desktop, web…>
|
|
46
|
+
- Input modes: <touch, keyboard, voice…>
|
|
47
|
+
- Preferred component library: <none, or its name>
|
|
48
|
+
- Inspiration: <product> — <what to take from it>
|
|
49
|
+
- To avoid: <product or pattern> — <why>
|
|
50
|
+
|
|
51
|
+
# Part 1 — Visual identity
|
|
52
|
+
|
|
53
|
+
## Brand and style
|
|
54
|
+
|
|
55
|
+
<!-- The feeling the product gives, the direction the creator chose, and what it rules out. Link the
|
|
56
|
+
directions page if one was drawn: [directions](ux-mockups/directions.html). The specification wins
|
|
57
|
+
over every page. -->
|
|
58
|
+
|
|
59
|
+
## Colours
|
|
60
|
+
|
|
61
|
+
<!-- The role of each colour token, where it is used and never used. Values live in the header. -->
|
|
62
|
+
|
|
63
|
+
## Typography
|
|
64
|
+
|
|
65
|
+
<!-- The type roles and the rules that use them. Values live in the header. -->
|
|
66
|
+
|
|
67
|
+
## Spacing and layout
|
|
68
|
+
|
|
69
|
+
<!-- How the spacing scale is used, the grid, margins, breakpoints. -->
|
|
70
|
+
|
|
71
|
+
## Shapes and elevation
|
|
72
|
+
|
|
73
|
+
<!-- Where radii and shadows apply. -->
|
|
74
|
+
|
|
75
|
+
## Components
|
|
76
|
+
|
|
77
|
+
<!-- Each component: its anatomy, the tokens it uses, the look of each state. The Element column names
|
|
78
|
+
the UX-n of the table "Elements to build". -->
|
|
79
|
+
|
|
80
|
+
| Component | Element | Anatomy | Tokens | States |
|
|
81
|
+
| --- | --- | --- | --- | --- |
|
|
82
|
+
| <button> | UX-1 | <label, icon> | `{color.primary}`, `{radius.md}` | <how each state looks> |
|
|
83
|
+
|
|
84
|
+
## Do and don't
|
|
85
|
+
|
|
86
|
+
- Do: <visual rule>
|
|
87
|
+
- Don't: <visual rule>
|
|
88
|
+
|
|
89
|
+
# Part 2 — Behaviour
|
|
90
|
+
|
|
91
|
+
## Information architecture
|
|
92
|
+
|
|
93
|
+
<!-- Every screen, what it holds, the journeys it serves, how it is reached. Each journey lands on
|
|
94
|
+
screens; each screen serves a journey. Under the table, a small text map of the navigation in a code
|
|
95
|
+
block (Home → List → Detail) when it helps. -->
|
|
96
|
+
|
|
97
|
+
| Screen | Purpose | Journeys | Reached from |
|
|
98
|
+
| --- | --- | --- | --- |
|
|
99
|
+
| <screen> | <what it is for> | PU-1 | <screen or entry point> |
|
|
100
|
+
|
|
101
|
+
## Key screens
|
|
102
|
+
|
|
103
|
+
<!-- Two to four screens where the layout carries the behaviour. One row each, with its page in the
|
|
104
|
+
second column. If the creator chooses to build a screen from the tables alone, write `none` there.
|
|
105
|
+
Keep the titles "Key screens" and "Screen sketches" as they are (or "Écrans clés", "Croquis des écrans"):
|
|
106
|
+
the checks find the sections by them. -->
|
|
107
|
+
|
|
108
|
+
| Screen | Mock-up page | Why it is key |
|
|
109
|
+
| --- | --- | --- |
|
|
110
|
+
| <screen> | [<screen>](ux-mockups/screen-sample.html) (sample) | <what the layout decides> |
|
|
111
|
+
|
|
112
|
+
## Screen sketches
|
|
113
|
+
|
|
114
|
+
<!-- One block per screen of the architecture (the key ones first), titled with the screen's name:
|
|
115
|
+
a drawing in a code block, each region marked [1], [2]…, then the list of what each region holds, in
|
|
116
|
+
the same numbers, from 1. Stories of the screen take these regions as acceptance criteria. -->
|
|
117
|
+
|
|
118
|
+
### <screen>
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
+----------------------+
|
|
122
|
+
| [1] <region> |
|
|
123
|
+
| [2] <region> |
|
|
124
|
+
+----------------------+
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
1. <region>: <what it holds, its states>
|
|
128
|
+
2. <region>: <what it holds, its states>
|
|
129
|
+
|
|
130
|
+
## Key flows
|
|
131
|
+
|
|
132
|
+
<!-- One flow per journey of the PRD. -->
|
|
133
|
+
|
|
134
|
+
### <flow name>
|
|
135
|
+
|
|
136
|
+
Covers: PU-1, EF-1.
|
|
137
|
+
|
|
138
|
+
1. <what the user sees> — <what they do> — <what the product answers>
|
|
139
|
+
2. <next step>
|
|
140
|
+
|
|
141
|
+
- Moment of value: <when the user gets what they came for>
|
|
142
|
+
- Failure path: <what can go wrong, what the user sees, how they recover>
|
|
143
|
+
- States met: <empty, loading, error…>
|
|
144
|
+
- Microcopy: <the exact texts of the steps>
|
|
145
|
+
|
|
146
|
+
## Component behaviour
|
|
147
|
+
|
|
148
|
+
<!-- How each component reacts: input, validation, feedback, focus, undo. -->
|
|
149
|
+
|
|
150
|
+
## States
|
|
151
|
+
|
|
152
|
+
<!-- For each screen, the states that apply and what the user sees: empty, loading, error, success,
|
|
153
|
+
offline, permission denied. -->
|
|
154
|
+
|
|
155
|
+
## Interactions
|
|
156
|
+
|
|
157
|
+
<!-- Gestures, keyboard shortcuts, feedback, confirmations, undo, transitions. -->
|
|
158
|
+
|
|
159
|
+
## Microcopy and voice
|
|
160
|
+
|
|
161
|
+
<!-- The tone of the product's words, the terms used (those of the PRD's glossary), and the texts of
|
|
162
|
+
buttons, errors and empty states. -->
|
|
163
|
+
|
|
164
|
+
## Responsive and platforms
|
|
165
|
+
|
|
166
|
+
<!-- How layouts adapt to each breakpoint and platform. -->
|
|
167
|
+
|
|
168
|
+
## Accessibility floor
|
|
169
|
+
|
|
170
|
+
<!-- The level the product commits to, and the rules every screen follows (see the check). -->
|
|
171
|
+
|
|
172
|
+
## Accessibility check
|
|
173
|
+
|
|
174
|
+
<!-- One row per check of the accessibility reference: passed, finding or not applicable. A finding
|
|
175
|
+
carries its severity (blocking, major, minor) and its fix; a fix to build is an element below. -->
|
|
176
|
+
|
|
177
|
+
| Check | Screens or components | Result | Severity | Fix |
|
|
178
|
+
| --- | --- | --- | --- | --- |
|
|
179
|
+
| Text contrast | <all> | <passed, finding, n/a> | <severity> | <fix> |
|
|
180
|
+
|
|
181
|
+
## Elements to build
|
|
182
|
+
|
|
183
|
+
<!-- What the stories must carry, one row each, numbered UX-1, UX-2… and never renumbered: the
|
|
184
|
+
components, the states and the accessibility fixes. A story names it in its Context. An element that
|
|
185
|
+
is no longer wanted stays, with (retired) at the start of its description. -->
|
|
186
|
+
|
|
187
|
+
| Id | Kind | Description | Where |
|
|
188
|
+
| --- | --- | --- | --- |
|
|
189
|
+
| UX-1 | component | <button> | <screens> |
|
|
190
|
+
| UX-2 | state | <empty list> | <screen> |
|
|
191
|
+
|
|
192
|
+
## Traceability
|
|
193
|
+
|
|
194
|
+
<!-- Which flow or screen covers which journey and requirement of the PRD. The first cell is always
|
|
195
|
+
the flow or the screen. -->
|
|
196
|
+
|
|
197
|
+
| Flow or screen | Journeys | Requirements |
|
|
198
|
+
| --- | --- | --- |
|
|
199
|
+
| <flow name> | PU-1 | EF-1 |
|
|
200
|
+
|
|
201
|
+
## Open questions
|
|
202
|
+
|
|
203
|
+
<!-- Needs the PRD does not cover (for the creator and Maya), choices waiting for a decision
|
|
204
|
+
([open: G-…] in the text), and every [assumption] mark. -->
|
|
205
|
+
|
|
206
|
+
- <question>
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Accessibility check
|
|
2
|
+
|
|
3
|
+
The floor every screen of the specification meets, based on the level AA of the Web Content
|
|
4
|
+
Accessibility Guidelines 2.2. A product may commit to more (in the PRD's non-functional
|
|
5
|
+
requirements); never to less. Check each item against every screen and component, and record the
|
|
6
|
+
result in the specification's "Accessibility check" section: passed, a finding (severity and
|
|
7
|
+
fix), or not applicable.
|
|
8
|
+
|
|
9
|
+
Severity: **blocking** — some users cannot complete a journey; **major** — they complete it with
|
|
10
|
+
real difficulty; **minor** — an annoyance or an inconsistency.
|
|
11
|
+
|
|
12
|
+
## Perceive
|
|
13
|
+
|
|
14
|
+
- **Text contrast.** At least 4.5:1 between text and its background; 3:1 for large text (24px
|
|
15
|
+
regular, or 18.66px — 14pt — bold). Check every pair of colour tokens used together, in light
|
|
16
|
+
and dark modes.
|
|
17
|
+
- **Non-text contrast.** At least 3:1 for icons that carry meaning, field borders, focus
|
|
18
|
+
indicators and the parts of a control needed to see it.
|
|
19
|
+
- **Colour never alone.** An error, a status or a selection is also shown by text, an icon or a
|
|
20
|
+
shape.
|
|
21
|
+
- **Text size and zoom.** Body text of 16px or more; the layout still works with text enlarged
|
|
22
|
+
to 200% and at a width of 320px without horizontal scrolling.
|
|
23
|
+
- **Text spacing.** Nothing is cut off or overlaps when the user sets line height to 1.5, space
|
|
24
|
+
after paragraphs to 2 times the font size, letter spacing to 0.12 and word spacing to 0.16
|
|
25
|
+
times the font size.
|
|
26
|
+
- **Content on hover or focus.** A tooltip or popover that appears on hover or focus can be
|
|
27
|
+
dismissed without moving the pointer or focus, stays while the pointer is over it, and stays
|
|
28
|
+
until dismissed or no longer relevant.
|
|
29
|
+
- **Orientation.** Every screen works in portrait and landscape, unless one orientation is
|
|
30
|
+
essential.
|
|
31
|
+
- **Structure.** Each page has a title that says what it is; headings name the sections in
|
|
32
|
+
order; lists and tables are marked as such.
|
|
33
|
+
- **Images and icons.** Each one that carries meaning has a text alternative; decorative ones are
|
|
34
|
+
hidden from screen readers.
|
|
35
|
+
- **Media.** Video has captions; audio has a transcript.
|
|
36
|
+
|
|
37
|
+
## Operate
|
|
38
|
+
|
|
39
|
+
- **Keyboard.** Every action can be done with a keyboard alone, with no trap.
|
|
40
|
+
- **Bypass blocks.** A way to skip repeated content (a "skip to content" link, landmarks or
|
|
41
|
+
headings) on every page that repeats navigation.
|
|
42
|
+
- **Focus order and visibility.** The focus moves in reading order and is always visible, never
|
|
43
|
+
hidden behind a sticky element.
|
|
44
|
+
- **Target size.** Touch and click targets of at least 24 by 24px, 44 by 44px for the main
|
|
45
|
+
actions on touch screens.
|
|
46
|
+
- **Gestures.** Every path or multi-finger gesture and every drag has a single-tap alternative.
|
|
47
|
+
- **Motion.** Animations respect the "reduce motion" setting; nothing flashes more than three
|
|
48
|
+
times per second.
|
|
49
|
+
- **Timing.** No time limit, or a way to extend or turn it off; moving content can be paused.
|
|
50
|
+
|
|
51
|
+
## Understand
|
|
52
|
+
|
|
53
|
+
- **Labels and instructions.** Every field has a visible label; required fields and formats are
|
|
54
|
+
stated before input.
|
|
55
|
+
- **Errors.** An error says what went wrong and how to fix it, next to the field, and the input
|
|
56
|
+
is kept.
|
|
57
|
+
- **Redundant entry.** Information the user already gave in the same process is filled in for
|
|
58
|
+
them or offered to pick, not asked again (unless re-entering it is essential, as for a
|
|
59
|
+
password confirmation or security).
|
|
60
|
+
- **Accessible authentication.** Signing in never requires a cognitive test (remembering,
|
|
61
|
+
transcribing or solving something) without an alternative: password managers and pasting are
|
|
62
|
+
allowed, and a passkey, a link by e-mail or another method is offered.
|
|
63
|
+
- **Consistency.** The same component looks and behaves the same everywhere; navigation stays in
|
|
64
|
+
the same place.
|
|
65
|
+
- **Language.** The language of each page is declared; plain words, no unexplained jargon.
|
|
66
|
+
- **Undo and confirmation.** An action that deletes, pays or sends can be undone or asks for a
|
|
67
|
+
confirmation first.
|
|
68
|
+
|
|
69
|
+
## Robust
|
|
70
|
+
|
|
71
|
+
- **Names, roles and states.** Each control exposes its name, role and state (selected,
|
|
72
|
+
expanded, disabled) to assistive technology.
|
|
73
|
+
- **Status messages.** A change announced on screen (saved, error, new item) is also announced to
|
|
74
|
+
screen readers without moving the focus.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Mock-up pages
|
|
2
|
+
|
|
3
|
+
Read this when you draw the directions or the key screens. A page shows what the tables say;
|
|
4
|
+
the specification always wins over a page, and `ux.md` says so once, in "Brand and style".
|
|
5
|
+
|
|
6
|
+
## The rules of a page (checked by `docs check`)
|
|
7
|
+
|
|
8
|
+
- A file of `.agentplugged/docs/ux-mockups/`, flat, lowercase letters, digits and hyphens:
|
|
9
|
+
`directions.html`, `screen-home.html`. Eight pages at most, 30 000 bytes each. Nothing else
|
|
10
|
+
lives in the folder: another kind of file, or a link, is refused.
|
|
11
|
+
- Start from `assets/mockup-page.html` (in this skill's folder). Its head carries a policy meta
|
|
12
|
+
that makes a browser load nothing; it comes before any tag of the body, after the charset and
|
|
13
|
+
viewport metas at most.
|
|
14
|
+
- Self-contained: one inline `<style>`, no script, no image, no font, no `<link>`, no form, no
|
|
15
|
+
address, no character reference (`&#…;`) in a style. A link is `#anchor` only. Icons are a
|
|
16
|
+
few inline `<svg>` shapes, whose values are numbers, paths and colours.
|
|
17
|
+
- Plain tags: text, lists, tables, buttons, inputs, `div`/`section`, `svg`. Anything else is
|
|
18
|
+
refused with its name.
|
|
19
|
+
- Every word comes from the conversation or the specification, never lorem. Text that comes
|
|
20
|
+
from outside (a pasted brief, a product the creator admires) goes in as plain text with
|
|
21
|
+
`<`, `>`, `&` written `<`, `>`, `&`: never as markup.
|
|
22
|
+
- Colours, type and spacing are the tokens of the header, copied once as CSS custom properties
|
|
23
|
+
in `:root` (`--color-primary`), light and dark when the product has both.
|
|
24
|
+
|
|
25
|
+
## Directions (step "Visual direction")
|
|
26
|
+
|
|
27
|
+
One page, `directions.html`, two or three directions side by side, each applied to the same
|
|
28
|
+
main screen. A direction is a whole look and feel, not a recoloured copy: two that differ only
|
|
29
|
+
by hue are one direction. They differ by density, weight of type, motion and tone. Each shows
|
|
30
|
+
its name and a line on its mood, its palette as chips with hex values, its type, the screen in
|
|
31
|
+
one awkward state (empty, error…), and dark beside light when the product has both. When only
|
|
32
|
+
the colours are undecided, the page may instead hold up to four palettes on one screen. Say in
|
|
33
|
+
the chat what the creator is looking at; do not paste the page. The creator chooses; the page
|
|
34
|
+
stays and is linked from "Brand and style".
|
|
35
|
+
|
|
36
|
+
## Key screens (step "Key screens")
|
|
37
|
+
|
|
38
|
+
Choose two to four screens whose layout decides how the product behaves: where the user starts,
|
|
39
|
+
the busiest step of the longest flow, a layer that asks for a decision. One page each,
|
|
40
|
+
`screen-<slug>.html`, at 1:1: one resting state plus, if it matters, one other (focus, error,
|
|
41
|
+
empty) in the same file. Draw from the tokens, the sketch and the microcopy. A component the
|
|
42
|
+
specification does not name is a question for the creator before it is drawn.
|
|
43
|
+
|
|
44
|
+
Let a sub-agent in a clean context draw each page: it answers with the path and a one-line
|
|
45
|
+
caption, and the HTML never enters your context. Do not read a page back to check it:
|
|
46
|
+
`docs check` does, and the creator opens it in a browser. A story that builds the screen cites
|
|
47
|
+
its page in its Context; the developer opens it for visual detail only.
|
|
48
|
+
|
|
49
|
+
## Coverage, asked once
|
|
50
|
+
|
|
51
|
+
When the pages are drawn, list the screens of the architecture: drawn, or "tables and sketch
|
|
52
|
+
only". Ask: "these will be built from the tables and sketches alone; does any need a visual
|
|
53
|
+
reference?" Draw what the creator names. A screen they choose to leave has `none` in the
|
|
54
|
+
"Mock-up page" cell of its row; `docs check` then only warns.
|
|
55
|
+
|
|
56
|
+
## Navigation and flows stay in text
|
|
57
|
+
|
|
58
|
+
The architecture table and a small text map under it (`Home → List → Detail`), the numbered
|
|
59
|
+
steps of each flow and the sketches say what a diagram would. Do not make diagram files: the
|
|
60
|
+
folder holds pages, and an agent can neither read nor check a drawing.
|
|
61
|
+
|
|
62
|
+
## A change after
|
|
63
|
+
|
|
64
|
+
A change of a token or of a sketch makes the pages that show it stale. Redraw the key ones or
|
|
65
|
+
say which are old; never let a page contradict the specification without saying so.
|
|
66
|
+
|
|
67
|
+
## A design tool of the creator's
|
|
68
|
+
|
|
69
|
+
If the creator draws elsewhere, assemble one prompt from the tokens, the sketches, the flows
|
|
70
|
+
and the microcopy; they run it and bring back what it gave. Look at it, take its decisions into
|
|
71
|
+
the tokens and sketches, and keep nothing but those in the specification.
|