howone 0.1.30 → 0.1.31

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 (25) hide show
  1. package/package.json +1 -1
  2. package/templates/vite/.howone/skills/howone/01-architect/01-app-generation.md +132 -176
  3. package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/01-schema-design.md +3 -1
  4. package/templates/vite/.howone/skills/howone/{04-ai → 03-ai-capabilities}/01-ai-capability-architecture.md +6 -5
  5. package/templates/vite/.howone/skills/howone/{04-ai/04-service-capability-catalog.md → 03-ai-capabilities/03-service-capability-catalog.md} +15 -11
  6. package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/01-client-setup.md +6 -4
  7. package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/07-ai-action-calls.md +3 -3
  8. package/templates/vite/.howone/skills/howone/{04-ai/03-ai-sdk-handoff.md → 04-app-sdk/08-ai-manifest-handoff.md} +2 -2
  9. package/templates/vite/.howone/skills/howone/SKILL.md +98 -131
  10. package/templates/vite/.howone/skills/howone/agents/openai.yaml +3 -3
  11. package/templates/vite/AGENTS.md +2 -2
  12. /package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/02-schema-operations.md +0 -0
  13. /package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/03-data-access-patterns.md +0 -0
  14. /package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/04-query-dsl-and-responses.md +0 -0
  15. /package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/05-ai-persistence-patterns.md +0 -0
  16. /package/templates/vite/.howone/skills/howone/{04-ai → 03-ai-capabilities}/02-workflow-contract-rules.md +0 -0
  17. /package/templates/vite/.howone/skills/howone/{04-ai/05-workflow-operations.md → 03-ai-capabilities/04-workflow-operations.md} +0 -0
  18. /package/templates/vite/.howone/skills/howone/{04-ai/06-ai-feature-playbooks.md → 03-ai-capabilities/05-ai-feature-playbooks.md} +0 -0
  19. /package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/02-entity-operations.md +0 -0
  20. /package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/03-auth.md +0 -0
  21. /package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/04-react-integration.md +0 -0
  22. /package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/05-file-upload.md +0 -0
  23. /package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/06-raw-http.md +0 -0
  24. /package/templates/vite/.howone/skills/howone/{03-sdk/08-extension-boundaries.md → 04-app-sdk/09-extension-boundaries.md} +0 -0
  25. /package/templates/vite/.howone/skills/howone/{03-sdk/09-workflow-execute-sse.md → 04-app-sdk/10-workflow-execute-sse.md} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "howone",
3
- "version": "0.1.30",
3
+ "version": "0.1.31",
4
4
  "private": false,
5
5
  "description": "HowOne command line tools for creating app templates.",
6
6
  "type": "module",
@@ -1,215 +1,171 @@
1
1
  # App Generation Architect
2
2
 
3
- Use this file before building or changing a HowOne generated app. It decides which platform tracks
4
- must be used and what order to execute them in.
3
+ Read immediately after `skill(name="howone")` and before platform design tools, SDK contract
4
+ edits, or implementation guesses.
5
5
 
6
- This is the planning layer. It should prevent the agent from jumping straight into UI code while
7
- missing schema, auth, AI, manifest, or SDK binding contracts.
6
+ HowOne is a generated app platform. This file classifies **user scope**, separates **platform
7
+ contracts** from **app-owned integrations**, routes to tracks (see `SKILL.md` index), and sets
8
+ data/auth posture. File-level detail stays in each track—not here.
8
9
 
9
- ## Platform Shape
10
+ ## Scope classification
10
11
 
11
- HowOne generated apps have four product layers:
12
+ Map the user request to surfaces. Include only what they need.
12
13
 
13
- | Layer | Source of truth | App code should do |
14
+ | Need | Tracks | Notes |
14
15
  |---|---|---|
15
- | Backend database | synced `.howone/database/manifest.json` | generate entity types/bindings and call SDK |
16
- | AI capabilities | synced `.howone/ai/manifest.json` + workflow status | generate AI action bindings and call SDK |
17
- | SDK runtime | `@howone/sdk` + `src/lib/sdk.ts` | centralize env/auth/entities/AI/upload |
18
- | Frontend app | user experience | own UI, state, feedback, forms, navigation |
16
+ | Unclear or full product scope | `01-architect/` (+ others as discovered) | Finish this file before other tracks |
17
+ | Persisted app data on HowOne | `02-entity-schema/` sync `04-app-sdk/` | Skip if no storage |
18
+ | HowOne AI features | `03-ai-capabilities/` sync → `04-app-sdk/` | Verify catalog before design |
19
+ | SDK wiring, auth, UI calls | `04-app-sdk/` | After manifests exist when contracts apply |
20
+ | UI only, no HowOne data/AI | App code under `{appRoot}` | No schema/AI design tools |
21
+ | External systems the user provides | App code + config | Not platform contracts unless combined with rows above |
19
22
 
20
- The agent may propose schema/capability changes, but the validated/synced manifests drive code.
23
+ **Mixed scope:** read at least one file per touched track (`SKILL.md` index) before writing.
21
24
 
22
- ```text
23
- user request -> architecture decision -> backend/AI contracts -> sync manifests -> sdk binding -> UI
24
- ```
25
-
26
- Do not skip the binding layer. UI code should import `howone` from `src/lib/sdk.ts`, not construct
27
- raw URLs or guessed entity/action names.
25
+ ## HowOne platform boundary
28
26
 
29
- ## First Decision: What Surfaces Are Touched?
27
+ Use this decision model for **any** user request. Do not maintain a mental deny-list of technologies
28
+ (K8s, message buses, custom protocols, etc.). Ask whether the ask is a **platform contract surface**
29
+ or **app-owned**.
30
30
 
31
- Classify the request before editing.
31
+ ### Platform provides (evidence required)
32
32
 
33
- | User request says | Touched surfaces | Required references |
33
+ | Surface | Evidence to check | Design track |
34
34
  |---|---|---|
