@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.
Files changed (288) hide show
  1. package/CHANGELOG.md +456 -0
  2. package/CODE_OF_CONDUCT.md +12 -0
  3. package/CONTRIBUTING.md +13 -0
  4. package/LICENSE +21 -0
  5. package/README.md +254 -0
  6. package/bin/aioson.js +4 -0
  7. package/docs/en/cli-reference.md +398 -0
  8. package/docs/en/i18n.md +52 -0
  9. package/docs/en/json-schemas.md +41 -0
  10. package/docs/en/mcp.md +56 -0
  11. package/docs/en/parallel.md +82 -0
  12. package/docs/en/qa-browser.md +339 -0
  13. package/docs/en/release-flow.md +22 -0
  14. package/docs/en/release-notes-template.md +41 -0
  15. package/docs/en/release.md +28 -0
  16. package/docs/en/schemas/agent-prompt.schema.json +17 -0
  17. package/docs/en/schemas/agents.schema.json +32 -0
  18. package/docs/en/schemas/context-validate.schema.json +36 -0
  19. package/docs/en/schemas/doctor.schema.json +89 -0
  20. package/docs/en/schemas/error.schema.json +24 -0
  21. package/docs/en/schemas/i18n-add.schema.json +15 -0
  22. package/docs/en/schemas/index.json +116 -0
  23. package/docs/en/schemas/info.schema.json +39 -0
  24. package/docs/en/schemas/init.schema.json +48 -0
  25. package/docs/en/schemas/install.schema.json +60 -0
  26. package/docs/en/schemas/locale-apply.schema.json +30 -0
  27. package/docs/en/schemas/mcp-doctor.schema.json +95 -0
  28. package/docs/en/schemas/mcp-init.schema.json +122 -0
  29. package/docs/en/schemas/package-test.schema.json +24 -0
  30. package/docs/en/schemas/parallel-assign.schema.json +57 -0
  31. package/docs/en/schemas/parallel-doctor.schema.json +86 -0
  32. package/docs/en/schemas/parallel-init.schema.json +53 -0
  33. package/docs/en/schemas/parallel-status.schema.json +94 -0
  34. package/docs/en/schemas/setup-context.schema.json +39 -0
  35. package/docs/en/schemas/smoke.schema.json +23 -0
  36. package/docs/en/schemas/update.schema.json +48 -0
  37. package/docs/en/schemas/workflow-plan.schema.json +30 -0
  38. package/docs/en/web3.md +54 -0
  39. package/docs/pt/README.md +46 -0
  40. package/docs/pt/advisor-spec.md +335 -0
  41. package/docs/pt/agentes.md +453 -0
  42. package/docs/pt/cenarios.md +1230 -0
  43. package/docs/pt/clientes-ai.md +224 -0
  44. package/docs/pt/comandos-cli.md +511 -0
  45. package/docs/pt/genome-3.0-spec.md +296 -0
  46. package/docs/pt/guia-engineer.md +226 -0
  47. package/docs/pt/inicio-rapido.md +138 -0
  48. package/docs/pt/profiler-system.md +214 -0
  49. package/docs/pt/runtime-observability.md +72 -0
  50. package/docs/pt/squad-genoma.md +777 -0
  51. package/docs/pt/web3.md +797 -0
  52. package/docs/testing/genome-2.0-manual-regression.md +23 -0
  53. package/docs/testing/genome-2.0-matrix.md +36 -0
  54. package/docs/testing/genome-2.0-rollout.md +184 -0
  55. package/package.json +50 -0
  56. package/src/agents.js +56 -0
  57. package/src/cli.js +497 -0
  58. package/src/commands/agents.js +142 -0
  59. package/src/commands/cloud.js +1767 -0
  60. package/src/commands/config.js +90 -0
  61. package/src/commands/context-validate.js +91 -0
  62. package/src/commands/doctor.js +123 -0
  63. package/src/commands/genome-doctor.js +41 -0
  64. package/src/commands/genome-migrate.js +49 -0
  65. package/src/commands/i18n-add.js +56 -0
  66. package/src/commands/info.js +41 -0
  67. package/src/commands/init.js +75 -0
  68. package/src/commands/install.js +68 -0
  69. package/src/commands/locale-apply.js +51 -0
  70. package/src/commands/locale-diff.js +126 -0
  71. package/src/commands/mcp-doctor.js +406 -0
  72. package/src/commands/mcp-init.js +379 -0
  73. package/src/commands/package-e2e.js +273 -0
  74. package/src/commands/parallel-assign.js +403 -0
  75. package/src/commands/parallel-doctor.js +437 -0
  76. package/src/commands/parallel-init.js +249 -0
  77. package/src/commands/parallel-status.js +290 -0
  78. package/src/commands/qa-doctor.js +185 -0
  79. package/src/commands/qa-init.js +161 -0
  80. package/src/commands/qa-report.js +58 -0
  81. package/src/commands/qa-run.js +873 -0
  82. package/src/commands/qa-scan.js +337 -0
  83. package/src/commands/runtime.js +948 -0
  84. package/src/commands/scan-project.js +1107 -0
  85. package/src/commands/setup-context.js +650 -0
  86. package/src/commands/smoke.js +426 -0
  87. package/src/commands/squad-doctor.js +358 -0
  88. package/src/commands/squad-export.js +46 -0
  89. package/src/commands/squad-pipeline.js +97 -0
  90. package/src/commands/squad-repair-genomes.js +39 -0
  91. package/src/commands/squad-status.js +424 -0
  92. package/src/commands/squad-validate.js +230 -0
  93. package/src/commands/test-agents.js +194 -0
  94. package/src/commands/update.js +55 -0
  95. package/src/commands/workflow-next.js +594 -0
  96. package/src/commands/workflow-plan.js +108 -0
  97. package/src/constants.js +314 -0
  98. package/src/context-parse-reason.js +22 -0
  99. package/src/context-writer.js +150 -0
  100. package/src/context.js +217 -0
  101. package/src/detector.js +261 -0
  102. package/src/doctor.js +289 -0
  103. package/src/execution-gateway.js +461 -0
  104. package/src/genome-files.js +198 -0
  105. package/src/genome-format.js +442 -0
  106. package/src/genome-schema.js +215 -0
  107. package/src/genomes/bindings.js +281 -0
  108. package/src/genomes.js +467 -0
  109. package/src/i18n/index.js +103 -0
  110. package/src/i18n/messages/en.js +784 -0
  111. package/src/i18n/messages/es.js +718 -0
  112. package/src/i18n/messages/fr.js +725 -0
  113. package/src/i18n/messages/pt-BR.js +818 -0
  114. package/src/i18n/scaffold.js +64 -0
  115. package/src/installer.js +232 -0
  116. package/src/lib/genomes/compat.js +206 -0
  117. package/src/lib/genomes/migrate.js +90 -0
  118. package/src/lib/squads/genome-repair.js +49 -0
  119. package/src/locales.js +84 -0
  120. package/src/onboarding.js +305 -0
  121. package/src/parser.js +53 -0
  122. package/src/prompt-tool.js +20 -0
  123. package/src/qa-html-report.js +472 -0
  124. package/src/runtime-store.js +1527 -0
  125. package/src/squads/apply-genome.js +21 -0
  126. package/src/squads/genome-binding-service.js +154 -0
  127. package/src/updater.js +32 -0
  128. package/src/utils.js +46 -0
  129. package/src/version.js +50 -0
  130. package/template/.aioson/advisors/.gitkeep +1 -0
  131. package/template/.aioson/agents/analyst.md +225 -0
  132. package/template/.aioson/agents/architect.md +221 -0
  133. package/template/.aioson/agents/dev.md +201 -0
  134. package/template/.aioson/agents/discovery-design-doc.md +196 -0
  135. package/template/.aioson/agents/genoma.md +300 -0
  136. package/template/.aioson/agents/orchestrator.md +107 -0
  137. package/template/.aioson/agents/pm.md +89 -0
  138. package/template/.aioson/agents/product.md +361 -0
  139. package/template/.aioson/agents/profiler-enricher.md +266 -0
  140. package/template/.aioson/agents/profiler-forge.md +188 -0
  141. package/template/.aioson/agents/profiler-researcher.md +245 -0
  142. package/template/.aioson/agents/qa.md +344 -0
  143. package/template/.aioson/agents/setup.md +381 -0
  144. package/template/.aioson/agents/squad.md +837 -0
  145. package/template/.aioson/agents/ux-ui.md +416 -0
  146. package/template/.aioson/config.md +56 -0
  147. package/template/.aioson/context/.gitkeep +0 -0
  148. package/template/.aioson/context/parallel/.gitkeep +0 -0
  149. package/template/.aioson/context/spec.md.template +37 -0
  150. package/template/.aioson/genomas/.gitkeep +0 -0
  151. package/template/.aioson/locales/en/agents/analyst.md +214 -0
  152. package/template/.aioson/locales/en/agents/architect.md +210 -0
  153. package/template/.aioson/locales/en/agents/dev.md +187 -0
  154. package/template/.aioson/locales/en/agents/discovery-design-doc.md +27 -0
  155. package/template/.aioson/locales/en/agents/genoma.md +212 -0
  156. package/template/.aioson/locales/en/agents/orchestrator.md +105 -0
  157. package/template/.aioson/locales/en/agents/pm.md +77 -0
  158. package/template/.aioson/locales/en/agents/product.md +310 -0
  159. package/template/.aioson/locales/en/agents/profiler-enricher.md +5 -0
  160. package/template/.aioson/locales/en/agents/profiler-forge.md +5 -0
  161. package/template/.aioson/locales/en/agents/profiler-researcher.md +5 -0
  162. package/template/.aioson/locales/en/agents/qa.md +214 -0
  163. package/template/.aioson/locales/en/agents/setup.md +342 -0
  164. package/template/.aioson/locales/en/agents/squad.md +247 -0
  165. package/template/.aioson/locales/en/agents/ux-ui.md +320 -0
  166. package/template/.aioson/locales/es/agents/analyst.md +203 -0
  167. package/template/.aioson/locales/es/agents/architect.md +208 -0
  168. package/template/.aioson/locales/es/agents/dev.md +183 -0
  169. package/template/.aioson/locales/es/agents/discovery-design-doc.md +19 -0
  170. package/template/.aioson/locales/es/agents/genoma.md +102 -0
  171. package/template/.aioson/locales/es/agents/orchestrator.md +108 -0
  172. package/template/.aioson/locales/es/agents/pm.md +81 -0
  173. package/template/.aioson/locales/es/agents/product.md +310 -0
  174. package/template/.aioson/locales/es/agents/profiler-enricher.md +5 -0
  175. package/template/.aioson/locales/es/agents/profiler-forge.md +5 -0
  176. package/template/.aioson/locales/es/agents/profiler-researcher.md +5 -0
  177. package/template/.aioson/locales/es/agents/qa.md +163 -0
  178. package/template/.aioson/locales/es/agents/setup.md +347 -0
  179. package/template/.aioson/locales/es/agents/squad.md +247 -0
  180. package/template/.aioson/locales/es/agents/ux-ui.md +201 -0
  181. package/template/.aioson/locales/fr/agents/analyst.md +203 -0
  182. package/template/.aioson/locales/fr/agents/architect.md +208 -0
  183. package/template/.aioson/locales/fr/agents/dev.md +183 -0
  184. package/template/.aioson/locales/fr/agents/discovery-design-doc.md +19 -0
  185. package/template/.aioson/locales/fr/agents/genoma.md +102 -0
  186. package/template/.aioson/locales/fr/agents/orchestrator.md +108 -0
  187. package/template/.aioson/locales/fr/agents/pm.md +81 -0
  188. package/template/.aioson/locales/fr/agents/product.md +310 -0
  189. package/template/.aioson/locales/fr/agents/profiler-enricher.md +5 -0
  190. package/template/.aioson/locales/fr/agents/profiler-forge.md +5 -0
  191. package/template/.aioson/locales/fr/agents/profiler-researcher.md +5 -0
  192. package/template/.aioson/locales/fr/agents/qa.md +163 -0
  193. package/template/.aioson/locales/fr/agents/setup.md +347 -0
  194. package/template/.aioson/locales/fr/agents/squad.md +247 -0
  195. package/template/.aioson/locales/fr/agents/ux-ui.md +201 -0
  196. package/template/.aioson/locales/pt-BR/agents/analyst.md +217 -0
  197. package/template/.aioson/locales/pt-BR/agents/architect.md +213 -0
  198. package/template/.aioson/locales/pt-BR/agents/dev.md +198 -0
  199. package/template/.aioson/locales/pt-BR/agents/discovery-design-doc.md +198 -0
  200. package/template/.aioson/locales/pt-BR/agents/genoma.md +297 -0
  201. package/template/.aioson/locales/pt-BR/agents/orchestrator.md +108 -0
  202. package/template/.aioson/locales/pt-BR/agents/pm.md +81 -0
  203. package/template/.aioson/locales/pt-BR/agents/product.md +316 -0
  204. package/template/.aioson/locales/pt-BR/agents/profiler-enricher.md +5 -0
  205. package/template/.aioson/locales/pt-BR/agents/profiler-forge.md +5 -0
  206. package/template/.aioson/locales/pt-BR/agents/profiler-researcher.md +5 -0
  207. package/template/.aioson/locales/pt-BR/agents/qa.md +217 -0
  208. package/template/.aioson/locales/pt-BR/agents/setup.md +371 -0
  209. package/template/.aioson/locales/pt-BR/agents/squad.md +772 -0
  210. package/template/.aioson/locales/pt-BR/agents/ux-ui.md +322 -0
  211. package/template/.aioson/mcp/servers.md +24 -0
  212. package/template/.aioson/profiler-reports/.gitkeep +1 -0
  213. package/template/.aioson/schemas/content-blueprint.schema.json +30 -0
  214. package/template/.aioson/schemas/genome-meta.schema.json +150 -0
  215. package/template/.aioson/schemas/genome.schema.json +115 -0
  216. package/template/.aioson/schemas/readiness.schema.json +27 -0
  217. package/template/.aioson/schemas/squad-blueprint.schema.json +172 -0
  218. package/template/.aioson/schemas/squad-manifest.schema.json +276 -0
  219. package/template/.aioson/skills/dynamic/README.md +30 -0
  220. package/template/.aioson/skills/dynamic/cardano-docs.md +16 -0
  221. package/template/.aioson/skills/dynamic/ethereum-docs.md +17 -0
  222. package/template/.aioson/skills/dynamic/flux-ui-docs.md +13 -0
  223. package/template/.aioson/skills/dynamic/laravel-docs.md +41 -0
  224. package/template/.aioson/skills/dynamic/npm-packages.md +16 -0
  225. package/template/.aioson/skills/dynamic/solana-docs.md +16 -0
  226. package/template/.aioson/skills/references/premium-command-center-ui/master-application-prompt.md +79 -0
  227. package/template/.aioson/skills/references/premium-command-center-ui/operational-ux-playbook.md +253 -0
  228. package/template/.aioson/skills/references/premium-command-center-ui/quality-validation-checklist.md +82 -0
  229. package/template/.aioson/skills/references/premium-command-center-ui/visual-system-and-component-patterns.md +270 -0
  230. package/template/.aioson/skills/static/django-patterns.md +342 -0
  231. package/template/.aioson/skills/static/fastapi-patterns.md +344 -0
  232. package/template/.aioson/skills/static/filament-patterns.md +267 -0
  233. package/template/.aioson/skills/static/flux-ui-components.md +262 -0
  234. package/template/.aioson/skills/static/git-conventions.md +227 -0
  235. package/template/.aioson/skills/static/interface-design.md +372 -0
  236. package/template/.aioson/skills/static/jetstream-setup.md +200 -0
  237. package/template/.aioson/skills/static/laravel-conventions.md +491 -0
  238. package/template/.aioson/skills/static/nextjs-patterns.md +321 -0
  239. package/template/.aioson/skills/static/node-express-patterns.md +317 -0
  240. package/template/.aioson/skills/static/node-typescript-patterns.md +282 -0
  241. package/template/.aioson/skills/static/premium-command-center-ui.md +190 -0
  242. package/template/.aioson/skills/static/rails-conventions.md +307 -0
  243. package/template/.aioson/skills/static/react-motion-patterns.md +577 -0
  244. package/template/.aioson/skills/static/static-html-patterns.md +1935 -0
  245. package/template/.aioson/skills/static/tall-stack-patterns.md +286 -0
  246. package/template/.aioson/skills/static/ui-ux-modern.md +75 -0
  247. package/template/.aioson/skills/static/web3-cardano-patterns.md +337 -0
  248. package/template/.aioson/skills/static/web3-ethereum-patterns.md +310 -0
  249. package/template/.aioson/skills/static/web3-security-checklist.md +284 -0
  250. package/template/.aioson/skills/static/web3-solana-patterns.md +324 -0
  251. package/template/.aioson/squads/.artisan/.gitkeep +0 -0
  252. package/template/.aioson/squads/.gitkeep +0 -0
  253. package/template/.aioson/squads/memory.md +5 -0
  254. package/template/.aioson/tasks/squad-analyze.md +83 -0
  255. package/template/.aioson/tasks/squad-create.md +99 -0
  256. package/template/.aioson/tasks/squad-design.md +100 -0
  257. package/template/.aioson/tasks/squad-export.md +20 -0
  258. package/template/.aioson/tasks/squad-extend.md +68 -0
  259. package/template/.aioson/tasks/squad-pipeline.md +122 -0
  260. package/template/.aioson/tasks/squad-repair.md +85 -0
  261. package/template/.aioson/tasks/squad-validate.md +58 -0
  262. package/template/.aioson/templates/squads/content-basic/template.json +21 -0
  263. package/template/.aioson/templates/squads/media-channel/template.json +24 -0
  264. package/template/.aioson/templates/squads/research-analysis/template.json +22 -0
  265. package/template/.aioson/templates/squads/software-delivery/template.json +21 -0
  266. package/template/.claude/commands/aioson/analyst.md +5 -0
  267. package/template/.claude/commands/aioson/architect.md +5 -0
  268. package/template/.claude/commands/aioson/dev.md +5 -0
  269. package/template/.claude/commands/aioson/orchestrator.md +5 -0
  270. package/template/.claude/commands/aioson/pm.md +5 -0
  271. package/template/.claude/commands/aioson/qa.md +5 -0
  272. package/template/.claude/commands/aioson/setup.md +5 -0
  273. package/template/.claude/commands/aioson/ux-ui.md +5 -0
  274. package/template/.gemini/GEMINI.md +10 -0
  275. package/template/.gemini/commands/aios-analyst.toml +4 -0
  276. package/template/.gemini/commands/aios-architect.toml +7 -0
  277. package/template/.gemini/commands/aios-dev.toml +8 -0
  278. package/template/.gemini/commands/aios-discovery-design-doc.toml +4 -0
  279. package/template/.gemini/commands/aios-orchestrator.toml +8 -0
  280. package/template/.gemini/commands/aios-pm.toml +8 -0
  281. package/template/.gemini/commands/aios-product.toml +4 -0
  282. package/template/.gemini/commands/aios-qa.toml +6 -0
  283. package/template/.gemini/commands/aios-setup.toml +3 -0
  284. package/template/.gemini/commands/aios-ux-ui.toml +8 -0
  285. package/template/AGENTS.md +67 -0
  286. package/template/CLAUDE.md +31 -0
  287. package/template/OPENCODE.md +24 -0
  288. 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.**