argos-harness 0.1.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 (217) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +21 -0
  3. package/assets/agents/auditor.md +140 -0
  4. package/assets/agents/commit-pr-pilot.md +154 -0
  5. package/assets/agents/explorer.md +93 -0
  6. package/assets/agents/implementer.md +117 -0
  7. package/assets/agents/leader.md +149 -0
  8. package/assets/agents/researcher.md +89 -0
  9. package/assets/agents/review-readability.md +87 -0
  10. package/assets/agents/review-reliability.md +100 -0
  11. package/assets/agents/review-resilience.md +87 -0
  12. package/assets/agents/review-risk.md +87 -0
  13. package/assets/agents/reviewer.md +167 -0
  14. package/assets/agents/ticket-audit.md +129 -0
  15. package/assets/hooks/argos-guard-destructive.sh +127 -0
  16. package/assets/hooks/argos-quality-gate.sh +129 -0
  17. package/assets/managed/aterrizaje.md +24 -0
  18. package/assets/managed/formato-respuesta.md +21 -0
  19. package/assets/managed/identidad.md +48 -0
  20. package/assets/managed/operaciones-seguras.md +14 -0
  21. package/assets/managed/orquestacion.md +169 -0
  22. package/assets/output-styles/argos.md +71 -0
  23. package/assets/skills/ai-sdk-5/SKILL.md +230 -0
  24. package/assets/skills/angular/SKILL.md +19 -0
  25. package/assets/skills/angular/references/architecture.md +137 -0
  26. package/assets/skills/angular/references/core.md +197 -0
  27. package/assets/skills/angular/references/forms.md +115 -0
  28. package/assets/skills/angular/references/performance.md +124 -0
  29. package/assets/skills/apollo-client/SKILL.md +61 -0
  30. package/assets/skills/app-blueprint/SKILL.md +45 -0
  31. package/assets/skills/app-blueprint/assets/module-template.md +48 -0
  32. package/assets/skills/app-blueprint/assets/system-template.md +38 -0
  33. package/assets/skills/app-blueprint/references/workflow.md +101 -0
  34. package/assets/skills/app-builder/SKILL.md +43 -0
  35. package/assets/skills/app-builder/phases/0-product.md +58 -0
  36. package/assets/skills/app-builder/phases/1-scaffold.md +33 -0
  37. package/assets/skills/app-builder/phases/10-store.md +40 -0
  38. package/assets/skills/app-builder/phases/2-data.md +34 -0
  39. package/assets/skills/app-builder/phases/3-domain.md +33 -0
  40. package/assets/skills/app-builder/phases/4-ui-nav.md +32 -0
  41. package/assets/skills/app-builder/phases/5-identity.md +30 -0
  42. package/assets/skills/app-builder/phases/6-polish.md +34 -0
  43. package/assets/skills/app-builder/phases/7-brand.md +31 -0
  44. package/assets/skills/app-builder/phases/8-web.md +30 -0
  45. package/assets/skills/app-builder/phases/9-docs.md +31 -0
  46. package/assets/skills/app-ia/SKILL.md +54 -0
  47. package/assets/skills/astro/SKILL.md +39 -0
  48. package/assets/skills/axios/SKILL.md +61 -0
  49. package/assets/skills/branch-pr/SKILL.md +200 -0
  50. package/assets/skills/bullmq/SKILL.md +55 -0
  51. package/assets/skills/chained-pr/SKILL.md +48 -0
  52. package/assets/skills/chained-pr/references/chaining-details.md +99 -0
  53. package/assets/skills/cognitive-doc-design/SKILL.md +81 -0
  54. package/assets/skills/comment-writer/SKILL.md +74 -0
  55. package/assets/skills/dashboard-ia/SKILL.md +54 -0
  56. package/assets/skills/django-drf/SKILL.md +180 -0
  57. package/assets/skills/go-testing/SKILL.md +47 -0
  58. package/assets/skills/go-testing/references/examples.md +89 -0
  59. package/assets/skills/issue-creation/SKILL.md +223 -0
  60. package/assets/skills/jira-epic/SKILL.md +306 -0
  61. package/assets/skills/jira-task/SKILL.md +382 -0
  62. package/assets/skills/judgment-day/SKILL.md +52 -0
  63. package/assets/skills/judgment-day/references/prompts-and-formats.md +98 -0
  64. package/assets/skills/lightsail-deploy/SKILL.md +44 -0
  65. package/assets/skills/lightsail-deploy/references/runbook.md +102 -0
  66. package/assets/skills/loop-back-debug/SKILL.md +102 -0
  67. package/assets/skills/mantine-form/SKILL.md +57 -0
  68. package/assets/skills/mongoose/SKILL.md +66 -0
  69. package/assets/skills/nextjs-15/SKILL.md +144 -0
  70. package/assets/skills/not-boring-mobile/SKILL.md +43 -0
  71. package/assets/skills/not-boring-mobile/references/not-boring-playbook.md +65 -0
  72. package/assets/skills/playwright/SKILL.md +315 -0
  73. package/assets/skills/pr-comments/SKILL.md +93 -0
  74. package/assets/skills/pr-create/SKILL.md +64 -0
  75. package/assets/skills/promo-video/SKILL.md +52 -0
  76. package/assets/skills/promo-video/assets/package.template.json +22 -0
  77. package/assets/skills/promo-video/assets/promo.template.tsx +469 -0
  78. package/assets/skills/promo-video/assets/theme.template.ts +27 -0
  79. package/assets/skills/promo-video/references/pipeline.md +119 -0
  80. package/assets/skills/promo-video-web/SKILL.md +51 -0
  81. package/assets/skills/promo-video-web/assets/browser-promo.template.tsx +385 -0
  82. package/assets/skills/promo-video-web/assets/capture.template.ts +70 -0
  83. package/assets/skills/promo-video-web/assets/package.template.json +26 -0
  84. package/assets/skills/promo-video-web/references/pipeline.md +84 -0
  85. package/assets/skills/pytest/SKILL.md +180 -0
  86. package/assets/skills/react-19/SKILL.md +118 -0
  87. package/assets/skills/react-hook-form/SKILL.md +59 -0
  88. package/assets/skills/react-router/SKILL.md +60 -0
  89. package/assets/skills/redux-toolkit/SKILL.md +60 -0
  90. package/assets/skills/review-diff/SKILL.md +101 -0
  91. package/assets/skills/ship-docs/SKILL.md +45 -0
  92. package/assets/skills/ship-docs/references/ship-docs-playbook.md +31 -0
  93. package/assets/skills/skill-creator/SKILL.md +97 -0
  94. package/assets/skills/skill-creator/assets/SKILL-TEMPLATE.md +68 -0
  95. package/assets/skills/skill-creator/references/skill-style-guide.md +79 -0
  96. package/assets/skills/skill-improver/SKILL.md +50 -0
  97. package/assets/skills/skill-improver/references/skill-style-guide.md +79 -0
  98. package/assets/skills/socketio/SKILL.md +58 -0
  99. package/assets/skills/spec-bootstrap/SKILL.md +62 -0
  100. package/assets/skills/store-ship/SKILL.md +52 -0
  101. package/assets/skills/store-ship/assets/android-supply.template.md +22 -0
  102. package/assets/skills/store-ship/assets/eas.template.json +32 -0
  103. package/assets/skills/store-ship/assets/maestro-flow.template.yaml +27 -0
  104. package/assets/skills/store-ship/assets/store.config.template.json +28 -0
  105. package/assets/skills/store-ship/references/pipeline.md +198 -0
  106. package/assets/skills/stripe/SKILL.md +83 -0
  107. package/assets/skills/tailwind-4/SKILL.md +193 -0
  108. package/assets/skills/tamagui/SKILL.md +60 -0
  109. package/assets/skills/tanstack-query/SKILL.md +58 -0
  110. package/assets/skills/ticket-intake/SKILL.md +55 -0
  111. package/assets/skills/typescript/SKILL.md +134 -0
  112. package/assets/skills/verify-before-done/SKILL.md +111 -0
  113. package/assets/skills/webapp-rebuilder/SKILL.md +48 -0
  114. package/assets/skills/webapp-rebuilder/assets/charter-template.md +46 -0
  115. package/assets/skills/webapp-rebuilder/references/workflow.md +47 -0
  116. package/assets/skills/winston-logging/SKILL.md +61 -0
  117. package/assets/skills/work-unit-commits/SKILL.md +84 -0
  118. package/assets/skills/zod-4/SKILL.md +210 -0
  119. package/assets/skills/zustand-5/SKILL.md +216 -0
  120. package/bin/argos.js +6 -0
  121. package/dist/commands/adopt.d.ts +35 -0
  122. package/dist/commands/adopt.d.ts.map +1 -0
  123. package/dist/commands/adopt.js +347 -0
  124. package/dist/commands/adopt.js.map +1 -0
  125. package/dist/commands/doctor.d.ts +20 -0
  126. package/dist/commands/doctor.d.ts.map +1 -0
  127. package/dist/commands/doctor.js +478 -0
  128. package/dist/commands/doctor.js.map +1 -0
  129. package/dist/commands/init.d.ts +32 -0
  130. package/dist/commands/init.d.ts.map +1 -0
  131. package/dist/commands/init.js +358 -0
  132. package/dist/commands/init.js.map +1 -0
  133. package/dist/commands/remove.d.ts +62 -0
  134. package/dist/commands/remove.d.ts.map +1 -0
  135. package/dist/commands/remove.js +487 -0
  136. package/dist/commands/remove.js.map +1 -0
  137. package/dist/commands/workspace.d.ts +73 -0
  138. package/dist/commands/workspace.d.ts.map +1 -0
  139. package/dist/commands/workspace.js +354 -0
  140. package/dist/commands/workspace.js.map +1 -0
  141. package/dist/index.d.ts +2 -0
  142. package/dist/index.d.ts.map +1 -0
  143. package/dist/index.js +24 -0
  144. package/dist/index.js.map +1 -0
  145. package/dist/lib/assets.d.ts +29 -0
  146. package/dist/lib/assets.d.ts.map +1 -0
  147. package/dist/lib/assets.js +57 -0
  148. package/dist/lib/assets.js.map +1 -0
  149. package/dist/lib/atomic-write.d.ts +17 -0
  150. package/dist/lib/atomic-write.d.ts.map +1 -0
  151. package/dist/lib/atomic-write.js +41 -0
  152. package/dist/lib/atomic-write.js.map +1 -0
  153. package/dist/lib/backup.d.ts +11 -0
  154. package/dist/lib/backup.d.ts.map +1 -0
  155. package/dist/lib/backup.js +42 -0
  156. package/dist/lib/backup.js.map +1 -0
  157. package/dist/lib/config.d.ts +36 -0
  158. package/dist/lib/config.d.ts.map +1 -0
  159. package/dist/lib/config.js +52 -0
  160. package/dist/lib/config.js.map +1 -0
  161. package/dist/lib/detect.d.ts +58 -0
  162. package/dist/lib/detect.d.ts.map +1 -0
  163. package/dist/lib/detect.js +330 -0
  164. package/dist/lib/detect.js.map +1 -0
  165. package/dist/lib/ficha.d.ts +10 -0
  166. package/dist/lib/ficha.d.ts.map +1 -0
  167. package/dist/lib/ficha.js +38 -0
  168. package/dist/lib/ficha.js.map +1 -0
  169. package/dist/lib/git.d.ts +27 -0
  170. package/dist/lib/git.d.ts.map +1 -0
  171. package/dist/lib/git.js +79 -0
  172. package/dist/lib/git.js.map +1 -0
  173. package/dist/lib/managed-files.d.ts +35 -0
  174. package/dist/lib/managed-files.d.ts.map +1 -0
  175. package/dist/lib/managed-files.js +97 -0
  176. package/dist/lib/managed-files.js.map +1 -0
  177. package/dist/lib/markers.d.ts +64 -0
  178. package/dist/lib/markers.d.ts.map +1 -0
  179. package/dist/lib/markers.js +157 -0
  180. package/dist/lib/markers.js.map +1 -0
  181. package/dist/lib/navori-import.d.ts +42 -0
  182. package/dist/lib/navori-import.d.ts.map +1 -0
  183. package/dist/lib/navori-import.js +65 -0
  184. package/dist/lib/navori-import.js.map +1 -0
  185. package/dist/lib/openclaw-agents.d.ts +53 -0
  186. package/dist/lib/openclaw-agents.d.ts.map +1 -0
  187. package/dist/lib/openclaw-agents.js +118 -0
  188. package/dist/lib/openclaw-agents.js.map +1 -0
  189. package/dist/lib/package-root.d.ts +11 -0
  190. package/dist/lib/package-root.d.ts.map +1 -0
  191. package/dist/lib/package-root.js +23 -0
  192. package/dist/lib/package-root.js.map +1 -0
  193. package/dist/lib/paths.d.ts +11 -0
  194. package/dist/lib/paths.d.ts.map +1 -0
  195. package/dist/lib/paths.js +16 -0
  196. package/dist/lib/paths.js.map +1 -0
  197. package/dist/lib/settings-merge.d.ts +125 -0
  198. package/dist/lib/settings-merge.d.ts.map +1 -0
  199. package/dist/lib/settings-merge.js +373 -0
  200. package/dist/lib/settings-merge.js.map +1 -0
  201. package/dist/lib/version.d.ts +3 -0
  202. package/dist/lib/version.d.ts.map +1 -0
  203. package/dist/lib/version.js +13 -0
  204. package/dist/lib/version.js.map +1 -0
  205. package/dist/lib/which.d.ts +8 -0
  206. package/dist/lib/which.d.ts.map +1 -0
  207. package/dist/lib/which.js +30 -0
  208. package/dist/lib/which.js.map +1 -0
  209. package/dist/lib/workspaces.d.ts +133 -0
  210. package/dist/lib/workspaces.d.ts.map +1 -0
  211. package/dist/lib/workspaces.js +241 -0
  212. package/dist/lib/workspaces.js.map +1 -0
  213. package/dist/lib/zod-messages.d.ts +4 -0
  214. package/dist/lib/zod-messages.d.ts.map +1 -0
  215. package/dist/lib/zod-messages.js +28 -0
  216. package/dist/lib/zod-messages.js.map +1 -0
  217. package/package.json +44 -0
