@jskit-ai/agent-docs 0.1.241 → 0.1.243

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/guide/agent/app-extras/assistant-conversation.md +4 -2
  2. package/guide/agent/app-extras/assistant.md +3 -1
  3. package/guide/agent/app-extras/realtime.md +12 -3
  4. package/guide/agent/app-setup/database-layer.md +1 -1
  5. package/guide/agent/app-setup/existing-application-migration.md +0 -7
  6. package/guide/agent/framework/application-operations.md +1 -1
  7. package/guide/agent/framework/crud-operations.md +9 -9
  8. package/guide/agent/framework/ui-operations.md +6 -30
  9. package/guide/agent/index.md +2 -0
  10. package/package.json +2 -3
  11. package/patterns/feature-package/example/booking-engine/package.json +1 -1
  12. package/patterns/feature-package/example/booking-engine/src/server/actions.js +0 -2
  13. package/patterns/feature-package/example/variations/AvailabilityEngineProvider.js +1 -1
  14. package/patterns/feature-package/example/variations/InvoiceRollupProvider.js +1 -1
  15. package/patterns/minimal-foundation/example/AGENTS.md +19 -0
  16. package/patterns/minimal-foundation/example/package.json +3 -3
  17. package/patterns/minimal-foundation/example/server/lib/runtimeEnv.js +3 -11
  18. package/patterns/minimal-foundation/example/src/main.js +0 -2
  19. package/patterns/shell-foundation/PATTERN.md +11 -20
  20. package/patterns/shell-foundation/example/AGENTS.md +19 -0
  21. package/patterns/shell-foundation/example/package.json +4 -4
  22. package/patterns/shell-foundation/example/packages/main/package.json +1 -1
  23. package/patterns/shell-foundation/example/server/lib/runtimeEnv.js +3 -11
  24. package/patterns/shell-foundation/example/src/components/ShellLayout.vue +1 -0
  25. package/patterns/shell-foundation/example/src/main.js +0 -2
  26. package/patterns/shell-foundation/example/src/pages/home/settings.vue +2 -2
  27. package/reference/autogen/KERNEL_MAP.md +16 -147
  28. package/reference/autogen/PATTERN_INDEX.md +37 -37
  29. package/reference/autogen/packages/agent-docs.md +1 -9
  30. package/reference/autogen/packages/assistant-core.md +102 -68
  31. package/reference/autogen/packages/assistant-runtime.md +29 -15
  32. package/reference/autogen/packages/assistant-voice-sherpa.md +2 -1
  33. package/reference/autogen/packages/assistant-voice.md +8 -11
  34. package/reference/autogen/packages/auth-core.md +1 -1
  35. package/reference/autogen/packages/auth-provider-local-core.md +1 -1
  36. package/reference/autogen/packages/auth-provider-local-db-core.md +1 -1
  37. package/reference/autogen/packages/auth-provider-oidc-core.md +1 -1
  38. package/reference/autogen/packages/auth-provider-supabase-core.md +1 -1
  39. package/reference/autogen/packages/auth-web.md +1 -2
  40. package/reference/autogen/packages/connector-google-calendar.md +6 -2
  41. package/reference/autogen/packages/connectors-catalog.md +26 -7
  42. package/reference/autogen/packages/connectors-core.md +14 -3
  43. package/reference/autogen/packages/connectors-web.md +6 -1
  44. package/reference/autogen/packages/console-core.md +1 -1
  45. package/reference/autogen/packages/console-web.md +1 -1
  46. package/reference/autogen/packages/crud-core.md +1 -1
  47. package/reference/autogen/packages/database-runtime-mysql.md +1 -1
  48. package/reference/autogen/packages/database-runtime-postgres.md +1 -1
  49. package/reference/autogen/packages/database-runtime.md +2 -86
  50. package/reference/autogen/packages/http-runtime.md +6 -92
  51. package/reference/autogen/packages/http-web.md +29 -49
  52. package/reference/autogen/packages/json-rest-api-core.md +1 -1
  53. package/reference/autogen/packages/kernel.md +108 -405
  54. package/reference/autogen/packages/mobile-capacitor.md +11 -1
  55. package/reference/autogen/packages/oidc-issuer-core.md +1 -1
  56. package/reference/autogen/packages/payments-core.md +12 -4
  57. package/reference/autogen/packages/payments-web.md +1 -1
  58. package/reference/autogen/packages/realtime.md +7 -5
  59. package/reference/autogen/packages/resource-core.md +1 -4
  60. package/reference/autogen/packages/resource-crud-core.md +4 -3
  61. package/reference/autogen/packages/rewarded-core.md +1 -1
  62. package/reference/autogen/packages/rewarded-web.md +1 -1
  63. package/reference/autogen/packages/shell-web.md +114 -49
  64. package/reference/autogen/packages/storage-runtime.md +1 -1
  65. package/reference/autogen/packages/uploads-image-web.md +1 -1
  66. package/reference/autogen/packages/uploads-runtime.md +1 -1
  67. package/reference/autogen/packages/users-core.md +1 -1
  68. package/reference/autogen/packages/users-web.md +1 -2
  69. package/reference/autogen/packages/workspaces-core.md +3 -1
  70. package/reference/autogen/packages/workspaces-web.md +1 -1
  71. package/reference/autogen/tooling/config-eslint.md +1 -1
  72. package/reference/autogen/tooling/jskit-catalog.md +8 -9
  73. package/reference/autogen/tooling/jskit-release.md +3 -4
  74. package/reference/autogen/tooling/testUtils.md +1 -28
  75. package/skills/jskit/SKILL.md +8 -6
  76. package/skills/jskit/references/app-operations.md +1 -1
  77. package/skills/jskit/references/crud-form-actions.md +62 -0
  78. package/skills/jskit/references/crud-operations.md +9 -9
  79. package/skills/jskit/references/existing-application-migration.md +0 -7
  80. package/{patterns → skills/jskit/references/heuristics}/INDEX.md +24 -38
  81. package/{patterns → skills/jskit/references/heuristics}/child-cruds.md +2 -0
  82. package/{patterns → skills/jskit/references/heuristics}/client-requests.md +2 -0
  83. package/{patterns → skills/jskit/references/heuristics}/crud-authoring.md +2 -0
  84. package/{patterns → skills/jskit/references/heuristics}/crud-links.md +2 -0
  85. package/{patterns → skills/jskit/references/heuristics}/crud-repository-mapping.md +3 -1
  86. package/{patterns → skills/jskit/references/heuristics}/filters.md +3 -1
  87. package/{patterns → skills/jskit/references/heuristics}/live-actions.md +2 -0
  88. package/{patterns → skills/jskit/references/heuristics}/page-redirects.md +2 -0
  89. package/{patterns → skills/jskit/references/heuristics}/page-scaffolding.md +5 -3
  90. package/{patterns → skills/jskit/references/heuristics}/placements.md +2 -0
  91. package/{patterns → skills/jskit/references/heuristics}/row-policies.md +2 -0
  92. package/{patterns → skills/jskit/references/heuristics}/server-search.md +2 -0
  93. package/{patterns → skills/jskit/references/heuristics}/surfaces.md +5 -3
  94. package/{patterns → skills/jskit/references/heuristics}/ui-contract.md +3 -1
  95. package/{patterns → skills/jskit/references/heuristics}/ui-testing.md +2 -0
  96. package/skills/jskit/references/pattern-index.md +37 -37
  97. package/skills/jskit/references/patterns/app/minimal-foundation/example/AGENTS.md +19 -0
  98. package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +3 -3
  99. package/skills/jskit/references/patterns/app/minimal-foundation/example/server/lib/runtimeEnv.js +3 -11
  100. package/skills/jskit/references/patterns/app/minimal-foundation/example/src/main.js +0 -2
  101. package/skills/jskit/references/patterns/app/shell-foundation/PATTERN.md +11 -20
  102. package/skills/jskit/references/patterns/app/shell-foundation/example/AGENTS.md +19 -0
  103. package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +4 -4
  104. package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/package.json +1 -1
  105. package/skills/jskit/references/patterns/app/shell-foundation/example/server/lib/runtimeEnv.js +3 -11
  106. package/skills/jskit/references/patterns/app/shell-foundation/example/src/components/ShellLayout.vue +1 -0
  107. package/skills/jskit/references/patterns/app/shell-foundation/example/src/main.js +0 -2
  108. package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home/settings.vue +2 -2
  109. package/skills/jskit/references/patterns/auth/accounts-hub/example/package.json +2 -2
  110. package/skills/jskit/references/patterns/auth/oidc-sign-in/example/package.json +2 -2
  111. package/skills/jskit/references/patterns/auth/supabase-auth/example/package.json +1 -1
  112. package/skills/jskit/references/patterns/connectors/calendar-cli/example/package.json +4 -4
  113. package/skills/jskit/references/patterns/connectors/oauth-connection/PATTERN.md +27 -610
  114. package/skills/jskit/references/patterns/connectors/paddle-catalogue/example/create-products.js +2 -1
  115. package/skills/jskit/references/patterns/connectors/redshift-queries/PATTERN.md +1 -1
  116. package/skills/jskit/references/patterns/crud/crud-screen-set/PATTERN.md +11 -1
  117. package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/package.json +2 -2
  118. package/skills/jskit/references/patterns/database/mysql-application/example/package.json +1 -1
  119. package/skills/jskit/references/patterns/database/postgres-application/example/package.json +1 -1
  120. package/skills/jskit/references/patterns/realtime/realtime-application/example/package.json +2 -2
  121. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/package.json +1 -1
  122. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/actions.js +0 -2
  123. package/skills/jskit/references/patterns/server/feature-package/example/variations/AvailabilityEngineProvider.js +1 -1
  124. package/skills/jskit/references/patterns/server/feature-package/example/variations/InvoiceRollupProvider.js +1 -1
  125. package/skills/jskit/references/patterns/shell/application-shell/PATTERN.md +18 -4
  126. package/skills/jskit/references/patterns/shell/application-shell/example/src/pages/home/index.vue +15 -5
  127. package/skills/jskit/references/patterns/shell/application-shell/example/tests/e2e/adaptive-shell.spec.ts +1 -1
  128. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/package.json +2 -2
  129. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/package.json +3 -3
  130. package/skills/jskit/references/ui-operations.md +6 -30
  131. package/templates/app/AGENTS.md +0 -38