35
- | "store/save/history/list/my data" | database + SDK + UI | `02-database/`, `03-sdk/02-entity-operations.md` |
36
- | "login/account/my/private" | auth + database access | `03-sdk/03-auth.md`, `03-sdk/04-react-integration.md` |
37
- | "public page/share/link/landing/catalog" | public access + SDK public namespace | `02-database/03-data-access-patterns.md` |
38
- | "AI/generate/analyze/summarize/research/edit image/video/audio" | AI contract + workflow + SDK | `04-ai/` |
39
- | "upload file/image/audio/pdf" | upload + maybe AI URL input | `03-sdk/05-file-upload.md`, `04-ai/02-workflow-contract-rules.md` |
40
- | "change schema/add field/new table" | schema operations + manifest codegen | `02-database/02-schema-operations.md`, `01-architect/02-manifest-codegen.md` |
41
- | "frontend only" | SDK usage + UI | `03-sdk/01-client-setup.md` and relevant SDK docs |
42
-
43
- If multiple surfaces are touched, read one reference from each surface before editing.
44
-
45
- ## Data Posture Decision
46
-
47
- Choose data posture before schema and UI.
48
-
49
- | Product need | Access contract | SDK read |
50
- |---|---|---|
51
- | per-user private data | authenticated own, public none | `howone.entities.X.query.mine()` |
52
- | logged-in shared admin/team data | authenticated all, public none | `howone.entities.X.query()` |
53
- | anonymous public catalog/feed | authenticated all, public list | `howone.public.entities.X.query()` |
54
- | one public share/detail page | authenticated own/all, public scoped | `howone.public.entities.X.queryScoped()` |
55
- | anonymous form submission | authenticated all, public create scoped/any | `howone.public.entities.X.create()` |
56
- | AI generation history | authenticated own, public none | `runAiActionAndPersist()` + `query.mine()` |
57
- | AI public share | private history + public scoped share entity | two entities |
58
-
59
- Defaults:
60
-
61
- - "my" / "per user" / "private" -> authenticated own.
62
- - "landing page" / "blog" / "gallery" -> public list only if fields are safe.
63
- - "share link" / "QR" / "public result" -> public scoped, small `maxLimit`.
64
- - "AI history" -> private history entity; do not make it public just for sharing.
65
-
66
- ## Auth Decision
67
-
68
- | Need | SDK config | Provider behavior |
69
- |---|---|---|
70
- | default HowOne login | `createClient({ projectId, env })` | hosted login |
71
- | custom designed login page using HowOne auth APIs | `auth: 'custom'`, `HowOneProvider auth="none"` | app owns login UI |
72
- | external identity provider/JWT | `auth: { mode: 'headless', adapter }` | adapter owns token/user |
73
- | public-only app | `auth: 'none'` | no auth guard |
74
-
75
- Rules:
76
-
77
- - Keep the bottom-right HowOne `FloatingButton` by default unless explicitly hidden.
78
- - SDK must not add toast/overlay/login-page UI.
79
- - Use `client.me()` or `client.requireMe()` for first-load user resolution.
80
- - Do not use `auth.isAuthenticated()` as the only initial truth when user data must be loaded.
81
-
82
- ## Backend Feature Workflow
83
-
84
- Use when persistence or schema changes are needed:
35
+ | Persisted structured data on HowOne | Schema tools + `{appRoot}/.howone/database/manifest.json` | `02-entity-schema/` |
36
+ | AI execution on HowOne workflow service | `03-service-capability-catalog.md` + AI manifest + AI tools | `03-ai-capabilities/` |
37
+ | App calls HowOne runtime | Synced manifests + `04-app-sdk/` reference for that behavior | `04-app-sdk/` |
38
+ | Mutating platform contracts | `backend-api-design`, `ai-capability-design`, sync tools, `external-ai-capability` | Per surface |
85
39
 
86
- 1. Read `02-database/01-schema-design.md`.
87
- 2. Read `02-database/02-schema-operations.md`.
88
- 3. Inspect current schema state/manifest.
89
- 4. Design complete entity contract: fields, required, access, indexes, presentation.
90
- 5. Preview one complete schema patch.
91
- 6. Apply the exact previewed patch if risk is acceptable.
92
- 7. Sync schema artifacts from returned version.
93
- 8. Read `.howone/database/manifest.json`.
94
- 9. Update `src/lib/sdk.ts` from manifest using `01-architect/02-manifest-codegen.md`.
95
- 10. Implement UI with `howone.entities.*` or `howone.public.entities.*`.
96
- 11. Validate build/tests.
40
+ If none of these surfaces can express the user's **platform** requirement after checking contracts,
41
+ catalog, and tool schemas, it is a **platform gap**—not an automatic ban on whatever technology the
42
+ user named.
97
43
 
98
- Risk stops:
44
+ ### App-owned (not platform gap)
99
45
 
100
- - deleting entity/field;
101
- - making required field without default;
102
- - broadening public access;
103
- - enabling public write;
104
- - changing owner/public scope semantics.
46
+ Anything the user runs, hosts, or buys **outside** HowOne contracts: orchestration, clusters,
47
+ custom APIs, message systems, identity products, analytics, payment gateways, etc.
105
48
 
106
- ## AI Feature Workflow
49
+ - Implement in application code and configuration under `{appRoot}`.
50
+ - **Do not refuse** because HowOne does not provision it.
51
+ - **Do not** call platform design tools to fake it as entities, AI capabilities, or manifest fields.
52
+ - **Do not** tell the user they cannot use their own stack—only clarify it is outside HowOne platform scope.
107
53
 
108
- Use when AI capability/workflow is needed:
109
-
110
- 1. Read `04-ai/01-ai-capability-architecture.md`.
111
- 2. Read `04-ai/04-service-capability-catalog.md` to verify support.
112
- 3. Pick a playbook from `04-ai/06-ai-feature-playbooks.md` when applicable.
113
- 4. Design schemas with `04-ai/02-workflow-contract-rules.md`.
114
- 5. Preview/apply AI capability patch.
115
- 6. Sync `.howone/ai/manifest.json`.
116
- 7. Submit external workflow create/update using `04-ai/05-workflow-operations.md`.
117
- 8. Preserve returned `request_id`.
118
- 9. Poll status until terminal; preserve `workflowConfigID` on success.
119
- 10. Update `src/lib/sdk.ts` with `04-ai/03-ai-sdk-handoff.md`.
120
- 11. Implement UI through `howone.ai.*`.
121
- 12. If output persists, use `02-database/05-ai-persistence-patterns.md`.
122
-
123
- Do not build fake AI. If the required capability is unsupported, report the exact gap.
124
-
125
- ## Manifest Codegen Workflow
126
-
127
- Run after database or AI sync:
128
-
129
- 1. Read current `src/lib/sdk.ts`.
130
- 2. Read synced manifests.
131
- 3. Preserve existing exports and naming style.
132
- 4. Generate/update:
133
- - entity `Record/Create/Update` types;
134
- - optional exported `*EntityDefinition` for guards;
135
- - `client.entity<...>()` bindings;
136
- - AI Zod schemas and `defineAiAction(...)`;
137
- - composed `howone` export.
138
- 5. Never write generated source under `.howone/`.
139
-
140
- ## Common User Situations
141
-
142
- ### User asks for "just a frontend"
143
-
144
- Still check whether UI needs stored data, auth, upload, or AI. If it only renders static/local state,
145
- do not invent schema or workflow. If it saves anything, use database flow.
146
-
147
- ### User asks for "AI app" but no persistence
148
-
149
- Design AI capability and SDK binding only. Keep results in app state. Do not create entities unless
150
- history, refresh resilience, user library, or share page is needed.
151
-
152
- ### User asks for "AI app with history"
153
-
154
- Design AI first, then database:
54
+ ### Boundary decision (always)
155
55
 