@@ -0,0 +1,101 @@
1
+ # app-blueprint workflow
2
+
3
+ The goal is reconstruction-grade documentation: a competent team with only the blueprint (and no source access) could rebuild the app with the same behavior. Every phase serves that bar.
4
+
5
+ Workspace root = the parent directory containing the target repos. All output goes to `<workspace-root>/blueprint/`.
6
+
7
+ ## Phase 0 — Inventory (scripts only, zero agent tokens)
8
+
9
+ Detect the stack from `package.json` deps (or `pyproject.toml`/`requirements.txt`), then run the cookbook below. Write results to `blueprint/<repo>/_inventory.json`. This file is the coverage contract: the audit in Phase 2 checks every item in it.
10
+
11
+ `_inventory.json` shape:
12
+
13
+ ```json
14
+ {
15
+ "repo": "name",
16
+ "stack": ["react", "vite", "redux", "axios"],
17
+ "kind": "frontend | backend | fullstack",
18
+ "files": ["src/..."],
19
+ "routes": [{"path": "/x", "component": "X", "protected": true, "source": "src/App.tsx:120"}],
20
+ "endpoints_exposed": [{"method": "POST", "path": "/sessions", "source": "src/routes/x.js:10"}],
21
+ "http_calls_consumed": [{"method": "GET", "url": "...", "source": "src/services/x.js:5"}],
22
+ "models": [{"name": "User", "source": "src/models/user.js"}],
23
+ "state": [{"slice": "auth", "source": "src/redux/auth.slice.js"}],
24
+ "jobs": [], "events": [], "env_vars": [], "external_integrations": []
25
+ }
26
+ ```
27
+
28
+ Populate only the arrays that apply to the stack. `files` is always the full source file list.
29
+
30
+ ### Command cookbook
31
+
32
+ Adapt patterns to the detected stack; these are starting points, not a fixed script. Run several in parallel.
33
+
34
+ Gotcha: `rg`/`fd` may be shell functions, invisible to subprocesses like python's `/bin/sh`. Run the rg/fd commands in the main Bash shell redirected to temp files, then assemble `_inventory.json` with a script that only parses those files.
35
+
36
+ - File list: `fd -t f -e ts -e tsx -e js -e jsx -e py . <repo>/src`
37
+ - React Router routes: `rg -n '<Route|path=|element=|createBrowserRouter|path:' <router-file>` — JSX routes are often multiline, so `<Route\s` alone misses most of them; capture `path=`/`element=` lines too.
38
+ - Express/Nest endpoints: `rg -n '\b(app|router)\.(get|post|put|patch|delete)\(|@(Get|Post|Put|Patch|Delete)\(' <repo>/src`
39
+ - HTTP calls consumed: `rg -n 'axios\.(get|post|put|patch|delete)|fetch\(|axios\(' <repo>/src`
40
+ - Models: `rg -n 'mongoose\.model|new Schema|prisma\.|sequelize\.define|class .*\(models\.Model\)' <repo>/src`
41
+ - Redux/Zustand state: `rg -n 'createSlice|createStore|create\(' <repo>/src/redux <repo>/src/store <repo>/src/stores`
42
+ - Jobs/crons: `rg -n 'cron|node-cron|Bull|agenda|setInterval' <repo>/src`
43
+ - Events/websockets: `rg -n '\.emit\(|\.on\(|socket|EventEmitter' <repo>/src`
44
+ - Env vars: `rg -oN 'process\.env\.[A-Z_]+|import\.meta\.env\.[A-Z_]+' <repo>/src | sort -u`
45
+ - External integrations: `rg -n 'firebase|googleapis|stripe|twilio|sendgrid|aws-sdk|@aws' <repo>/src <repo>/package.json`
46
+
47
+ ## Phase 1 — Module fan-out
48
+
49
+ Partition the inventory into 6-12 modules **by business domain** (auth, scheduling, evaluations, billing...), never by folder — a feature's logic spans pages, components, hooks, and services. Always include cross-cutting modules when present: `api-layer` (services/adapters/interceptors), `state` (stores/slices).
50
+
51
+ Spawn ALL module agents in one message (Agent tool, `subagent_type: general-purpose`, `model: sonnet`). Prompt template per agent:
52
+
53
+ ```
54
+ Document the "<module>" module of <repo> for reconstruction: someone rebuilding
55
+ the app from your doc alone must not lose any behavior.
56
+
57
+ Files assigned (read all of them fully): <file list from inventory>
58
+ Inventory slice (routes/endpoints/calls for this module): <slice>
59
+
60
+ Write the doc to <workspace-root>/blueprint/<repo>/<module>.md following the
61
+ template at <skill-dir>/assets/module-template.md (use the frontend or backend
62
+ sections per the repo kind: <kind>). Write in English.
63
+
64
+ Non-negotiable: business rules as numbered testable statements (BR-1, BR-2...)
65
+ with file:line refs. Capture validations, conditionals, permission checks,
66
+ status transitions, side effects (emails, notifications, jobs), and edge cases.
67
+ End the doc with a "Files covered" list of every assigned file you documented.
68
+
69
+ Your final message must be ONE line: "<module>: N rules, M endpoints/routes, files X/Y".
70
+ Do not include doc content in your final message.
71
+ ```
72
+
73
+ ## Phase 2 — Audit + synthesis
74
+
75
+ 1. Spawn one audit agent (inherit session model). It reads `_inventory.json` and every `Files covered` section plus route/endpoint tables in the module docs, then returns the list of inventory items not mapped anywhere (files, routes, endpoints, models, slices, jobs).
76
+ 2. If unmapped items remain: spawn gap agents (same template as Phase 1) to extend existing docs or add a `misc.md`. Re-audit once. Anything still unresolved goes to `_gaps.md` with the reason — never silently dropped.
77
+ 3. Write `blueprint/<repo>/README.md` yourself: purpose, stack, module index, full route table (path, guard, screen, services consumed) or endpoint table, env vars, external integrations.
78
+
79
+ Report to the user: files written, coverage (mapped/total inventory items), gaps.
80
+
81
+ ## `all` mode
82
+
83
+ Discover repos in the workspace root (dirs with `package.json`/`pyproject.toml`), confirm the list and exclusions with the user, then run Phases 0-2 per repo sequentially. Suggest `system` mode when done.
84
+
85
+ ## `system` mode
86
+
87
+ Reads blueprints only — never source code. Requires existing per-repo blueprints.
88
+
89
+ 1. Read every `blueprint/<repo>/README.md` and the api-layer/endpoint tables.
90
+ 2. Build the contract table: each HTTP call consumed by a frontend must match an endpoint exposed by some service. Mark `OK`, `MISSING` (nothing exposes it), or `ORPHAN` (exposed, never consumed).
91
+ 3. Write `blueprint/SYSTEM.md` from `assets/system-template.md`: system overview, repo map, cross-service flows (trace the 3-6 core user journeys end to end), contract table, auth model, shared integrations, gaps.
92
+
93
+ MISSING contracts are findings, not errors — an undocumented consumer may exist (mobile app, excluded repo). List them in SYSTEM.md.
94
+
95
+ ## Model assignment
96
+
97
+ | Work | Model |
98
+ |------|-------|
99
+ | Phase 0 scripts | none (Bash) |
100
+ | Module + gap agents | `sonnet` |
101
+ | Audit, README, SYSTEM.md | inherit session model |
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: app-builder
3
+ description: Feature multi-fase que orquesta skills para llevar de la definición de producto a una app publicada en las stores, con un quality gate por fase. Trigger: building a new app from scratch, React Native app, new app from zero, app from scratch, crear una app, app builder, app desde cero.
4
+ ---
5
+
6
+ # App Builder — contrato de orquestación
7
+
8
+ ## Rol del orquestador
9
+
10
+ Eres un COORDINADOR, no un ejecutor. Corres la fase 0 y delegas cada fase siguiente a un subagente; nunca implementas inline. Validas el gate, haces commit, persistes el artifact en Engram (`app/{app}/phase-{n}`) y avanzas. Hablas solo en los gates o ante un bloqueo.
11
+
12
+ ## Reglas duras
13
+
14
+ 1. No escribas código antes de aprobar la fase 0. El documento de producto es el contrato de todo lo que viene.
15
+ 2. Un solo monorepo, nunca varios repos: `apps/mobile`, `apps/web` y `apps/dashboard` cuando aplican, `apps/site` solo en tier 3, `packages/*` para el dominio compartido.
16
+ 3. Los gates son bloqueantes y secuenciales: la fase N arranca solo si el gate de la fase N-1 pasó. Nunca reordenes ni saltees fases.
17
+ 4. El carácter es entregable de la fase 4, no un retoque de la fase 5: tipografía, jerarquía y firma se construyen en gris antes de comprometer color.
18
+ 5. Para trabajo de UI carga primero la skill de craft más chica que sirva; nunca una skill de limpieza o genérica como primaria.
19
+ 6. Mantén el dominio puro y cubierto por tests, separado del wiring de persistencia.
20
+ 7. Commit tras cada chunk de trabajo: conventional commits, sin atribución de IA.
21
+ 8. Documenta el progreso de cada fase en un lugar durable (Engram u otro registro persistente del repo).
22
+
23
+ ## Tabla de fases
24
+
25
+ | n | Fase | Objetivo | Gate | Modelo |
26
+ |---|------|----------|------|--------|
27
+ | 0 | product | Documento de producto + nombre definitivo | El usuario aprueba el documento explícitamente, nombre incluido | fable |
28
+ | 1 | scaffold | Monorepo + app booteando en device | Bootea en device real y los primitivos consumen tokens | haiku |
29
+ | 2 | data | Schema, migraciones y seed | Typecheck limpio y el seed no duplica | sonnet |
30
+ | 3 | domain | Motor de dominio puro + tests | Tests pasan y typecheck limpio | sonnet |
31
+ | 4 | ui-nav | Navegación, pantallas core, auth completa, carácter estructural | El usuario recorre todos los flujos y funcionan | sonnet |
32
+ | 5 | identity | Color, tipografía característica, elemento de firma | El usuario confirma que se siente distintiva en device | fable |
33
+ | 6 | polish | Microinteracciones, movimiento, háptica | Verificado en device real | fable |
34
+ | 7 | brand | Concepto de logo + assets derivados | El usuario elige un concepto; assets verificados en dev build | fable |
35
+ | 8 | web | Páginas públicas según jerarquía de tres tiers | URLs públicas (privacy + support) live y válidas | sonnet |
36
+ | 9 | docs | README.md + DEPLOYMENT.md | README bootea un clone limpio; runbook completo | sonnet |
37
+ | 10 | store | Submission a stores como código | `eas submit` OK en ambas stores + checklist manual entregado | sonnet |
38
+
39
+ El detalle completo de cada fase (objetivo, protocolo, skills, cómo verificar el gate, artifacts, modelo) vive en `phases/<n>-<slug>.md` — por ejemplo `phases/0-product.md` o `phases/4-ui-nav.md` — y se carga recién cuando esa fase corre, nunca todas de entrada.
40
+
41
+ ## Result contract
42
+
43
+ Cada subagente de fase devuelve: `status` (done | partial | blocked), `executive_summary`, `artifacts`, `gate_evidence`, `risks`, `skill_resolution`. Antes de avanzar a la fase siguiente, el orquestador valida el contrato completo, la existencia real de los artifacts declarados, cero alucinación y cero drift contra el documento de producto.
@@ -0,0 +1,58 @@
1
+ # Fase 0 — Producto
2
+
3
+ ## Objetivo
4
+
5
+ Un documento de definición de producto aprobado por el usuario, con el nombre definitivo de la app decidido. Es el contrato de todo lo que se construye después: no se escribe código hasta que esté aprobado.
6
+
7
+ ## Protocolo
8
+
9
+ 1. **Ronda de preguntas batched PRIMERO.** Antes de redactar nada, haz UNA sola ronda de preguntas que cubra las decisiones que dan forma al documento: profundidad del motor, estrategia de contenido, límites de alcance, audiencia, y si el producto tiene dos lados (usuarios que consumen datos y staff que los administra → posible `apps/dashboard`). Nunca redactes el documento desde la idea cruda.
10
+ 2. **Documenta desde este scaffold.** Usa como base el siguiente esqueleto mínimo (es un punto de partida, no un tutorial):
11
+
12
+ ```markdown
13
+ # Definición de producto — <nombre de la app>
14
+
15
+ ## Pitch (una línea)
16
+ <qué hace la app, en una oración>
17
+
18
+ ## Usuario objetivo
19
+ <quién la usa y qué problema le resuelve>
20
+
21
+ ## Core loop
22
+ <el ciclo de uso principal, paso a paso>
23
+
24
+ ## Features must-have (v1)
25
+ - <feature 1>
26
+ - <feature 2>
27
+
28
+ ## No-goals explícitos
29
+ - <qué queda deliberadamente afuera de v1>
30
+
31
+ ## Nombre y marca
32
+ <nombre definitivo, tono de marca, referencias>
33
+ ```
34
+
35
+ La sección de nombre y marca es parte del documento, no un paso aparte. Apunta a un máximo de 2 iteraciones del documento (economía de tokens).
36
+ 3. **Gate: aprobación explícita CON nombre definitivo.** No avances al scaffold sin que el usuario apruebe el documento y confirme el nombre definitivo. El nombre definitivo es un artifact declarado de esta fase y parte de su gate.
37
+ 4. **Sincroniza el nombre al config.** Al cerrar la fase, guarda el nombre definitivo en el campo `name` de `argos.config.json` del repo (o ejecuta `argos adopt --refresh` si el detector automático ya puede inferirlo una vez creado el repo). Renombrar la carpeta es opcional y cosmético; nada del motor depende del basename después del init.
38
+
39
+ ## Skills
40
+
41
+ - `cognitive-doc-design` — carga al redactar el documento para reducir la carga cognitiva del lector. Si esta skill no está instalada en tu motor (no aparece en tu catálogo de skills disponibles), continúa sin ella o instálala antes de arrancar la fase — Argos no valida automáticamente disponibilidad de skills externas por fase.
42
+
43
+ ## Cómo verificar el gate
44
+
45
+ - El usuario dice explícitamente que aprueba el documento.
46
+ - El documento incluye la sección de nombre y marca con el nombre definitivo.
47
+ - `docs/product-definition.md` existe en el repo.
48
+ - El campo `name` de `argos.config.json` quedó actualizado con el nombre definitivo (a mano o vía `argos adopt --refresh`).
49
+
50
+ ## Artifacts
51
+
52
+ - `docs/product-definition.md` — siempre vive en el repo, cualquiera sea el store.
53
+ - `name` definitivo en el campo `name` de `argos.config.json`.
54
+ - Engram: `app/{app}/phase-0` (decisiones y nombre bloqueados).
55
+
56
+ ## Modelo
57
+
58
+ `fable` (Fable si está disponible, si no Opus), effort alto: la fase la decide el juicio, no la mecánica.
@@ -0,0 +1,33 @@
1
+ # Fase 1 — Scaffold
2
+
3
+ ## Objetivo
4
+
5
+ Un monorepo con la app Expo/React Native booteando en el device del usuario, el kit de primitivos de UI instalado y el contrato de tokens de dos capas scaffoldeado con valores neutros de Capa 1 (estructura).
6
+
7
+ ## Protocolo
8
+
9
+ 1. **Un solo monorepo.** Layout: `apps/mobile` (Expo/RN), `packages/*` para dominio compartido, config de backend en la raíz. El scaffold es parte de la feature, no un prerequisito.
10
+ 2. **Package manager: npm, no pnpm.** El layout de symlinks aislados de pnpm rompe la resolución de Metro.
11
+ 3. **Kit de primitivos vía el CLI de react-native-reusables.** Copia (owned, editable) en `components/ui/*`: Button, Input, Card, Text, más composites propios ListRow, Chip/Badge, ScreenHeader, LoadingState, EmptyState. Nunca importes primitivos de un paquete en runtime.
12
+ 4. **Contrato de tokens de dos capas en `lib/theme.ts`.** Capa 1 (estructura, ahora) con valores neutros: alturas de control, escala de radios, escala de espaciado, anchos de borde, slots de escala tipográfica. Sin decisiones de color: eso es Capa 2 en la fase 5.
13
+ 5. **Valida con `expo export`**, no solo `tsc`: tsc no ejercita la config de babel/metro.
14
+
15
+ ## Skills
16
+
17
+ - `expo-runtime`, `turbo-workspaces` — runtime de Expo, expo-sqlite, gotchas de Metro y layout de workspaces del monorepo.
18
+ - `typescript`, `ponytail` — si alguna de estas skills no está instalada en tu motor (no aparece en tu catálogo de skills disponibles), continúa sin ella o instálala antes de arrancar la fase; Argos no valida automáticamente disponibilidad de skills externas por fase.
19
+
20
+ ## Cómo verificar el gate
21
+
22
+ - La app bootea en el device real del usuario.
23
+ - Los primitivos existen en `components/ui/*` y cada uno consume tokens de `lib/theme.ts` — cero dimensiones inline.
24
+ - Sin lockfile ajeno (`pnpm-lock.yaml`, `yarn.lock`): su presencia es fallo de gate automático.
25
+
26
+ ## Artifacts
27
+
28
+ - `apps/mobile` scaffold, `components/ui/*`, `lib/theme.ts` (tokens Capa 1).
29
+ - Engram: `app/{app}/phase-1`.
30
+
31
+ ## Modelo
32
+
33
+ `haiku`, effort bajo: trabajo mecánico de scaffold.
@@ -0,0 +1,40 @@
1
+ # Fase 10 — Store ship
2
+
3
+ ## Objetivo
4
+
5
+ La submission a las stores como código, hasta que `eas submit` corre en ambas y el checklist manual queda entregado.
6
+
7
+ ## Prerequisitos duros
8
+
9
+ - **Metadata copy deriva del documento de producto (fase 0).** Nunca inventes el pitch de store.
10
+ - **URLs de privacy/support vienen de la fase 8.** Sin ellas la submission de App Store Connect no cierra.
11
+
12
+ Ambos son prerequisitos duros: verifica que existan antes de arrancar.
13
+
14
+ ## Protocolo
15
+
16
+ 1. **`store/` como código.** Metadata de iOS vía `eas metadata`, árbol supply de Play, screenshots.
17
+ 2. **`eas.json`** con perfiles de build y submit.
18
+ 3. **Screenshots con Maestro** corridos contra data demo seeded, en la matriz de devices requerida.
19
+ 4. **Build y submit.** `eas build` + `eas submit` a TestFlight / track interno de Play.
20
+ 5. **Checklist manual explícito.** App Privacy y content-rating questionnaires, primer upload de AAB en Play, cuenta demo para review. Las submissions corren en las cuentas de store del usuario.
21
+
22
+ ## Skills
23
+
24
+ - `store-ship` — envuelve EAS build/submit, metadata as code y screenshots Maestro. Si esta skill no está instalada en tu motor (no aparece en tu catálogo de skills disponibles), continúa sin ella o instálala antes de arrancar la fase; Argos no valida automáticamente disponibilidad de skills externas por fase.
25
+
26
+ La fase opcional de video promocional de la skill de origen queda fuera de v1; se retoma como iteración posterior si el usuario la pide.
27
+
28
+ ## Cómo verificar el gate
29
+
30
+ - `eas submit` OK en ambas stores: build visible en TestFlight, release creado en el track interno de Play.
31
+ - El checklist manual está entregado al usuario.
32
+
33
+ ## Artifacts
34
+
35
+ - `store/` (metadata iOS + Play), `eas.json`, flujos Maestro de screenshots.
36
+ - Engram: `app/{app}/phase-10`.
37
+
38
+ ## Modelo
39
+
40
+ `sonnet`, effort medio.
@@ -0,0 +1,34 @@
1
+ # Fase 2 — Capa de datos
2
+
3
+ ## Objetivo
4
+
5
+ El schema de datos, sus migraciones y un seed idempotente. Gate mecánico: la fase auto-avanza cuando la evidencia pasa.
6
+
7
+ ## Protocolo
8
+
9
+ 1. **SQLite vía `expo-sqlite` + Drizzle ORM.** Migraciones y queries tipadas.
10
+ 2. **Deriva el schema del documento de producto** (§7 reglas de negocio, §8 modelo de dominio). No inventes entidades fuera del documento.
11
+ 3. **Migraciones generadas, nunca a mano.** Configura `driver: "expo"` y deja que `drizzle-kit generate` emita el bundle. Mantén exactamente UN barrel de migraciones: Metro resuelve `.js` antes que `.ts`, y un `migrations.js` viejo tapa silenciosamente al `.ts` en device mientras tsc queda verde.
12
+ 4. **Seed idempotente:** salta si la tabla principal ya tiene filas. Trata el seed de contenido curado (§8 del documento) como trabajo de lanzamiento real, no un afterthought; despáchalo en slices de ~25-30 items si es grande.
13
+ 5. **Valida config de babel/metro con `expo export`**, no solo `tsc`.
14
+
15
+ ## Skills
16
+
17
+ - `expo-runtime` — expo-sqlite, Drizzle, gotchas de migraciones en device.
18
+ - `zod-validation` — valida datos externos en el límite de confianza.
19
+ - `typescript`, `ponytail` — si alguna de estas skills no está instalada en tu motor (no aparece en tu catálogo de skills disponibles), continúa sin ella o instálala antes de arrancar la fase; Argos no valida automáticamente disponibilidad de skills externas por fase.
20
+
21
+ ## Cómo verificar el gate
22
+
23
+ - `npx tsc --noEmit` limpio.
24
+ - El seed carga sin duplicar (corre dos veces: la segunda no agrega filas).
25
+ - `expo export --platform ios` no crashea por config de migraciones.
26
+
27
+ ## Artifacts
28
+
29
+ - `db/schema`, `db/migrations`, `db/seed` (con runner idempotente).
30
+ - Engram: `app/{app}/phase-2`.
31
+
32
+ ## Modelo
33
+
34
+ `sonnet`, effort medio.
@@ -0,0 +1,33 @@
1
+ # Fase 3 — Motor de dominio
2
+
3
+ ## Objetivo
4
+
5
+ La lógica de dominio pura más su wiring de persistencia, cubierta por tests unitarios. Gate mecánico: auto-avanza cuando la evidencia pasa.
6
+
7
+ ## Protocolo
8
+
9
+ 1. **Separa puro de wiring.** El módulo puro (`scoring.ts`) no importa DB ni RN y es unit-testeable; el módulo de wiring (`engine.ts`) conecta la lógica pura a Drizzle. Esta separación es una regla dura de la feature.
10
+ 2. **El dominio compartido vive en `packages/*`**, para que mobile y web lo reusen (browser-isomorphic). Nunca dupliques una regla de negocio entre app y dashboard: divergen.
11
+ 3. **Deriva las reglas del documento** (§7). Cada regla de negocio debe ser verificable en código o por observación; escribe un test por cada una.
12
+ 4. **Queries de Drizzle son lazy** — haz `await` de cada mutación o nunca corre.
13
+ 5. **Fechas de solo día:** construye desde componentes de fecha local, nunca `toISOString()` (el timezone corre el día).
14
+
15
+ ## Skills
16
+
17
+ - `verify-before-done` — corre el quality gate en este turno, no lo asumas del informe del subagente.
18
+ - `typescript`, `ponytail` — si alguna de estas skills no está instalada en tu motor (no aparece en tu catálogo de skills disponibles), continúa sin ella o instálala antes de arrancar la fase; Argos no valida automáticamente disponibilidad de skills externas por fase.
19
+
20
+ ## Cómo verificar el gate
21
+
22
+ - Los tests unitarios pasan (incluye un test por regla de negocio del §7).
23
+ - `npx tsc --noEmit` limpio.
24
+ - La lógica pura no tiene imports de framework ni de IO.
25
+
26
+ ## Artifacts
27
+
28
+ - `packages/*` (dominio puro compartido), `features/<domain>/engine` (wiring).
29
+ - Engram: `app/{app}/phase-3`.
30
+
31
+ ## Modelo
32
+
33
+ `sonnet`, effort medio.
@@ -0,0 +1,32 @@
1
+ # Fase 4 — UI + navegación
2
+
3
+ ## Objetivo
4
+
5
+ El modelo de navegación (con íconos de tab bar), las pantallas core, el onboarding, los componentes propios y la superficie de auth COMPLETA. Esta fase es donde la app gana su CARÁCTER: después, las fases solo recolorean y animan.
6
+
7
+ ## Protocolo
8
+
9
+ 1. **Auth completa, no solo login.** Además de sign-up/sign-in/sign-out: forgot/reset password, change password y borrado de cuenta in-app. El borrado de cuenta es OBLIGATORIO para cualquier app con creación de cuenta (guideline 5.1.1(v) de Apple). Planea el reset temprano; OTP por código evita la complejidad de deep-links.
10
+ 2. **Carácter estructural en gris.** Construye una escala tipográfica real (jerarquía de peso/tamaño, no plana), ritmo de espaciado deliberado y el elemento de firma estructural AHORA, todo bajo paleta NEUTRA (cero decisiones de color). Carácter estructural no es color: tipografía, composición, iconografía y craft de empty states se construyen aquí, en gris. Una fase 4 con pantallas planas, de peso uniforme y fuente del sistema es fallo de gate aunque los flujos funcionen.
11
+ 3. **Solo primitivos en pantallas.** Nunca `Pressable` ni `TextInput` directo para un control estándar: si un primitivo no calza, extiéndelo en `components/ui/*`. Extrae cualquier patrón usado en 2+ lugares a un componente propio.
12
+ 4. **Refinamiento UX/UI (ciclo con el usuario).** Tras el primer recorrido, itera sobre ergonomía de navegación, defaults, empty states, copy de error y conteo de taps del core loop; audita la densidad de información y re-jerarquiza pantallas saturadas (progressive disclosure). Cero identidad visual: la paleta neutra se queda.
13
+
14
+ ## Skills
15
+
16
+ - `expo-runtime`, `rn-performance` — runtime y performance de RN.
17
+ - `app-ia`, `impeccable` (primaria, carga y APLICA), `bolder`, `react-19`, `typescript`, `ponytail` — si alguna de estas skills no está instalada en tu motor (no aparece en tu catálogo de skills disponibles), continúa sin ella o instálala antes de arrancar la fase; Argos no valida automáticamente disponibilidad de skills externas por fase.
18
+
19
+ ## Cómo verificar el gate
20
+
21
+ - El usuario recorre TODOS los flujos y funcionan; confirma que las pantallas leen claras y ya tienen personalidad estructural en gris.
22
+ - `rg -n "Pressable|TextInput" app/ --glob '!components/ui/*'` devuelve cero.
23
+ - `rg -n "height: [0-9]|paddingVertical: [0-9]" app/` no muestra styling de control fuera de `components/ui/*`. Cualquier hit es fallo de gate automático.
24
+
25
+ ## Artifacts
26
+
27
+ - `app/*` (rutas, nav, auth), `components/ui/*` extendido.
28
+ - Engram: `app/{app}/phase-4`.
29
+
30
+ ## Modelo
31
+
32
+ `sonnet`, effort alto: aquí decide el juicio de diseño.
@@ -0,0 +1,30 @@
1
+ # Fase 5 — Identidad visual
2
+
3
+ ## Objetivo
4
+
5
+ Una dirección de color comprometida (valores de tokens) más las dos cosas que un swap de color no arregla: (1) tipografía real —un display face con carácter más un body face, cargados y aplicados vía escala tipográfica, nunca la fuente del sistema— y (2) un elemento de FIRMA por el que la app se recuerda. Es la pasada de Capa 2 (identidad) sobre los tokens de Capa 1 (estructura) de la fase 1.
6
+
7
+ ## Protocolo
8
+
9
+ 1. **Identidad = edición de valores de tokens, no de pantallas.** Redefine sobre los MISMOS nombres de token de Capa 1: colores, familias de fuente (pairing display/body real), valores del elemento de firma. Aterrizar Capa 2 es un token-value edit, no estructura nueva.
10
+ 2. **Cambiar la SHAPE es barato acá.** Un cambio compartido (más radio en todos los botones) = una edición de token en `lib/theme.ts`. Un cambio estructural (una variante nueva de Button) = un archivo de primitivo en `components/ui/*`. Las pantallas quedan intactas por construcción.
11
+ 3. **De-genericizar vive en tipo + firma, no en hex.** Un swap de token de color sobre una estructura genérica sigue siendo genérico. Un fondo casi-blanco/crema lee como "el default de la IA"; la distinción viene de comprometerse con color y tipo.
12
+ 4. **Presenta 2-4 opciones concretas** de dirección visual; el usuario elige. Nunca impongas una.
13
+
14
+ ## Skills
15
+
16
+ - `frontend-design` (primaria), `typeset`, `colorize`, `tailwind-4` — si alguna de estas skills no está instalada en tu motor (no aparece en tu catálogo de skills disponibles), continúa sin ella o instálala antes de arrancar la fase; Argos no valida automáticamente disponibilidad de skills externas por fase.
17
+
18
+ ## Cómo verificar el gate
19
+
20
+ - El usuario confirma que se siente distintiva, no genérica, EN DEVICE.
21
+ - El diff toca SOLO `lib/theme.ts` y `components/ui/*`. Cualquier cambio a un archivo de pantalla por styling es fallo de gate: significa que la Capa 2 se filtró a las pantallas en vez de aterrizar como edición de token.
22
+
23
+ ## Artifacts
24
+
25
+ - `lib/theme.ts` (tokens Capa 2), `components/ui/*`.
26
+ - Engram: `app/{app}/phase-5`.
27
+
28
+ ## Modelo
29
+
30
+ `fable`, effort alto: aquí decide el gusto.
@@ -0,0 +1,34 @@
1
+ # Fase 6 — Pulido creativo
2
+
3
+ ## Objetivo
4
+
5
+ Microinteracciones, movimiento y háptica que hacen la app deleitable, sin romper la identidad ya comprometida. Gate humano: verificado en device real.
6
+
7
+ ## Protocolo
8
+
9
+ 1. **Deleite con criterio.** Lo que funciona: scale-on-press (`active:scale-95`), animaciones de entrada escalonadas, un elemento de firma con movimiento, háptica solo en acciones significativas. Decora contenido, nunca affordances críticas.
10
+ 2. **Nunca gatees una CTA crítica tras una animación `entering` con delay.** En el primer mount tras el splash (fuentes/DB cargando), Reanimated puede congelar entradas con delay en opacity 0: botón invisible, sin error.
11
+ 3. **Nunca pongas className en un seam `cssInterop(createAnimatedComponent(...))` para UI crítica.** Cuando el interop falla, falla SILENCIOSO en runtime mientras tsc, tests y `expo export` quedan verdes. El press feedback va en un `Pressable` plano o un wrapper interno.
12
+ 4. **Háptica detrás de un wrapper** `lib/haptics.ts`. Respeta reduce-motion.
13
+ 5. **Dev build en device físico temprano:** los simuladores esconden háptica, fuentes y performance.
14
+
15
+ ## Skills
16
+
17
+ - `rn-performance` — performance de animaciones en RN.
18
+ - `verify-before-done` — mapea a la verificación en device: no des la fase por hecha sin evidencia real.
19
+ - `motion`, `not-boring-mobile` — si alguna de estas skills no está instalada en tu motor (no aparece en tu catálogo de skills disponibles), continúa sin ella o instálala antes de arrancar la fase; Argos no valida automáticamente disponibilidad de skills externas por fase.
20
+
21
+ ## Cómo verificar el gate
22
+
23
+ - El usuario verifica el movimiento y la háptica en un device real.
24
+ - Ninguna CTA crítica queda invisible tras el primer mount.
25
+ - reduce-motion honrado.
26
+
27
+ ## Artifacts
28
+
29
+ - `lib/haptics.ts`, animaciones y microinteracciones.
30
+ - Engram: `app/{app}/phase-6`.
31
+
32
+ ## Modelo
33
+
34
+ `fable`, effort medio: el gusto guía, pero el scope es acotado.
@@ -0,0 +1,31 @@
1
+ # Fase 7 — Marca
2
+
3
+ ## Objetivo
4
+
5
+ Un concepto de logo elegido por el usuario y todos los assets de marca derivados de esa marca, con un boot loader que unifica la experiencia de arranque.
6
+
7
+ ## Protocolo
8
+
9
+ 1. **Concepto primero, assets después.** Presenta 3 conceptos escritos de logo (mark/símbolo, tipografía, paleta desde los tokens de la app, rationale de cada uno). El usuario elige uno. El asset final del mark sale de una herramienta de imagen o diseñador: los SVG autorados por LLM tienen un techo de calidad duro. Esta fase deriva assets del mark, no lo inventa.
10
+ 2. **Normaliza el vector a los tokens** de la app antes de derivar nada.
11
+ 3. **Deriva del mark elegido:** app icon, set adaptive de Android (foreground dentro del círculo seguro 66%, fondo sólido, monocromo blanco para íconos tematizados), splash vía el mecanismo de la plataforma (transparente, imageWidth fijo, fondo de token), favicon.
12
+ 4. **Boot loader continuo.** Un boot loader in-app que renderiza la misma composición del splash (mismo asset, mismo ancho, mismo fondo) reemplazando todo spinner del boot path, para que splash nativo → fuentes → sesión → primera pantalla lea como una sola pantalla. Si el mark es simple (plano, icónico), reemplaza TODOS los spinners full-screen con el mark en un breathing loop sutil (escala ~1→1.05, ~1.8s, arranca en reposo, honra reduce-motion). Deja spinners planos solo para estados de control inline (dentro de botones).
13
+
14
+ ## Skills
15
+
16
+ - `frontend-design` — si esta skill no está instalada en tu motor (no aparece en tu catálogo de skills disponibles), continúa sin ella o instálala antes de arrancar la fase; Argos no valida automáticamente disponibilidad de skills externas por fase.
17
+
18
+ ## Cómo verificar el gate
19
+
20
+ - El usuario elige un concepto.
21
+ - Assets en su lugar y typecheck limpio.
22
+ - Splash/icon verificados en un dev build real (Expo Go no muestra splash/icon nativos).
23
+
24
+ ## Artifacts
25
+
26
+ - `assets/` (icono, adaptive, splash, favicon), boot loader compartido.
27
+ - Engram: `app/{app}/phase-7`.
28
+
29
+ ## Modelo
30
+
31
+ `fable`, effort medio.
@@ -0,0 +1,30 @@
1
+ # Fase 8 — App web
2
+
3
+ ## Objetivo
4
+
5
+ Páginas públicas de compliance (privacy + support OBLIGATORIAS; landing pitch opcional) live y válidas para App Store Connect. La decisión clave es qué tier construir.
6
+
7
+ ## Jerarquía de tres tiers — elige el PRIMER tier que aplique
8
+
9
+ 1. **El producto tiene web app (`apps/web`) → dobla las páginas públicas adentro** como rutas públicas: un solo codebase/deploy, reusa shadcn + tokens. La web app hereda los packages de dominio/datos compartidos (browser-isomorphic), así que es sobre todo un proyecto de UI. Orquesta con foundation-then-slices: un agente FOUNDATION secuencial (modelo top) que instala TODO, porta el design system y arma el shell + router con cada ruta pre-registrada; luego agentes FEATURE en PARALELO (sonnet) que espejan pantallas mobile, cada uno dueño de carpetas de ruta DISJUNTAS, sin npm installs ni edición de archivos compartidos; luego un review gate.
10
+ 2. **No hay web app, pero existe un dashboard (`apps/dashboard`) → agrega privacy/support como rutas PÚBLICAS en el dashboard.** Las rutas viven FUERA del auth gate y el deployment las sirve públicas. NADA de un Astro aparte: un site separado junto a un dashboard existente es infraestructura innecesaria. Despliega el dashboard si aún no lo está (ese deploy vale por sí solo). El dashboard es su propia app (React 19 + Vite + shadcn, registro restringido).
11
+ 3. **Ni web app ni dashboard → site estático mínimo Astro (`apps/site`).**
12
+
13
+ ## Skills
14
+
15
+ - `astro-islands` (solo tier 3), `review-diff` (review gate de consistencia; esta skill ya existe en este motor y es directamente resoluble) — mapeados al catálogo.
16
+ - `app-ia`, `dashboard-ia` (tier 2), `react-19`, `tailwind-4`, `frontend-design` — si alguna de estas skills no está instalada en tu motor (no aparece en tu catálogo de skills disponibles), continúa sin ella o instálala antes de arrancar la fase; Argos no valida automáticamente disponibilidad de skills externas por fase.
17
+
18
+ ## Cómo verificar el gate
19
+
20
+ - URLs públicas de privacy y support devuelven HTTP 200 SIN auth (verifica con `curl -I`, no con un browser logueado).
21
+ - Para deploys en Vercel: SSO deployment protection OFF en páginas públicas, Root Directory apuntando a la app correcta, alias no stale.
22
+
23
+ ## Artifacts
24
+
25
+ - Según tier: `apps/web` (rutas públicas) | rutas públicas en el dashboard | `apps/site`.
26
+ - Engram: `app/{app}/phase-8`.
27
+
28
+ ## Modelo
29
+
30
+ `sonnet`, effort alto: la orquestación del fan-out decide la calidad.
@@ -0,0 +1,31 @@
1
+ # Fase 9 — Docs de entrega
2
+
3
+ ## Objetivo
4
+
5
+ Un `README.md` y un `DEPLOYMENT.md` anclados al repo real, nunca boilerplate. Gate mecánico: derivados del repo y verificados contra él.
6
+
7
+ ## Protocolo
8
+
9
+ 1. **README.md derivado del repo.** Qué/por qué, arquitectura, layout del monorepo, prerequisitos, setup local, scripts, testing, troubleshooting. Cada dato sale del repo real; nada inventado.
10
+ 2. **DEPLOYMENT.md como runbook completo.** Referencia de env, runbooks de backend/web/mobile, checklist post-deploy, rollback. Debe ser verificable paso a paso.
11
+ 3. **Verifica contra el repo.** El README tiene que bootear un clone limpio: si un comando o path no existe en el repo, es un error, no un hueco.
12
+
13
+ ## Skills
14
+
15
+ - `verify-before-done` — verifica los comandos documentados en este turno, no los asumas.
16
+ - `ship-docs`, `cognitive-doc-design` — si alguna de estas skills no está instalada en tu motor (no aparece en tu catálogo de skills disponibles), continúa sin ella o instálala antes de arrancar la fase; Argos no valida automáticamente disponibilidad de skills externas por fase.
17
+
18
+ ## Cómo verificar el gate
19
+
20
+ - Un clone limpio sigue el README y la app corre.
21
+ - `DEPLOYMENT.md` cubre env, deploy y rollback de cada superficie.
22
+ - Cero comandos o paths que no existan en el repo.
23
+
24
+ ## Artifacts
25
+
26
+ - `README.md`, `DEPLOYMENT.md`.
27
+ - Engram: `app/{app}/phase-9`.
28
+
29
+ ## Modelo
30
+
31
+ `sonnet`, effort medio.
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: app-ia
3
+ description: Information architecture for consumer products (web + mobile) — flow-centric, one primary action, low cognitive load. Trigger: app information architecture, mobile app IA, consumer app UX, navigation model, onboarding flow, core loop, screen hierarchy, web app IA.
4
+ ---
5
+
6
+ # App Information Architecture
7
+
8
+ ## Activation Contract
9
+
10
+ Apply when structuring a consumer product (mobile or web app) — something a user adopts for their own goal. For operator/admin tools, use `dashboard-ia` instead. Covers web and mobile together; platform differences are execution, not IA.
11
+
12
+ ## Hard Rules
13
+
14
+ - **Organize around the CORE LOOP.** Identify the one repeated action that IS the product; the home/hero screen is that loop, reachable in zero taps.
15
+ - **One primary action per screen.** Every screen has a single obvious next step; secondary actions recede. Ambiguity is cognitive load.
16
+ - **Progressive disclosure.** Show the minimum needed to act now; reveal depth on demand. Never front-load settings, edge cases, or rare flows.
17
+ - **Onboarding drives to first value fast** — the shortest path to the user's first "it worked" moment, with minimum questions.
18
+ - **Navigation mirrors the user's TASKS,** not your data model or org chart. Name sections by what the user does, not by backend tables.
19
+ - **Match the user's mental model and language** — labels are the user's words, not internal jargon.
20
+ - **Empty states are conversion ramps.** A blank screen on day 1 is not an error; it must feature a clear Call to Action (CTA) that instantly triggers the core loop. Never show a dead end.
21
+ - **Ask for permissions in context (Just-in-Time).** Request access to camera, location, or notifications only when the user initiates an action that explicitly requires them — never front-load them in the onboarding flow.
22
+ - **Design the core loop for Optimistic UI.** Consumer apps face spotty connectivity. Assume success on primary actions instantly on the client to avoid blocking the user, syncing with the server in the background.
23
+
24
+ ## Decision Gates
25
+
26
+ | Signal | Nav model |
27
+ | ----------------------------------- | ------------------------------------------- |
28
+ | 3–5 peer areas, frequent switching | Bottom tabs (mobile) / top nav (web) |
29
+ | One dominant loop + shallow extras | Single home + push/modals |
30
+ | Deep hierarchy, browse-heavy | Drill-down stack + search |
31
+ | Rare / one-off flow | Modal or dedicated route, off the main nav |
32
+
33
+ ## Platform Notes
34
+
35
+ - **Mobile:** thumb reach (primary actions low), bottom tabs, gestures, one column, respect safe-area insets.
36
+ - **Web:** more space plus hover/keyboard, top or side nav, multi-column where it aids scanning — but keep the core loop unmistakable.
37
+
38
+ ## Execution Steps
39
+
40
+ 1. Name the core loop in one sentence; make it the home screen.
41
+ 2. For each screen, state its ONE primary action; demote everything else.
42
+ 3. Map top-level nav to user tasks; park rare flows off the main nav.
43
+ 4. Design onboarding backward from the first-value moment.
44
+ 5. Map the logical back-stack for deep links. Ensure users entering deep into the app via a URL or push notification can navigate up to the app's root via the "back" button, rather than getting trapped or exiting the app.
45
+
46
+ ## Output Contract
47
+
48
+ An IA where: the core loop is the home, each screen has one clear primary action, nav is task-named, onboarding reaches first value in the fewest steps, deep links have a logical back-stack, and empty states drive immediate action.
49
+
50
+ ## References
51
+
52
+ - Complement: `dashboard-ia` for operator tools; the `not-boring-mobile` skill for the delight visual register on mobile.
53
+
54
+ _Adapted from a skill originally authored by ricardomarin._