@@ -42,7 +42,7 @@ invoking the service. Matching the configured warehouse is only a target check.
42
42
  The library does not resolve ambient AWS profiles or switch to a more privileged
43
43
  account after a denial. The application resolves its own credential bindings; editable references do
44
44
  not grant AWS permissions. This shared credential mode has no provider callback
45
- URL and does not depend on an Online registration or allocation.
45
+ URL and does not depend on a hosting platform's registration or allocation.
46
46
 
47
47
  ## Framework APIs
48
48
 
@@ -76,9 +76,19 @@ id (or a distinct new-record marker) so form cache entries stay separate.
76
76
  The New/Edit examples supply it; list/view screen wrappers derive their
77
77
  standard keys from `resourceNamespace`.
78
78
 
79
+ Each form fact has one input. `resource`, `input`, `buildPayload`,
80
+ `mapPayloadToModel` and `createModel` are top-level `useCrudAddEditScreen()`
81
+ options; `addEditOptions` carries only request and route options for
82
+ `useAddEdit()` (such as `apiSuffix`, `queryKeyFactory`, `readEnabled`,
83
+ `writeMethod`, URL templates, permissions, `client`, `transport` and
84
+ `onSaveSuccess`) and rejects anything else. The save-error message is
85
+ `addEditOptions.fallbackSaveError` when given, otherwise the resource's
86
+ `messages.saveError`; the request error and its toast use the same string.
87
+
79
88
  Save navigation is configured in the top-level `saveSuccess` object. The default
