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.
- package/package.json +1 -1
- package/templates/vite/.howone/skills/howone/01-architect/01-app-generation.md +132 -176
- package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/01-schema-design.md +3 -1
- package/templates/vite/.howone/skills/howone/{04-ai → 03-ai-capabilities}/01-ai-capability-architecture.md +6 -5
- package/templates/vite/.howone/skills/howone/{04-ai/04-service-capability-catalog.md → 03-ai-capabilities/03-service-capability-catalog.md} +15 -11
- package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/01-client-setup.md +6 -4
- package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/07-ai-action-calls.md +3 -3
- package/templates/vite/.howone/skills/howone/{04-ai/03-ai-sdk-handoff.md → 04-app-sdk/08-ai-manifest-handoff.md} +2 -2
- package/templates/vite/.howone/skills/howone/SKILL.md +98 -131
- package/templates/vite/.howone/skills/howone/agents/openai.yaml +3 -3
- package/templates/vite/AGENTS.md +2 -2
- /package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/02-schema-operations.md +0 -0
- /package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/03-data-access-patterns.md +0 -0
- /package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/04-query-dsl-and-responses.md +0 -0
- /package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/05-ai-persistence-patterns.md +0 -0
- /package/templates/vite/.howone/skills/howone/{04-ai → 03-ai-capabilities}/02-workflow-contract-rules.md +0 -0
- /package/templates/vite/.howone/skills/howone/{04-ai/05-workflow-operations.md → 03-ai-capabilities/04-workflow-operations.md} +0 -0
- /package/templates/vite/.howone/skills/howone/{04-ai/06-ai-feature-playbooks.md → 03-ai-capabilities/05-ai-feature-playbooks.md} +0 -0
- /package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/02-entity-operations.md +0 -0
- /package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/03-auth.md +0 -0
- /package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/04-react-integration.md +0 -0
- /package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/05-file-upload.md +0 -0
- /package/templates/vite/.howone/skills/howone/{03-sdk → 04-app-sdk}/06-raw-http.md +0 -0
- /package/templates/vite/.howone/skills/howone/{03-sdk/08-extension-boundaries.md → 04-app-sdk/09-extension-boundaries.md} +0 -0
- /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,215 +1,171 @@
|
|
|
1
1
|
# App Generation Architect
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Read immediately after `skill(name="howone")` and before platform design tools, SDK contract
|
|
4
|
+
edits, or implementation guesses.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
##
|
|
10
|
+
## Scope classification
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
Map the user request to surfaces. Include only what they need.
|
|
12
13
|
|
|
13
|
-
|
|
|
14
|
+
| Need | Tracks | Notes |
|
|
14
15
|
|---|---|---|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
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
|
-
|
|
23
|
+
**Mixed scope:** read at least one file per touched track (`SKILL.md` index) before writing.
|
|
21
24
|
|
|
22
|
-
|
|
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
|
-
|
|
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
|
-
|
|
31
|
+
### Platform provides (evidence required)
|
|
32
32
|
|
|
33
|
-
|
|
|
33
|
+
| Surface | Evidence to check | Design track |
|
|
34
34
|
|---|---|---|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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
|
-
|
|
44
|
+
### App-owned (not platform gap)
|
|
99
45
|
|
|
100
|
-
|
|
101
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
65
|
+
### Platform scope rules
|
|
161
66
|
|
|
162
|
-
|
|
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
|
-
|
|
71
|
+
When stopping a platform path, separate what HowOne can provide from what remains possible via app-owned integration.
|
|
165
72
|
|
|
166
|
-
-
|
|
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
|
-
|
|
75
|
+
## Platform layers
|
|
170
76
|
|
|
171
|
-
|
|
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
|
-
|
|
174
|
-
persistence after output contract.
|
|
84
|
+
Validated/synced manifests drive code—not prompts or memory.
|
|
175
85
|
|
|
176
|
-
|
|
86
|
+
```text
|
|
87
|
+
user request → scope → platform contracts → sync → sdk binding → UI
|
|
88
|
+
```
|
|
177
89
|
|
|
178
|
-
|
|
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
|
-
|
|
92
|
+
## Minimum track reads (after this file)
|
|
183
93
|
|
|
184
|
-
|
|
94
|
+
Use `SKILL.md` for the full file index. Typical minimums:
|
|
185
95
|
|
|
186
|
-
|
|
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
|
-
|
|
189
|
-
only.
|
|
104
|
+
## Data posture
|
|
190
105
|
|
|
191
|
-
|
|
106
|
+
Choose before schema and UI.
|
|
192
107
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
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
|
-
|
|
118
|
+
Defaults: "my/private" → own; public catalog only when fields are safe; share links → scoped + limits.
|
|
204
119
|
|
|
205
|
-
|
|
120
|
+
## Auth posture
|
|
206
121
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
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
|
package/templates/vite/.howone/skills/howone/{02-database → 02-entity-schema}/01-schema-design.md
RENAMED
|
@@ -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
|
-
`
|
|
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
|
-
|
|
4
|
-
|
|
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
|
-
`
|
|
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 `
|
|
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 `
|
|
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
|
|
4
|
-
service
|
|
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
|
-
##
|
|
275
|
+
## Platform AI stop (catalog boundary)
|
|
276
|
+
|
|
277
|
+
Stop **platform AI design** (do not invent capabilities) when the requirement:
|
|
272
278
|
|
|
273
|
-
|
|
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
|
-
|
|
276
|
-
-
|
|
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
|
|
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
|
|
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
|
|
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 `
|
|
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 `
|
|
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 `
|
|
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-
|
|
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
|
|
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 `
|
|
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:
|
|
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
|
|
6
|
+
# HowOne Skill
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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/` |
|
|
21
|
-
| `02-
|
|
22
|
-
| `03-
|
|
23
|
-
| `04-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
|
72
|
-
|
|
73
|
-
|
|
|
74
|
-
|
|
|
75
|
-
|
|
|
76
|
-
|
|
|
77
|
-
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
|
3
|
-
short_description: "
|
|
4
|
-
default_prompt: "
|
|
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."
|
package/templates/vite/AGENTS.md
CHANGED
|
@@ -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
|
|
73
|
-
-
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|