@jskit-ai/agent-docs 0.1.132 → 0.1.133
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/guide/agent/app-setup/existing-application-migration.md +273 -0
- package/guide/agent/index.md +1 -0
- package/package.json +1 -1
- package/patterns/feature-package/example/booking-engine/package.json +1 -1
- package/patterns/minimal-foundation/example/package.json +4 -4
- package/patterns/shell-foundation/example/package.json +5 -5
- package/patterns/shell-foundation/example/packages/main/package.json +1 -1
- package/reference/autogen/PATTERN_INDEX.md +20 -20
- package/skills/jskit/SKILL.md +4 -2
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
<!-- Generated by `npm run agent-docs:build` from `packages/agent-docs/site/guide/app-setup/existing-application-migration.md`. Do not edit manually. -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
title: Migrate an existing application
|
|
5
|
+
description: Port a working application to AI-first JSKIT without regenerating it or flattening its product behavior.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Migrate an existing application
|
|
9
|
+
|
|
10
|
+
An existing application is a product with history, not input to a scaffold.
|
|
11
|
+
Port it by preserving observable behavior while replacing obsolete framework
|
|
12
|
+
mechanics with current JSKIT packages, patterns, capabilities, and public APIs.
|
|
13
|
+
The application remains usable throughout the migration, and its source,
|
|
14
|
+
migrations, tests, and runtime behavior remain the evidence of completion.
|
|
15
|
+
|
|
16
|
+
This procedure is guidance for a deliberate port. It does not create a
|
|
17
|
+
migration command, workboard, machine receipt, generated ownership state, or
|
|
18
|
+
second source of truth.
|
|
19
|
+
|
|
20
|
+
## 1. Inventory behavior before changing structure
|
|
21
|
+
|
|
22
|
+
Read the request, product documentation, nearest `AGENTS.md`, package manifests,
|
|
23
|
+
lockfile, current source, current diff, migration ledger, and existing tests.
|
|
24
|
+
Do not reset a dirty tree or assume an unfamiliar change is obsolete.
|
|
25
|
+
|
|
26
|
+
Build a working inventory of:
|
|
27
|
+
|
|
28
|
+
- user journeys, routes, screens, background work, integrations, and failure
|
|
29
|
+
behavior;
|
|
30
|
+
- authentication, application-user, workspace-membership, authorization, and
|
|
31
|
+
preview identities;
|
|
32
|
+
- packages, runtime providers, public capabilities, actions, events, and
|
|
33
|
+
long-lived processes;
|
|
34
|
+
- resources, tables, foreign keys, migration filenames, seed behavior, and the
|
|
35
|
+
current database migration ledger;
|
|
36
|
+
- client surfaces, placements, shared screen APIs, responsive behavior, warm
|
|
37
|
+
navigation state, and managed browser coverage;
|
|
38
|
+
- domain services, custom repositories, transactional boundaries, outbox or
|
|
39
|
+
delivery behavior, and intentional compatibility boundaries.
|
|
40
|
+
|
|
41
|
+
Run the smallest useful original tests and representative user journeys before
|
|
42
|
+
the port. Add characterization tests only where a high-value behavior has no
|
|
43
|
+
other executable description. Record uncertainty in the ordinary project
|
|
44
|
+
documentation or test name; do not silently turn an implementation accident
|
|
45
|
+
into a new product decision.
|
|
46
|
+
|
|
47
|
+
Preserve real workflow domains. Scheduling, money, communications, safety,
|
|
48
|
+
inventory, or other product-specific orchestration must not be flattened into
|
|
49
|
+
generic CRUD merely to make the structure look uniform.
|
|
50
|
+
|
|
51
|
+
## 2. Plan one coordinated dependency and capability graph
|
|
52
|
+
|
|
53
|
+
Use the installed JSKIT pattern index and package metadata to select the
|
|
54
|
+
smallest complete package set. Plan the top-level dependencies and their
|
|
55
|
+
ordinary npm closure before changing the lockfile, then install that planned
|
|
56
|
+
closure once. Review `package.json` and the lockfile as source changes. There
|
|
57
|
+
is no framework synchronization step after npm installation.
|
|
58
|
+
|
|
59
|
+
Model product domains through `defineFeature()` when they own a real capability
|
|
60
|
+
or operation boundary. A Feature declares stable named `requires`, optional
|
|
61
|
+
inputs, and `provides`; `setup()` receives those values directly and returns
|
|
62
|
+
only the promised outputs. Named actions capture the exact feature APIs they
|
|
63
|
+
need. Register structural catalogue entries during `setup()` and reserve
|
|
64
|
+
`boot()` for long-lived work that starts after composition.
|
|
65
|
+
|
|
66
|
+
Capability ids, action ids, routes, events, resources, and placements are
|
|
67
|
+
stable identities. They are not permission to fetch arbitrary dependencies by
|
|
68
|
+
string, symbol, class, token, `app.make()`, or another service-locator helper.
|
|
69
|
+
Remove locator-based wiring once every consumer has an explicit capability.
|
|
70
|
+
|
|
71
|
+
Move by coherent seams rather than leaving two framework paths active. The
|
|
72
|
+
finished graph has no obsolete framework-authoring CLI calls or configuration,
|
|
73
|
+
generator or synchronization scripts, generated-file markers, provenance
|
|
74
|
+
comments, operation receipts, compatibility shims that only preserve a retired
|
|
75
|
+
framework API, empty extension modules, or parallel dependency containers.
|
|
76
|
+
Keep genuine protocol adapters and product compatibility behavior when they
|
|
77
|
+
still have callers and tests.
|
|
78
|
+
|
|
79
|
+
Audit application `AGENTS.md` files, ordinary documentation, npm scripts, CI,
|
|
80
|
+
and package metadata as well as executable source. There is no supported
|
|
81
|
+
`jskit doctor` command or general JSKIT authoring CLI. Replace stale
|
|
82
|
+
instructions to run them with current-state checks owned by runtime startup,
|
|
83
|
+
the client build, migration status and disposable rebuilds, the application's
|
|
84
|
+
normal verification script, and Playwright.
|
|
85
|
+
|
|
86
|
+
## 3. Choose the narrowest server seam that owns each behavior
|
|
87
|
+
|
|
88
|
+
Conventional resources use `defineCrudResource()` and
|
|
89
|
+
`defineCrudJsonApiFeature()` so JSKIT owns the repeated repository, service,
|
|
90
|
+
permission, action, JSON API, and route mechanics. Extend that contract instead
|
|
91
|
+
of copying it.
|
|
92
|
+
|
|
93
|
+
| Product need | Normal owner |
|
|
94
|
+
| --- | --- |
|
|
95
|
+
| Behavior before, around, or after one standard CRUD operation | `operationLifecycle` |
|
|
96
|
+
| A resource-specific domain method or override | `decorateService` |
|
|
97
|
+
| A resource-specific query, lock, or persistence operation | `decorateRepository` |
|
|
98
|
+
| A named non-CRUD command on the resource | a named CRUD `action` backed by the service |
|
|
99
|
+
| A separate aggregate, workflow, or capability domain | `defineFeature()` with named actions |
|
|
100
|
+
| Persistence that the high-level resource APIs cannot express | an explicit custom repository owned by that Feature |
|
|
101
|
+
|
|
102
|
+
For mutations, lifecycle phases before commit share one repository
|
|
103
|
+
transaction. An `execute` hook that only normalizes input calls
|
|
104
|
+
`standard(nextInput)` rather than reimplementing the write. Repositories own
|
|
105
|
+
database access; services and hooks orchestrate repositories. External work
|
|
106
|
+
runs after commit, or a durable outbox record is written inside the transaction
|
|
107
|
+
and delivered separately.
|
|
108
|
+
|
|
109
|
+
Give commands product names such as `confirm`, `publish`, or `cancel`, with
|
|
110
|
+
explicit input, permissions, routes where needed, audit behavior, events, and
|
|
111
|
+
tests. Do not hide unrelated workflows behind a generic `execute(anything)`
|
|
112
|
+
action, and do not create a custom repository merely because SQL is familiar.
|
|
113
|
+
|
|
114
|
+
## 4. Adopt migrations without breaking either database history
|
|
115
|
+
|
|
116
|
+
Every immutable migration belongs to the package that owns its tables. Declare
|
|
117
|
+
the package directory in `package.json#jskit.migrations.directories`; do not
|
|
118
|
+
copy it into a central projection. Preserve the basename of every applied
|
|
119
|
+
historical migration when moving it so the existing Knex ledger continues to
|
|
120
|
+
recognize it. Basenames must be unique across the effective graph.
|
|
121
|
+
|
|
122
|
+
Keep cross-package foreign keys and other dependency-sensitive constraints in
|
|
123
|
+
later application-owned migrations when package ordering requires it. Seeds
|
|
124
|
+
are not migrations: run one explicit application-owned, idempotent seed after
|
|
125
|
+
the complete graph has migrated.
|
|
126
|
+
|
|
127
|
+
Prove both histories:
|
|
128
|
+
|
|
129
|
+
1. Inspect an existing ledger without mutating valuable data. It must recognize
|
|
130
|
+
every moved historical basename and report only genuinely new work pending.
|
|
131
|
+
2. Create a fresh disposable database and run the complete migration graph.
|
|
132
|
+
Compare its tables, keys, constraints, ownership rules, and invariant data
|
|
133
|
+
with the intended schema.
|
|
134
|
+
3. Run the normal migrate-then-seed entry point twice. The second run must have
|
|
135
|
+
no pending migration and the seed must be safe and stable.
|
|
136
|
+
|
|
137
|
+
A managed editor allocates one isolated mutable development database per
|
|
138
|
+
session. It owns creation, credentials, lifetime, and environment injection;
|
|
139
|
+
the session's setup, app server, preview, and interactive checks must agree on
|
|
140
|
+
that identity. Disposable verification databases may be created and destroyed
|
|
141
|
+
inside the session, but they are never shared between sessions. Imported and
|
|
142
|
+
production databases remain read-only unless the user separately authorizes an
|
|
143
|
+
upgrade.
|
|
144
|
+
|
|
145
|
+
## 5. Keep filesystem and application identities distinct
|
|
146
|
+
|
|
147
|
+
The host's managed-source permission contract is established when a workspace,
|
|
148
|
+
directory, temporary file, or atomic replacement is created. The creating
|
|
149
|
+
process must already have the correct user, shared group, inherited default
|
|
150
|
+
ACL, and restrictive umask. Setup must fail if it cannot establish that
|
|
151
|
+
contract. Do not make package installation, Git, agents, or preview startup run
|
|
152
|
+
recursive ownership or mode repair afterward.
|
|
153
|
+
|
|
154
|
+
For Vibe64-managed workspaces, the concrete contract is group `vibe64`,
|
|
155
|
+
directory mode `2770`, access and inherited default group ACL `vibe64:rwx`, no
|
|
156
|
+
access for other users, and process umask `0007`. The enabled human user and
|
|
157
|
+
`v64d_<workspace>` identity both belong to the group. Other hosts may use
|
|
158
|
+
different concrete identities, but they must provide the same creation-time
|
|
159
|
+
guarantee.
|
|
160
|
+
|
|
161
|
+
Do not conflate these identities:
|
|
162
|
+
|
|
163
|
+
- The filesystem identity controls who may create and replace source files.
|
|
164
|
+
- The auth provider identity verifies credentials and owns the session.
|
|
165
|
+
- The application user/profile is an existing product record associated with
|
|
166
|
+
that auth identity.
|
|
167
|
+
- A workspace identity is an existing membership and role that scopes routes,
|
|
168
|
+
permissions, queries, and writes.
|
|
169
|
+
- A managed preview identity selects an existing auth-backend user whose
|
|
170
|
+
application profile and required workspace membership already exist. It does
|
|
171
|
+
not synthesize any of them as a side effect.
|
|
172
|
+
|
|
173
|
+
For a Vibe64 preview, retain the app-owned `.vibe64/bin/preview-identity`
|
|
174
|
+
executable and declare it in the managed Launch target. It calls the
|
|
175
|
+
`@jskit-ai/auth-web` server-side managed-preview library; it does not need a
|
|
176
|
+
framework CLI. Never expose the exchange secret in browser code, a URL, client
|
|
177
|
+
environment, logs, or source.
|
|
178
|
+
|
|
179
|
+
Managed Playwright uses the host-provided
|
|
180
|
+
`VIBE64_PLAYWRIGHT_STORAGE_STATE`, relative URLs, and the existing managed
|
|
181
|
+
server. Direct-local tests may instead use `loginAsExistingUser()` from
|
|
182
|
+
`@jskit-ai/auth-web/test/playwright` with a server-only development secret.
|
|
183
|
+
Do not mix those two authentication modes or start a duplicate server against
|
|
184
|
+
the wrong session database.
|
|
185
|
+
|
|
186
|
+
## 6. Treat client patterns as examples, not regeneration input
|
|
187
|
+
|
|
188
|
+
Read a selected package's complete `PATTERN.md` and inspect its example. Copy
|
|
189
|
+
only useful files or adapt the existing application through the same public
|
|
190
|
+
APIs. Resolve every destination collision deliberately. Once copied, template
|
|
191
|
+
source belongs to the application and may diverge with the product.
|
|
192
|
+
|
|
193
|
+
Do not erase established screens and regenerate them from a schema. Do not
|
|
194
|
+
sync template updates into application source or retain template hashes,
|
|
195
|
+
generated-file headers, or ownership markers. Prefer current shared screens,
|
|
196
|
+
placements, high-level composables, Vuetify components, and Material 3 states
|
|
197
|
+
where they fit, while retaining application vocabulary, routes, workflows, and
|
|
198
|
+
tests.
|
|
199
|
+
|
|
200
|
+
Verify affected UI at compact, medium, and expanded widths. Preserve loading,
|
|
201
|
+
empty, error, retry, permission, keyboard, focus, and warm-navigation behavior;
|
|
202
|
+
do not accept a visually similar screen as behavioral equivalence.
|
|
203
|
+
|
|
204
|
+
## 7. Reconcile, then Deslop as a distinct pass
|
|
205
|
+
|
|
206
|
+
When the project uses Genesis, run an explicit reconciliation after the port is
|
|
207
|
+
functionally green. Compare the implemented source with the current Blueprint,
|
|
208
|
+
selected Stack, Program, resources, managed skills, and effective workspace and
|
|
209
|
+
Launch recipes. Update stale citations and declarations to describe what now
|
|
210
|
+
exists. Do not duplicate an inherited setup recipe merely to make the project
|
|
211
|
+
look self-contained.
|
|
212
|
+
|
|
213
|
+
After reconciliation, start a separate behavior-preserving Deslop pass using
|
|
214
|
+
the selected JSKIT guidance and, for every affected Vue/Vuetify screen, the
|
|
215
|
+
Material 3 audit. Remove dead adapters, obsolete names and selectors, duplicate
|
|
216
|
+
request or state layers, empty extension files, retired framework shims,
|
|
217
|
+
provenance residue, and accidental abstractions. Replace them at the narrowest
|
|
218
|
+
established owner. Keep every intentional domain workflow and rerun focused
|
|
219
|
+
tests after each meaningful cleanup.
|
|
220
|
+
|
|
221
|
+
Reconciliation answers whether project intent and managed configuration match
|
|
222
|
+
the implementation. Deslop answers whether the implementation is the cleanest
|
|
223
|
+
behavior-preserving use of the selected stack. Combining them hides both kinds
|
|
224
|
+
of mistake.
|
|
225
|
+
|
|
226
|
+
## Five finish gates
|
|
227
|
+
|
|
228
|
+
A migrated application is complete only when all five gates have current
|
|
229
|
+
evidence in ordinary source, configuration, command output, and tests:
|
|
230
|
+
|
|
231
|
+
1. **Behavior:** focused tests and the full managed browser suite are green
|
|
232
|
+
against an isolated disposable database. Use the managed host and server
|
|
233
|
+
when supplied.
|
|
234
|
+
2. **Reconciliation:** a dedicated Genesis reconciliation confirms the
|
|
235
|
+
Blueprint, Stack, Program, resources, managed skills, and effective setup and
|
|
236
|
+
Launch recipes match the implementation. For a project without Genesis,
|
|
237
|
+
reconcile its equivalent authoritative product and host documentation.
|
|
238
|
+
3. **Deslop:** a distinct JSKIT Deslop pass, including the selected Material 3
|
|
239
|
+
audit where UI is affected, removes obsolete framework residue without
|
|
240
|
+
changing legitimate behavior.
|
|
241
|
+
4. **Broad verification:** after reconciliation and Deslop, rerun lint, server
|
|
242
|
+
tests, client tests, production build, existing-ledger status, fresh database
|
|
243
|
+
rebuild, idempotent seed proof, and representative managed Playwright.
|
|
244
|
+
5. **Structure:** audit CRUD lifecycles, decorated services and repositories,
|
|
245
|
+
named Features and actions, capability edges, package-owned migrations, and
|
|
246
|
+
constraints-last ordering. Explain every custom seam in product language;
|
|
247
|
+
do not delete it merely to reduce the count.
|
|
248
|
+
|
|
249
|
+
Do not satisfy a gate by adding a completion ledger or generated conformance
|
|
250
|
+
state. If a command cannot run, report the missing evidence rather than marking
|
|
251
|
+
the port complete.
|
|
252
|
+
|
|
253
|
+
## Downstream proof: DogAndGroom
|
|
254
|
+
|
|
255
|
+
DogAndGroom validated this procedure on a substantial existing product rather
|
|
256
|
+
than a sample. The port redistributed 66 historical migrations among 43 owning
|
|
257
|
+
packages while retaining globally unique basenames and putting cross-package
|
|
258
|
+
constraints last. Its imported database ledger remained read-only and
|
|
259
|
+
recognized every moved migration; a fresh disposable MariaDB reached the full
|
|
260
|
+
117-migration schema and a second prepare-and-seed run was idempotent.
|
|
261
|
+
|
|
262
|
+
The resulting server used 43 standard CRUD Features plus narrow lifecycle,
|
|
263
|
+
service, repository, named-action, and domain-Feature extensions for grooming,
|
|
264
|
+
daycare, booking, scheduling, communications, commerce, inventory, uploads,
|
|
265
|
+
and safety behavior. Obsolete framework generators, provenance markers,
|
|
266
|
+
service-location wiring, and empty extension modules were removed without
|
|
267
|
+
flattening those workflows.
|
|
268
|
+
|
|
269
|
+
After a separate Genesis reconciliation and JSKIT/Material Deslop, its focused
|
|
270
|
+
checks, 339 server tests, client tests, production build, database proofs, and
|
|
271
|
+
all 105 managed Playwright cases passed. These numbers are downstream evidence
|
|
272
|
+
that the method scales; they are not template targets or state that another
|
|
273
|
+
application should copy.
|
package/guide/agent/index.md
CHANGED
|
@@ -10,6 +10,7 @@ apply or adapt. It does not prescribe an agent host or project orchestrator.
|
|
|
10
10
|
|
|
11
11
|
- [Quickstart](/guide/app-setup/quickstart)
|
|
12
12
|
- [Application foundations](/guide/app-setup/initial-scaffolding)
|
|
13
|
+
- [Migrate an existing application](/guide/app-setup/existing-application-migration)
|
|
13
14
|
- [A more interesting shell](/guide/app-setup/a-more-interesting-shell)
|
|
14
15
|
- [Authentication](/guide/app-setup/authentication)
|
|
15
16
|
- [Database layer](/guide/app-setup/database-layer)
|
package/package.json
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@local/main": "file:packages/main",
|
|
31
31
|
"@fastify/static": "^10.1.3",
|
|
32
|
-
"@jskit-ai/kernel": "0.1.
|
|
32
|
+
"@jskit-ai/kernel": "0.1.161",
|
|
33
33
|
"@tanstack/vue-query": "^5.101.0",
|
|
34
34
|
"fastify": "^5.8.5",
|
|
35
35
|
"json-rest-schema": "^1.0.17",
|
|
@@ -37,11 +37,11 @@
|
|
|
37
37
|
"vue": "^3.5.38",
|
|
38
38
|
"vue-router": "^5.1.0",
|
|
39
39
|
"vuetify": "^4.1.2",
|
|
40
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
40
|
+
"@jskit-ai/http-runtime": "0.1.159"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@jskit-ai/agent-docs": "0.1.
|
|
44
|
-
"@jskit-ai/config-eslint": "0.1.
|
|
43
|
+
"@jskit-ai/agent-docs": "0.1.133",
|
|
44
|
+
"@jskit-ai/config-eslint": "0.1.158",
|
|
45
45
|
"@playwright/test": "1.61.1",
|
|
46
46
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
47
47
|
"eslint": "^10.8.0",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@local/main": "file:packages/main",
|
|
31
31
|
"@fastify/static": "^10.1.3",
|
|
32
|
-
"@jskit-ai/kernel": "0.1.
|
|
32
|
+
"@jskit-ai/kernel": "0.1.161",
|
|
33
33
|
"@tanstack/vue-query": "^5.101.0",
|
|
34
34
|
"fastify": "^5.8.5",
|
|
35
35
|
"json-rest-schema": "^1.0.17",
|
|
@@ -37,13 +37,13 @@
|
|
|
37
37
|
"vue": "^3.5.38",
|
|
38
38
|
"vue-router": "^5.1.0",
|
|
39
39
|
"vuetify": "^4.1.2",
|
|
40
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
40
|
+
"@jskit-ai/http-runtime": "0.1.159",
|
|
41
41
|
"@mdi/js": "^7.4.47",
|
|
42
|
-
"@jskit-ai/shell-web": "0.1.
|
|
42
|
+
"@jskit-ai/shell-web": "0.1.165"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@jskit-ai/agent-docs": "0.1.
|
|
46
|
-
"@jskit-ai/config-eslint": "0.1.
|
|
45
|
+
"@jskit-ai/agent-docs": "0.1.133",
|
|
46
|
+
"@jskit-ai/config-eslint": "0.1.158",
|
|
47
47
|
"@playwright/test": "1.61.1",
|
|
48
48
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
49
49
|
"eslint": "^10.8.0",
|
|
@@ -15,7 +15,7 @@ A concrete Fastify, Vue, and JSKIT application foundation for products that do n
|
|
|
15
15
|
|
|
16
16
|
- Id: `app/minimal-foundation`
|
|
17
17
|
- Keywords: `app`, `fastify`, `foundation`, `minimal`, `server`, `vite`, `vue`
|
|
18
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
18
|
+
- Owner: `@jskit-ai/agent-docs@0.1.133`
|
|
19
19
|
- Read: `node_modules/@jskit-ai/agent-docs/patterns/minimal-foundation/PATTERN.md`
|
|
20
20
|
- Examples: `node_modules/@jskit-ai/agent-docs/patterns/minimal-foundation/example/`
|
|
21
21
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`
|
|
@@ -26,7 +26,7 @@ A concrete JSKIT web application foundation with responsive shell navigation, se
|
|
|
26
26
|
|
|
27
27
|
- Id: `app/shell-foundation`
|
|
28
28
|
- Keywords: `app`, `foundation`, `material`, `navigation`, `placements`, `shell`, `vite`, `vue`
|
|
29
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
29
|
+
- Owner: `@jskit-ai/agent-docs@0.1.133`
|
|
30
30
|
- Read: `node_modules/@jskit-ai/agent-docs/patterns/shell-foundation/PATTERN.md`
|
|
31
31
|
- Examples: `node_modules/@jskit-ai/agent-docs/patterns/shell-foundation/example/`
|
|
32
32
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -37,7 +37,7 @@ Configure an assistant runtime for one application surface and expose its chat a
|
|
|
37
37
|
|
|
38
38
|
- Id: `assistant/assistant-surface`
|
|
39
39
|
- Keywords: `ai`, `assistant`, `chat`, `config`, `environment`, `page`, `placement`, `settings`, `surface`
|
|
40
|
-
- Owner: `@jskit-ai/assistant-runtime@0.1.
|
|
40
|
+
- Owner: `@jskit-ai/assistant-runtime@0.1.132`
|
|
41
41
|
- Read: `node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/PATTERN.md`
|
|
42
42
|
- Examples: `node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/example/`
|
|
43
43
|
- Requires: `@jskit-ai/assistant-runtime`, `@jskit-ai/shell-web`
|
|
@@ -48,7 +48,7 @@ Compose JSKIT authentication routes, views, profile controls, and public surface
|
|
|
48
48
|
|
|
49
49
|
- Id: `auth/auth-surface`
|
|
50
50
|
- Keywords: `account`, `auth`, `login`, `logout`, `password`, `placement`, `profile`, `reset`, `surface`
|
|
51
|
-
- Owner: `@jskit-ai/auth-web@0.1.
|
|
51
|
+
- Owner: `@jskit-ai/auth-web@0.1.161`
|
|
52
52
|
- Read: `node_modules/@jskit-ai/auth-web/patterns/auth-surface/PATTERN.md`
|
|
53
53
|
- Examples: `node_modules/@jskit-ai/auth-web/patterns/auth-surface/example/`
|
|
54
54
|
- Requires: `@jskit-ai/auth-core`, `@jskit-ai/auth-web`, `@jskit-ai/shell-web`
|
|
@@ -59,7 +59,7 @@ Add Supabase authentication through normal npm composition, explicit environment
|
|
|
59
59
|
|
|
60
60
|
- Id: `auth/supabase-auth`
|
|
61
61
|
- Keywords: `auth`, `authentication`, `oauth`, `sessions`, `supabase`
|
|
62
|
-
- Owner: `@jskit-ai/auth-provider-supabase-core@0.1.
|
|
62
|
+
- Owner: `@jskit-ai/auth-provider-supabase-core@0.1.158`
|
|
63
63
|
- Read: `node_modules/@jskit-ai/auth-provider-supabase-core/patterns/supabase-auth/PATTERN.md`
|
|
64
64
|
- Examples: `node_modules/@jskit-ai/auth-provider-supabase-core/patterns/supabase-auth/example/`
|
|
65
65
|
- Requires: `@jskit-ai/auth-provider-supabase-core`
|
|
@@ -70,7 +70,7 @@ Add a protected administration surface, settings shell, and semantic navigation
|
|
|
70
70
|
|
|
71
71
|
- Id: `console/console-surface`
|
|
72
72
|
- Keywords: `admin`, `console`, `navigation`, `owner`, `placement`, `settings`, `surface`
|
|
73
|
-
- Owner: `@jskit-ai/console-web@0.1.
|
|
73
|
+
- Owner: `@jskit-ai/console-web@0.1.129`
|
|
74
74
|
- Read: `node_modules/@jskit-ai/console-web/patterns/console-surface/PATTERN.md`
|
|
75
75
|
- Examples: `node_modules/@jskit-ai/console-web/patterns/console-surface/example/`
|
|
76
76
|
- Requires: `@jskit-ai/console-core`, `@jskit-ai/console-web`, `@jskit-ai/shell-web`
|
|
@@ -81,7 +81,7 @@ Build a routed CRUD user interface as thin application pages over JSKIT's shared
|
|
|
81
81
|
|
|
82
82
|
- Id: `crud/crud-screen-set`
|
|
83
83
|
- Keywords: `actions`, `add`, `crud`, `delete`, `edit`, `filters`, `list`, `material`, `routes`, `view`, `vue`
|
|
84
|
-
- Owner: `@jskit-ai/http-web@0.1.
|
|
84
|
+
- Owner: `@jskit-ai/http-web@0.1.6`
|
|
85
85
|
- Read: `node_modules/@jskit-ai/http-web/patterns/crud-screen-set/PATTERN.md`
|
|
86
86
|
- Examples: `node_modules/@jskit-ai/http-web/patterns/crud-screen-set/example/`
|
|
87
87
|
- Requires: `@jskit-ai/http-web`, `@jskit-ai/resource-crud-core`
|
|
@@ -92,7 +92,7 @@ Build a complete application-owned CRUD server package from a migration, resourc
|
|
|
92
92
|
|
|
93
93
|
- Id: `crud/json-api-resource-package`
|
|
94
94
|
- Keywords: `actions`, `crud`, `database`, `json-api`, `migration`, `permissions`, `provider`, `repository`, `routes`, `service`
|
|
95
|
-
- Owner: `@jskit-ai/crud-core@0.1.
|
|
95
|
+
- Owner: `@jskit-ai/crud-core@0.1.172`
|
|
96
96
|
- Read: `node_modules/@jskit-ai/crud-core/patterns/json-api-resource-package/PATTERN.md`
|
|
97
97
|
- Examples: `node_modules/@jskit-ai/crud-core/patterns/json-api-resource-package/example/`
|
|
98
98
|
- Requires: `@jskit-ai/crud-core`, `@jskit-ai/resource-crud-core`
|
|
@@ -103,7 +103,7 @@ Define an authenticated application resource whose records belong to the current
|
|
|
103
103
|
|
|
104
104
|
- Id: `crud/resource-contract`
|
|
105
105
|
- Keywords: `authenticated`, `crud`, `database`, `owner-scoped`, `resource`, `user`
|
|
106
|
-
- Owner: `@jskit-ai/resource-crud-core@0.1.
|
|
106
|
+
- Owner: `@jskit-ai/resource-crud-core@0.1.103`
|
|
107
107
|
- Read: `node_modules/@jskit-ai/resource-crud-core/patterns/resource-contract/PATTERN.md`
|
|
108
108
|
- Examples: `node_modules/@jskit-ai/resource-crud-core/patterns/resource-contract/example/`
|
|
109
109
|
- Requires: `@jskit-ai/resource-crud-core`
|
|
@@ -114,7 +114,7 @@ Configure a JSKIT application for MySQL with a fixed driver, ordinary environmen
|
|
|
114
114
|
|
|
115
115
|
- Id: `database/mysql-application`
|
|
116
116
|
- Keywords: `database`, `knex`, `mariadb`, `migrations`, `mysql`, `mysql2`
|
|
117
|
-
- Owner: `@jskit-ai/database-runtime-mysql@0.1.
|
|
117
|
+
- Owner: `@jskit-ai/database-runtime-mysql@0.1.159`
|
|
118
118
|
- Read: `node_modules/@jskit-ai/database-runtime-mysql/patterns/mysql-application/PATTERN.md`
|
|
119
119
|
- Examples: `node_modules/@jskit-ai/database-runtime-mysql/patterns/mysql-application/example/`
|
|
120
120
|
- Requires: `@jskit-ai/database-runtime-mysql`
|
|
@@ -125,7 +125,7 @@ Configure a JSKIT application for PostgreSQL with a fixed driver, ordinary envir
|
|
|
125
125
|
|
|
126
126
|
- Id: `database/postgres-application`
|
|
127
127
|
- Keywords: `database`, `knex`, `migrations`, `pg`, `postgres`, `postgresql`
|
|
128
|
-
- Owner: `@jskit-ai/database-runtime-postgres@0.1.
|
|
128
|
+
- Owner: `@jskit-ai/database-runtime-postgres@0.1.158`
|
|
129
129
|
- Read: `node_modules/@jskit-ai/database-runtime-postgres/patterns/postgres-application/PATTERN.md`
|
|
130
130
|
- Examples: `node_modules/@jskit-ai/database-runtime-postgres/patterns/postgres-application/example/`
|
|
131
131
|
- Requires: `@jskit-ai/database-runtime-postgres`
|
|
@@ -136,7 +136,7 @@ Wrap a JSKIT web application in a Capacitor Android shell using native Capacitor
|
|
|
136
136
|
|
|
137
137
|
- Id: `mobile/android-application`
|
|
138
138
|
- Keywords: `android`, `capacitor`, `device`, `mobile`, `native`, `shell`, `webview`
|
|
139
|
-
- Owner: `@jskit-ai/mobile-capacitor@0.1.
|
|
139
|
+
- Owner: `@jskit-ai/mobile-capacitor@0.1.96`
|
|
140
140
|
- Read: `node_modules/@jskit-ai/mobile-capacitor/patterns/android-application/PATTERN.md`
|
|
141
141
|
- Examples: `node_modules/@jskit-ai/mobile-capacitor/patterns/android-application/example/`
|
|
142
142
|
- Requires: `@capacitor/android`, `@capacitor/app`, `@capacitor/cli`, `@jskit-ai/mobile-capacitor`
|
|
@@ -147,7 +147,7 @@ Add JSKIT realtime events with an optional Redis backplane and an explicit shell
|
|
|
147
147
|
|
|
148
148
|
- Id: `realtime/realtime-application`
|
|
149
149
|
- Keywords: `realtime`, `redis`, `socket.io`, `sockets`, `status`, `websocket`
|
|
150
|
-
- Owner: `@jskit-ai/realtime@0.1.
|
|
150
|
+
- Owner: `@jskit-ai/realtime@0.1.158`
|
|
151
151
|
- Read: `node_modules/@jskit-ai/realtime/patterns/realtime-application/PATTERN.md`
|
|
152
152
|
- Examples: `node_modules/@jskit-ai/realtime/patterns/realtime-application/example/`
|
|
153
153
|
- Requires: `@jskit-ai/realtime`, `@jskit-ai/shell-web`
|
|
@@ -158,7 +158,7 @@ Define a server feature through explicit capabilities and first-class actions, a
|
|
|
158
158
|
|
|
159
159
|
- Id: `server/feature-package`
|
|
160
160
|
- Keywords: `actions`, `feature`, `json-rest`, `knex`, `orchestration`, `package`, `provider`, `repository`, `routes`, `server`
|
|
161
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
161
|
+
- Owner: `@jskit-ai/agent-docs@0.1.133`
|
|
162
162
|
- Read: `node_modules/@jskit-ai/agent-docs/patterns/feature-package/PATTERN.md`
|
|
163
163
|
- Examples: `node_modules/@jskit-ai/agent-docs/patterns/feature-package/example/`
|
|
164
164
|
- Requires: `@jskit-ai/kernel`
|
|
@@ -169,7 +169,7 @@ Compose the JSKIT responsive shell, semantic placements, settings navigation, an
|
|
|
169
169
|
|
|
170
170
|
- Id: `shell/application-shell`
|
|
171
171
|
- Keywords: `adaptive`, `app`, `layout`, `navigation`, `placement`, `responsive`, `settings`, `shell`
|
|
172
|
-
- Owner: `@jskit-ai/shell-web@0.1.
|
|
172
|
+
- Owner: `@jskit-ai/shell-web@0.1.165`
|
|
173
173
|
- Read: `node_modules/@jskit-ai/shell-web/patterns/application-shell/PATTERN.md`
|
|
174
174
|
- Examples: `node_modules/@jskit-ai/shell-web/patterns/application-shell/example/`
|
|
175
175
|
- Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -180,7 +180,7 @@ Add product routes and shell extensions through file routing, semantic placement
|
|
|
180
180
|
|
|
181
181
|
- Id: `ui/page-and-placement`
|
|
182
182
|
- Keywords: `component`, `navigation`, `outlet`, `page`, `placement`, `routes`, `section`, `shell`, `subpages`, `vue`
|
|
183
|
-
- Owner: `@jskit-ai/shell-web@0.1.
|
|
183
|
+
- Owner: `@jskit-ai/shell-web@0.1.165`
|
|
184
184
|
- Read: `node_modules/@jskit-ai/shell-web/patterns/page-and-placement/PATTERN.md`
|
|
185
185
|
- Examples: `node_modules/@jskit-ai/shell-web/patterns/page-and-placement/example/`
|
|
186
186
|
- Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -191,7 +191,7 @@ Compose an account settings route and profile, preference, and notification sect
|
|
|
191
191
|
|
|
192
192
|
- Id: `users/account-settings`
|
|
193
193
|
- Keywords: `account`, `notifications`, `preferences`, `profile`, `settings`, `user`, `vue`
|
|
194
|
-
- Owner: `@jskit-ai/users-web@0.1.
|
|
194
|
+
- Owner: `@jskit-ai/users-web@0.1.179`
|
|
195
195
|
- Read: `node_modules/@jskit-ai/users-web/patterns/account-settings/PATTERN.md`
|
|
196
196
|
- Examples: `node_modules/@jskit-ai/users-web/patterns/account-settings/example/`
|
|
197
197
|
- Requires: `@jskit-ai/shell-web`, `@jskit-ai/users-core`, `@jskit-ai/users-web`
|
|
@@ -202,7 +202,7 @@ Expose user administration and workspace-scoped member operations through app-ow
|
|
|
202
202
|
|
|
203
203
|
- Id: `users/user-administration-server`
|
|
204
204
|
- Keywords: `account`, `admin`, `member`, `repository`, `resource`, `routes`, `service`, `user`, `workspace`
|
|
205
|
-
- Owner: `@jskit-ai/users-core@0.1.
|
|
205
|
+
- Owner: `@jskit-ai/users-core@0.1.174`
|
|
206
206
|
- Read: `node_modules/@jskit-ai/users-core/patterns/user-administration-server/PATTERN.md`
|
|
207
207
|
- Examples: `node_modules/@jskit-ai/users-core/patterns/user-administration-server/example/`
|
|
208
208
|
- Requires: `@jskit-ai/crud-core`, `@jskit-ai/users-core`
|
|
@@ -213,7 +213,7 @@ Configure roles, workspace access policy, invitations, and app-owned invitation
|
|
|
213
213
|
|
|
214
214
|
- Id: `workspaces/workspace-server`
|
|
215
215
|
- Keywords: `access`, `invite`, `membership`, `multitenancy`, `policy`, `role`, `tenancy`, `workspace`
|
|
216
|
-
- Owner: `@jskit-ai/workspaces-core@0.1.
|
|
216
|
+
- Owner: `@jskit-ai/workspaces-core@0.1.139`
|
|
217
217
|
- Read: `node_modules/@jskit-ai/workspaces-core/patterns/workspace-server/PATTERN.md`
|
|
218
218
|
- Examples: `node_modules/@jskit-ai/workspaces-core/patterns/workspace-server/example/`
|
|
219
219
|
- Requires: `@jskit-ai/users-core`, `@jskit-ai/workspaces-core`
|
|
@@ -224,7 +224,7 @@ Compose workspace selection, invitation, member administration, settings, and re
|
|
|
224
224
|
|
|
225
225
|
- Id: `workspaces/workspace-surfaces`
|
|
226
226
|
- Keywords: `admin`, `invite`, `member`, `navigation`, `settings`, `surface`, `switcher`, `workspace`
|
|
227
|
-
- Owner: `@jskit-ai/workspaces-web@0.1.
|
|
227
|
+
- Owner: `@jskit-ai/workspaces-web@0.1.140`
|
|
228
228
|
- Read: `node_modules/@jskit-ai/workspaces-web/patterns/workspace-surfaces/PATTERN.md`
|
|
229
229
|
- Examples: `node_modules/@jskit-ai/workspaces-web/patterns/workspace-surfaces/example/`
|
|
230
230
|
- Requires: `@jskit-ai/shell-web`, `@jskit-ai/workspaces-core`, `@jskit-ai/workspaces-web`
|
package/skills/jskit/SKILL.md
CHANGED
|
@@ -29,6 +29,8 @@ manifests, migrations, tests, and runtime behaviour are the evidence.
|
|
|
29
29
|
3. Read the project's product documentation and current source. JSKIT does not
|
|
30
30
|
own a second project brain or prescribe a particular agent orchestrator.
|
|
31
31
|
4. Load only the task-relevant direct reference:
|
|
32
|
+
- Existing-app migration: read
|
|
33
|
+
[port guide](../../guide/agent/app-setup/existing-application-migration.md).
|
|
32
34
|
- For creation, foundation patterns, or package selection, read
|
|
33
35
|
[application operations](references/app-operations.md).
|
|
34
36
|
- Before database, schema, CRUD, repository, or persistence work, read
|
|
@@ -38,8 +40,8 @@ manifests, migrations, tests, and runtime behaviour are the evidence.
|
|
|
38
40
|
- For every Vue/Vuetify UI creation, modification, review, or deslop task,
|
|
39
41
|
also read [Material 3](references/material-3.md) completely before acting.
|
|
40
42
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
These are complete operational references required by this skill. Do not load
|
|
44
|
+
irrelevant references or other docs.
|
|
43
45
|
|
|
44
46
|
Do not invent missing tenancy, authentication, database, surface, ownership,
|
|
45
47
|
or permission decisions when they would materially change the application.
|