156
56
  ```text
157
- AI output contract -> Generation entity -> runAiActionAndPersist -> history query.mine()
57
+ 1. What did the user ask for?
58
+ 2. Does it require HowOne persisted data? → entity-schema path or skip
59
+ 3. Does it require HowOne AI? → catalog + ai-capabilities path or skip
60
+ 4. Is it only their external infrastructure? → app-owned; wire in UI/config
61
+ 5. Did they ask for a platform feature with no contract evidence? → platform stop (generic)
62
+ 6. Mixed? → platform parts via tracks; app-owned parts in app code
158
63
  ```
159
64
 
160
- Do not put history fields into workflow output unless the AI itself must generate them.
65
+ ### Platform scope rules
161
66
 
162
- ### User asks for "public AI result"
67
+ - **No invented platform APIs:** Only fields and behaviors present in manifests, catalog, tools, or documented SDK references.
68
+ - **No invalid shortcuts:** Do not handwrite `.howone/` metadata or guess version/workflow identifiers.
69
+ - **Stop wording:** Name the **missing contract surface** (e.g. no catalog family, no manifest binding, no tool operation)—not the user's technology choice.
163
70
 
164
- Use two entities:
71
+ When stopping a platform path, separate what HowOne can provide from what remains possible via app-owned integration.
165
72
 
166
- - private `Generation` for owner history and retry;
167
- - public scoped `SharedGeneration` for anonymous viewing.
73
+ Inspect-only platform reads do not replace this file before the first **design write**.
168
74
 
169
- Do not expose private prompt/history broadly.
75
+ ## Platform layers
170
76
 
171
- ### User asks for "latest/current/research"
77
+ | Layer | Source of truth | App responsibility |
78
+ |---|---|---|
79
+ | Database | `{appRoot}/.howone/database/manifest.json` | Types/bindings via SDK |
80
+ | AI | `{appRoot}/.howone/ai/manifest.json` + workflow status | AI bindings via SDK |
81
+ | SDK | `@howone/sdk` + `{appRoot}/src/lib/sdk.ts` | Single entry for HowOne calls |
82
+ | Frontend | App code | UI, state, feedback |
172
83
 
173
- Use AI workflow with web search/crawling capability. If app also lists saved briefings, add entity
174
- persistence after output contract.
84
+ Validated/synced manifests drive code—not prompts or memory.
175
85
 
176
- ### User asks to modify existing AI behavior
86
+ ```text
87
+ user request → scope → platform contracts → sync → sdk binding → UI
88
+ ```
177
89
 
178
- If only behavior changes, use external workflow update with `workflowConfigID`.
179
- If input/output changes, update AI capability contract first, sync manifest, then update workflow
180
- and SDK bindings.
90
+ Import `howone` from `src/lib/sdk.ts`; do not guess entity/action names or platform URLs.
181
91
 
182
- ### User asks to change schema used by UI
92
+ ## Minimum track reads (after this file)
183
93
 
184
- Change backend schema first, sync, regenerate SDK, then update UI. Do not patch UI types from memory.
94
+ Use `SKILL.md` for the full file index. Typical minimums:
185
95
 
186
- ### User asks for custom auth
96
+ | Surface in scope | Read at least |
97
+ |---|---|
98
+ | Entity/schema design | `02-entity-schema/01-schema-design.md`, `02-schema-operations.md` |
99
+ | Queries / public data | add `03-data-access-patterns.md`, `04-query-dsl-and-responses.md` |
100
+ | AI design | `03-ai-capabilities/01-ai-capability-architecture.md`, `03-service-capability-catalog.md`, `02-workflow-contract-rules.md` |
101
+ | AI + saved outputs | add `02-entity-schema/05-ai-persistence-patterns.md` after AI contract is known |
102
+ | Bindings after sync | `02-manifest-codegen.md` + relevant `04-app-sdk/` files |
187
103
 
188
- Use `auth: 'custom'` or headless `AuthAdapter`. App owns visible login UI. Keep SDK callbacks/data
189
- only.
104
+ ## Data posture
190
105
 
191
- ## Implementation Guardrails
106
+ Choose before schema and UI.
192
107
 
193
- - Use `@howone/sdk` typed clients before `raw`.
194
- - Use `howone.raw` only when typed surface is missing.
195
- - Do not hardcode HowOne API URLs.
196
- - Do not pass owner fields for authenticated own records.
197
- - Do not import or create SDK toast APIs.
198
- - Do not remove HowOne floating logo unless explicitly requested.
199
- - Do not call AI workflows from render.
200
- - Do not persist workflow envelopes or UI-only fields.
201
- - Do not assume unavailable AI capabilities.
108
+ | Product need | Access | SDK pattern |
109
+ |---|---|---|
110
+ | Per-user private data | authenticated own | `howone.entities.*.query.mine()` |
111
+ | Shared authenticated data | authenticated all | `howone.entities.*.query()` |
112
+ | Public catalog | public list where safe | `howone.public.entities.*.query()` |
113
+ | Public share/detail | public scoped | `howone.public.entities.*.queryScoped()` |
114
+ | Anonymous create | public create scoped/any | `howone.public.entities.*.create()` |
115
+ | AI run history | authenticated own | persist via entity + `query.mine()` |
116
+ | AI public share | private + public scoped entities | two entities |
202
117
 
