chati-dev 4.0.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/framework/agents/plan/ux.md +41 -1
- package/framework/config.yaml +3 -3
- package/framework/constitution.md +6 -0
- package/framework/data/entity-registry.yaml +43 -3
- package/framework/domains/constitution.yaml +1 -1
- package/framework/domains/global.yaml +7 -3
- package/framework/domains/workflows/standard-flow.yaml +33 -0
- package/framework/i18n/en.yaml +11 -2
- package/framework/i18n/es.yaml +11 -2
- package/framework/i18n/fr.yaml +11 -2
- package/framework/i18n/pt.yaml +11 -2
- package/framework/presets/nextjs.yaml +41 -0
- package/framework/presets/node-express.yaml +39 -0
- package/framework/presets/react-vite.yaml +37 -0
- package/framework/presets/supabase-fullstack.yaml +37 -0
- package/framework/templates/brandbook-tmpl.yaml +113 -0
- package/framework/templates/component-spec-tmpl.yaml +74 -0
- package/framework/templates/design-token-tmpl.yaml +55 -0
- package/framework/templates/icon-system-tmpl.yaml +95 -0
- package/package.json +1 -1
- package/scripts/bundle-framework.js +1 -1
- package/src/intelligence/decision-engine.js +3 -3
|
@@ -43,7 +43,47 @@ Define the user experience: information architecture, user flows, interaction pa
|
|
|
43
43
|
|
|
44
44
|
---
|
|
45
45
|
|
|
46
|
-
## Execution:
|
|
46
|
+
## Execution: 6 Phases
|
|
47
|
+
|
|
48
|
+
### Phase 0: Brand Identity (Brandbook)
|
|
49
|
+
```
|
|
50
|
+
PREREQUISITE: Brief handoff + Architecture handoff
|
|
51
|
+
|
|
52
|
+
Before defining any design tokens or visual patterns, establish the brand identity:
|
|
53
|
+
|
|
54
|
+
1. Define Brand Voice
|
|
55
|
+
- Personality traits (3-5 adjectives)
|
|
56
|
+
- Tone spectrum (formal <-> casual positioning)
|
|
57
|
+
- Writing principles and anti-patterns
|
|
58
|
+
|
|
59
|
+
2. Define Visual Language
|
|
60
|
+
- Mood descriptor and visual metaphor
|
|
61
|
+
- Density and contrast philosophy
|
|
62
|
+
- Texture strategy (flat, layered, glassmorphic, etc.)
|
|
63
|
+
|
|
64
|
+
3. Typography Rationale
|
|
65
|
+
- Display + body font pairing with WHY
|
|
66
|
+
- Hierarchy strategy
|
|
67
|
+
- Pairing logic explanation
|
|
68
|
+
|
|
69
|
+
4. Color Philosophy
|
|
70
|
+
- Primary color rationale (emotional, functional)
|
|
71
|
+
- Palette derivation logic
|
|
72
|
+
- Accessibility considerations
|
|
73
|
+
|
|
74
|
+
5. Spacing Rhythm
|
|
75
|
+
- Base unit selection + rationale
|
|
76
|
+
- Rhythm personality (generous, dense, modular)
|
|
77
|
+
|
|
78
|
+
6. Iconography Style
|
|
79
|
+
- Style direction (outline, solid, duo-tone)
|
|
80
|
+
- Preferred library alignment with brand personality
|
|
81
|
+
|
|
82
|
+
Output: chati.dev/artifacts/4-UX/brandbook.md
|
|
83
|
+
|
|
84
|
+
RULE: Every subsequent design decision must trace back to the brandbook.
|
|
85
|
+
RULE: Brandbook establishes the WHY — Design System (Phase 4) establishes the WHAT.
|
|
86
|
+
```
|
|
47
87
|
|
|
48
88
|
### Phase 1: User Flow Mapping
|
|
49
89
|
```
|
package/framework/config.yaml
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# chati.dev Configuration
|
|
2
|
-
version: "4.0.
|
|
2
|
+
version: "4.0.1"
|
|
3
3
|
installed_at: "2026-02-07T10:00:00Z"
|
|
4
|
-
updated_at: "2026-03-
|
|
5
|
-
installer_version: "4.0.
|
|
4
|
+
updated_at: "2026-03-18T00:00:00Z"
|
|
5
|
+
installer_version: "4.0.1"
|
|
6
6
|
project_type: greenfield
|
|
7
7
|
language: en
|
|
8
8
|
ides: [claude-code]
|
|
@@ -115,6 +115,12 @@ Every agent in Chati.dev:
|
|
|
115
115
|
4. Error messages are constructive: what failed, why, and how to fix
|
|
116
116
|
5. Status updates are concise and actionable
|
|
117
117
|
6. Technical jargon is adapted to detected user level (vibecoder vs power user)
|
|
118
|
+
7. Generated content MUST NOT contain AI-detectable writing patterns:
|
|
119
|
+
- No em dashes. Use commas, semicolons, colons, or periods instead
|
|
120
|
+
- Avoid formulaic phrases: "Delve into", "Dive into", "It's important to note that"
|
|
121
|
+
- Avoid stacking transitions: "Furthermore", "Moreover", "Additionally" in sequence
|
|
122
|
+
- Avoid over-hedging: "It could potentially perhaps maybe..."
|
|
123
|
+
- Write naturally. If a sentence reads like AI wrote it, rewrite it
|
|
118
124
|
|
|
119
125
|
**Enforcement: GUIDE** — Violations trigger guidance, not blocking.
|
|
120
126
|
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
# and by the Health Check for system integrity validation.
|
|
4
4
|
|
|
5
5
|
metadata:
|
|
6
|
-
version: "
|
|
7
|
-
last_updated: "2026-
|
|
8
|
-
entity_count:
|
|
6
|
+
version: "4.0.0"
|
|
7
|
+
last_updated: "2026-03-17T00:00:00Z"
|
|
8
|
+
entity_count: 55
|
|
9
9
|
checksum_algorithm: sha256
|
|
10
10
|
|
|
11
11
|
entities:
|
|
@@ -163,6 +163,38 @@ entities:
|
|
|
163
163
|
dependencies: [brief]
|
|
164
164
|
adaptability: 0.6
|
|
165
165
|
|
|
166
|
+
brandbook:
|
|
167
|
+
path: chati.dev/templates/brandbook-tmpl.yaml
|
|
168
|
+
type: template
|
|
169
|
+
purpose: "Brand identity foundation — voice, visual language, typography, color philosophy"
|
|
170
|
+
keywords: [brand, identity, voice, visual, typography, color]
|
|
171
|
+
dependencies: [ux]
|
|
172
|
+
adaptability: 0.8
|
|
173
|
+
|
|
174
|
+
design-tokens:
|
|
175
|
+
path: chati.dev/templates/design-token-tmpl.yaml
|
|
176
|
+
type: template
|
|
177
|
+
purpose: "Structured design token system — primitive, semantic, component, utility layers"
|
|
178
|
+
keywords: [design, tokens, colors, spacing, typography, components]
|
|
179
|
+
dependencies: [brandbook]
|
|
180
|
+
adaptability: 0.7
|
|
181
|
+
|
|
182
|
+
component-spec:
|
|
183
|
+
path: chati.dev/templates/component-spec-tmpl.yaml
|
|
184
|
+
type: template
|
|
185
|
+
purpose: "UI component specification — variants, states, anatomy, accessibility"
|
|
186
|
+
keywords: [component, specification, ui, variants, states, accessibility]
|
|
187
|
+
dependencies: [design-tokens]
|
|
188
|
+
adaptability: 0.7
|
|
189
|
+
|
|
190
|
+
icon-system:
|
|
191
|
+
path: chati.dev/templates/icon-system-tmpl.yaml
|
|
192
|
+
type: template
|
|
193
|
+
purpose: "Icon library selection, sizing scale, usage guidelines, and inventory"
|
|
194
|
+
keywords: [icons, library, sizing, accessibility, inventory]
|
|
195
|
+
dependencies: [brandbook]
|
|
196
|
+
adaptability: 0.8
|
|
197
|
+
|
|
166
198
|
workflows:
|
|
167
199
|
greenfield-fullstack:
|
|
168
200
|
path: chati.dev/workflows/greenfield-fullstack.yaml
|
|
@@ -212,6 +244,14 @@ entities:
|
|
|
212
244
|
dependencies: [orchestrator, brief, dev, qa-implementation, devops]
|
|
213
245
|
adaptability: 0.4
|
|
214
246
|
|
|
247
|
+
standard-flow:
|
|
248
|
+
path: chati.dev/workflows/standard-flow.yaml
|
|
249
|
+
type: workflow
|
|
250
|
+
purpose: "Balanced pipeline for moderate tasks: features, integrations, brownfield enhancements. Uses 8 agents."
|
|
251
|
+
keywords: [standard, balanced, feature, integration, enhancement, moderate]
|
|
252
|
+
dependencies: [orchestrator, brief, detail, architect, tasks, qa-planning, dev, qa-implementation, devops]
|
|
253
|
+
adaptability: 0.4
|
|
254
|
+
|
|
215
255
|
schemas:
|
|
216
256
|
session:
|
|
217
257
|
path: chati.dev/schemas/session.schema.json
|
|
@@ -29,7 +29,7 @@ rules:
|
|
|
29
29
|
priority: critical
|
|
30
30
|
|
|
31
31
|
- id: art-v
|
|
32
|
-
text: "Communication follows structured protocol: guided options (1,2,3), clear formatting."
|
|
32
|
+
text: "Communication follows structured protocol: guided options (1,2,3), clear formatting. No em dashes or AI-detectable writing patterns."
|
|
33
33
|
priority: normal
|
|
34
34
|
|
|
35
35
|
- id: art-vi
|
|
@@ -18,6 +18,10 @@ rules:
|
|
|
18
18
|
text: "Interact with user in their preferred language. Artifacts stay in English."
|
|
19
19
|
priority: normal
|
|
20
20
|
|
|
21
|
+
- id: anti-dash
|
|
22
|
+
text: "Never use em dashes in generated content. Avoid AI-detectable writing patterns (formulaic transitions, over-hedging, stacking connectors)."
|
|
23
|
+
priority: high
|
|
24
|
+
|
|
21
25
|
# Execution Profile Rules (v3.0.0)
|
|
22
26
|
execution-profiles:
|
|
23
27
|
- explore-readonly: "In explore profile, all write/edit tool calls are blocked."
|
|
@@ -75,10 +79,10 @@ modes:
|
|
|
75
79
|
|
|
76
80
|
brackets:
|
|
77
81
|
FRESH:
|
|
78
|
-
behavior: "
|
|
82
|
+
behavior: "Moderate context injection. All layers active but model is warming up. Budget lower than MODERATE."
|
|
79
83
|
MODERATE:
|
|
80
|
-
behavior: "
|
|
84
|
+
behavior: "Peak context injection. Maximum token budget. Model has context and needs maximum reinforcement."
|
|
81
85
|
DEPLETED:
|
|
82
|
-
behavior: "
|
|
86
|
+
behavior: "Reduced injection. Only L0+L1+L2. Use rule IDs instead of full text."
|
|
83
87
|
CRITICAL:
|
|
84
88
|
behavior: "Emergency. L0+L1 only. Trigger handoff advisory. Preserve essential state."
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Standard Flow Workflow Domain — PRISM L3
|
|
2
|
+
# Balanced pipeline for moderate tasks (features, integrations, brownfield enhancements)
|
|
3
|
+
# Uses 8 agents — between Quick Flow (4) and Full Flow (12)
|
|
4
|
+
|
|
5
|
+
steps:
|
|
6
|
+
- brief
|
|
7
|
+
- detail
|
|
8
|
+
- architect
|
|
9
|
+
- tasks
|
|
10
|
+
- qa-planning
|
|
11
|
+
- dev
|
|
12
|
+
- qa-implementation
|
|
13
|
+
- devops
|
|
14
|
+
|
|
15
|
+
rules:
|
|
16
|
+
- id: sf-scope
|
|
17
|
+
text: "Standard Flow targets 2-5 requirements. Escalate to full pipeline if scope exceeds this range."
|
|
18
|
+
priority: critical
|
|
19
|
+
- id: sf-quality
|
|
20
|
+
text: "Both QA gates (planning and implementation) are mandatory. Score >= 95% required at each gate."
|
|
21
|
+
priority: critical
|
|
22
|
+
- id: sf-no-ux-skip
|
|
23
|
+
text: "UX agent is excluded. If design-heavy requirements surface, escalate to full pipeline."
|
|
24
|
+
priority: high
|
|
25
|
+
- id: sf-no-phases
|
|
26
|
+
text: "Phases agent is excluded. Tasks agent handles scope decomposition directly from PRD + Architecture."
|
|
27
|
+
priority: high
|
|
28
|
+
- id: sf-escalation-up
|
|
29
|
+
text: "If architect discovers multi-service complexity or QA finds UX gaps, offer escalation to full pipeline."
|
|
30
|
+
priority: high
|
|
31
|
+
- id: sf-escalation-down
|
|
32
|
+
text: "If detail finds only 1 simple requirement and architect confirms no changes needed, suggest quick flow."
|
|
33
|
+
priority: medium
|
package/framework/i18n/en.yaml
CHANGED
|
@@ -29,8 +29,8 @@ installer:
|
|
|
29
29
|
created_overlays: "Created provider overlay directories"
|
|
30
30
|
will_install: "Will install:"
|
|
31
31
|
agents_count: "13 agent definitions (DISCOVER, PLAN, BUILD, DEPLOY phases)"
|
|
32
|
-
workflows_count: "
|
|
33
|
-
templates_count: "
|
|
32
|
+
workflows_count: "7 workflow blueprints"
|
|
33
|
+
templates_count: "10 templates (PRD, Brownfield PRD, Architecture, Task, QA Gate, Quick Brief, Brandbook, Design Tokens, Component Spec, Icon System)"
|
|
34
34
|
constitution: "Constitution (19 Articles + Preamble)"
|
|
35
35
|
session_mgmt: "Session management system"
|
|
36
36
|
quality_gates: "Quality gates (3-tier verdicts)"
|
|
@@ -85,6 +85,15 @@ status:
|
|
|
85
85
|
backlog_items: "Backlog Items"
|
|
86
86
|
high_priority: "high priority"
|
|
87
87
|
|
|
88
|
+
features:
|
|
89
|
+
brandbook_step: "Phase 0: Establishing brand identity (Brandbook)"
|
|
90
|
+
tech_preset_loaded: "Tech preset loaded: {preset}"
|
|
91
|
+
tech_preset_detected: "Detected tech stack: {stack}"
|
|
92
|
+
doctor_running: "Running Doctor diagnostics..."
|
|
93
|
+
doctor_healthy: "Doctor: All checks passed"
|
|
94
|
+
doctor_degraded: "Doctor: Issues found (see report)"
|
|
95
|
+
doctor_fix_applied: "Doctor: Applied {count} auto-fix(es)"
|
|
96
|
+
|
|
88
97
|
errors:
|
|
89
98
|
session_corrupted: "Session file appears corrupted. Attempting recovery..."
|
|
90
99
|
handoff_missing: "Handoff not found. Using session.yaml + CLAUDE.md as fallback."
|
package/framework/i18n/es.yaml
CHANGED
|
@@ -29,8 +29,8 @@ installer:
|
|
|
29
29
|
created_overlays: "Creados directorios de overlay de proveedores"
|
|
30
30
|
will_install: "Se instalara:"
|
|
31
31
|
agents_count: "13 definiciones de agentes (fases DISCOVER, PLAN, BUILD, DEPLOY)"
|
|
32
|
-
workflows_count: "
|
|
33
|
-
templates_count: "
|
|
32
|
+
workflows_count: "7 blueprints de workflow"
|
|
33
|
+
templates_count: "10 templates (PRD, PRD Brownfield, Arquitectura, Task, QA Gate, Quick Brief, Brandbook, Design Tokens, Component Spec, Icon System)"
|
|
34
34
|
constitution: "Constitucion (19 Articulos + Preambulo)"
|
|
35
35
|
session_mgmt: "Sistema de gestion de sesion"
|
|
36
36
|
quality_gates: "Quality gates (veredictos en 3 niveles)"
|
|
@@ -85,6 +85,15 @@ status:
|
|
|
85
85
|
backlog_items: "Items del Backlog"
|
|
86
86
|
high_priority: "alta prioridad"
|
|
87
87
|
|
|
88
|
+
features:
|
|
89
|
+
brandbook_step: "Fase 0: Estableciendo identidad de marca (Brandbook)"
|
|
90
|
+
tech_preset_loaded: "Tech preset cargado: {preset}"
|
|
91
|
+
tech_preset_detected: "Stack tecnologico detectado: {stack}"
|
|
92
|
+
doctor_running: "Ejecutando diagnosticos del Doctor..."
|
|
93
|
+
doctor_healthy: "Doctor: Todos los checks pasaron"
|
|
94
|
+
doctor_degraded: "Doctor: Problemas encontrados (ver reporte)"
|
|
95
|
+
doctor_fix_applied: "Doctor: Aplicado(s) {count} auto-fix(es)"
|
|
96
|
+
|
|
88
97
|
errors:
|
|
89
98
|
session_corrupted: "Archivo de sesion parece corrupto. Intentando recuperacion..."
|
|
90
99
|
handoff_missing: "Handoff no encontrado. Usando session.yaml + CLAUDE.md como respaldo."
|
package/framework/i18n/fr.yaml
CHANGED
|
@@ -29,8 +29,8 @@ installer:
|
|
|
29
29
|
created_overlays: "Crees les repertoires d'overlay des fournisseurs"
|
|
30
30
|
will_install: "Sera installe:"
|
|
31
31
|
agents_count: "13 definitions d'agents (phases DISCOVER, PLAN, BUILD, DEPLOY)"
|
|
32
|
-
workflows_count: "
|
|
33
|
-
templates_count: "
|
|
32
|
+
workflows_count: "7 blueprints de workflow"
|
|
33
|
+
templates_count: "10 templates (PRD, PRD Brownfield, Architecture, Task, QA Gate, Quick Brief, Brandbook, Design Tokens, Component Spec, Icon System)"
|
|
34
34
|
constitution: "Constitution (19 Articles + Preambule)"
|
|
35
35
|
session_mgmt: "Systeme de gestion de session"
|
|
36
36
|
quality_gates: "Quality gates (verdicts en 3 niveaux)"
|
|
@@ -85,6 +85,15 @@ status:
|
|
|
85
85
|
backlog_items: "Elements du Backlog"
|
|
86
86
|
high_priority: "haute priorite"
|
|
87
87
|
|
|
88
|
+
features:
|
|
89
|
+
brandbook_step: "Phase 0: Etablissement de l'identite de marque (Brandbook)"
|
|
90
|
+
tech_preset_loaded: "Tech preset charge: {preset}"
|
|
91
|
+
tech_preset_detected: "Stack technologique detecte: {stack}"
|
|
92
|
+
doctor_running: "Execution des diagnostics du Doctor..."
|
|
93
|
+
doctor_healthy: "Doctor: Tous les checks ont reussi"
|
|
94
|
+
doctor_degraded: "Doctor: Problemes trouves (voir rapport)"
|
|
95
|
+
doctor_fix_applied: "Doctor: Applique(s) {count} auto-fix(es)"
|
|
96
|
+
|
|
88
97
|
errors:
|
|
89
98
|
session_corrupted: "Le fichier de session semble corrompu. Tentative de recuperation..."
|
|
90
99
|
handoff_missing: "Passation non trouvee. Utilisation de session.yaml + CLAUDE.md comme repli."
|
package/framework/i18n/pt.yaml
CHANGED
|
@@ -29,8 +29,8 @@ installer:
|
|
|
29
29
|
created_overlays: "Criados diretorios de overlay de provedores"
|
|
30
30
|
will_install: "Sera instalado:"
|
|
31
31
|
agents_count: "13 definicoes de agentes (fases DISCOVER, PLAN, BUILD, DEPLOY)"
|
|
32
|
-
workflows_count: "
|
|
33
|
-
templates_count: "
|
|
32
|
+
workflows_count: "7 blueprints de workflow"
|
|
33
|
+
templates_count: "10 templates (PRD, PRD Brownfield, Arquitetura, Task, QA Gate, Quick Brief, Brandbook, Design Tokens, Component Spec, Icon System)"
|
|
34
34
|
constitution: "Constituicao (19 Artigos + Preambulo)"
|
|
35
35
|
session_mgmt: "Sistema de gerenciamento de sessao"
|
|
36
36
|
quality_gates: "Quality gates (veredictos em 3 niveis)"
|
|
@@ -85,6 +85,15 @@ status:
|
|
|
85
85
|
backlog_items: "Itens do Backlog"
|
|
86
86
|
high_priority: "alta prioridade"
|
|
87
87
|
|
|
88
|
+
features:
|
|
89
|
+
brandbook_step: "Fase 0: Estabelecendo identidade de marca (Brandbook)"
|
|
90
|
+
tech_preset_loaded: "Tech preset carregado: {preset}"
|
|
91
|
+
tech_preset_detected: "Stack tecnologico detectado: {stack}"
|
|
92
|
+
doctor_running: "Executando diagnosticos do Doctor..."
|
|
93
|
+
doctor_healthy: "Doctor: Todos os checks passaram"
|
|
94
|
+
doctor_degraded: "Doctor: Problemas encontrados (veja relatorio)"
|
|
95
|
+
doctor_fix_applied: "Doctor: Aplicado(s) {count} auto-fix(es)"
|
|
96
|
+
|
|
88
97
|
errors:
|
|
89
98
|
session_corrupted: "Arquivo de sessao parece corrompido. Tentando recuperacao..."
|
|
90
99
|
handoff_missing: "Handoff nao encontrado. Usando session.yaml + CLAUDE.md como fallback."
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Tech Preset: Next.js
|
|
2
|
+
# Auto-loaded by Architect agent when Next.js stack is detected
|
|
3
|
+
|
|
4
|
+
stack: nextjs
|
|
5
|
+
displayName: "Next.js"
|
|
6
|
+
|
|
7
|
+
detection:
|
|
8
|
+
- next.config.js
|
|
9
|
+
- next.config.mjs
|
|
10
|
+
- next.config.ts
|
|
11
|
+
|
|
12
|
+
conventions:
|
|
13
|
+
routing: "App Router preferred (app/ directory)"
|
|
14
|
+
components: "Server Components by default, 'use client' for interactivity"
|
|
15
|
+
data_fetching: "Server-side fetch in page/layout, React Query for client"
|
|
16
|
+
styling: "Tailwind CSS or CSS Modules (no global CSS imports in components)"
|
|
17
|
+
api: "Route Handlers in app/api/ (not pages/api/)"
|
|
18
|
+
|
|
19
|
+
structure:
|
|
20
|
+
- "app/ — Routes, layouts, and pages"
|
|
21
|
+
- "app/api/ — Route Handlers (REST endpoints)"
|
|
22
|
+
- "components/ — Reusable UI components"
|
|
23
|
+
- "lib/ — Utility functions and shared logic"
|
|
24
|
+
- "public/ — Static assets"
|
|
25
|
+
|
|
26
|
+
rules:
|
|
27
|
+
- id: nextjs-ssr
|
|
28
|
+
text: "Prefer Server Components. Only add 'use client' when interactivity is needed."
|
|
29
|
+
priority: high
|
|
30
|
+
- id: nextjs-api
|
|
31
|
+
text: "Use Route Handlers (app/api/) for API endpoints. Not pages/api/."
|
|
32
|
+
priority: high
|
|
33
|
+
- id: nextjs-layout
|
|
34
|
+
text: "Use layout.tsx for shared UI. Avoid prop drilling through layouts."
|
|
35
|
+
priority: normal
|
|
36
|
+
- id: nextjs-metadata
|
|
37
|
+
text: "Export metadata from page.tsx for SEO. Use generateMetadata for dynamic pages."
|
|
38
|
+
priority: normal
|
|
39
|
+
- id: nextjs-loading
|
|
40
|
+
text: "Use loading.tsx and error.tsx for streaming and error boundaries."
|
|
41
|
+
priority: normal
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Tech Preset: Node.js + Express
|
|
2
|
+
# Auto-loaded by Architect agent when Express stack is detected
|
|
3
|
+
|
|
4
|
+
stack: node-express
|
|
5
|
+
displayName: "Node.js + Express"
|
|
6
|
+
|
|
7
|
+
detection:
|
|
8
|
+
- "package.json containing express"
|
|
9
|
+
|
|
10
|
+
conventions:
|
|
11
|
+
routing: "Express Router with modular route files"
|
|
12
|
+
middleware: "Error-handling middleware at the end of the chain"
|
|
13
|
+
validation: "Zod or Joi for request validation"
|
|
14
|
+
auth: "JWT or session-based, middleware pattern"
|
|
15
|
+
errors: "Centralized error handler with error classes"
|
|
16
|
+
|
|
17
|
+
structure:
|
|
18
|
+
- "src/ — Application source code"
|
|
19
|
+
- "src/routes/ — Express route definitions"
|
|
20
|
+
- "src/controllers/ — Request handlers"
|
|
21
|
+
- "src/middleware/ — Custom middleware"
|
|
22
|
+
- "src/services/ — Business logic"
|
|
23
|
+
- "src/models/ — Data models (ORM or raw queries)"
|
|
24
|
+
- "src/utils/ — Utility functions"
|
|
25
|
+
- "src/config/ — Configuration and environment"
|
|
26
|
+
|
|
27
|
+
rules:
|
|
28
|
+
- id: express-error-handler
|
|
29
|
+
text: "Always use a centralized error-handling middleware. Never swallow errors silently."
|
|
30
|
+
priority: critical
|
|
31
|
+
- id: express-validation
|
|
32
|
+
text: "Validate all request input (body, params, query) before processing."
|
|
33
|
+
priority: high
|
|
34
|
+
- id: express-async
|
|
35
|
+
text: "Wrap async route handlers to catch rejected promises (express-async-errors or manual try/catch)."
|
|
36
|
+
priority: high
|
|
37
|
+
- id: express-env
|
|
38
|
+
text: "Use environment variables for all configuration. Never hardcode secrets."
|
|
39
|
+
priority: critical
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Tech Preset: React + Vite
|
|
2
|
+
# Auto-loaded by Architect agent when React+Vite stack is detected
|
|
3
|
+
|
|
4
|
+
stack: react-vite
|
|
5
|
+
displayName: "React + Vite"
|
|
6
|
+
|
|
7
|
+
detection:
|
|
8
|
+
- vite.config.js
|
|
9
|
+
- vite.config.ts
|
|
10
|
+
- vite.config.mjs
|
|
11
|
+
|
|
12
|
+
conventions:
|
|
13
|
+
routing: "React Router v6+ with createBrowserRouter"
|
|
14
|
+
components: "Functional components with hooks"
|
|
15
|
+
state: "React Context for simple state, Zustand/Jotai for complex"
|
|
16
|
+
styling: "Tailwind CSS or CSS Modules"
|
|
17
|
+
build: "Vite with ESBuild for dev, Rollup for production"
|
|
18
|
+
|
|
19
|
+
structure:
|
|
20
|
+
- "src/ — Application source code"
|
|
21
|
+
- "src/components/ — Reusable UI components"
|
|
22
|
+
- "src/pages/ — Route-level components"
|
|
23
|
+
- "src/hooks/ — Custom React hooks"
|
|
24
|
+
- "src/lib/ — Utility functions"
|
|
25
|
+
- "src/assets/ — Static assets (images, fonts)"
|
|
26
|
+
- "public/ — Public static files"
|
|
27
|
+
|
|
28
|
+
rules:
|
|
29
|
+
- id: vite-env
|
|
30
|
+
text: "Use import.meta.env for environment variables. Prefix with VITE_ for client exposure."
|
|
31
|
+
priority: high
|
|
32
|
+
- id: vite-lazy
|
|
33
|
+
text: "Use React.lazy() and Suspense for route-level code splitting."
|
|
34
|
+
priority: normal
|
|
35
|
+
- id: vite-alias
|
|
36
|
+
text: "Configure path aliases in vite.config.ts (e.g., @ for src/)."
|
|
37
|
+
priority: normal
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Tech Preset: Supabase Fullstack
|
|
2
|
+
# Auto-loaded by Architect agent when Supabase stack is detected
|
|
3
|
+
|
|
4
|
+
stack: supabase-fullstack
|
|
5
|
+
displayName: "Supabase Fullstack"
|
|
6
|
+
|
|
7
|
+
detection:
|
|
8
|
+
- supabase/config.toml
|
|
9
|
+
- .env.local containing SUPABASE_URL
|
|
10
|
+
|
|
11
|
+
conventions:
|
|
12
|
+
auth: "Supabase Auth with RLS policies for authorization"
|
|
13
|
+
database: "PostgreSQL with Row Level Security (RLS) on every table"
|
|
14
|
+
storage: "Supabase Storage for file uploads with bucket policies"
|
|
15
|
+
functions: "Supabase Edge Functions (Deno) for serverless logic"
|
|
16
|
+
realtime: "Supabase Realtime for live subscriptions"
|
|
17
|
+
|
|
18
|
+
structure:
|
|
19
|
+
- "supabase/ — Supabase project configuration"
|
|
20
|
+
- "supabase/migrations/ — SQL migration files"
|
|
21
|
+
- "supabase/functions/ — Edge Functions (Deno)"
|
|
22
|
+
- "supabase/seed.sql — Seed data"
|
|
23
|
+
- "src/lib/supabase.ts — Supabase client initialization"
|
|
24
|
+
|
|
25
|
+
rules:
|
|
26
|
+
- id: supabase-rls
|
|
27
|
+
text: "EVERY table MUST have RLS enabled. No exceptions. Create policies before exposing data."
|
|
28
|
+
priority: critical
|
|
29
|
+
- id: supabase-migrations
|
|
30
|
+
text: "All schema changes go through migration files. Never modify production DB directly."
|
|
31
|
+
priority: critical
|
|
32
|
+
- id: supabase-types
|
|
33
|
+
text: "Generate TypeScript types from database schema (supabase gen types)."
|
|
34
|
+
priority: high
|
|
35
|
+
- id: supabase-auth
|
|
36
|
+
text: "Use Supabase Auth helpers for SSR frameworks. Handle auth state server-side."
|
|
37
|
+
priority: high
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Brandbook Template
|
|
2
|
+
# Used by: UX Agent (Phase 0: Brand Identity)
|
|
3
|
+
# Language: English (Constitution Article VII)
|
|
4
|
+
|
|
5
|
+
template:
|
|
6
|
+
name: Brandbook
|
|
7
|
+
version: "1.0.0"
|
|
8
|
+
description: >
|
|
9
|
+
Brand identity foundation document. Defines voice, visual language,
|
|
10
|
+
typography rationale, color philosophy, spacing rhythm, and iconography
|
|
11
|
+
style. Must be completed BEFORE design tokens.
|
|
12
|
+
|
|
13
|
+
output_path: chati.dev/artifacts/4-UX/brandbook.md
|
|
14
|
+
|
|
15
|
+
sections:
|
|
16
|
+
- brand_voice
|
|
17
|
+
- visual_language
|
|
18
|
+
- typography_rationale
|
|
19
|
+
- color_philosophy
|
|
20
|
+
- spacing_rhythm
|
|
21
|
+
- iconography_style
|
|
22
|
+
|
|
23
|
+
brand_voice:
|
|
24
|
+
description: "Brand personality, tone, and communication style"
|
|
25
|
+
fields:
|
|
26
|
+
- name: personality_traits
|
|
27
|
+
type: array
|
|
28
|
+
description: "3-5 adjectives defining the brand personality"
|
|
29
|
+
- name: tone_spectrum
|
|
30
|
+
type: object
|
|
31
|
+
description: "Formal vs casual, technical vs approachable spectrum"
|
|
32
|
+
- name: writing_guidelines
|
|
33
|
+
type: array
|
|
34
|
+
description: "Dos and don'ts for brand voice"
|
|
35
|
+
- name: example_phrases
|
|
36
|
+
type: array
|
|
37
|
+
description: "Sample phrases demonstrating brand voice"
|
|
38
|
+
|
|
39
|
+
visual_language:
|
|
40
|
+
description: "Core visual principles and aesthetic direction"
|
|
41
|
+
fields:
|
|
42
|
+
- name: design_principles
|
|
43
|
+
type: array
|
|
44
|
+
description: "3-5 guiding principles for visual design"
|
|
45
|
+
- name: mood_keywords
|
|
46
|
+
type: array
|
|
47
|
+
description: "Keywords capturing the visual mood"
|
|
48
|
+
- name: inspiration_references
|
|
49
|
+
type: array
|
|
50
|
+
description: "Visual references and mood board elements"
|
|
51
|
+
|
|
52
|
+
typography_rationale:
|
|
53
|
+
description: "Font selection rationale and typographic hierarchy"
|
|
54
|
+
fields:
|
|
55
|
+
- name: primary_font
|
|
56
|
+
type: object
|
|
57
|
+
description: "Primary typeface and why it was chosen"
|
|
58
|
+
- name: secondary_font
|
|
59
|
+
type: object
|
|
60
|
+
description: "Secondary typeface for contrast"
|
|
61
|
+
- name: hierarchy_rules
|
|
62
|
+
type: array
|
|
63
|
+
description: "Heading, body, caption sizing rationale"
|
|
64
|
+
|
|
65
|
+
color_philosophy:
|
|
66
|
+
description: "Color palette rationale and emotional associations"
|
|
67
|
+
fields:
|
|
68
|
+
- name: primary_palette
|
|
69
|
+
type: array
|
|
70
|
+
description: "Primary colors with emotional rationale"
|
|
71
|
+
- name: semantic_mapping
|
|
72
|
+
type: object
|
|
73
|
+
description: "Color-to-meaning mapping (success, warning, error)"
|
|
74
|
+
- name: accessibility_notes
|
|
75
|
+
type: string
|
|
76
|
+
description: "WCAG contrast compliance notes"
|
|
77
|
+
|
|
78
|
+
spacing_rhythm:
|
|
79
|
+
description: "Spacing scale rationale and rhythm system"
|
|
80
|
+
fields:
|
|
81
|
+
- name: base_unit
|
|
82
|
+
type: number
|
|
83
|
+
description: "Base spacing unit in pixels"
|
|
84
|
+
- name: scale_rationale
|
|
85
|
+
type: string
|
|
86
|
+
description: "Why this scale was chosen (4px, 8px, etc.)"
|
|
87
|
+
- name: rhythm_rules
|
|
88
|
+
type: array
|
|
89
|
+
description: "Rules for consistent vertical and horizontal rhythm"
|
|
90
|
+
|
|
91
|
+
iconography_style:
|
|
92
|
+
description: "Icon style direction and usage philosophy"
|
|
93
|
+
fields:
|
|
94
|
+
- name: style_direction
|
|
95
|
+
type: string
|
|
96
|
+
description: "Outlined, filled, duotone, etc."
|
|
97
|
+
- name: stroke_weight
|
|
98
|
+
type: string
|
|
99
|
+
description: "Consistent stroke weight for icon set"
|
|
100
|
+
- name: metaphor_guidelines
|
|
101
|
+
type: array
|
|
102
|
+
description: "Guidelines for icon metaphor selection"
|
|
103
|
+
|
|
104
|
+
rules:
|
|
105
|
+
- id: brand-before-tokens
|
|
106
|
+
text: "Brandbook MUST be completed before design tokens are defined."
|
|
107
|
+
priority: critical
|
|
108
|
+
- id: brand-consistency
|
|
109
|
+
text: "All visual decisions must trace back to brandbook principles."
|
|
110
|
+
priority: high
|
|
111
|
+
- id: brand-voice-artifacts
|
|
112
|
+
text: "All user-facing text in artifacts must follow brand voice guidelines."
|
|
113
|
+
priority: high
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Component Spec Template
|
|
2
|
+
# Used by: UX Agent (Phase 2: Component Specifications)
|
|
3
|
+
# Language: English (Constitution Article VII)
|
|
4
|
+
|
|
5
|
+
template:
|
|
6
|
+
name: Component Spec
|
|
7
|
+
version: "1.0.0"
|
|
8
|
+
description: >
|
|
9
|
+
UI component specification document. Defines variants, states,
|
|
10
|
+
anatomy, props, accessibility, and responsive behavior.
|
|
11
|
+
|
|
12
|
+
output_path: chati.dev/artifacts/4-UX/components/
|
|
13
|
+
|
|
14
|
+
fields:
|
|
15
|
+
- name: id
|
|
16
|
+
type: string
|
|
17
|
+
description: "Unique component identifier (kebab-case)"
|
|
18
|
+
required: true
|
|
19
|
+
- name: name
|
|
20
|
+
type: string
|
|
21
|
+
description: "Human-readable component name"
|
|
22
|
+
required: true
|
|
23
|
+
- name: category
|
|
24
|
+
type: enum
|
|
25
|
+
values: [primitive, composite, layout, feedback, navigation, data-display, form]
|
|
26
|
+
description: "Component category for organization"
|
|
27
|
+
required: true
|
|
28
|
+
- name: description
|
|
29
|
+
type: string
|
|
30
|
+
description: "One-sentence description of the component purpose"
|
|
31
|
+
required: true
|
|
32
|
+
- name: variants
|
|
33
|
+
type: array
|
|
34
|
+
description: "Visual variants (primary, secondary, ghost, destructive, etc.)"
|
|
35
|
+
required: true
|
|
36
|
+
- name: sizes
|
|
37
|
+
type: array
|
|
38
|
+
description: "Size variants (xs, sm, md, lg, xl)"
|
|
39
|
+
required: true
|
|
40
|
+
- name: states
|
|
41
|
+
type: array
|
|
42
|
+
description: "Interactive states (default, hover, active, focus, disabled, loading, error)"
|
|
43
|
+
required: true
|
|
44
|
+
- name: anatomy
|
|
45
|
+
type: object
|
|
46
|
+
description: "Component parts and their structure"
|
|
47
|
+
required: true
|
|
48
|
+
- name: props
|
|
49
|
+
type: array
|
|
50
|
+
description: "Component API (props with types, defaults, descriptions)"
|
|
51
|
+
required: true
|
|
52
|
+
- name: tokens_used
|
|
53
|
+
type: array
|
|
54
|
+
description: "Design tokens consumed by this component"
|
|
55
|
+
required: true
|
|
56
|
+
- name: accessibility
|
|
57
|
+
type: object
|
|
58
|
+
description: "ARIA roles, keyboard navigation, screen reader behavior"
|
|
59
|
+
required: true
|
|
60
|
+
- name: responsive_behavior
|
|
61
|
+
type: object
|
|
62
|
+
description: "How component adapts across breakpoints"
|
|
63
|
+
required: false
|
|
64
|
+
|
|
65
|
+
rules:
|
|
66
|
+
- id: tokens-required
|
|
67
|
+
text: "Every visual property MUST reference a design token. No hardcoded values."
|
|
68
|
+
priority: critical
|
|
69
|
+
- id: accessibility-required
|
|
70
|
+
text: "Every component MUST have ARIA roles and keyboard navigation defined."
|
|
71
|
+
priority: critical
|
|
72
|
+
- id: state-coverage
|
|
73
|
+
text: "All interactive states must be specified including disabled and loading."
|
|
74
|
+
priority: high
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Design Token Template
|
|
2
|
+
# Used by: UX Agent (Phase 1: Design Tokens)
|
|
3
|
+
# Language: English (Constitution Article VII)
|
|
4
|
+
|
|
5
|
+
template:
|
|
6
|
+
name: Design Tokens
|
|
7
|
+
version: "1.0.0"
|
|
8
|
+
description: >
|
|
9
|
+
Structured design token system with 4 layers: primitive, semantic,
|
|
10
|
+
component, and utility. Derived from brandbook decisions.
|
|
11
|
+
|
|
12
|
+
output_path: chati.dev/artifacts/4-UX/design-tokens.md
|
|
13
|
+
|
|
14
|
+
layers:
|
|
15
|
+
- primitive
|
|
16
|
+
- semantic
|
|
17
|
+
- component
|
|
18
|
+
- utility
|
|
19
|
+
|
|
20
|
+
token_categories:
|
|
21
|
+
color:
|
|
22
|
+
primitive: "Raw color values (hex, hsl)"
|
|
23
|
+
semantic: "Mapped to meaning (primary, success, error)"
|
|
24
|
+
component: "Component-specific (button-bg, card-border)"
|
|
25
|
+
spacing:
|
|
26
|
+
primitive: "Base unit multiples (4, 8, 12, 16, 24, 32, 48, 64)"
|
|
27
|
+
semantic: "Mapped to usage (compact, default, relaxed)"
|
|
28
|
+
component: "Component-specific (card-padding, input-gap)"
|
|
29
|
+
typography:
|
|
30
|
+
primitive: "Font families, raw sizes, weights"
|
|
31
|
+
semantic: "Mapped to roles (heading, body, caption, label)"
|
|
32
|
+
component: "Component-specific (button-text, input-label)"
|
|
33
|
+
radius:
|
|
34
|
+
primitive: "Raw radius values (0, 2, 4, 8, 12, full)"
|
|
35
|
+
semantic: "Mapped to shape intent (sharp, soft, round, pill)"
|
|
36
|
+
shadow:
|
|
37
|
+
primitive: "Raw shadow definitions (offset, blur, spread, color)"
|
|
38
|
+
semantic: "Mapped to elevation (flat, raised, floating, overlay)"
|
|
39
|
+
motion:
|
|
40
|
+
primitive: "Duration and easing values"
|
|
41
|
+
semantic: "Mapped to intent (enter, exit, emphasis, feedback)"
|
|
42
|
+
|
|
43
|
+
rules:
|
|
44
|
+
- id: tokens-after-brandbook
|
|
45
|
+
text: "Design tokens MUST be derived from brandbook decisions."
|
|
46
|
+
priority: critical
|
|
47
|
+
- id: primitive-first
|
|
48
|
+
text: "Define primitive tokens before semantic. Semantic references primitive."
|
|
49
|
+
priority: high
|
|
50
|
+
- id: token-naming
|
|
51
|
+
text: "Use consistent naming: layer-category-variant (e.g., color-primary-500)."
|
|
52
|
+
priority: high
|
|
53
|
+
- id: accessibility-contrast
|
|
54
|
+
text: "All text color tokens must meet WCAG AA contrast ratio (4.5:1)."
|
|
55
|
+
priority: critical
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Icon System Template
|
|
2
|
+
# Used by: UX Agent (Phase 0: Brand Identity / Iconography)
|
|
3
|
+
# Language: English (Constitution Article VII)
|
|
4
|
+
|
|
5
|
+
template:
|
|
6
|
+
name: Icon System
|
|
7
|
+
version: "1.0.0"
|
|
8
|
+
description: >
|
|
9
|
+
Icon library selection, sizing scale, usage guidelines, and inventory.
|
|
10
|
+
Aligned with brandbook iconography style.
|
|
11
|
+
|
|
12
|
+
output_path: chati.dev/artifacts/4-UX/icon-system.md
|
|
13
|
+
|
|
14
|
+
sections:
|
|
15
|
+
library_selection:
|
|
16
|
+
description: "Chosen icon library and rationale"
|
|
17
|
+
fields:
|
|
18
|
+
- name: library_name
|
|
19
|
+
type: string
|
|
20
|
+
description: "Selected icon library (e.g., Lucide, Phosphor, Heroicons)"
|
|
21
|
+
- name: rationale
|
|
22
|
+
type: string
|
|
23
|
+
description: "Why this library was chosen"
|
|
24
|
+
- name: style
|
|
25
|
+
type: enum
|
|
26
|
+
values: [outlined, filled, duotone, solid]
|
|
27
|
+
description: "Icon style variant"
|
|
28
|
+
- name: license
|
|
29
|
+
type: string
|
|
30
|
+
description: "Icon library license (MIT, Apache, etc.)"
|
|
31
|
+
|
|
32
|
+
sizing_scale:
|
|
33
|
+
description: "Icon size scale aligned with spacing tokens"
|
|
34
|
+
fields:
|
|
35
|
+
- name: xs
|
|
36
|
+
type: number
|
|
37
|
+
description: "Extra small icon size (12-14px)"
|
|
38
|
+
- name: sm
|
|
39
|
+
type: number
|
|
40
|
+
description: "Small icon size (16px)"
|
|
41
|
+
- name: md
|
|
42
|
+
type: number
|
|
43
|
+
description: "Medium icon size (20-24px)"
|
|
44
|
+
- name: lg
|
|
45
|
+
type: number
|
|
46
|
+
description: "Large icon size (28-32px)"
|
|
47
|
+
- name: xl
|
|
48
|
+
type: number
|
|
49
|
+
description: "Extra large icon size (40-48px)"
|
|
50
|
+
- name: xxl
|
|
51
|
+
type: number
|
|
52
|
+
description: "Display icon size (56-64px)"
|
|
53
|
+
|
|
54
|
+
usage_guidelines:
|
|
55
|
+
description: "Rules for consistent icon usage"
|
|
56
|
+
fields:
|
|
57
|
+
- name: with_text
|
|
58
|
+
type: string
|
|
59
|
+
description: "When to pair icons with text labels"
|
|
60
|
+
- name: standalone
|
|
61
|
+
type: string
|
|
62
|
+
description: "When icons can stand alone (with aria-label)"
|
|
63
|
+
- name: color_rules
|
|
64
|
+
type: string
|
|
65
|
+
description: "How icons inherit or override color tokens"
|
|
66
|
+
- name: touch_target
|
|
67
|
+
type: string
|
|
68
|
+
description: "Minimum touch target size (44x44px for mobile)"
|
|
69
|
+
|
|
70
|
+
icon_inventory:
|
|
71
|
+
description: "Catalog of icons used in the project"
|
|
72
|
+
fields:
|
|
73
|
+
- name: navigation
|
|
74
|
+
type: array
|
|
75
|
+
description: "Icons used in navigation elements"
|
|
76
|
+
- name: actions
|
|
77
|
+
type: array
|
|
78
|
+
description: "Icons for user actions (add, edit, delete, etc.)"
|
|
79
|
+
- name: status
|
|
80
|
+
type: array
|
|
81
|
+
description: "Icons for status indicators (success, warning, error, info)"
|
|
82
|
+
- name: content
|
|
83
|
+
type: array
|
|
84
|
+
description: "Icons for content types (file, folder, image, etc.)"
|
|
85
|
+
|
|
86
|
+
rules:
|
|
87
|
+
- id: icon-library-consistency
|
|
88
|
+
text: "Use ONE icon library per project. Do not mix libraries."
|
|
89
|
+
priority: critical
|
|
90
|
+
- id: icon-accessibility
|
|
91
|
+
text: "Standalone icons MUST have aria-label. Decorative icons use aria-hidden."
|
|
92
|
+
priority: critical
|
|
93
|
+
- id: icon-sizing-alignment
|
|
94
|
+
text: "Icon sizes must align with the spacing token scale from design tokens."
|
|
95
|
+
priority: high
|
package/package.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
import { existsSync, readFileSync } from 'fs';
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* @typedef {object} DecisionIntent
|
|
@@ -198,7 +198,7 @@ export function parseRegistryEntities(raw) {
|
|
|
198
198
|
|
|
199
199
|
for (const line of lines) {
|
|
200
200
|
// Category header (agents:, templates:, etc.) — 2-space indent under entities:
|
|
201
|
-
const categoryMatch = line.match(/^
|
|
201
|
+
const categoryMatch = line.match(/^ {2}(\w[\w-]*):\s*$/);
|
|
202
202
|
if (categoryMatch && !line.match(/^\s{4}/)) {
|
|
203
203
|
// Save previous entity
|
|
204
204
|
if (currentEntity && currentData.purpose) {
|
|
@@ -211,7 +211,7 @@ export function parseRegistryEntities(raw) {
|
|
|
211
211
|
}
|
|
212
212
|
|
|
213
213
|
// Entity header (e.g., " orchestrator:") — 4-space indent
|
|
214
|
-
const entityMatch = line.match(/^
|
|
214
|
+
const entityMatch = line.match(/^ {4}([\w][\w-]*):\s*$/);
|
|
215
215
|
if (entityMatch) {
|
|
216
216
|
// Save previous entity
|
|
217
217
|
if (currentEntity && currentData.purpose) {
|