80
89
  prefers a configured record-view URL, then the list. A create-and-list variation
81
- sets `navigateToView: false` and `listUrlTemplate` to its list route. Set both
90
+ sets `navigateToView: false` and `saveSuccess.listUrlTemplate` to its list
91
+ route; `addEditOptions.listUrlTemplate` does not drive save navigation. Set both
82
92
  `navigateToView` and `navigateToList` to `false` to stay on the form. A custom
83
93
  `addEditOptions.onSaveSuccess` replaces default invalidation and navigation;
84
94
  it is unnecessary for ordinary list navigation. The generic CRUD guide explains
@@ -8,8 +8,8 @@
8
8
  "./shared": "./src/shared/index.js"
9
9
  },
10
10
  "dependencies": {
11
- "@jskit-ai/crud-core": "0.1.256",
12
- "@jskit-ai/resource-crud-core": "0.1.187"
11
+ "@jskit-ai/crud-core": "0.1.257",
12
+ "@jskit-ai/resource-crud-core": "0.1.188"
13
13
  },
14
14
  "jskit": {
15
15
  "kind": "runtime",
@@ -8,6 +8,6 @@
8
8
  "db:migrate:status": "knex --knexfile ./knexfile.js migrate:list"
9
9
  },
10
10
  "dependencies": {
11
- "@jskit-ai/database-runtime-mysql": "0.1.243"
11
+ "@jskit-ai/database-runtime-mysql": "0.1.244"
12
12
  }