203
- ## Final Architecture Checklist
118
+ Defaults: "my/private" own; public catalog only when fields are safe; share links → scoped + limits.
204
119
 
205
- Before writing final code:
120
+ ## Auth posture
206
121
 
207
- - Data posture is explicit.
208
- - Auth mode is explicit.
209
- - Public access has filters/sorts/scopes/limits.
210
- - AI capability is supported by service catalog.
211
- - Workflow count follows one-feature rule or RAG exception.
212
- - Persistence is separate from AI workflow.
213
- - Manifests are synced before SDK codegen.
214
- - `src/lib/sdk.ts` is the only app SDK entrypoint.
215
- - UI owns visible states and feedback.
122
+ | Need | Client | Provider |
123
+ |---|---|---|
124
+ | Hosted HowOne login | default `createClient` | hosted |
125
+ | Custom login UI | `auth: 'custom'`, provider `auth="none"` | app UI |
126
+ | External IdP | headless + adapter | adapter owns token |
127
+ | No auth | `auth: 'none'` | — |
128
+
129
+ Keep default HowOne brand control unless user asks to hide. SDK exposes data/callbacks—not app toasts or overlays. Resolve user with `me()` / `requireMe()` when data depends on identity.
130
+
131
+ ## Entity workflow (when `02-entity-schema/` in scope)
132
+
133
+ 1. Read schema design + operations references.
134
+ 2. Inspect current schema/manifest.
135
+ 3. Design full entity contract (fields, access, indexes).
136
+ 4. Preview → apply patch → `sync_schema_artifacts`.
137
+ 5. Read `{appRoot}/.howone/database/manifest.json`.
138
+ 6. Update `src/lib/sdk.ts` per `02-manifest-codegen.md`.
139
+ 7. UI via `howone.entities.*` / public namespace; validate.
140
+
141
+ High-risk changes (delete entity/field, broaden public write, required without default) need explicit user alignment.
142
+
143
+ ## AI workflow (when `03-ai-capabilities/` in scope)
144
+
145
+ 1. Read architecture + **catalog** (feasibility) + contract rules; use playbooks when they match.
146
+ 2. Preview → apply capability patch → `sync_ai_artifacts`.
147
+ 3. External workflow create/update per workflow-operations reference; keep status IDs from tool results.
148
+ 4. Read `{appRoot}/.howone/ai/manifest.json`.
149
+ 5. Update `src/lib/sdk.ts` per `08-ai-manifest-handoff.md`; UI via `howone.ai.*`.
150
+ 6. If persistence required: entity workflow after output contract is fixed.
151
+
152
+ Do not fake catalog-backed AI. Platform gap → stop AI design path, explain generically.
153
+
154
+ ## Scope patterns (not a product catalog)
155
+
156
+ | Pattern | Platform work |
157
+ |---|---|
158
+ | Ephemeral AI result in UI state only | AI + SDK; skip entity-schema unless user adds storage |
159
+ | AI with history/library | AI contract first, then persistence entity |
160
+ | Public view of private AI output | private entity + scoped public entity |
161
+ | Behavior-only AI change | workflow update when schemas unchanged |
162
+ | Schema/UI drift | schema → sync → SDK → then UI |
163
+
164
+ ## Checklist before implementation
165
+
166
+ - [ ] Scope explicit: which tracks apply; app-owned vs platform clear
167
+ - [ ] Data and auth posture chosen when data in scope
168
+ - [ ] AI requirements verified against catalog when AI in scope
169
+ - [ ] Manifests synced before SDK codegen
170
+ - [ ] `src/lib/sdk.ts` is the HowOne entrypoint
171
+ - [ ] UI owns visible feedback; no invented platform APIs
@@ -1,12 +1,14 @@
1
1
  # Database Schema Design
2
2
 
3
+ **Track:** `02-entity-schema/` — platform entity contracts only; skip when the user needs no HowOne persisted data.
4
+
3
5
  Use this reference when designing or changing HowOne backend entity schemas. It condenses the
4
6
  runtime contract from `docs/dynamic-entity-architecture.zh.md` into instructions an AI agent can
5
7
  actually apply.
6
8
 
7
9
  This file answers: **what should the schema be?** For how to apply changes, read
8
10
  `02-schema-operations.md`. For frontend calls, read `03-data-access-patterns.md` and
9
- `03-sdk/02-entity-operations.md`.
11
+ `04-app-sdk/02-entity-operations.md`.
10
12
 
11
13
  ## Mental Model
12
14
 
@@ -1,11 +1,12 @@
1
1
  # AI Capability Architecture
2
2
 
3
- Use this reference when a HowOne app needs AI generation, editing, analysis, research, media
4
- creation, file generation, or any workflow-backed behavior.
3
+ **Track:** `03-ai-capabilities/` capability/workflow **design** only; SDK calls live in `04-app-sdk/`.
4
+
5
+ Use this reference when the user needs HowOne platform AI (verify `03-service-capability-catalog.md` first).
5
6
 
6
7
  This file answers: **what AI layer should be designed, in what order, and where each responsibility
7
8
  belongs?** For schema details read `02-workflow-contract-rules.md`. For workflow service calls read
8
- `05-workflow-operations.md`.
9
+ `04-workflow-operations.md`.
9
10
 
10
11
  ## Platform Mental Model
11
12
 
@@ -46,7 +47,7 @@ Never generate SDK bindings from the user prompt or from an unsynced draft.
46
47
 
47
48
  Use this flow for new AI features:
48
49
 
49
- 1. Classify the feature using `04-ai/04-service-capability-catalog.md`.
50
+ 1. Classify the feature using `03-ai-capabilities/03-service-capability-catalog.md`.
50
51
  2. Decide whether the feature is supported. If not supported, stop and explain the missing capability.
51
52
  3. Decide one workflow per user-facing feature. Use two workflows only for RAG.
52
53
  4. Design `inputSchema` and `outputSchema` using `02-workflow-contract-rules.md`.
@@ -56,7 +57,7 @@ Use this flow for new AI features:
56
57
  8. Store returned `request_id` values for polling.
57
58
  9. Poll status until `completed` or `failed`.
58
59
  10. On completed + `payload.success === true`, store `payload.workflow_details.new_workflow_config_id`.
