@jaimevalasek/aioson 1.3.0
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/CHANGELOG.md +456 -0
- package/CODE_OF_CONDUCT.md +12 -0
- package/CONTRIBUTING.md +13 -0
- package/LICENSE +21 -0
- package/README.md +254 -0
- package/bin/aioson.js +4 -0
- package/docs/en/cli-reference.md +398 -0
- package/docs/en/i18n.md +52 -0
- package/docs/en/json-schemas.md +41 -0
- package/docs/en/mcp.md +56 -0
- package/docs/en/parallel.md +82 -0
- package/docs/en/qa-browser.md +339 -0
- package/docs/en/release-flow.md +22 -0
- package/docs/en/release-notes-template.md +41 -0
- package/docs/en/release.md +28 -0
- package/docs/en/schemas/agent-prompt.schema.json +17 -0
- package/docs/en/schemas/agents.schema.json +32 -0
- package/docs/en/schemas/context-validate.schema.json +36 -0
- package/docs/en/schemas/doctor.schema.json +89 -0
- package/docs/en/schemas/error.schema.json +24 -0
- package/docs/en/schemas/i18n-add.schema.json +15 -0
- package/docs/en/schemas/index.json +116 -0
- package/docs/en/schemas/info.schema.json +39 -0
- package/docs/en/schemas/init.schema.json +48 -0
- package/docs/en/schemas/install.schema.json +60 -0
- package/docs/en/schemas/locale-apply.schema.json +30 -0
- package/docs/en/schemas/mcp-doctor.schema.json +95 -0
- package/docs/en/schemas/mcp-init.schema.json +122 -0
- package/docs/en/schemas/package-test.schema.json +24 -0
- package/docs/en/schemas/parallel-assign.schema.json +57 -0
- package/docs/en/schemas/parallel-doctor.schema.json +86 -0
- package/docs/en/schemas/parallel-init.schema.json +53 -0
- package/docs/en/schemas/parallel-status.schema.json +94 -0
- package/docs/en/schemas/setup-context.schema.json +39 -0
- package/docs/en/schemas/smoke.schema.json +23 -0
- package/docs/en/schemas/update.schema.json +48 -0
- package/docs/en/schemas/workflow-plan.schema.json +30 -0
- package/docs/en/web3.md +54 -0
- package/docs/pt/README.md +46 -0
- package/docs/pt/advisor-spec.md +335 -0
- package/docs/pt/agentes.md +453 -0
- package/docs/pt/cenarios.md +1230 -0
- package/docs/pt/clientes-ai.md +224 -0
- package/docs/pt/comandos-cli.md +511 -0
- package/docs/pt/genome-3.0-spec.md +296 -0
- package/docs/pt/guia-engineer.md +226 -0
- package/docs/pt/inicio-rapido.md +138 -0
- package/docs/pt/profiler-system.md +214 -0
- package/docs/pt/runtime-observability.md +72 -0
- package/docs/pt/squad-genoma.md +777 -0
- package/docs/pt/web3.md +797 -0
- package/docs/testing/genome-2.0-manual-regression.md +23 -0
- package/docs/testing/genome-2.0-matrix.md +36 -0
- package/docs/testing/genome-2.0-rollout.md +184 -0
- package/package.json +50 -0
- package/src/agents.js +56 -0
- package/src/cli.js +497 -0
- package/src/commands/agents.js +142 -0
- package/src/commands/cloud.js +1767 -0
- package/src/commands/config.js +90 -0
- package/src/commands/context-validate.js +91 -0
- package/src/commands/doctor.js +123 -0
- package/src/commands/genome-doctor.js +41 -0
- package/src/commands/genome-migrate.js +49 -0
- package/src/commands/i18n-add.js +56 -0
- package/src/commands/info.js +41 -0
- package/src/commands/init.js +75 -0
- package/src/commands/install.js +68 -0
- package/src/commands/locale-apply.js +51 -0
- package/src/commands/locale-diff.js +126 -0
- package/src/commands/mcp-doctor.js +406 -0
- package/src/commands/mcp-init.js +379 -0
- package/src/commands/package-e2e.js +273 -0
- package/src/commands/parallel-assign.js +403 -0
- package/src/commands/parallel-doctor.js +437 -0
- package/src/commands/parallel-init.js +249 -0
- package/src/commands/parallel-status.js +290 -0
- package/src/commands/qa-doctor.js +185 -0
- package/src/commands/qa-init.js +161 -0
- package/src/commands/qa-report.js +58 -0
- package/src/commands/qa-run.js +873 -0
- package/src/commands/qa-scan.js +337 -0
- package/src/commands/runtime.js +948 -0
- package/src/commands/scan-project.js +1107 -0
- package/src/commands/setup-context.js +650 -0
- package/src/commands/smoke.js +426 -0
- package/src/commands/squad-doctor.js +358 -0
- package/src/commands/squad-export.js +46 -0
- package/src/commands/squad-pipeline.js +97 -0
- package/src/commands/squad-repair-genomes.js +39 -0
- package/src/commands/squad-status.js +424 -0
- package/src/commands/squad-validate.js +230 -0
- package/src/commands/test-agents.js +194 -0
- package/src/commands/update.js +55 -0
- package/src/commands/workflow-next.js +594 -0
- package/src/commands/workflow-plan.js +108 -0
- package/src/constants.js +314 -0
- package/src/context-parse-reason.js +22 -0
- package/src/context-writer.js +150 -0
- package/src/context.js +217 -0
- package/src/detector.js +261 -0
- package/src/doctor.js +289 -0
- package/src/execution-gateway.js +461 -0
- package/src/genome-files.js +198 -0
- package/src/genome-format.js +442 -0
- package/src/genome-schema.js +215 -0
- package/src/genomes/bindings.js +281 -0
- package/src/genomes.js +467 -0
- package/src/i18n/index.js +103 -0
- package/src/i18n/messages/en.js +784 -0
- package/src/i18n/messages/es.js +718 -0
- package/src/i18n/messages/fr.js +725 -0
- package/src/i18n/messages/pt-BR.js +818 -0
- package/src/i18n/scaffold.js +64 -0
- package/src/installer.js +232 -0
- package/src/lib/genomes/compat.js +206 -0
- package/src/lib/genomes/migrate.js +90 -0
- package/src/lib/squads/genome-repair.js +49 -0
- package/src/locales.js +84 -0
- package/src/onboarding.js +305 -0
- package/src/parser.js +53 -0
- package/src/prompt-tool.js +20 -0
- package/src/qa-html-report.js +472 -0
- package/src/runtime-store.js +1527 -0
- package/src/squads/apply-genome.js +21 -0
- package/src/squads/genome-binding-service.js +154 -0
- package/src/updater.js +32 -0
- package/src/utils.js +46 -0
- package/src/version.js +50 -0
- package/template/.aioson/advisors/.gitkeep +1 -0
- package/template/.aioson/agents/analyst.md +225 -0
- package/template/.aioson/agents/architect.md +221 -0
- package/template/.aioson/agents/dev.md +201 -0
- package/template/.aioson/agents/discovery-design-doc.md +196 -0
- package/template/.aioson/agents/genoma.md +300 -0
- package/template/.aioson/agents/orchestrator.md +107 -0
- package/template/.aioson/agents/pm.md +89 -0
- package/template/.aioson/agents/product.md +361 -0
- package/template/.aioson/agents/profiler-enricher.md +266 -0
- package/template/.aioson/agents/profiler-forge.md +188 -0
- package/template/.aioson/agents/profiler-researcher.md +245 -0
- package/template/.aioson/agents/qa.md +344 -0
- package/template/.aioson/agents/setup.md +381 -0
- package/template/.aioson/agents/squad.md +837 -0
- package/template/.aioson/agents/ux-ui.md +416 -0
- package/template/.aioson/config.md +56 -0
- package/template/.aioson/context/.gitkeep +0 -0
- package/template/.aioson/context/parallel/.gitkeep +0 -0
- package/template/.aioson/context/spec.md.template +37 -0
- package/template/.aioson/genomas/.gitkeep +0 -0
- package/template/.aioson/locales/en/agents/analyst.md +214 -0
- package/template/.aioson/locales/en/agents/architect.md +210 -0
- package/template/.aioson/locales/en/agents/dev.md +187 -0
- package/template/.aioson/locales/en/agents/discovery-design-doc.md +27 -0
- package/template/.aioson/locales/en/agents/genoma.md +212 -0
- package/template/.aioson/locales/en/agents/orchestrator.md +105 -0
- package/template/.aioson/locales/en/agents/pm.md +77 -0
- package/template/.aioson/locales/en/agents/product.md +310 -0
- package/template/.aioson/locales/en/agents/profiler-enricher.md +5 -0
- package/template/.aioson/locales/en/agents/profiler-forge.md +5 -0
- package/template/.aioson/locales/en/agents/profiler-researcher.md +5 -0
- package/template/.aioson/locales/en/agents/qa.md +214 -0
- package/template/.aioson/locales/en/agents/setup.md +342 -0
- package/template/.aioson/locales/en/agents/squad.md +247 -0
- package/template/.aioson/locales/en/agents/ux-ui.md +320 -0
- package/template/.aioson/locales/es/agents/analyst.md +203 -0
- package/template/.aioson/locales/es/agents/architect.md +208 -0
- package/template/.aioson/locales/es/agents/dev.md +183 -0
- package/template/.aioson/locales/es/agents/discovery-design-doc.md +19 -0
- package/template/.aioson/locales/es/agents/genoma.md +102 -0
- package/template/.aioson/locales/es/agents/orchestrator.md +108 -0
- package/template/.aioson/locales/es/agents/pm.md +81 -0
- package/template/.aioson/locales/es/agents/product.md +310 -0
- package/template/.aioson/locales/es/agents/profiler-enricher.md +5 -0
- package/template/.aioson/locales/es/agents/profiler-forge.md +5 -0
- package/template/.aioson/locales/es/agents/profiler-researcher.md +5 -0
- package/template/.aioson/locales/es/agents/qa.md +163 -0
- package/template/.aioson/locales/es/agents/setup.md +347 -0
- package/template/.aioson/locales/es/agents/squad.md +247 -0
- package/template/.aioson/locales/es/agents/ux-ui.md +201 -0
- package/template/.aioson/locales/fr/agents/analyst.md +203 -0
- package/template/.aioson/locales/fr/agents/architect.md +208 -0
- package/template/.aioson/locales/fr/agents/dev.md +183 -0
- package/template/.aioson/locales/fr/agents/discovery-design-doc.md +19 -0
- package/template/.aioson/locales/fr/agents/genoma.md +102 -0
- package/template/.aioson/locales/fr/agents/orchestrator.md +108 -0
- package/template/.aioson/locales/fr/agents/pm.md +81 -0
- package/template/.aioson/locales/fr/agents/product.md +310 -0
- package/template/.aioson/locales/fr/agents/profiler-enricher.md +5 -0
- package/template/.aioson/locales/fr/agents/profiler-forge.md +5 -0
- package/template/.aioson/locales/fr/agents/profiler-researcher.md +5 -0
- package/template/.aioson/locales/fr/agents/qa.md +163 -0
- package/template/.aioson/locales/fr/agents/setup.md +347 -0
- package/template/.aioson/locales/fr/agents/squad.md +247 -0
- package/template/.aioson/locales/fr/agents/ux-ui.md +201 -0
- package/template/.aioson/locales/pt-BR/agents/analyst.md +217 -0
- package/template/.aioson/locales/pt-BR/agents/architect.md +213 -0
- package/template/.aioson/locales/pt-BR/agents/dev.md +198 -0
- package/template/.aioson/locales/pt-BR/agents/discovery-design-doc.md +198 -0
- package/template/.aioson/locales/pt-BR/agents/genoma.md +297 -0
- package/template/.aioson/locales/pt-BR/agents/orchestrator.md +108 -0
- package/template/.aioson/locales/pt-BR/agents/pm.md +81 -0
- package/template/.aioson/locales/pt-BR/agents/product.md +316 -0
- package/template/.aioson/locales/pt-BR/agents/profiler-enricher.md +5 -0
- package/template/.aioson/locales/pt-BR/agents/profiler-forge.md +5 -0
- package/template/.aioson/locales/pt-BR/agents/profiler-researcher.md +5 -0
- package/template/.aioson/locales/pt-BR/agents/qa.md +217 -0
- package/template/.aioson/locales/pt-BR/agents/setup.md +371 -0
- package/template/.aioson/locales/pt-BR/agents/squad.md +772 -0
- package/template/.aioson/locales/pt-BR/agents/ux-ui.md +322 -0
- package/template/.aioson/mcp/servers.md +24 -0
- package/template/.aioson/profiler-reports/.gitkeep +1 -0
- package/template/.aioson/schemas/content-blueprint.schema.json +30 -0
- package/template/.aioson/schemas/genome-meta.schema.json +150 -0
- package/template/.aioson/schemas/genome.schema.json +115 -0
- package/template/.aioson/schemas/readiness.schema.json +27 -0
- package/template/.aioson/schemas/squad-blueprint.schema.json +172 -0
- package/template/.aioson/schemas/squad-manifest.schema.json +276 -0
- package/template/.aioson/skills/dynamic/README.md +30 -0
- package/template/.aioson/skills/dynamic/cardano-docs.md +16 -0
- package/template/.aioson/skills/dynamic/ethereum-docs.md +17 -0
- package/template/.aioson/skills/dynamic/flux-ui-docs.md +13 -0
- package/template/.aioson/skills/dynamic/laravel-docs.md +41 -0
- package/template/.aioson/skills/dynamic/npm-packages.md +16 -0
- package/template/.aioson/skills/dynamic/solana-docs.md +16 -0
- package/template/.aioson/skills/references/premium-command-center-ui/master-application-prompt.md +79 -0
- package/template/.aioson/skills/references/premium-command-center-ui/operational-ux-playbook.md +253 -0
- package/template/.aioson/skills/references/premium-command-center-ui/quality-validation-checklist.md +82 -0
- package/template/.aioson/skills/references/premium-command-center-ui/visual-system-and-component-patterns.md +270 -0
- package/template/.aioson/skills/static/django-patterns.md +342 -0
- package/template/.aioson/skills/static/fastapi-patterns.md +344 -0
- package/template/.aioson/skills/static/filament-patterns.md +267 -0
- package/template/.aioson/skills/static/flux-ui-components.md +262 -0
- package/template/.aioson/skills/static/git-conventions.md +227 -0
- package/template/.aioson/skills/static/interface-design.md +372 -0
- package/template/.aioson/skills/static/jetstream-setup.md +200 -0
- package/template/.aioson/skills/static/laravel-conventions.md +491 -0
- package/template/.aioson/skills/static/nextjs-patterns.md +321 -0
- package/template/.aioson/skills/static/node-express-patterns.md +317 -0
- package/template/.aioson/skills/static/node-typescript-patterns.md +282 -0
- package/template/.aioson/skills/static/premium-command-center-ui.md +190 -0
- package/template/.aioson/skills/static/rails-conventions.md +307 -0
- package/template/.aioson/skills/static/react-motion-patterns.md +577 -0
- package/template/.aioson/skills/static/static-html-patterns.md +1935 -0
- package/template/.aioson/skills/static/tall-stack-patterns.md +286 -0
- package/template/.aioson/skills/static/ui-ux-modern.md +75 -0
- package/template/.aioson/skills/static/web3-cardano-patterns.md +337 -0
- package/template/.aioson/skills/static/web3-ethereum-patterns.md +310 -0
- package/template/.aioson/skills/static/web3-security-checklist.md +284 -0
- package/template/.aioson/skills/static/web3-solana-patterns.md +324 -0
- package/template/.aioson/squads/.artisan/.gitkeep +0 -0
- package/template/.aioson/squads/.gitkeep +0 -0
- package/template/.aioson/squads/memory.md +5 -0
- package/template/.aioson/tasks/squad-analyze.md +83 -0
- package/template/.aioson/tasks/squad-create.md +99 -0
- package/template/.aioson/tasks/squad-design.md +100 -0
- package/template/.aioson/tasks/squad-export.md +20 -0
- package/template/.aioson/tasks/squad-extend.md +68 -0
- package/template/.aioson/tasks/squad-pipeline.md +122 -0
- package/template/.aioson/tasks/squad-repair.md +85 -0
- package/template/.aioson/tasks/squad-validate.md +58 -0
- package/template/.aioson/templates/squads/content-basic/template.json +21 -0
- package/template/.aioson/templates/squads/media-channel/template.json +24 -0
- package/template/.aioson/templates/squads/research-analysis/template.json +22 -0
- package/template/.aioson/templates/squads/software-delivery/template.json +21 -0
- package/template/.claude/commands/aioson/analyst.md +5 -0
- package/template/.claude/commands/aioson/architect.md +5 -0
- package/template/.claude/commands/aioson/dev.md +5 -0
- package/template/.claude/commands/aioson/orchestrator.md +5 -0
- package/template/.claude/commands/aioson/pm.md +5 -0
- package/template/.claude/commands/aioson/qa.md +5 -0
- package/template/.claude/commands/aioson/setup.md +5 -0
- package/template/.claude/commands/aioson/ux-ui.md +5 -0
- package/template/.gemini/GEMINI.md +10 -0
- package/template/.gemini/commands/aios-analyst.toml +4 -0
- package/template/.gemini/commands/aios-architect.toml +7 -0
- package/template/.gemini/commands/aios-dev.toml +8 -0
- package/template/.gemini/commands/aios-discovery-design-doc.toml +4 -0
- package/template/.gemini/commands/aios-orchestrator.toml +8 -0
- package/template/.gemini/commands/aios-pm.toml +8 -0
- package/template/.gemini/commands/aios-product.toml +4 -0
- package/template/.gemini/commands/aios-qa.toml +6 -0
- package/template/.gemini/commands/aios-setup.toml +3 -0
- package/template/.gemini/commands/aios-ux-ui.toml +8 -0
- package/template/AGENTS.md +67 -0
- package/template/CLAUDE.md +31 -0
- package/template/OPENCODE.md +24 -0
- package/template/aioson-models.json +40 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# Git Conventions
|
|
2
|
+
|
|
3
|
+
> Clean history is documentation. Every commit tells a story. Make it worth reading.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Conventional Commits — format
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
<type>(<scope>): <subject>
|
|
11
|
+
|
|
12
|
+
[optional body]
|
|
13
|
+
|
|
14
|
+
[optional footer]
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Types
|
|
18
|
+
|
|
19
|
+
| Type | When to use |
|
|
20
|
+
|---|---|
|
|
21
|
+
| `feat` | New feature or capability |
|
|
22
|
+
| `fix` | Bug fix |
|
|
23
|
+
| `docs` | Documentation only |
|
|
24
|
+
| `style` | Formatting, whitespace — no logic change |
|
|
25
|
+
| `refactor` | Code restructuring — no feature/fix |
|
|
26
|
+
| `perf` | Performance improvement |
|
|
27
|
+
| `test` | Adding or fixing tests |
|
|
28
|
+
| `chore` | Build process, dependencies, tooling |
|
|
29
|
+
| `ci` | CI configuration |
|
|
30
|
+
| `revert` | Reverts a previous commit |
|
|
31
|
+
|
|
32
|
+
### Scope (optional but recommended)
|
|
33
|
+
|
|
34
|
+
Use the affected module, layer, or feature: `auth`, `appointments`, `billing`, `api`, `ui`, `db`.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Commit message examples
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Good — specific, uses type + scope
|
|
42
|
+
feat(appointments): add conflict detection when booking same doctor
|
|
43
|
+
|
|
44
|
+
fix(auth): redirect to intended URL after login
|
|
45
|
+
|
|
46
|
+
docs(api): add Postman collection for appointments endpoints
|
|
47
|
+
|
|
48
|
+
refactor(billing): extract InvoiceCalculator from OrderService
|
|
49
|
+
|
|
50
|
+
test(appointments): add edge cases for past-date booking validation
|
|
51
|
+
|
|
52
|
+
chore(deps): bump laravel/framework to 11.3.0
|
|
53
|
+
|
|
54
|
+
perf(db): add index on appointments(doctor_id, date)
|
|
55
|
+
|
|
56
|
+
ci(release): skip npm publish when version already exists
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Bad — no context, no type
|
|
61
|
+
git commit -m "fix bug"
|
|
62
|
+
git commit -m "changes"
|
|
63
|
+
git commit -m "WIP"
|
|
64
|
+
git commit -m "update stuff"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Subject line rules
|
|
70
|
+
|
|
71
|
+
- Imperative mood: "add", "fix", "remove" — not "added", "fixed", "removes"
|
|
72
|
+
- No period at the end
|
|
73
|
+
- Max 72 characters
|
|
74
|
+
- If you can't describe it in 72 chars, the commit is too large — split it
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Commit body (when needed)
|
|
79
|
+
|
|
80
|
+
Use the body to explain **why**, not **what**. The diff shows what changed.
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
fix(appointments): prevent double-booking under concurrent requests
|
|
84
|
+
|
|
85
|
+
Without a database-level lock, two simultaneous booking requests for the
|
|
86
|
+
same doctor+timeslot could both pass the in-memory conflict check and
|
|
87
|
+
create duplicate appointments.
|
|
88
|
+
|
|
89
|
+
Added SELECT ... FOR UPDATE to the conflict check query to serialize
|
|
90
|
+
concurrent writes at the database level.
|
|
91
|
+
|
|
92
|
+
Closes #142
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Branching strategy
|
|
98
|
+
|
|
99
|
+
### Git Flow (default for projects with releases)
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
main ← production, protected, tagged releases only
|
|
103
|
+
develop ← integration branch, latest stable work
|
|
104
|
+
feature/* ← new features (branch from develop)
|
|
105
|
+
fix/* ← bug fixes (branch from develop or main)
|
|
106
|
+
release/* ← release preparation (branch from develop)
|
|
107
|
+
hotfix/* ← urgent production fixes (branch from main)
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### GitHub Flow (simpler, for continuous deployment)
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
main ← always deployable, protected
|
|
114
|
+
feature/* ← short-lived feature branches (branch from main)
|
|
115
|
+
fix/* ← short-lived fix branches (branch from main)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Use GitHub Flow** for small/medium teams shipping continuously. Use Git Flow when maintaining multiple versions.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Branch naming
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
feature/appointment-conflict-detection
|
|
126
|
+
feature/stripe-billing-integration
|
|
127
|
+
fix/login-redirect-loop
|
|
128
|
+
fix/n1-query-appointments-index
|
|
129
|
+
hotfix/production-500-on-checkout
|
|
130
|
+
chore/upgrade-laravel-11
|
|
131
|
+
docs/add-api-postman-collection
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Pull Request conventions
|
|
137
|
+
|
|
138
|
+
**Title:** same format as a commit message — `type(scope): subject`
|
|
139
|
+
|
|
140
|
+
**Description template:**
|
|
141
|
+
```markdown
|
|
142
|
+
## What
|
|
143
|
+
Brief description of the change.
|
|
144
|
+
|
|
145
|
+
## Why
|
|
146
|
+
Context — what problem does this solve? Link issues.
|
|
147
|
+
|
|
148
|
+
## How
|
|
149
|
+
Key technical decisions made. Alternatives considered.
|
|
150
|
+
|
|
151
|
+
## Test plan
|
|
152
|
+
- [ ] Manual steps to verify the change
|
|
153
|
+
- [ ] Automated tests added/updated
|
|
154
|
+
|
|
155
|
+
## Screenshots (if UI change)
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Tagging and releases
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
# Semantic versioning: MAJOR.MINOR.PATCH
|
|
164
|
+
git tag -a v1.2.3 -m "Release v1.2.3"
|
|
165
|
+
git push origin v1.2.3
|
|
166
|
+
|
|
167
|
+
# MAJOR — breaking changes
|
|
168
|
+
# MINOR — new backwards-compatible features
|
|
169
|
+
# PATCH — bug fixes
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Protecting shared history
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# NEVER force push to shared branches
|
|
178
|
+
git push --force origin main # FORBIDDEN
|
|
179
|
+
|
|
180
|
+
# Rebase private branches before merging (keep history clean)
|
|
181
|
+
git checkout feature/my-feature
|
|
182
|
+
git rebase develop
|
|
183
|
+
|
|
184
|
+
# Squash noisy WIP commits before PR
|
|
185
|
+
git rebase -i develop # interactive rebase
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Useful git commands
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
# See what changed in last commit
|
|
194
|
+
git show --stat
|
|
195
|
+
|
|
196
|
+
# Amend last commit message (before push only)
|
|
197
|
+
git commit --amend -m "fix(auth): correct redirect target"
|
|
198
|
+
|
|
199
|
+
# Stash uncommitted changes
|
|
200
|
+
git stash push -m "WIP: appointment form validation"
|
|
201
|
+
git stash pop
|
|
202
|
+
|
|
203
|
+
# Find which commit introduced a bug
|
|
204
|
+
git bisect start
|
|
205
|
+
git bisect bad HEAD
|
|
206
|
+
git bisect good v1.1.0
|
|
207
|
+
|
|
208
|
+
# Clean untracked files (dry run first)
|
|
209
|
+
git clean -n # preview
|
|
210
|
+
git clean -fd # execute
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## ALWAYS
|
|
216
|
+
- Write imperative, specific commit messages
|
|
217
|
+
- One logical change per commit
|
|
218
|
+
- Branch from the correct base (`main` or `develop`)
|
|
219
|
+
- Rebase feature branches before merging
|
|
220
|
+
- Tag releases with semantic versions
|
|
221
|
+
|
|
222
|
+
## NEVER
|
|
223
|
+
- Force push to `main` or `develop`
|
|
224
|
+
- Commit secrets, `.env` files, or credentials
|
|
225
|
+
- Use generic messages ("fix", "update", "changes")
|
|
226
|
+
- Commit commented-out code — delete it instead
|
|
227
|
+
- Leave WIP commits in a PR — squash or amend before review
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
# Interface Design — Craft Guide
|
|
2
|
+
|
|
3
|
+
> Read this in full before producing any UI/UX output.
|
|
4
|
+
> Correct ships. Crafted impresses. This guide closes the gap.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## The mandate
|
|
9
|
+
|
|
10
|
+
If another AI, given the same prompt, would produce substantially the same output — you have failed.
|
|
11
|
+
Generic is the enemy. Defaults disguise themselves as infrastructure. Every spacing value, every typeface choice, every depth strategy is a decision. Own every one of them.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## AIOS rule — design memory and continuity
|
|
16
|
+
|
|
17
|
+
If `.interface-design/system.md` exists, treat it as the visual source of truth:
|
|
18
|
+
- Load it before changing direction, tokens, or component patterns.
|
|
19
|
+
- Respect it unless the user explicitly wants a redesign.
|
|
20
|
+
- Update it when you introduce a reusable pattern, token rule, or layout decision.
|
|
21
|
+
|
|
22
|
+
If the file does not exist and the task covers more than one screen or component family, create it with:
|
|
23
|
+
- Product context and UI intent
|
|
24
|
+
- Chosen design direction and anti-goals
|
|
25
|
+
- Token decisions (color, type, spacing, radius, depth, motion)
|
|
26
|
+
- Core component patterns (navigation, card, table, form, modal, empty state)
|
|
27
|
+
- Open constraints or decisions still pending
|
|
28
|
+
|
|
29
|
+
The point is simple: one product should not look like it was designed from scratch on every screen.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## If the UI already exists
|
|
34
|
+
|
|
35
|
+
When refining an existing product:
|
|
36
|
+
- Identify the current visual direction before proposing a new one.
|
|
37
|
+
- Diagnose token drift first: off-grid spacing, repeated hardcoded colors, mixed radii, mixed depth strategies, missing interactive states.
|
|
38
|
+
- Improve consistency before re-theming.
|
|
39
|
+
- Replace the direction only when the current system blocks the product intent or the user explicitly asked for a redesign.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Phase 0 — Intent first (mandatory, cannot skip)
|
|
44
|
+
|
|
45
|
+
Before touching layout or tokens, answer three questions with specificity:
|
|
46
|
+
|
|
47
|
+
1. **Who is this human?** — Actual person, actual context.
|
|
48
|
+
Bad: "a user." Good: "a finance manager reviewing budget reports at 8am before a board meeting."
|
|
49
|
+
2. **What must they accomplish?** — A specific verb, not a vague goal.
|
|
50
|
+
Bad: "manage their projects." Good: "approve or reject 15 expense requests before end of day."
|
|
51
|
+
3. **What should this feel like?** — Concrete texture, not an adjective.
|
|
52
|
+
Bad: "clean and modern." Good: "a Bloomberg terminal that doesn't exhaust you."
|
|
53
|
+
|
|
54
|
+
**If you cannot answer all three with specifics — stop. Ask. Do not guess. Do not default.**
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Phase 1 — Domain exploration (4 required outputs)
|
|
59
|
+
|
|
60
|
+
Before proposing any visual direction, produce:
|
|
61
|
+
|
|
62
|
+
1. **Domain concepts** — 5+ metaphors, patterns, or ideas from the product's world.
|
|
63
|
+
Example (clinic scheduling): appointment slots, patient flow, triage priority, clinical notes, white coat.
|
|
64
|
+
|
|
65
|
+
2. **Color world** — 5+ colors that exist naturally in that domain.
|
|
66
|
+
Example (clinic): antiseptic white, calm blue (trust, clinical), soft green (go/available), amber (warning/urgent), warm gray (neutral).
|
|
67
|
+
|
|
68
|
+
3. **Signature element** — One thing that could only belong to THIS product.
|
|
69
|
+
Example: a subtle "pulse" animation on available time slots, echoing a heartbeat.
|
|
70
|
+
|
|
71
|
+
4. **Defaults to avoid** — 3 obvious, generic choices that must be replaced.
|
|
72
|
+
Example: blue primary button → calm teal; card shadows → border-only depth; Inter font → IBM Plex Sans (clinical precision).
|
|
73
|
+
|
|
74
|
+
**The identity test:** Remove the product name. Could someone identify what this is for?
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Phase 2 — Pick a design direction
|
|
79
|
+
|
|
80
|
+
Choose ONE direction. Never mix. Mixing produces visual noise.
|
|
81
|
+
|
|
82
|
+
### Precision & Density
|
|
83
|
+
*For: dashboards, admin panels, developer tools, power-user interfaces.*
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
Foundation : Cool slate (borders-only depth)
|
|
87
|
+
Spacing : 4px base — scale: 4, 8, 12, 16, 24, 32
|
|
88
|
+
Colors : foreground=slate-900, secondary=slate-600, muted=slate-400,
|
|
89
|
+
faint=slate-200, border=rgba(0,0,0,0.08), accent=blue-600
|
|
90
|
+
Radius : 4px / 6px / 8px (sharp, technical)
|
|
91
|
+
Typography : system-ui, 11–18px, weights 400/500/600
|
|
92
|
+
monospace: SF Mono, Consolas (for data/code)
|
|
93
|
+
Components :
|
|
94
|
+
Button → 32px height, 8px/12px padding, 4px radius, 13px 500-weight
|
|
95
|
+
Card → 0.5px faint border, 12px padding, 6px radius, NO shadows
|
|
96
|
+
Table → 8px/12px cell padding, tabular-nums, 13px font, 1px bottom border
|
|
97
|
+
Rationale : borders-only maximizes density; compact sizing serves power users;
|
|
98
|
+
system fonts feel native and load instantly.
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Warmth & Approachability
|
|
102
|
+
*For: consumer apps, collaborative tools, onboarding flows, customer-facing products.*
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
Foundation : Warm stone (subtle shadows)
|
|
106
|
+
Spacing : 4px base — scale: 8, 12, 16, 24, 32, 48 (generous)
|
|
107
|
+
Colors : foreground=stone-900, secondary=stone-600, accent=orange-500,
|
|
108
|
+
surface=white on stone-50
|
|
109
|
+
Radius : 8px / 12px / 16px (rounded, friendly)
|
|
110
|
+
Typography : Inter, 13–24px, weights 400/500/600
|
|
111
|
+
Components :
|
|
112
|
+
Button → 40px height, 12px/20px padding, 8px radius
|
|
113
|
+
Card → 20px padding, 12px radius, white on stone-50
|
|
114
|
+
Input → 44px height, 12px/16px padding, 1.5px faint border
|
|
115
|
+
Rationale : subtle shadows add approachable depth; generous spacing enables
|
|
116
|
+
focused tasks; warm tones feel human and inviting.
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Sophistication & Trust
|
|
120
|
+
*For: fintech, enterprise SaaS, operational products where clarity and trust matter more than novelty.*
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
Foundation : Cool mineral (restrained layers)
|
|
124
|
+
Spacing : 4px base — scale: 4, 8, 12, 16, 24, 32
|
|
125
|
+
Colors : foreground=slate-950, secondary=slate-700, muted=slate-500,
|
|
126
|
+
surface=white, border=rgba(15,23,42,0.10), accent=blue-700
|
|
127
|
+
Radius : 8px / 10px / 12px (firm, not playful)
|
|
128
|
+
Typography : IBM Plex Sans or Public Sans, 12–20px, weights 400/500/600
|
|
129
|
+
Components :
|
|
130
|
+
Button → 38px height, 12px/18px padding, 10px radius
|
|
131
|
+
Card → 16px padding, 10px radius, subtle border, rare soft shadow
|
|
132
|
+
Table → 10px/14px cell padding, tabular-nums, quiet row dividers
|
|
133
|
+
Rationale : trust comes from control, not decoration; a restrained palette and
|
|
134
|
+
firm typography make the product feel expensive and dependable.
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Premium Dark Platform
|
|
138
|
+
*For: premium dashboards, media/catalog products, command surfaces, high-density apps with persistent navigation.*
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
Foundation : Graphite layers (borders-first)
|
|
142
|
+
Spacing : 4px base — scale: 4, 8, 12, 16, 24, 32
|
|
143
|
+
Colors : base=#0b1015, surface=#10161d, elevated=#151c24,
|
|
144
|
+
foreground=#f3f7fb, secondary=#b7c2cf, muted=#7f8b99,
|
|
145
|
+
border=rgba(255,255,255,0.08), accent=desaturated blue
|
|
146
|
+
Radius : 12px / 14px / 16px (premium, controlled)
|
|
147
|
+
Typography : Manrope, Geist, or IBM Plex Sans, 12–22px, weights 400/500/600
|
|
148
|
+
Components :
|
|
149
|
+
Button → 40px height, 12px/18px padding, 12px radius
|
|
150
|
+
Card → layered surfaces, 16px padding, 14px radius, no heavy glow
|
|
151
|
+
Sidebar → quiet active state, compact icon rhythm, clean section grouping
|
|
152
|
+
Rationale : premium dark works when contrast is controlled, surfaces are few,
|
|
153
|
+
and borders quietly separate the system without turning neon.
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Other directions (adapt token specs above)
|
|
157
|
+
- **Data & Analysis** — cool blue, high-density tables, monospace for numbers, minimal chrome
|
|
158
|
+
- **Editorial** — strong typographic hierarchy, generous white space, restrained color
|
|
159
|
+
- **Commerce** — aspirational photography support, high contrast CTAs, smooth transitions
|
|
160
|
+
- **Minimal & Calm** — near-monochrome, whitespace as design element, hairline borders only
|
|
161
|
+
- **Boldness & Clarity** — stronger accent, harder contrast, one dominant focal move
|
|
162
|
+
- **Utility & Function** — minimal decoration, maximum legibility, near-invisible chrome
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Phase 3 — Decision checkpoint before components
|
|
167
|
+
|
|
168
|
+
Before building any screen or component family, write a short checkpoint that locks:
|
|
169
|
+
- Depth strategy
|
|
170
|
+
- Surface levels
|
|
171
|
+
- Border recipe (including alpha)
|
|
172
|
+
- Spacing base
|
|
173
|
+
- Radius ladder
|
|
174
|
+
- Control height
|
|
175
|
+
- Typography anchor
|
|
176
|
+
- Motion posture
|
|
177
|
+
|
|
178
|
+
Example:
|
|
179
|
+
|
|
180
|
+
> Depth: borders-only • Surfaces: base / surface / elevated • Borders: rgba(15,23,42,0.08) • Spacing: 8px • Radius: 10/12 • Controls: 38px • Type: IBM Plex Sans 14/16/24 • Motion: 120ms ease-out
|
|
181
|
+
|
|
182
|
+
Premium dark example:
|
|
183
|
+
|
|
184
|
+
> Depth: borders-first • Surfaces: #0b1015 / #10161d / #151c24 • Borders: rgba(255,255,255,0.08) • Spacing: 8px • Radius: 12/14 • Controls: 40px • Type: Geist 14/16/28 • Motion: 140ms ease-out
|
|
185
|
+
|
|
186
|
+
If you cannot state the checkpoint clearly, the system is not ready to build.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Token architecture (always define all levels)
|
|
191
|
+
|
|
192
|
+
### Color tokens
|
|
193
|
+
```
|
|
194
|
+
foreground/primary ← body text, labels, high-emphasis
|
|
195
|
+
foreground/secondary ← supporting text, placeholders
|
|
196
|
+
foreground/muted ← captions, disabled labels
|
|
197
|
+
foreground/faint ← decorative only, never critical
|
|
198
|
+
|
|
199
|
+
background/base ← page background
|
|
200
|
+
background/surface ← cards, panels
|
|
201
|
+
background/elevated ← modals, dropdowns (if shadow system)
|
|
202
|
+
background/sunken ← inputs, inset areas
|
|
203
|
+
|
|
204
|
+
border/default ← standard separator
|
|
205
|
+
border/strong ← focused inputs, active states
|
|
206
|
+
border/faint ← ultra-subtle dividers
|
|
207
|
+
|
|
208
|
+
brand/primary ← main CTA color
|
|
209
|
+
brand/secondary ← supporting brand accent
|
|
210
|
+
|
|
211
|
+
semantic/success ← green family
|
|
212
|
+
semantic/warning ← amber family
|
|
213
|
+
semantic/danger ← red family
|
|
214
|
+
semantic/info ← blue family
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Spacing — base × multiples only
|
|
218
|
+
Never use arbitrary values (17px, 22px, 37px). Every value must be a multiple of your base.
|
|
219
|
+
|
|
220
|
+
### Depth — pick ONE and commit
|
|
221
|
+
- **Borders only** — `border: 1px solid border/faint` — maximum density, zero visual noise
|
|
222
|
+
- **Subtle shadows** — `box-shadow: 0 1px 3px rgba(0,0,0,0.08)` — gentle, approachable
|
|
223
|
+
- **Layered** — background elevation with no shadows or borders — modern, minimal
|
|
224
|
+
|
|
225
|
+
**Never mix depth strategies on the same surface.**
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Component quality (mandatory for every component)
|
|
230
|
+
|
|
231
|
+
Define all six states before handing off to @dev:
|
|
232
|
+
|
|
233
|
+
| State | What to specify |
|
|
234
|
+
|---|---|
|
|
235
|
+
| Default | baseline appearance |
|
|
236
|
+
| Hover | subtle shift (background, border, or opacity) |
|
|
237
|
+
| Focus | visible ring — `outline: 2px solid brand/primary; outline-offset: 2px` |
|
|
238
|
+
| Active / pressed | slight scale or brightness change |
|
|
239
|
+
| Disabled | reduced opacity (0.4–0.5), no cursor pointer, no hover effect |
|
|
240
|
+
| Loading | skeleton or spinner — never block critical flow |
|
|
241
|
+
|
|
242
|
+
Also define for container components:
|
|
243
|
+
- **Empty state** — illustration or message + primary action
|
|
244
|
+
- **Error state** — clear message + recovery action
|
|
245
|
+
- **Success confirmation** — when relevant, transient (not permanent)
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Forms
|
|
250
|
+
|
|
251
|
+
- Labels outside placeholders. Placeholders are hints, not labels.
|
|
252
|
+
- Validate on blur (not on keystroke, not on submit only).
|
|
253
|
+
- Inline field errors directly below the field. One global summary for multi-field failures.
|
|
254
|
+
- Disable the submit button and show progress during async operations.
|
|
255
|
+
- Input height minimum: 40px (desktop), 44px (mobile/touch).
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Typography hierarchy
|
|
260
|
+
|
|
261
|
+
Size alone is never enough. Use weight + tracking + opacity to create layers:
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
Page title : largest size, 600-weight, tight tracking
|
|
265
|
+
Section title: medium-large, 500-weight, normal tracking
|
|
266
|
+
Body : base size, 400-weight, comfortable line-height (1.5–1.6)
|
|
267
|
+
Helper/meta : small, 400-weight, muted color
|
|
268
|
+
Data/mono : monospace for numbers in tables, code, metrics
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## Layout and composition
|
|
274
|
+
|
|
275
|
+
- **Rhythm** — interfaces breathe unevenly: dense tool areas give way to open content. Same card size, same gaps everywhere = flatness = no one decided.
|
|
276
|
+
- **Proportions declare intent** — a 280px sidebar says "navigation serves content." A 360px sidebar says "these are peers." Know what your proportions are saying.
|
|
277
|
+
- **One focal point per screen** — the primary action dominates through size, position, contrast, or surrounding space. When everything competes equally, nothing wins.
|
|
278
|
+
- **Reading order** — 1. Page intent → 2. Primary action → 3. Supporting data. Never invert.
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Accessibility baseline (non-negotiable)
|
|
283
|
+
|
|
284
|
+
- Semantic HTML and proper landmarks (`<main>`, `<nav>`, `<header>`, `<aside>`)
|
|
285
|
+
- Full keyboard navigation — Tab order must match visual reading order
|
|
286
|
+
- Visible focus rings on all interactive elements
|
|
287
|
+
- Color contrast: 4.5:1 for body text, 3:1 for large text and UI components
|
|
288
|
+
- Never convey meaning through color alone — add icon, pattern, or text
|
|
289
|
+
- `aria-label` on icon-only buttons, `aria-live` on dynamic status regions
|
|
290
|
+
- `prefers-reduced-motion` fallback for all animations
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## Motion rules
|
|
295
|
+
|
|
296
|
+
- Motion clarifies transitions, it does not decorate them.
|
|
297
|
+
- Duration: micro-interactions 100–150ms, page transitions 200–300ms.
|
|
298
|
+
- Easing: ease-out for entrances, ease-in for exits.
|
|
299
|
+
- Never animate properties that affect layout (width, height, padding). Animate transform and opacity only.
|
|
300
|
+
- Always provide `prefers-reduced-motion: reduce` fallback.
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## Quality checks (run before delivering)
|
|
305
|
+
|
|
306
|
+
### Swap test
|
|
307
|
+
Would swapping the typeface or layout make the design look like a different product?
|
|
308
|
+
If yes — good. If no — the design has no identity.
|
|
309
|
+
|
|
310
|
+
### Squint test
|
|
311
|
+
Blur your eyes (or the screenshot). Does the visual hierarchy still read clearly?
|
|
312
|
+
If not — the hierarchy is too weak.
|
|
313
|
+
|
|
314
|
+
### Signature test
|
|
315
|
+
Can you point to five specific decisions where your craft appears?
|
|
316
|
+
If you cannot name five — you defaulted somewhere.
|
|
317
|
+
|
|
318
|
+
### Token test
|
|
319
|
+
Do your CSS variable names sound like they belong to THIS product?
|
|
320
|
+
Generic: `--color-primary`. Specific: `--slot-available`, `--urgency-amber`.
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## Self-critique before delivery
|
|
325
|
+
|
|
326
|
+
Walk through each section before handing off:
|
|
327
|
+
|
|
328
|
+
1. **Composition** — Does the layout have rhythm? Are proportions intentional? Is there one clear focal point?
|
|
329
|
+
2. **Craft** — Is every spacing value on-grid? Does typography use weight + tracking + size (not size alone)? Do surfaces whisper hierarchy without thick borders or dramatic shadows?
|
|
330
|
+
3. **Content** — Does the spec tell one coherent story? Could a real person at a real company act on this?
|
|
331
|
+
4. **Structure** — Are there any hacks? Negative-margin workarounds? Arbitrary pixel values? Fix them.
|
|
332
|
+
|
|
333
|
+
**Ask yourself: "If a design lead reviewed this, what would they call out?" Fix that thing. Then ask again.**
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## Update design memory
|
|
338
|
+
|
|
339
|
+
When the work introduces or changes reusable design decisions, update `.interface-design/system.md` with:
|
|
340
|
+
- Final direction and anti-goals
|
|
341
|
+
- Token block
|
|
342
|
+
- Component pattern notes
|
|
343
|
+
- New exceptions or constraints
|
|
344
|
+
|
|
345
|
+
This file is the continuity layer between screens, agents, and future sessions.
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
## Stack-specific notes
|
|
350
|
+
|
|
351
|
+
| Stack | Priority |
|
|
352
|
+
|---|---|
|
|
353
|
+
| Laravel + TALL | Flux UI / Livewire primitives first; custom only for signature moves |
|
|
354
|
+
| Filament | Built-in Filament components before any override |
|
|
355
|
+
| Next.js + shadcn/ui | shadcn primitives + Tailwind tokens; keep component boundaries clean |
|
|
356
|
+
| React + Tailwind | Design token CSS vars → Tailwind config → components |
|
|
357
|
+
| Vue + Nuxt | Nuxt UI or PrimeVue first; avoid mixing component libraries |
|
|
358
|
+
| Vanilla HTML | Define CSS custom properties at `:root`, semantic class names only |
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## Handoff to @dev
|
|
363
|
+
|
|
364
|
+
The ui-spec.md must include:
|
|
365
|
+
- Design token block (fonts, colors, spacing, radius, depth strategy, motion)
|
|
366
|
+
- Per-screen layout notes with component names mapped to real library components
|
|
367
|
+
- Full state matrix (default/hover/focus/active/disabled/loading/empty/error/success)
|
|
368
|
+
- Responsive rules (mobile breakpoints first)
|
|
369
|
+
- Accessibility checklist items
|
|
370
|
+
- Any signature visual moves with implementation notes
|
|
371
|
+
|
|
372
|
+
**Keep the spec concise enough to code from directly. Not a design document — a build contract.**
|