@ankhorage/devtools 1.10.10 → 1.10.12
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/dist/tools/skills/assets/ankhorage-project-structure/SKILL.md +21 -32
- package/dist/tools/skills/assets/ankhorage-project-structure/references/studio.md +94 -48
- package/dist/tools/skills/assets/zora-designer/SKILL.md +63 -56
- package/dist/tools/skills/assets/zora-designer/references/artifact.md +6 -4
- package/dist/tools/skills/assets/zora-designer/references/screens.md +90 -0
- package/dist/tools/skills/assets/zora-designer/references/workflow.md +84 -126
- package/dist/tools/skills/assets/zora-designer/scripts/generate-template-catalog.mjs +89 -0
- package/dist/tools/skills/assets/zora-designer/scripts/owner-api.mjs +62 -39
- package/dist/tools/skills/assets/zora-designer/scripts/scaffold-template.mjs +59 -139
- package/package.json +3 -3
- package/dist/tools/skills/assets/ankhorage-project-structure/references/expo-apps.md +0 -43
- package/dist/tools/skills/assets/ankhorage-project-structure/references/hexagonal-architecture.md +0 -120
- package/dist/tools/skills/assets/ankhorage-project-structure/references/repository-profiles.md +0 -91
- package/dist/tools/skills/assets/ankhorage-project-structure/references/ui-libraries.md +0 -79
|
@@ -2,20 +2,19 @@
|
|
|
2
2
|
name: ankhorage-project-structure
|
|
3
3
|
description: >
|
|
4
4
|
Design, review, or migrate the source structure of Ankhorage repositories and generated
|
|
5
|
-
applications. Use for directory ownership, package boundaries,
|
|
6
|
-
|
|
7
|
-
or cross-repository cleanup.
|
|
5
|
+
applications. Use for directory ownership, package boundaries, package CLI layout, repository
|
|
6
|
+
skill distribution, public entrypoints, or cross-repository cleanup.
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# Ankhorage Project Structure
|
|
11
10
|
|
|
12
|
-
Apply
|
|
11
|
+
Apply the general ownership rules first. Only Studio currently has a mandated source taxonomy.
|
|
13
12
|
|
|
14
13
|
Before deciding structure:
|
|
15
14
|
|
|
16
15
|
1. Read the repository `AGENTS.md`, `package.json`, exports, source tree, and representative tests.
|
|
17
16
|
2. Load `ankhorage-coding-rules` as the complementary implementation and testing authority.
|
|
18
|
-
3. Identify the repository's owning capability
|
|
17
|
+
3. Identify the repository's owning capability.
|
|
19
18
|
4. Identify current public subpaths and cross-package release boundaries.
|
|
20
19
|
|
|
21
20
|
Repository-specific rules may refine this skill, but must not silently reverse package ownership
|
|
@@ -24,35 +23,23 @@ or dependency direction.
|
|
|
24
23
|
## Primary boundary
|
|
25
24
|
|
|
26
25
|
An Ankhorage repository/package is the primary bounded capability and independently released
|
|
27
|
-
unit. Do not
|
|
26
|
+
unit. Do not force a Studio directory tree onto libraries, providers, tooling, or generated
|
|
27
|
+
applications.
|
|
28
28
|
|
|
29
29
|
- Independently bindable capabilities belong in standalone packages.
|
|
30
|
-
- Substantial responsibilities inside a package use cohesive
|
|
31
|
-
`src/`.
|
|
30
|
+
- Substantial responsibilities inside a package use cohesive directories owned by the package.
|
|
32
31
|
- Cross-package access uses published APIs and declared dependencies, never sibling source.
|
|
33
32
|
- A package owns its application behavior; adapters belonging to another package are not copied
|
|
34
33
|
or proxied locally.
|
|
35
34
|
|
|
36
|
-
## Select a profile
|
|
37
|
-
|
|
38
|
-
Read [repository-profiles.md](references/repository-profiles.md), select one primary profile, and
|
|
39
|
-
apply only the references routed by that profile.
|
|
40
|
-
|
|
41
|
-
| Profile | Typical repositories | Required references |
|
|
42
|
-
| ---------------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
|
|
43
|
-
| Application, engine, or hybrid | Studio, Runtime, Orchestrator, Deploy, Infra | [hexagonal-architecture.md](references/hexagonal-architecture.md) |
|
|
44
|
-
| React Native / Expo application | generated apps, Studio app host | [hexagonal-architecture.md](references/hexagonal-architecture.md), [expo-apps.md](references/expo-apps.md) |
|
|
45
|
-
| Component or design-system library | ZORA, Surface | [ui-libraries.md](references/ui-libraries.md) |
|
|
46
|
-
| Contracts or value library | Contracts and other portable models | [repository-profiles.md](references/repository-profiles.md) |
|
|
47
|
-
| Utility library | Utility | [utilities.md](references/utilities.md) |
|
|
48
|
-
| Platform/provider adapter | Expo Runtime, Supabase packages, orchestrator modules | [repository-profiles.md](references/repository-profiles.md) |
|
|
49
|
-
| Tooling or CLI package | Ankh, Doctor, Devtools and any package exposing Ankh commands | [cli.md](references/cli.md) |
|
|
50
|
-
|
|
51
35
|
When a package declares an Ankh provider or changes `src/cli/`, always read
|
|
52
|
-
[cli.md](references/cli.md)
|
|
36
|
+
[cli.md](references/cli.md).
|
|
37
|
+
|
|
38
|
+
When classifying a local or cross-repository utility, also read
|
|
39
|
+
[utilities.md](references/utilities.md).
|
|
53
40
|
|
|
54
41
|
When the task is a structural cleanup or migration, also read
|
|
55
|
-
[migration.md](references/migration.md). For
|
|
42
|
+
[migration.md](references/migration.md). For `ankhorage/studio`, always also read
|
|
56
43
|
[studio.md](references/studio.md).
|
|
57
44
|
|
|
58
45
|
When adding, distributing, or synchronizing repository-local agent skills, read
|
|
@@ -63,13 +50,8 @@ When adding, distributing, or synchronizing repository-local agent skills, read
|
|
|
63
50
|
- Keep only intentional package entrypoints and required declaration shims directly under `src/`.
|
|
64
51
|
- Keep one abstraction level and responsibility among siblings.
|
|
65
52
|
- Prefer domain ownership over technical dumping grounds such as `common`, `core`, `helpers`,
|
|
66
|
-
`misc`, or `shared`.
|
|
67
|
-
|
|
68
|
-
alternate owners of domain behavior.
|
|
69
|
-
- Ports are owned by the application/domain code that requires the capability.
|
|
70
|
-
- Adapters depend inward; domain/application code does not import concrete adapters.
|
|
71
|
-
- Add a port only for a real external or replaceable boundary. Do not wrap every function in
|
|
72
|
-
architecture ceremony.
|
|
53
|
+
`misc`, or `shared`. `utils/` is the canonical local directory for genuine package-level
|
|
54
|
+
utilities.
|
|
73
55
|
- Colocate focused unit tests. Put cross-domain acceptance, E2E, smoke infrastructure, and large
|
|
74
56
|
fixtures outside production source.
|
|
75
57
|
- Public package subpaths may point to nested source. Do not keep files at `src/` merely because
|
|
@@ -88,3 +70,10 @@ For every file or new symbol, decide in order:
|
|
|
88
70
|
4. Is it reusable enough to belong in `@ankhorage/utility` instead?
|
|
89
71
|
|
|
90
72
|
If any answer is unclear, resolve ownership before moving or creating code.
|
|
73
|
+
|
|
74
|
+
## Studio enforcement
|
|
75
|
+
|
|
76
|
+
Only `ankhorage/studio` has a mandatory source taxonomy and hexagonal feature architecture. Its
|
|
77
|
+
complete allowlist, exceptions, port/adapter rules, and generated-app policy are in
|
|
78
|
+
[studio.md](references/studio.md). Other repositories remain structurally unconstrained beyond the
|
|
79
|
+
universal invariants until their owning repository is deliberately brought into scope.
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Read this only for `ankhorage/studio`. It is a structural target and ownership checklist, not a
|
|
4
4
|
license to move every file in one change.
|
|
5
5
|
|
|
6
|
-
Studio is
|
|
7
|
-
|
|
6
|
+
Studio is the bounded capability. `features/` is its internal organizational boundary; its contents
|
|
7
|
+
are not independently bound packages.
|
|
8
8
|
|
|
9
9
|
## Target source tree
|
|
10
10
|
|
|
@@ -13,29 +13,31 @@ src/
|
|
|
13
13
|
index.ts
|
|
14
14
|
root.ts
|
|
15
15
|
|
|
16
|
-
app/ # React/RN application edge and composition
|
|
17
16
|
cli/ # one Studio Ankh provider
|
|
18
17
|
host/ # Bun/Fastify/filesystem edges and host composition
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
18
|
+
apps/ # generated applications; Studio-only directory
|
|
19
|
+
<generated-app>/ # generated; never edited by hand
|
|
20
|
+
studio/ # temporary exception until Studio is generated
|
|
21
|
+
|
|
22
|
+
features/ # Studio-owned capabilities
|
|
23
|
+
auth/
|
|
24
|
+
bindings/
|
|
25
|
+
canvas/
|
|
26
|
+
deploy/
|
|
27
|
+
diagnostics/
|
|
28
|
+
external-apis/
|
|
29
|
+
manifest/
|
|
30
|
+
media/
|
|
31
|
+
modules/
|
|
32
|
+
projects/
|
|
33
|
+
properties/
|
|
34
|
+
routes/
|
|
35
|
+
secrets/
|
|
36
|
+
selection/
|
|
37
|
+
templates/
|
|
38
|
+
workspace/
|
|
37
39
|
|
|
38
|
-
utils/
|
|
40
|
+
utils/ # the canonical Studio-local utility directory
|
|
39
41
|
|
|
40
42
|
test/
|
|
41
43
|
acceptance/
|
|
@@ -44,8 +46,20 @@ test/
|
|
|
44
46
|
smoke/
|
|
45
47
|
```
|
|
46
48
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
`index.ts`, `root.ts`, `cli/`, `host/`, `apps/`, `features/`, and `utils/` are the complete Studio
|
|
50
|
+
root taxonomy, apart from required declaration shims. Do not create `app/`, `platform/`, `common/`,
|
|
51
|
+
`core/`, `helpers/`, or `shared/`.
|
|
52
|
+
|
|
53
|
+
Substantial features may contain `contracts`, `domain`, `application`, `ports`, `adapters`, and
|
|
54
|
+
focused colocated `tests` when those roles genuinely exist. Do not pre-create role directories.
|
|
55
|
+
|
|
56
|
+
`apps/` contains complete generator-owned applications. Nothing under it is manually maintained.
|
|
57
|
+
`apps/studio/` is a temporary exception while Studio is still hand-authored; it must disappear when
|
|
58
|
+
the Studio app is generated.
|
|
59
|
+
|
|
60
|
+
`utils/` is the one canonical local utility directory. It contains only reusable Studio-local,
|
|
61
|
+
framework-neutral helpers; behavior with feature semantics remains in that feature, and behavior
|
|
62
|
+
reused across repositories belongs in `@ankhorage/utility`.
|
|
49
63
|
|
|
50
64
|
## Studio CLI
|
|
51
65
|
|
|
@@ -73,41 +87,73 @@ ankh studio projects list -> commands/projects/list.ts
|
|
|
73
87
|
ankh studio projects sync -> commands/projects/sync.ts
|
|
74
88
|
```
|
|
75
89
|
|
|
90
|
+
`cli/commands/` contains inbound adapters only: parse command input, invoke a feature application
|
|
91
|
+
operation, and render the result. It must not own feature rules or external-package integrations.
|
|
92
|
+
|
|
93
|
+
## Studio host
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
src/host/
|
|
97
|
+
createStudioHost.ts
|
|
98
|
+
middleware/
|
|
99
|
+
routes/
|
|
100
|
+
<feature>/
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
`host/` contains inbound HTTP, filesystem, and process adapters plus their composition. Route and
|
|
104
|
+
middleware modules translate into feature application operations; they do not own feature rules.
|
|
105
|
+
|
|
76
106
|
`ankh studio workspace install` is not part of the target. Generated apps are standalone and own
|
|
77
107
|
their installation. Remove the obsolete command, handler, capability, tests, and documentation
|
|
78
108
|
rather than relocating them.
|
|
79
109
|
|
|
80
110
|
## Current directory disposition
|
|
81
111
|
|
|
82
|
-
- Root `binding*` modules move into `bindings/`.
|
|
83
|
-
- Root `canvas*` and insert/placement behavior move into `canvas/`.
|
|
84
|
-
- Root `projectDeploy*`, host deploy code, deploy routes, and deploy UI converge under
|
|
85
|
-
|
|
86
|
-
- Root auth settings/health/OAuth behavior and host auth implementations converge under
|
|
87
|
-
|
|
112
|
+
- Root `binding*` modules move into `features/bindings/`.
|
|
113
|
+
- Root `canvas*` and insert/placement behavior move into `features/canvas/`.
|
|
114
|
+
- Root `projectDeploy*`, host deploy code, deploy routes, and deploy UI converge under
|
|
115
|
+
`features/deploy/`, with host routes remaining in `host/routes/deploy/`.
|
|
116
|
+
- Root auth settings/health/OAuth behavior and host auth implementations converge under
|
|
117
|
+
`features/auth/`, with host routes remaining in `host/routes/auth/`.
|
|
88
118
|
- Root external API contracts/model code, host API services, routes, and UI converge under
|
|
89
|
-
`external-apis
|
|
90
|
-
- Root media authoring code, host media implementations, and media UI converge under
|
|
91
|
-
|
|
92
|
-
- Root module admin code and host module integration converge under `modules
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
119
|
+
`features/external-apis/`, with host routes remaining in `host/routes/external-apis/`.
|
|
120
|
+
- Root media authoring code, host media implementations, and media UI converge under
|
|
121
|
+
`features/media/`.
|
|
122
|
+
- Root module admin code and host module integration converge under `features/modules/`.
|
|
123
|
+
- Root project/workspace models, project screens, hooks, project store/generation operations, and
|
|
124
|
+
matching adapters converge under `features/projects/`, `features/templates/`, or
|
|
125
|
+
`features/workspace/` according to actual ownership.
|
|
126
|
+
- Root secret API/usage/response behavior and host secret implementations converge under
|
|
127
|
+
`features/secrets/`, with host routes remaining in `host/routes/secrets/`.
|
|
128
|
+
- Route and admin-route policy moves under `features/routes/`; the corresponding host adapters stay
|
|
129
|
+
in `host/routes/`.
|
|
100
130
|
- Selection, measurement, stationary selection, and canvas interaction behavior must be separated
|
|
101
|
-
between `selection
|
|
102
|
-
- The current generic `core/` directory disappears; each file moves to its owning
|
|
103
|
-
edge.
|
|
131
|
+
between `features/selection/` and `features/canvas/` by actual invariant ownership.
|
|
132
|
+
- The current generic `core/` directory disappears; each file moves to its owning feature role or
|
|
133
|
+
package edge.
|
|
104
134
|
- The current generic `runtime/` directory is reviewed symbol by symbol. Shared runtime behavior
|
|
105
|
-
moves to `@ankhorage/runtime`; Studio-specific
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
`app/`.
|
|
135
|
+
moves to `@ankhorage/runtime`; Studio-specific integration becomes a feature-local adapter.
|
|
136
|
+
- Feature-specific UI becomes generated-app code under `apps/`; it is never rehomed in a generic
|
|
137
|
+
Studio UI directory.
|
|
109
138
|
- Host smoke and acceptance infrastructure moves outside production source to `test/`.
|
|
110
139
|
|
|
140
|
+
## External package integrations
|
|
141
|
+
|
|
142
|
+
An Ankhorage or third-party package is connected in the owning feature, not in a global
|
|
143
|
+
`platform/` directory. For example:
|
|
144
|
+
|
|
145
|
+
```text
|
|
146
|
+
src/features/templates/
|
|
147
|
+
ports/
|
|
148
|
+
templateCatalogPort.ts
|
|
149
|
+
adapters/
|
|
150
|
+
createAnkhorageTemplatesAdapter.ts
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
The port states the capability that Templates requires. The adapter imports
|
|
154
|
+
`@ankhorage/templates`, translates its API, and implements that port. The composition root chooses
|
|
155
|
+
the adapter. Do not duplicate an adapter in `host/`, `cli/`, or another feature.
|
|
156
|
+
|
|
111
157
|
## Utility gates
|
|
112
158
|
|
|
113
159
|
The existing own-property helpers explicitly marked for Utility extraction should move through
|
|
@@ -1,29 +1,33 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: zora-designer
|
|
3
3
|
description: >
|
|
4
|
-
|
|
5
|
-
evidence, and author
|
|
6
|
-
|
|
7
|
-
reconstruction with ZORA elements, or template creation. Do not use for illustration-only work.
|
|
4
|
+
Configure an owner-backed application design, generate one screen or a coherent screen series,
|
|
5
|
+
audit supplied evidence, and author portable Ankhorage templates. Use for category-driven design
|
|
6
|
+
decisions, ZORA screen generation, visual audits, or template creation.
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# ZORA Designer
|
|
11
10
|
|
|
12
|
-
Design, audit, and author through the target repository's released owner APIs.
|
|
13
|
-
`zora-designer.md`
|
|
14
|
-
|
|
11
|
+
Design, audit, and author through the target repository's released owner APIs. The complete
|
|
12
|
+
`AppManifest` is runtime authority; `zora-designer.md` and generated screen images are design
|
|
13
|
+
evidence.
|
|
15
14
|
|
|
16
15
|
## Route the request
|
|
17
16
|
|
|
18
|
-
- `interactive`:
|
|
19
|
-
|
|
20
|
-
- `
|
|
21
|
-
|
|
22
|
-
- `
|
|
23
|
-
and
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
17
|
+
- `interactive`: run the progressive configuration conversation in
|
|
18
|
+
[workflow.md](references/workflow.md). Do not create code or images before confirmation.
|
|
19
|
+
- `screen`: resolve the configuration, then read [screens.md](references/screens.md) and design one
|
|
20
|
+
screen.
|
|
21
|
+
- `screens`: resolve the configuration, then read [screens.md](references/screens.md) and design an
|
|
22
|
+
ordered series with shared navigation, state, geometry, and tokens.
|
|
23
|
+
- `audit`: read [audit.md](references/audit.md) and evaluate supplied image or runtime evidence.
|
|
24
|
+
- `template`: resolve the configuration and screen model, then author one portable template through
|
|
25
|
+
the workflow below.
|
|
26
|
+
|
|
27
|
+
Natural language is enough. Treat short replies as answers to the current question, not permission
|
|
28
|
+
to infer later decisions. A reply such as “go on” advances to the next unresolved decision. Only an
|
|
29
|
+
explicit request such as “accept all recommended values” resolves the remaining recommendations at
|
|
30
|
+
once.
|
|
27
31
|
|
|
28
32
|
## Start with the owners
|
|
29
33
|
|
|
@@ -33,57 +37,60 @@ From the target repository, run:
|
|
|
33
37
|
bun .agents/skills/zora-designer/scripts/owner-api.mjs inspect
|
|
34
38
|
```
|
|
35
39
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
Use owner terminology verbatim: `GeneratedColorRole`, `ThemeTokens.colors`, `ThemeSemantics`, and
|
|
42
|
-
`SemanticColorToken`. Do not introduce aliases or naming cleanup here.
|
|
40
|
+
Use its installed owner output for categories, recommendations, harmonies, tone pairs, navigation
|
|
41
|
+
types, ZORA elements, events, recipes, and version provenance. Never copy owner catalogs, component
|
|
42
|
+
schemas, token inventories, color algorithms, action types, or manifest implementations into this
|
|
43
|
+
skill.
|
|
43
44
|
|
|
44
|
-
|
|
45
|
+
Compile chosen values with the same helper before composing screens. Inspect both computed modes,
|
|
46
|
+
including their resolved Surface themes and all owner diagnostics. Never hand-calculate a value the
|
|
47
|
+
owner exposes.
|
|
45
48
|
|
|
46
|
-
|
|
47
|
-
existing brief target, category preset, then safe global default. Record an origin for each value.
|
|
48
|
-
Keep target design separate from observed runtime state and report drift rather than overwriting one
|
|
49
|
-
with the other.
|
|
49
|
+
## Preserve the complete UX
|
|
50
50
|
|
|
51
|
-
For
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
For every screen region, prefer the exact semantic ZORA element supported by current metadata.
|
|
52
|
+
Visual resemblance alone is insufficient. If no exact element exists, preserve the requested UX
|
|
53
|
+
with an obvious supported placeholder such as a secondary-surface `Box`, and record the capability
|
|
54
|
+
gap. Do not invent props, application components, or successful behavior.
|
|
54
55
|
|
|
55
|
-
|
|
56
|
+
Bind every interaction expressible by installed Contracts and ZORA event metadata. Leave an
|
|
57
|
+
unsupported interaction visibly present and explicitly unbound without blocking unrelated design
|
|
58
|
+
work. Release validation still decides whether the complete manifest is shippable.
|
|
56
59
|
|
|
57
|
-
|
|
58
|
-
element's semantic responsibility, structure, states/interactions, accessibility contract, props,
|
|
59
|
-
events, and data requirements fit. Visual resemblance alone is insufficient.
|
|
60
|
+
## Template output
|
|
60
61
|
|
|
61
|
-
|
|
62
|
+
A Templates repository template is exactly one portable unit:
|
|
62
63
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
```text
|
|
65
|
+
src/templates/categories/{appCategory}/{slug}/
|
|
66
|
+
createAppManifest.ts
|
|
67
|
+
assets/
|
|
68
|
+
screens/
|
|
69
|
+
images/
|
|
70
|
+
```
|
|
67
71
|
|
|
68
|
-
|
|
72
|
+
`createAppManifest.ts` default-exports a function returning the complete `AppManifest`.
|
|
73
|
+
`assets/screens/` contains design evidence only. Runtime media uses real application image regions
|
|
74
|
+
under `assets/images/`; rebuild text, controls, icons, surfaces, and layout with ZORA.
|
|
69
75
|
|
|
70
|
-
|
|
76
|
+
Scaffold only a reviewed, release-valid manifest:
|
|
71
77
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
78
|
+
```text
|
|
79
|
+
bun .agents/skills/zora-designer/scripts/scaffold-template.mjs scaffold-input.json
|
|
80
|
+
```
|
|
75
81
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
82
|
+
The helper creates the template directory and regenerates discovery from the filesystem. Do not add
|
|
83
|
+
category registries, seed definitions, fallback templates, compatibility paths, or per-template
|
|
84
|
+
barrels.
|
|
79
85
|
|
|
80
86
|
## Validate before handoff
|
|
81
87
|
|
|
82
|
-
-
|
|
83
|
-
|
|
84
|
-
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
|
|
88
|
-
-
|
|
89
|
-
|
|
88
|
+
- confirm the interactive decision sequence completed or the user explicitly accepted remaining
|
|
89
|
+
recommendations;
|
|
90
|
+
- compile light and dark independently through installed owner APIs;
|
|
91
|
+
- validate selected ZORA nodes, props, events, actions, and complete manifest contracts;
|
|
92
|
+
- run the screen composition gate from [screens.md](references/screens.md) before returning screen
|
|
93
|
+
output;
|
|
94
|
+
- keep unsupported interactions and capability gaps explicit;
|
|
95
|
+
- keep concept screens separate from runtime assets;
|
|
96
|
+
- for deterministic artifact shape, read [artifact.md](references/artifact.md).
|
|
@@ -67,8 +67,10 @@ Aggregate validation in this order: blocker, failure, not run, pass with non-blo
|
|
|
67
67
|
pass. Resolve the application gate separately. A runtime blocker affects aggregate status only when
|
|
68
68
|
runtime application is in the requested scope.
|
|
69
69
|
|
|
70
|
-
Every
|
|
71
|
-
|
|
70
|
+
Every capability that lacks an exact metadata-supported ZORA element records a non-blocking
|
|
71
|
+
capability gap and uses a visible `Box` placeholder in the concept composition. An owner diagnostic
|
|
72
|
+
with `severity: error` is a blocker. Record an owner issue link when one exists and the condition
|
|
73
|
+
for replacing the placeholder with a released real ZORA element.
|
|
72
74
|
|
|
73
75
|
## Deterministic audit fields
|
|
74
76
|
|
|
@@ -89,5 +91,5 @@ state that it was not persisted.
|
|
|
89
91
|
|
|
90
92
|
Before returning, confirm the artifact matches the requested mode, every resolved value has an
|
|
91
93
|
origin, owner identifiers were inspected, exact measurements came from tools, invisible behavior
|
|
92
|
-
was not passed from screenshots,
|
|
93
|
-
authority.
|
|
94
|
+
was not passed from screenshots, owner errors block release, capability gaps are explicit, and the
|
|
95
|
+
manifest remains canonical runtime authority.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Screen and Screen-Series Design
|
|
2
|
+
|
|
3
|
+
Read this reference for `screen` and `screens` after the interactive configuration is confirmed.
|
|
4
|
+
Generated images are concept evidence; the manifest and ZORA metadata remain implementation
|
|
5
|
+
authority.
|
|
6
|
+
|
|
7
|
+
## Preconditions
|
|
8
|
+
|
|
9
|
+
Do not generate or implement a screen until these are resolved:
|
|
10
|
+
|
|
11
|
+
- audience and primary task;
|
|
12
|
+
- platform, input modes, theme coverage, and an explicit target viewport or responsive range;
|
|
13
|
+
- primary color, harmony, per-mode tone pairs, typography/profile, and compiled owner themes;
|
|
14
|
+
- ordered screen list with one purpose and primary action per screen;
|
|
15
|
+
- navigator type, route topology, and back/cancel behavior.
|
|
16
|
+
|
|
17
|
+
If the user supplies only `mobile`, recommend a neutral 390 by 844 logical-point portrait concept
|
|
18
|
+
viewport. Ask about iOS- or Android-specific chrome only when it changes the requested result.
|
|
19
|
+
|
|
20
|
+
## Compose the series before rendering
|
|
21
|
+
|
|
22
|
+
For every screen record:
|
|
23
|
+
|
|
24
|
+
1. purpose, primary task, primary action, and success outcome;
|
|
25
|
+
2. content hierarchy and exact visible copy;
|
|
26
|
+
3. default plus relevant loading, empty, partial, error, offline, disabled, pressed, selected, and
|
|
27
|
+
focus states;
|
|
28
|
+
4. route relationship and continuity of selected item, filters, progress, drafts, or other state;
|
|
29
|
+
5. exact metadata-backed ZORA elements, supported events/actions, data needs, and capability gaps;
|
|
30
|
+
6. safe areas, keyboard/overlay behavior, scroll ownership, and narrow/wide behavior;
|
|
31
|
+
7. real image content that must become an application asset rather than screenshot UI.
|
|
32
|
+
|
|
33
|
+
Create one shared shell specification for a series: viewport, safe areas, gutters, header geometry,
|
|
34
|
+
navigation geometry, surface treatment, type roles, icon family, content density, and state styling.
|
|
35
|
+
Reuse it unchanged unless a screen has a documented immersive or modal exception.
|
|
36
|
+
|
|
37
|
+
## Mobile geometry and typography gate
|
|
38
|
+
|
|
39
|
+
Use compiled Surface/ZORA tokens when they define these values. Where the owner leaves a design-
|
|
40
|
+
brief decision open, use these starting constraints and record them rather than asking an image
|
|
41
|
+
model to improvise:
|
|
42
|
+
|
|
43
|
+
- 16–24 logical-point horizontal gutters and preserved top/bottom safe areas;
|
|
44
|
+
- at least 44 by 44 pt touch bounds, or the stricter target-platform convention;
|
|
45
|
+
- screen title uses the semantic `h1` role, normally near 32/40 on mobile, one line when practical
|
|
46
|
+
and never more than two; reserve `display` for splash, onboarding, or genuine marketing moments;
|
|
47
|
+
- section titles use `h2`/`h3`; body content normally starts near 16/24; metadata never becomes tiny
|
|
48
|
+
merely to fit more content;
|
|
49
|
+
- prose measures approximately 45–75 characters per line, with reading surfaces optimized near the
|
|
50
|
+
comfortable middle of that range;
|
|
51
|
+
- bottom navigation uses one stable height, label baseline, icon family, selected treatment, and
|
|
52
|
+
safe-area inset across the series;
|
|
53
|
+
- a screen must expose its purpose, primary content, and primary action without competing giant
|
|
54
|
+
headings or decorative elements.
|
|
55
|
+
|
|
56
|
+
Inspect the skill-owned design rules before rendering:
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
bun .agents/skills/zora-designer/scripts/audit.mjs catalog
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Apply every relevant `generation` rule from that catalog. The rubric belongs to this skill; owner
|
|
63
|
+
catalogs and design-system algorithms do not.
|
|
64
|
+
|
|
65
|
+
## Concept-image specification
|
|
66
|
+
|
|
67
|
+
Generate one image per distinct screen or state. Every prompt must include:
|
|
68
|
+
|
|
69
|
+
- exact logical viewport and portrait/landscape orientation;
|
|
70
|
+
- shared shell and active navigator item;
|
|
71
|
+
- resolved owner palette and type-role sizes, not only mood adjectives;
|
|
72
|
+
- exact screen title, copy that must be legible, hierarchy, components, and primary action;
|
|
73
|
+
- content quantity that fits the viewport at the declared type scale;
|
|
74
|
+
- invariants shared with the other screens;
|
|
75
|
+
- prohibitions against device frames, presentation boards, watermarks, illegible labels, invented
|
|
76
|
+
tabs, and oversized marketing typography on ordinary application screens.
|
|
77
|
+
|
|
78
|
+
For a series, keep the resolved configuration and shell verbatim across prompts. Do not generate a
|
|
79
|
+
single contact sheet as a substitute for individual screens unless the user explicitly requests one.
|
|
80
|
+
|
|
81
|
+
## Review and iterate
|
|
82
|
+
|
|
83
|
+
Inspect each output at its original dimensions. Reject and regenerate a screen when its title,
|
|
84
|
+
navigation, copy, safe areas, hierarchy, component semantics, or geometry diverges from the brief.
|
|
85
|
+
Use one targeted correction per iteration. Review the full ordered series together for shared shell,
|
|
86
|
+
type scale, navigation, color allocation, state continuity, and visual rhythm.
|
|
87
|
+
|
|
88
|
+
A visual review can validate visible composition only. It cannot prove runtime actions,
|
|
89
|
+
accessibility semantics, focus order, text scaling, or responsive behavior; record those as
|
|
90
|
+
not-assessable until implementation evidence exists.
|