13
13
  }
@@ -8,6 +8,6 @@
8
8
  "db:migrate:status": "knex --knexfile ./knexfile.js migrate:list"
9
9
  },
10
10
  "dependencies": {
11
- "@jskit-ai/database-runtime-postgres": "0.1.242"
11
+ "@jskit-ai/database-runtime-postgres": "0.1.243"
12
12
  }
13
13
  }
@@ -2,7 +2,7 @@
2
2
  "private": true,
3
3
  "type": "module",
4
4
  "dependencies": {
5
- "@jskit-ai/realtime": "0.1.243",
6
- "@jskit-ai/shell-web": "0.1.250"
5
+ "@jskit-ai/realtime": "0.1.245",
6
+ "@jskit-ai/shell-web": "0.1.252"
7
7
  }
8
8
  }
@@ -5,7 +5,7 @@
5
5
  "private": true,
6
6
  "type": "module",
7
7
  "dependencies": {
8
- "@jskit-ai/kernel": "0.1.245",
8
+ "@jskit-ai/kernel": "0.1.246",
9
9
  "json-rest-schema": "^1.0.17"
10
10
  },
11
11
  "exports": {
@@ -14,8 +14,6 @@ function createActions({ bookingEngine } = {}) {
14
14
  input: statusQueryInputValidator,
15
15
  output: null,
16
16
  idempotency: "none",
17
- audit: { actionName: ACTION_GET_STATUS },
18
- observability: {},
19
17
  async execute(input) {
20
18
  return bookingEngine.readStatus(input);
21
19
  }
@@ -1,5 +1,5 @@
1
1
  import { defineFeature } from "@jskit-ai/kernel/server/features";
2
- import { emptyInputValidator } from "@jskit-ai/kernel/shared/actions/actionContributorHelpers";
2
+ import { emptyInputValidator } from "@jskit-ai/kernel/server/actions/actionContributorHelpers";
3
3
  import { createService } from "./orchestratorService.js";
4
4
 
5
5
  const AvailabilityEngineProvider = defineFeature({
@@ -1,5 +1,5 @@
1
1
  import { defineFeature } from "@jskit-ai/kernel/server/features";
2
- import { emptyInputValidator } from "@jskit-ai/kernel/shared/actions/actionContributorHelpers";
2
+ import { emptyInputValidator } from "@jskit-ai/kernel/server/actions/actionContributorHelpers";
3
3
  import { createRepository } from "./repository.js";
4
4
 
5
5
  const InvoiceRollupProvider = defineFeature({
@@ -43,10 +43,24 @@ placement registry, topology, and adaptive smoke helper exported by
43
43
  above the content so they never cover it. A full-viewport fixed screen on
44
44
  such a surface starts at `var(--shell-error-banners-inline-height, 0px)`, as
45
45
  `@jskit-ai/auth-web`'s login and reset views do.
46
- - Restyle shell chrome through its `--shell-chrome-*`, `--shell-app-bar-*`,
47
- `--shell-navigation-*` and `--shell-bottom-navigation-*` custom properties,
48
- not by overriding Vuetify internals; a Material 3 restyle removes the dividers
49
- and separates surfaces tonally.
46
+ - Restyle shell chrome through its custom properties, not by overriding
47
+ Vuetify internals: `--shell-chrome-border-width` and
48
+ `--shell-chrome-border-color` for the shared dividers,
49
+ `--shell-app-bar-border-width`, `--shell-navigation-border-width` and
50
+ `--shell-bottom-navigation-border-width` per edge, and
51
+ `--shell-app-bar-background`, `--shell-navigation-background` and
52
+ `--shell-bottom-navigation-background` for the surfaces. The defaults keep
53
+ one thin divider on each separating edge, because Vuetify's default themes
54
+ define no Material 3 surface-container roles. A Material 3 restyle sets the
55
+ border widths to `0` and gives navigation a tonal surface, for example
56
+ `rgb(var(--v-theme-surface-container-low))` when the theme defines it.
57
+ - `createShellRouter()` from `@jskit-ai/kernel/client` installs
58
+ `shellScrollBehavior`: a new screen opens at the top (or its hash target),
59
+ Back/Forward restore the saved position, and query, hash, tab or sub-view
60
+ changes within the same page keep it. A tab or sub-view is the same page when
61
+ both locations share a parent page record below the surface root. Pass
62
+ `scrollBehavior` to replace it, or `scrollBehavior: false` to disable it; do
63
+ not wrap the router or reset scroll in page components.
50
64
  - The adaptive browser check closes navigation through its public close control.
51
65
 
52
66
  ## Example files
@@ -15,16 +15,16 @@ const healthQuery = useQuery({
15
15
  });
16
16
 
17
17
  const health = computed(() => {
18
- if (healthQuery.isPending.value || healthQuery.isFetching.value) {
19
- return "loading...";
20
- }
21
-
22
18
  if (healthQuery.error.value) {
23
19
  return "unreachable";
24
20
  }
25
21
 
26
22
  return healthQuery.data.value?.ok ? "ok" : "unhealthy";
27
23
  });
24
+
25
+ const healthPending = computed(
26
+ () => healthQuery.isPending.value || healthQuery.isFetching.value
27
+ );
28
28
  </script>
29
29
 
30
30
  <template>
@@ -36,7 +36,13 @@ const health = computed(() => {
36
36
  <v-sheet rounded="lg" border class="home-surface-screen__panel">
37
37
  <div class="home-surface-screen__status">
38
38
  <span class="text-caption text-medium-emphasis">Service health</span>
39
- <strong>{{ health }}</strong>
39
+ <v-skeleton-loader
40
+ v-if="healthPending"
41
+ aria-label="Loading service health"
42
+ class="home-surface-screen__health-skeleton"
43
+ type="text"
44
+ />
45
+ <strong v-else>{{ health }}</strong>
40
46
  </div>
41
47
  <v-divider vertical class="d-none d-sm-block" />
42
48
  <div class="home-surface-screen__status">
@@ -71,6 +77,10 @@ const health = computed(() => {
71
77
  min-width: 9rem;
72
78
  }
73
79
 
80
+ .home-surface-screen__health-skeleton {
81
+ max-width: 5rem;
82
+ }
83
+
74
84
  @media (max-width: 640px) {
75
85
  .home-surface-screen__actions :deep(.v-btn) {
76
86
  min-height: 48px;
@@ -1,7 +1,7 @@
1
1
  import { expect, test } from "@playwright/test";
2
2
  import { DEFAULT_VIEWPORTS, runAdaptiveShellSmokeCase } from "@jskit-ai/shell-web/test/adaptiveShellSmoke";
3
3
 
4
- test.describe("generated adaptive shell smoke", () => {
4
+ test.describe("adaptive shell smoke", () => {
5
5
  for (const viewport of DEFAULT_VIEWPORTS) {
6
6
  test(`${viewport.name} layout has reachable navigation and no horizontal overflow`, async ({ page }) => {
7
7
  await runAdaptiveShellSmokeCase({ page, expect, viewport });
@@ -9,8 +9,8 @@
9
9
  "./shared": "./src/shared/index.js"
10
10
  },
11
11
  "dependencies": {
12
- "@jskit-ai/crud-core": "0.1.256",
13
- "@jskit-ai/resource-crud-core": "0.1.187"
12
+ "@jskit-ai/crud-core": "0.1.257",
13
+ "@jskit-ai/resource-crud-core": "0.1.188"
14
14
  },
15
15
  "jskit": {
16
16
  "kind": "runtime",
@@ -9,9 +9,9 @@
9
9
  "./shared": "./src/shared/index.js"
10
10
  },
11
11
  "dependencies": {
12
- "@jskit-ai/crud-core": "0.1.256",
13
- "@jskit-ai/resource-crud-core": "0.1.187",
14
- "@jskit-ai/workspaces-core": "0.1.223"
12
+ "@jskit-ai/crud-core": "0.1.257",
13
+ "@jskit-ai/resource-crud-core": "0.1.188",
14
+ "@jskit-ai/workspaces-core": "0.1.224"
15
15
  },
16
16
  "jskit": {
17
17
  "kind": "runtime",
@@ -50,16 +50,8 @@ shared-screen controls; avoid duplicates, drawer-only access, or adding a page
50
50
  heading just to house it. Keep its meaning and accessible name clear at every
51
51
  supported width.
52
52
 
53
- ### Scroll position
54
-
55
- `createShellRouter()` from `@jskit-ai/kernel/client` installs
56
- `shellScrollBehavior` by default: a new screen opens at the top (or at its
57
- hash target), Back/Forward restore the saved position, and query, hash, tab or
58
- sub-view changes within the same page keep the current position. A tab or
59
- sub-view counts as the same page when both locations share a parent page record
60
- below the surface root. Pass `scrollBehavior` to `createShellRouter()` to
61
- replace it with your own Vue Router function, or `scrollBehavior: false` to
62
- disable it. Do not wrap the router or reset scroll in page components.
53
+ `createShellRouter()` owns scroll position (`shell/application-shell`
54
+ pattern); never reset scroll in page components.
63
55
 
64
56
  ## Application-owned files
65
57
 
@@ -70,16 +62,10 @@ hash, pattern receipt, or tool-owned source declaration.
70
62
 
71
63
  ## Screen behavior
72
64
 
73
- - Keep screens phone/task-first with drawer-independent primary actions and
74
- at least 48 CSS-pixel targets.
75
- - Never add page headers or standalone headings unless the user explicitly asks.
65
+ - Keep screens phone/task-first with drawer-independent primary actions.
76
66
  - Use direct surfaces instead of needless nested cards.
77
67
  - Render all meaningful loading, empty, error, permission, and retry states.
78
- - Use structure-matching Material skeletons for visible loading; never use a
79
- generic spinner or circular progress indicator.
80
- - Keep read failures local when the screen cannot render. Present transient
81
- command success/failure through shared toast/snackbar feedback so the page
82
- does not jump.
68
+ - Follow the Material 3 contract for targets, loading and failure feedback.
83
69
  - Extend shared CRUD screens through public slots and composables.
84
70
  - Keep row actions and filters near the screen unless the framework owns them.
85
71
  - Import neutral request and CRUD UI APIs from `@jskit-ai/http-web`. Install
@@ -99,18 +85,8 @@ icon/label and label/end gaps. The normal 80px rail centres 48px targets;
99
85
  `railWidth` and `drawerWidth` are public density/width controls. Do not override
100
86
  the shell's private implementation CSS.
101
87
 
102
- The app bar, drawer/rail and compact bottom navigation follow the Vuetify theme
103
- and expose restyling tokens instead of hard-coded chrome: `--shell-chrome-border-width`
104
- and `--shell-chrome-border-color` for the shared dividers,
105
- `--shell-app-bar-border-width`, `--shell-navigation-border-width` and
106
- `--shell-bottom-navigation-border-width` per edge, and
107
- `--shell-app-bar-background`, `--shell-navigation-background` and
108
- `--shell-bottom-navigation-background` for the surfaces. The defaults keep one
109
- thin divider on each separating edge, because Vuetify's default themes define
110
- no Material 3 surface-container roles to separate surfaces tonally. A Material 3
111
- restyle sets the border widths to `0` and gives navigation a tonal surface, for
112
- example `--shell-navigation-background: rgb(var(--v-theme-surface-container-low))`
113
- when the theme defines that role.
88
+ Restyle shell chrome only through the `--shell-*` tokens in the
89
+ `shell/application-shell` pattern.
114
90
 
115
91
  ## Browser verification
116
92
 
@@ -1,38 +0,0 @@
1
- # App Agent Instructions
2
-
3
- Use current project context, JSKIT public APIs, and the official framework
4
- documentation as the source of truth for application work.
5
-
6
- Framework references:
7
-
8
- - `https://mobily-enterprises.github.io/jskit-ai/guide/`
9
- - `https://mobily-enterprises.github.io/jskit-ai/patterns/`
10
-
11
- Before implementation, read the narrow relevant source pattern completely. If
12
- its owner package is installed, prefer that version-matched package-owned copy.
13
- Do not install an unrelated runtime package only to read documentation.
14
-
15
- Before adding or changing browser-test setup, read `patterns/ui-testing.md` in
16
- this package. Routine tests reuse the isolated schema and prepare fixtures once
17
- per suite invocation. Keep `BROWSER_TEST_DB_NAME` distinct from disposable
18
- `TEST_DB_NAME` and prove that disposable cleanup preserves browser migrations.
19
- Require repeat-start regression proof; do not rebuild the
20
- database or production frontend for each focused browser check.
21
-
22
- Keep verification output small. Run the relevant cases together, save complete
23
- stdout/stderr to local artifacts, and preserve the exit status. Report counts,
24
- duration, failed case names and artifact paths; read only actionable failure
25
- excerpts. Do not dump full JSON/TAP reports, passing assertions, request logs or
26
- traces into agent context. Wait on the existing run instead of restarting it or
27
- repeatedly printing unchanged output. Keep startup and cleanup errors visible.
28
- For browser evidence, use existing automated cases, targeted locators and
29
- meaningful visual checkpoints. Avoid a full DOM snapshot or screenshot after
30
- every action; retain the required viewport, identity and security checks.
31
-
32
- Pages never start with a page header, title block, welcome heading, or other
33
- standalone heading copy. Start with the useful content and actions. If the user
34
- wants a heading, they will ask for or add one.
35
-
36
- Copied pattern source is ordinary application source. Do not add generator
37
- provenance, receipts, completion ledgers, or tooling-operation history. Keep
38
- changes scoped to the user request and verify runtime behavior directly.