59
- 11. Generate/update `src/lib/sdk.ts` using `03-ai-sdk-handoff.md` and `01-architect/02-manifest-codegen.md`.
60
+ 11. Generate/update `src/lib/sdk.ts` using `04-app-sdk/08-ai-manifest-handoff.md` and `01-architect/02-manifest-codegen.md`.
60
61
  12. Implement UI calls through `howone.ai.<action>.run()`, `.stream()`, or `.events()`.
61
62
  13. If output must persist, design entity schema and use `runAiActionAndPersist()` when appropriate.
62
63
 
@@ -1,7 +1,11 @@
1
1
  # Service Capability Catalog
2
2
 
3
- Use this reference before designing an AI workflow. It tells the agent what the current workflow
4
- service can actually do and what input/output shapes are expected.
3
+ Use this reference **only** for HowOne **workflow-service AI** feasibility. It lists what the current
4
+ workflow service supports—not everything a full product may use.
5
+
6
+ Infrastructure or products the user operates themselves (clusters, custom servers, third-party
7
+ APIs, etc.) are **app-owned** per `01-architect/01-app-generation.md`. They are out of scope for
8
+ this catalog and must not be rejected as "AI not supported" when the user only needs to connect to them in app code.
5
9
 
6
10
  Source: `docs/ai-capability.md`.
7
11
 
@@ -268,14 +272,14 @@ Rules:
268
272
  | Video -> Image edit -> Video | extract frame, edit frame, use as next reference |
269
273
  | RAG document chat | indexing workflow + query workflow |
270
274
 
271
- ## Capability Rejection Checklist
275
+ ## Platform AI stop (catalog boundary)
276
+
277
+ Stop **platform AI design** (do not invent capabilities) when the requirement:
272
278
 
273
- Stop or narrow scope if user requires:
279
+ - has no matching capability family in this catalog or detailed sections below;
280
+ - needs behavior the workflow service cannot perform per contract rules in `02-workflow-contract-rules.md`;
281
+ - violates workflow input/output constraints (e.g. persistence or app CRUD inside the workflow contract);
282
+ - exceeds documented service limits after you read the relevant section.
274
283
 
275
- - real-time streaming market data;
276
- - arbitrary external API calls not listed;
277
- - raw file bytes/base64 in workflow;
278
- - database CRUD inside workflow;
279
- - unsupported provider-specific model guarantees;
280
- - content disallowed by moderation;
281
- - long video generation in one call beyond service limits.
284
+ Explain the gap by **missing catalog/contract support**, not by naming the user's stack. Offer the
285
+ closest listed capability or ask to narrow the product ask. App-owned integrations remain allowed in parallel.
@@ -1,5 +1,7 @@
1
1
  # Client Setup
2
2
 
3
+ **Track:** `04-app-sdk/` — implement HowOne in the app from synced manifests; not schema/AI design.
4
+
3
5
  ## createClient
4
6
 
5
7
  `createClient(opts: CreateClientOptions)` is the single factory for everything in the HowOne SDK. Call it once at module level and export the result (or the composed `howone` client).
@@ -85,7 +87,7 @@ client.schema.restore(versionId, reason?)
85
87
  // AI action runner (low-level)
86
88
  client.ai: AiClient
87
89
 
88
- // HTTP utilities (low-level — see 03-sdk/06-raw-http.md)
90
+ // HTTP utilities (low-level — see 04-app-sdk/06-raw-http.md)
89
91
  client.raw: RawHttpClient
90
92
 
91
93
  // File upload
@@ -139,7 +141,7 @@ const client = createClient({
139
141
  })
140
142
 
141
143
  // ── 2. Define entity types & bind ────────────────────────────
142
- // (see 03-sdk/02-entity-operations.md for full details)
144
+ // (see 04-app-sdk/02-entity-operations.md for full details)
143
145
  export type NoteRecord = EntityRecord & { title: string; body: string }
144
146
  export type NoteCreate = { title: string; body: string }
145
147
  export type NoteUpdate = Partial<NoteCreate>
@@ -149,7 +151,7 @@ export const entities = defineEntities({
149
151
  })
150
152
 
151
153
  // ── 3. Define AI actions ─────────────────────────────────────
152
- // (see 03-sdk/07-ai-action-calls.md for full details)
154
+ // (see 04-app-sdk/07-ai-action-calls.md for full details)
153
155
  export const summarizeInputSchema = z.object({ noteId: z.string() })
154
156
  export type SummarizeInput = z.infer<typeof summarizeInputSchema>
155
157
 
@@ -202,7 +204,7 @@ Rules:
202
204
 
203
205
  ## Auth Modes
204
206
 
205
- See `03-sdk/03-auth.md` for the full custom-login playbook.
207
+ See `04-app-sdk/03-auth.md` for the full custom-login playbook.
206
208
 
207
209
  ```ts
208
210
  // Default — HowOne hosted login (howone.dev / howone.ai)
@@ -4,7 +4,7 @@
4
4
 
5
5
  **`src/lib/sdk.ts` must be generated from `.howone/ai/manifest.json`. Do not write it from memory or from generic examples.**
6
6
 
7
- For AI capability and workflow design, read `04-ai/` first. This file is only for app-side SDK
7
+ For AI capability and workflow design, read `03-ai-capabilities/` first. This file is only for app-side SDK
8
8
  bindings and runtime calls after the manifest exists.
9
9
 
10
10
  For every capability in `manifest.json`:
@@ -98,7 +98,7 @@ type AiEvent = {
98
98
  ```
99
99
 
100
100
  Stream terminates after exactly one of: `run_complete`, `credit_insufficient`, or `run_error`.
101
- For the full wire protocol, read `03-sdk/09-workflow-execute-sse.md`.
101
+ For the full wire protocol, read `04-app-sdk/10-workflow-execute-sse.md`.
102
102
 
103
103
  ---
104
104
 
@@ -419,7 +419,7 @@ try {
419
419
  ## AI Result Persistence
420
420
 
421
421
  When AI-generated content should be saved to an entity, prefer the SDK persistence helper for
422
- history-style products. It standardizes the pending-first pattern from `02-database/05-ai-persistence-patterns.md`
422
+ history-style products. It standardizes the pending-first pattern from `02-entity-schema/05-ai-persistence-patterns.md`
423
423
  without adding UI behavior.
424
424
 
425
425
  ```ts
@@ -1,4 +1,4 @@
1
- # AI SDK Handoff
1
+ # AI Manifest Handoff (App SDK)
2
2
 
3
3
  Use this reference after AI capability artifacts have been synced and app code must call the
4
4
  workflow through `@howone/sdk`.
@@ -6,7 +6,7 @@ workflow through `@howone/sdk`.
6
6
  This file answers: **how does `.howone/ai/manifest.json` become `src/lib/sdk.ts`, and how should UI
7
7
  call it?**
8
8
 
9
- For live stream wire details, read `03-sdk/09-workflow-execute-sse.md`. The current endpoint emits
9
+ For live stream wire details, read `04-app-sdk/10-workflow-execute-sse.md`. The current endpoint emits
10
10
  only `run_start`, `progress`, `run_complete`, `run_error`, and `credit_insufficient`.
11
11
 
12
12
  ## Binding Source
@@ -1,143 +1,110 @@
1
1
  ---
2
2
  name: howone
3
- description: Operating manual for HowOne generated app architecture and runtime contracts. Use when a task touches app generation flow, backend/dynamic entity schema design, data access, SDK bindings, frontend code that uses HowOne data, auth, uploads, public/private access, AI capabilities/workflows, AI result persistence, realtime/status/event flows, or any @howone/sdk / howone.entities / howone.public / howone.ai calls. Load first, then read the smallest relevant numbered track: 01-architect, 02-database, 03-sdk, or 04-ai.
3
+ description: HowOne generated app platform. Scope follows the user request. Load for architecture; add entity-schema, ai-capabilities, or app-sdk tracks only when those surfaces are needed.
4
4
  ---
5
5
 
6
- # HowOne App Architecture Skill
6
+ # HowOne Skill
7
7
 
8
- This skill is the operating manual for generated HowOne apps. Use it before making platform
9
- decisions for backend data, frontend data access, auth, AI capabilities, SDK bindings, or generated
10
- app code that depends on HowOne runtime behavior.
8
+ HowOne apps may be frontend-only, full-stack without AI, AI without custom backend, or full-stack
9
+ with AI and persisted data. **Scope always follows the user's request.** This file is the index;
10
+ processors defer here.
11
11
 
12
- Load the smallest set of numbered references that match the task, but do not skip this skill for
13
- backend schema design, frontend implementation, or AI features. The references define the contracts
14
- that app code must follow.
12
+ ## Mandatory flow
15
13
 
16
- ## Active Tracks
14
+ 1. `skill(name="howone")`
15
+ 2. `skill_read "01-architect/01-app-generation.md"` — always, before any platform design write
16
+ 3. `skill_read` the smallest set from the track index below that architect routing selects
17
+ 4. Platform design tools → sync → `{appRoot}/src/lib/sdk.ts` / app code — only for surfaces in scope
17
18
 
18
- | Track | Folder | Use For |
19
+ Inspect-only platform calls do not replace step 2 before the first design write.
20
+
21
+ ## Tracks
22
+
23
+ | Track | When needed | Design vs implement |
19
24
  |---|---|---|
20
- | `01-architect/` | App generation + manifest flow | End-to-end HowOne app generation flow: when to design backend, when to sync manifests, when to update SDK bindings, and how to choose auth/data posture. |
21
- | `02-database/` | Backend schema + data access design | Entity schema contract, schema operations, access modes, owner/public data posture, indexes, query DSL, AI output persistence, versions, and guardrails. |
22
- | `03-sdk/` | Frontend SDK usage | `src/lib/sdk.ts`, auth, React provider, entity calls, public data, uploads, raw HTTP, AI action calls. |
23
- | `04-ai/` | AI capability + workflow design | HowOne AI capability contracts, service capability selection, workflow create/update/status, schema rules, playbooks, persistence boundaries, and SDK handoff. |
25
+ | `01-architect/` | Always (scope, feasibility, posture, order) | Plan |
26
+ | `02-entity-schema/` | User needs HowOne persisted data | Design contracts |
27
+ | `03-ai-capabilities/` | User needs HowOne AI | Design contracts |
28
+ | `04-app-sdk/` | User calls HowOne via SDK after sync | Implement |
24
29
 
25
- ## Routing
30
+ ## Platform boundary (read architect for detail)
31
+
32
+ HowOne platform work must map to **contract evidence**: database manifest, AI manifest, AI service
33
+ catalog, platform tool schemas, or a documented `04-app-sdk/` reference.
34
+
35
+ | Class | Meaning | Agent action |
36
+ |---|---|---|
37
+ | Platform in scope | Ask is expressible through the surfaces above | Use matching track + design tools |
38
+ | App-owned | User's own ops stack, services, or infra (any technology) | Implement in `{appRoot}` app code/config; do not block |
39
+ | Platform gap | User wants a **platform** feature with no contract evidence | Stop platform path; explain missing surface; Support Policy if needed |
40
+
41
+ Do not treat unrelated user infrastructure (orchestration, custom servers, third-party products, etc.) as platform stop-loss. Do not model app-owned systems as fake HowOne entities or AI capabilities.
42
+
43
+ ## Track index (skill_read paths)
44
+
45
+ Read only files required for the current request.
46
+
47
+ ### `01-architect/`
48
+
49
+ | File | Use for |
50
+ |---|---|
51
+ | `01-app-generation.md` | Scope, platform vs app-owned, feasibility, data/auth posture, workflows, checklist |
52
+ | `02-manifest-codegen.md` | Generate `src/lib/sdk.ts` from synced manifests |
53
+
54
+ ### `02-entity-schema/`
55
+
56
+ | File | Use for |
57
+ |---|---|
58
+ | `01-schema-design.md` | Entity contract shape, fields, access, indexes |
59
+ | `02-schema-operations.md` | Preview/apply schema patches, versions |
60
+ | `03-data-access-patterns.md` | Public/private/own access, sharing |
61
+ | `04-query-dsl-and-responses.md` | Filters, sort, pagination, response mapping |
62
+ | `05-ai-persistence-patterns.md` | Storing AI results in entities |
63
+
64
+ ### `03-ai-capabilities/`
26
65
 
27
- Read references by task shape. Prefer exact references over generic examples.
28
-
29
- - New HowOne app or broad feature planning: read `01-architect/01-app-generation.md`.
30
- - Any feature touching backend data, frontend data access, or saved records: read the architect
31
- flow first, then the relevant database and SDK references below.
32
- - Any feature touching AI generation, AI workflow behavior, or AI outputs: read the AI references
33
- first, then the SDK handoff/action-call references.
34
- - AI capability, AI workflow generation/editing, or full-stack AI feature planning: read
35
- `04-ai/01-ai-capability-architecture.md`, `04-ai/04-service-capability-catalog.md`, and
36
- `04-ai/02-workflow-contract-rules.md`.
37
- - Backend database/schema creation or change: read `02-database/01-schema-design.md` and
38
- `02-database/02-schema-operations.md`.
39
- - AI output persistence, generation history, retry/resume, or saved AI results: read the `04-ai/`
40
- files first, then `02-database/05-ai-persistence-patterns.md` and
41
- `02-database/01-schema-design.md`.
42
- - After schema sync, when app code must call the entity: read
43
- `01-architect/02-manifest-codegen.md` and `03-sdk/02-entity-operations.md`.
44
- - Custom login page (your UI, HowOne APIs): `auth: 'custom'` in `createClient` (see `03-sdk/03-auth.md`),
45
- `HowOneProvider auth="none"` and keep the default bottom-right HowOne logo unless explicitly hidden. Default without `auth` = hosted HowOne login.
46
- - `src/lib/sdk.ts`, `createClient`, env vars, or generated bindings: read
47
- `03-sdk/01-client-setup.md` and `01-architect/02-manifest-codegen.md`.
48
- - Public landing pages or share URLs: read `02-database/03-data-access-patterns.md`,
49
- `03-sdk/02-entity-operations.md`, and `01-architect/02-manifest-codegen.md`.
50
- - File upload: read `03-sdk/05-file-upload.md`.
51
- - Raw HTTP escape hatch: read `03-sdk/06-raw-http.md`.
52
- - App-side AI action calls after `.howone/ai/manifest.json` exists: read
53
- `03-sdk/07-ai-action-calls.md` and `03-sdk/09-workflow-execute-sse.md`.
54
- - External workflow create/update/status: read `04-ai/05-workflow-operations.md`.
55
- - Common AI feature templates: read `04-ai/06-ai-feature-playbooks.md`.
56
-
57
- ## Reference Selection Protocol
58
-
59
- Before writing code, classify the touched surfaces:
60
-
61
- | Touched surface | Required references |
66
+ | File | Use for |
62
67
  |---|---|
63
- | New app, feature architecture, or uncertain data posture | `01-architect/01-app-generation.md` |
64
- | Entity/schema/access/index change | `02-database/01-schema-design.md`, `02-database/02-schema-operations.md` |
65
- | Existing synced manifest to TypeScript bindings | `01-architect/02-manifest-codegen.md` |
66
- | UI reads/writes entities | `03-sdk/01-client-setup.md`, `03-sdk/02-entity-operations.md` |
67
- | Public read/share flow | `02-database/03-data-access-patterns.md`, `03-sdk/02-entity-operations.md` |
68
- | Query filters/sort/pagination/response mapping | `02-database/04-query-dsl-and-responses.md` |
69
- | AI output persistence / generation history | `02-database/05-ai-persistence-patterns.md`, `04-ai/01-ai-capability-architecture.md` |
70
- | Auth/session/login behavior | `03-sdk/03-auth.md`, `03-sdk/04-react-integration.md` |
71
- | AI capability or workflow design | `04-ai/01-ai-capability-architecture.md`, `04-ai/04-service-capability-catalog.md`, `04-ai/02-workflow-contract-rules.md` |
72
- | External workflow create/update/status | `04-ai/05-workflow-operations.md` |
73
- | Common AI feature examples | `04-ai/06-ai-feature-playbooks.md` |
74
- | AI manifest handoff to app code | `04-ai/03-ai-sdk-handoff.md`, `03-sdk/07-ai-action-calls.md`, `03-sdk/09-workflow-execute-sse.md` |
75
- | File upload | `03-sdk/05-file-upload.md` |
76
- | Raw HTTP escape hatch | `03-sdk/06-raw-http.md` |
77
- | SDK extensibility / adapter boundaries | `03-sdk/08-extension-boundaries.md` |
78
-
79
- If a task spans multiple surfaces, read one reference from each surface before editing. Do not
80
- invent API parameters, response shapes, owner fields, workflow IDs, or output paths from memory.
81
-
82
- ## Core Workflow
83
-
84
- For app features that touch backend data:
85
-
86
- 1. Decide the data posture in the architect track: private user data, authenticated shared data,
87
- public list data, or public scoped share data.
88
- 2. Design or update the entity contract in the database track.
89
- 3. Use schema tools to preview/apply the same operations, then sync schema artifacts.
90
- 4. Read `.howone/database/manifest.json`.
91
- 5. Generate or update app SDK bindings from the manifest.
92
- 6. Implement frontend calls using the SDK track.
93
- 7. Validate with the app's typecheck/build.
94
-
95
- For app features that touch AI:
96
-
97
- 1. Decide the AI feature boundary in the AI track: one workflow per feature, except RAG uses
98
- indexing and query workflows.
99
- 2. Design or update the AI capability contract with `ai-capability-design`.
100
- 3. Preview/apply the same AI patch, then sync AI artifacts.
101
- 4. Submit external workflow create/update with `external-ai-capability`.
102
- 5. Preserve returned request IDs for the workflow status/background-task layer.
103
- 6. Read `.howone/ai/manifest.json`.
104
- 7. Generate or update app SDK bindings from the manifest.
105
- 8. Implement frontend calls using `howone.ai.*`.
106
- 9. If outputs are saved, map only durable product fields from the AI result into an entity schema,
107
- then follow the database workflow.
108
-
109
- For frontend-only SDK work:
110
-
111
- 1. Read existing `src/lib/sdk.ts`.
112
- 2. Read only the SDK reference for the touched surface.
113
- 3. Preserve existing generated bindings and import style.
114
- 4. Validate.
115
-
116
- ## Non-Negotiable Rules
117
-
118
- - Generate SDK bindings from synced manifests, not from memory.
119
- - Keep `.howone/` as manifest storage only; do not write generated source files there.
120
- - Configure `projectId` and `env` only in `createClient`. Auth APIs follow the same `env` (dev → `api.howone.dev`, not `api.howone.ai`).
121
- - Import `src/lib/sdk.ts` before any `@howone/sdk` auth call so environment is pinned.
122
- - Use `import.meta.env.VITE_HOWONE_PROJECT_ID` and `import.meta.env.VITE_HOWONE_ENV`; do not
123
- hardcode project IDs or add fallback env values.
124
- - For private user-owned data, authenticated APIs derive owner from JWT. Do not pass
125
- `created_by_id`, `created_by_user_id`, `createdById`, `ownerId`, or `puid`.
126
- - For `access.authenticated.read = "own"`, prefer `howone.entities.Entity.query.mine(...)`.
127
- - Public pages use `howone.public.entities.*` only when manifest access explicitly allows public
128
- reads or writes.
129
- - Default `createClient({ projectId, env })` uses **HowOne hosted login**. For a custom `/login` UI
130
- that still calls HowOne OTP/OAuth APIs, add `auth: 'custom'` and `HowOneProvider auth="none"`.
131
- - `HowOneProvider` may render the bottom-right HowOne `FloatingButton` logo by default. Do not remove
132
- it unless the user explicitly asks for `brand="hidden"` or `showBrandButton={false}`.
133
- - Do not add SDK-owned toast APIs, redirect overlays, or app-specific UI. Expose data, state, events,
134
- and callbacks; implement visible feedback in the generated frontend app.
135
- - SDK extensibility rule: default behavior must work without configuration, and custom behavior must
136
- enter through typed adapters/callbacks instead of hardcoded app UI or provider-specific branches.
137
- - AI workflows are implementation, not persistence. Never put CRUD, auth, upload handling, or app
138
- state management into the workflow capability contract.
139
- - For external workflow edits, pass `workflowConfigID` from a confirmed workflow status result; do
140
- not invent it or omit it.
141
- - If the user explicitly requires AI behavior that the available workflow service cannot support,
142
- stop that AI implementation path and report the unsupported requirement instead of faking,
143
- silently omitting, or replacing the AI capability with static behavior.
68
+ | `01-ai-capability-architecture.md` | Layers, boundaries, feature flow |
69
+ | `02-workflow-contract-rules.md` | Input/output JSON schemas for capabilities |
70
+ | `03-service-capability-catalog.md` | What the workflow service supports (feasibility) |
71
+ | `04-workflow-operations.md` | External workflow create/update/status |
72
+ | `05-ai-feature-playbooks.md` | Recurring product patterns |
73
+
74
+ ### `04-app-sdk/`
75
+
76
+ | File | Use for |
77
+ |---|---|
78
+ | `01-client-setup.md` | `createClient`, env, provider |
79
+ | `02-entity-operations.md` | `howone.entities` / public namespace |
80
+ | `03-auth.md` | Login, session, custom auth |
81
+ | `04-react-integration.md` | `HowOneProvider`, hooks |
82
+ | `05-file-upload.md` | Uploads |
83
+ | `06-raw-http.md` | Typed escape hatch |
84
+ | `07-ai-action-calls.md` | `howone.ai.*` runtime calls |
85
+ | `08-ai-manifest-handoff.md` | AI manifest `src/lib/sdk.ts` |
86
+ | `09-extension-boundaries.md` | Adapters, extension rules |
87
+ | `10-workflow-execute-sse.md` | Documented workflow status/streaming wire format |
88
+
89
+ ## Routing
90
+
91
+ All surface classification and minimum reads live in `01-architect/01-app-generation.md`. This
92
+ skill index lists files; architect decides which apply.
93
+
94
+ Mixed scope: read at least one file per touched track before writing.
95
+
96
+ ## Design order
97
+
98
+ ```text
99
+ architect → (optional) entity-schema and/or ai-capabilities → sync → app-sdk → UI
100
+ ```
101
+
102
+ Skip tracks the user did not require.
103
+
104
+ ## Rules
105
+
106
+ - When platform contracts apply: synced `{appRoot}/.howone/database/manifest.json` and/or
107
+ `{appRoot}/.howone/ai/manifest.json` plus tool results are source of truth.
108
+ - `.howone/` holds manifests only—not generated app source.
109
+ - Do not invent platform schemas, APIs, or identifiers absent from contracts/catalog/tools.
110
+ - Platform stop-loss: architect. User-owned external systems: integrate in app code.
@@ -1,4 +1,4 @@
1
1
  interface:
2
- display_name: "HowOne App Architecture"
3
- short_description: "Design HowOne database schemas, AI workflows, SDK bindings, auth, and app integration."
4
- default_prompt: "Use this skill to choose the right HowOne architecture track, then implement database schema, AI capability/workflow, SDK bindings, auth, or frontend SDK calls from synced manifests."
2
+ display_name: "HowOne"
3
+ short_description: "Generated app platform: scope-first architecture, optional entity schema, AI capabilities, and SDK integration from synced contracts."
4
+ default_prompt: "Load howone, read 01-architect/01-app-generation.md, then the smallest track files from SKILL.md for this request. Scope follows the user—not every app needs AI or backend."
@@ -69,8 +69,8 @@ Prefer failure-driven inspection over speculative context loading.
69
69
  ## HowOne Runtime and Auth
70
70
 
71
71
  - Use synced HowOne manifests plus `src/lib/sdk.ts` as the source of truth for generated entity and AI bindings.
72
- - Use the `howone-sdk` skill for HowOne app architecture, backend database schema design, manifest-to-SDK binding, and app-side SDK code.
73
- - Inside `howone-sdk`, read the smallest relevant numbered track: `01-architect/` for app flow, `02-database/` for schema/access/data design, and `03-sdk/` for frontend SDK/auth/entity calls.
72
+ - Use the `howone` skill: `skill(howone)` `SKILL.md` → `01-architect/01-app-generation.md` smallest track reads from the skill index. Scope follows the user request.
73
+ - Tracks: `01-architect/`, `02-entity-schema/`, `03-ai-capabilities/`, `04-app-sdk/` include only what the user needs.
74
74
  - Choose auth posture from the schema access contract, not from guesswork:
75
75
  - authenticated/private app data uses `howone.entities.*`; the backend derives ownership from the JWT
76
76
  - public pages use `howone.public.entities.*` only when the manifest explicitly allows public access