@owlmeans/agent-skills 0.1.8 → 0.1.10
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/agent-meta/instructions/getting-started.instructions.md +62 -0
- package/agent-meta/instructions/scaffolding.instructions.md +47 -0
- package/agent-meta/instructions/shadcn-versions.instructions.md +1 -0
- package/agent-meta/instructions/shadcn-web.instructions.md +1 -0
- package/agent-meta/manifest.json +34 -6
- package/agent-meta/skills/getting-started/SKILL.md +104 -0
- package/agent-meta/skills/scaffolding/SKILL.md +60 -0
- package/agent-meta/skills/shadcn-versions/SKILL.md +1 -0
- package/agent-meta/skills/shadcn-web/SKILL.md +1 -0
- package/build/discover.d.ts +2 -2
- package/build/discover.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/discover.ts +2 -2
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "How to build a fullstack OwlMeans Common app — the common/api/web three-workspace pattern, server and web context bootstrap, shared entrypoints + elevate(), and a session-scoped in-memory resource via @owlmeans/static-resource. Apply when starting a new OwlMeans project or wiring web↔api."
|
|
3
|
+
applyTo: "**/modules.ts, **/context.ts, **/config.ts, **/render.tsx, **/index.tsx, **/sources/**"
|
|
4
|
+
scope: general
|
|
5
|
+
---
|
|
6
|
+
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
7
|
+
|
|
8
|
+
# Building a fullstack OwlMeans Common app
|
|
9
|
+
|
|
10
|
+
A minimal app is a **bun-workspace monorepo with three packages**:
|
|
11
|
+
|
|
12
|
+
- `sources/common` — shared **entrypoints** (routes), AJV schemas, types and config. The single
|
|
13
|
+
source of truth.
|
|
14
|
+
- `sources/api` — `@owlmeans/server-app` backend; handlers attached to the shared entrypoints.
|
|
15
|
+
- `sources/web` — `@owlmeans/web-panel` + shadcn UI; screens attached to the same entrypoints.
|
|
16
|
+
|
|
17
|
+
Full walkthrough: `docs/getting-started.md`. To generate it: `npm create @owlmeans/app`.
|
|
18
|
+
|
|
19
|
+
## One contract, two sides
|
|
20
|
+
|
|
21
|
+
Declare each route once in `common`, then `elevate()` it on both sides:
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
// common/modules.ts
|
|
25
|
+
export const sessionModules = [
|
|
26
|
+
entrypoint(route(session.list, '/:sid/items', { parent: session.base, method: RouteMethod.GET }),
|
|
27
|
+
filter(params(SessionParamsSchema))),
|
|
28
|
+
]
|
|
29
|
+
// api/modules.ts → elevate(sessionModules, session.list, handlers.list)
|
|
30
|
+
// web/modules.ts → elevate(modules, session.list) // call-only; screens via handler(Component)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Config
|
|
34
|
+
|
|
35
|
+
`common/config.ts` registers both services; `base: 'api'` prefixes API routes with `/api`:
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
const cfg = service({ type: AppType.Frontend, service: APP_WEB, host: 'localhost', port: 3001 })
|
|
39
|
+
service({ type: AppType.Backend, service: APP_API, host: 'localhost', port: 3000, base: 'api' }, cfg)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Backend + in-memory data
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
const context = makeContext(cfg, true)
|
|
46
|
+
appendStaticResource(context, SESSION_ITEMS) // @owlmeans/static-resource — no DB
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Handlers (`handleRequest`/`handleBody`/`handleParams`) use `ctx.getStaticResource<T>(alias)`.
|
|
50
|
+
`static-resource.list()` accepts no criteria — list all and filter in JS. `main(context, appModules)`
|
|
51
|
+
starts the server. Swap for `@owlmeans/mongo-resource` / `redis-resource` when you need persistence.
|
|
52
|
+
|
|
53
|
+
## Web (shadcn)
|
|
54
|
+
|
|
55
|
+
`web-panel`'s `PanelApp` is shadcn/Tailwind v4. The app **provides** `@/lib/utils` and
|
|
56
|
+
`@/components/ui/{alert,button,card,input,label,progress}` at the `@` alias (→ `src`). Render with
|
|
57
|
+
`provide` from `@owlmeans/web-client`: `basicRender(<PanelApp context={context} provide={provide} />)`.
|
|
58
|
+
A parent `BASE` route renders the layout via `handler(Layout)`; `HOME` is its default child. Screens
|
|
59
|
+
call the API with `context.entrypoint(alias).call({ params, body })`.
|
|
60
|
+
|
|
61
|
+
This shape is auth-free by design; add `@owlmeans/server-auth` + `@owlmeans/client-auth` and
|
|
62
|
+
`guard(...)` when needed.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "How to scaffold a new OwlMeans Common project — the @owlmeans/create-app CLI (npm/bun/yarn create), its flags and output, plus the manual alternative. Apply when creating or bootstrapping a fresh OwlMeans app."
|
|
3
|
+
applyTo: "**/package.json, **/README.md"
|
|
4
|
+
scope: general
|
|
5
|
+
---
|
|
6
|
+
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
7
|
+
|
|
8
|
+
# Scaffolding a new OwlMeans Common project
|
|
9
|
+
|
|
10
|
+
Two paths produce the same minimal fullstack project (`common` + `api` + `web`, shadcn UI
|
|
11
|
+
navigation/layout, **no auth**, a **session-scoped in-memory resource**). Reference:
|
|
12
|
+
`docs/getting-started.md`.
|
|
13
|
+
|
|
14
|
+
## Path 1 — `@owlmeans/create-app`
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
npm create @owlmeans/app@latest my-app # or: bun create @owlmeans/app my-app
|
|
18
|
+
npx @owlmeans/create-app my-app
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
By default it copies the template, runs `git init`, installs dependencies, and deploys agent
|
|
22
|
+
guidance via `@owlmeans/agent-skills` (`.claude/skills/` + `.github/instructions/`).
|
|
23
|
+
|
|
24
|
+
Flags: `--name`, `--pm <bun|npm|yarn>` (default `bun`), `--no-install`, `--no-skills`, `--no-git`,
|
|
25
|
+
`--yes`. Run with `cd my-app && bun run dev` (API :3000, web :3001).
|
|
26
|
+
|
|
27
|
+
Prefer this over hand-writing boilerplate when the user wants to start a new OwlMeans app.
|
|
28
|
+
|
|
29
|
+
## Path 2 — manual
|
|
30
|
+
|
|
31
|
+
Follow Option B in `docs/getting-started.md`: bun workspace → `common` (entrypoints/schemas/config)
|
|
32
|
+
→ `api` (`@owlmeans/server-app` + `appendStaticResource` handlers + `main`) → `web`
|
|
33
|
+
(`@owlmeans/web-panel` + shadcn `@`-provided primitives + layout/nav/screens). Finish with
|
|
34
|
+
`npx @owlmeans/agent-skills`.
|
|
35
|
+
|
|
36
|
+
## Generated layout
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
my-app/
|
|
40
|
+
├── package.json # bun workspaces: sources/*
|
|
41
|
+
├── sources/common/ # consts, types, schemas, config, modules
|
|
42
|
+
├── sources/api/ # context (appendStaticResource), app/session/*, modules, index
|
|
43
|
+
└── sources/web/ # vite + tailwind v4, components/ui/*, layout, nav, screens, render
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Session items live in `@owlmeans/static-resource`, namespaced by a client-generated `sid` in
|
|
47
|
+
`localStorage` — no database, no authentication.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: How to update Tailwind CSS, shadcn UI primitives, and related UI lib versions across shadcn-based OwlMeans packages. Distinct from the @owlmeans/* version sync (see versions.instructions.md).
|
|
3
3
|
applyTo: "**/components.json"
|
|
4
|
+
scope: general
|
|
4
5
|
---
|
|
5
6
|
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
6
7
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: How to build and maintain shadcn UI + Tailwind v4 web packages in OwlMeans Common. Load when editing components.json, tailwind.config.*, globals.css, or files under components/ui/.
|
|
3
3
|
applyTo: "**/components.json, **/tailwind.config.{ts,js,mjs}, **/globals.css, **/components/ui/**, **/@/lib/utils.ts"
|
|
4
|
+
scope: general
|
|
4
5
|
---
|
|
5
6
|
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
6
7
|
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,35 +1,63 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"package": "@owlmeans/agent-skills",
|
|
4
|
-
"version": "0.1.
|
|
5
|
-
"generatedAt": "2026-06-
|
|
4
|
+
"version": "0.1.10",
|
|
5
|
+
"generatedAt": "2026-06-17T09:37:28.174Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
|
+
{
|
|
9
|
+
"kind": "skill",
|
|
10
|
+
"name": "getting-started",
|
|
11
|
+
"category": "general",
|
|
12
|
+
"file": "skills/getting-started/SKILL.md",
|
|
13
|
+
"canonicalPath": ".claude/skills/getting-started/SKILL.md"
|
|
14
|
+
},
|
|
8
15
|
{
|
|
9
16
|
"kind": "skill",
|
|
10
17
|
"name": "shadcn-web",
|
|
11
|
-
"category": "
|
|
18
|
+
"category": "general",
|
|
12
19
|
"file": "skills/shadcn-web/SKILL.md",
|
|
13
20
|
"canonicalPath": ".claude/skills/shadcn-web/SKILL.md"
|
|
14
21
|
},
|
|
22
|
+
{
|
|
23
|
+
"kind": "skill",
|
|
24
|
+
"name": "scaffolding",
|
|
25
|
+
"category": "general",
|
|
26
|
+
"file": "skills/scaffolding/SKILL.md",
|
|
27
|
+
"canonicalPath": ".claude/skills/scaffolding/SKILL.md"
|
|
28
|
+
},
|
|
15
29
|
{
|
|
16
30
|
"kind": "skill",
|
|
17
31
|
"name": "shadcn-versions",
|
|
18
|
-
"category": "
|
|
32
|
+
"category": "general",
|
|
19
33
|
"file": "skills/shadcn-versions/SKILL.md",
|
|
20
34
|
"canonicalPath": ".claude/skills/shadcn-versions/SKILL.md"
|
|
21
35
|
},
|
|
36
|
+
{
|
|
37
|
+
"kind": "instruction",
|
|
38
|
+
"name": "getting-started",
|
|
39
|
+
"category": "general",
|
|
40
|
+
"file": "instructions/getting-started.instructions.md",
|
|
41
|
+
"canonicalPath": ".github/instructions/getting-started.instructions.md"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"kind": "instruction",
|
|
45
|
+
"name": "scaffolding",
|
|
46
|
+
"category": "general",
|
|
47
|
+
"file": "instructions/scaffolding.instructions.md",
|
|
48
|
+
"canonicalPath": ".github/instructions/scaffolding.instructions.md"
|
|
49
|
+
},
|
|
22
50
|
{
|
|
23
51
|
"kind": "instruction",
|
|
24
52
|
"name": "shadcn-versions",
|
|
25
|
-
"category": "
|
|
53
|
+
"category": "general",
|
|
26
54
|
"file": "instructions/shadcn-versions.instructions.md",
|
|
27
55
|
"canonicalPath": ".github/instructions/shadcn-versions.instructions.md"
|
|
28
56
|
},
|
|
29
57
|
{
|
|
30
58
|
"kind": "instruction",
|
|
31
59
|
"name": "shadcn-web",
|
|
32
|
-
"category": "
|
|
60
|
+
"category": "general",
|
|
33
61
|
"file": "instructions/shadcn-web.instructions.md",
|
|
34
62
|
"canonicalPath": ".github/instructions/shadcn-web.instructions.md"
|
|
35
63
|
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: getting-started
|
|
3
|
+
description: How to build a fullstack OwlMeans Common app from scratch — the common/api/web three-workspace pattern, context bootstrap on server and web, shared entrypoints + elevate(), and a session-scoped in-memory resource with @owlmeans/static-resource. Use when starting a new OwlMeans project, wiring web↔api, or asked how the pieces fit together.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
scope: general
|
|
6
|
+
---
|
|
7
|
+
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
8
|
+
|
|
9
|
+
# Getting started with OwlMeans Common — fullstack app shape
|
|
10
|
+
|
|
11
|
+
A minimal OwlMeans app is a **bun-workspace monorepo with three packages**:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
sources/
|
|
15
|
+
├── common/ # shared entrypoints (routes), AJV schemas, types, config — the single source of truth
|
|
16
|
+
├── api/ # @owlmeans/server-app backend; handlers attached to the shared entrypoints
|
|
17
|
+
└── web/ # @owlmeans/web-panel + shadcn UI; screens attached to the same entrypoints
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
The full, runnable walkthrough (scaffolded **and** manual) lives in
|
|
21
|
+
[`docs/getting-started.md`](../../../docs/getting-started.md). To generate this exact project, use
|
|
22
|
+
[[scaffolding]] (`npm create @owlmeans/app`). This skill is the mental model.
|
|
23
|
+
|
|
24
|
+
## The core idea: one contract, two sides
|
|
25
|
+
|
|
26
|
+
Declare each route once in `common` as an **entrypoint**, then `elevate()` it on each side:
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
// common/modules.ts — declaration + validation, no implementation
|
|
30
|
+
export const sessionModules = [
|
|
31
|
+
entrypoint(route(session.base, '/session')),
|
|
32
|
+
entrypoint(route(session.list, '/:sid/items', { parent: session.base, method: RouteMethod.GET }),
|
|
33
|
+
filter(params<SessionParams>(SessionParamsSchema))),
|
|
34
|
+
entrypoint(route(session.add, '/:sid/items', { parent: session.base, method: RouteMethod.POST }),
|
|
35
|
+
filter(params<SessionParams>(SessionParamsSchema, body<AddItemPayload>(AddItemSchema)))),
|
|
36
|
+
]
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
// api/modules.ts — attach handlers
|
|
41
|
+
elevate(sessionModules, session.list, handlers.list)
|
|
42
|
+
export const appModules = [...modules, ...sessionModules] // `modules` = framework defaults
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
// web/modules.ts — attach screen components, plus call-only elevation for backend routes
|
|
47
|
+
elevate(modules, session.list) // callable from the client
|
|
48
|
+
modules.push(entrypoint(route(web.session, '/session', frontend({ parent: BASE })), handler(SessionScreen)))
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Change a route or schema in `common` and both sides stay in sync. See [[entrypoint]], [[route]],
|
|
52
|
+
[[server-app]], [[web-client]], [[web-panel]].
|
|
53
|
+
|
|
54
|
+
## Shared config (where services live)
|
|
55
|
+
|
|
56
|
+
`common/config.ts` registers both services so the web knows where the API is. `base: 'api'`
|
|
57
|
+
prefixes API routes with `/api`:
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
const cfg = service({ type: AppType.Frontend, service: APP_WEB, host: 'localhost', port: 3001 })
|
|
61
|
+
service({ type: AppType.Backend, service: APP_API, host: 'localhost', port: 3000, base: 'api' }, cfg)
|
|
62
|
+
cfg.debug = { all: true }
|
|
63
|
+
export const commonConfig = cfg
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
api: `config(APP_API, commonConfig)` (+ `cfg.port`). web: `config(APP_WEB, commonConfig)`. See [[config]].
|
|
67
|
+
|
|
68
|
+
## Backend bootstrap + in-memory data
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
// api/context.ts
|
|
72
|
+
const context = makeContext(cfg, true) // from @owlmeans/server-app
|
|
73
|
+
appendStaticResource(context, SESSION_ITEMS) // @owlmeans/static-resource — in-memory, no DB
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Handlers use `handleRequest` / `handleBody` / `handleParams` (validated payload, then context, then
|
|
77
|
+
req). Read/write `ctx.getStaticResource<T>(alias)` — full CRUD (`get/load/list/create/save/delete`).
|
|
78
|
+
**`static-resource.list()` takes no criteria** — list all and filter in JS (e.g. by `sessionId`).
|
|
79
|
+
`main(context, appModules)` starts the server. See [[static-resource]], [[server-app]], [[resource]].
|
|
80
|
+
|
|
81
|
+
Swap `@owlmeans/static-resource` for [[mongo-resource]] / [[redis-resource]] when you need
|
|
82
|
+
persistence — the handler shape is identical.
|
|
83
|
+
|
|
84
|
+
## Web bootstrap (shadcn)
|
|
85
|
+
|
|
86
|
+
`@owlmeans/web-panel`'s `PanelApp` is shadcn/Tailwind v4 (no MUI). The **app provides** the shadcn
|
|
87
|
+
primitives at the `@` alias — `web-panel` references `@/lib/utils` and
|
|
88
|
+
`@/components/ui/{alert,button,card,input,label,progress}`; copy those into `src/`. Render with
|
|
89
|
+
`provide` from `@owlmeans/web-client`:
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
basicRender(<PanelApp context={context} provide={provide} />)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
`vite.config.ts` sets `@`→`src`, `@tailwindcss/vite`, and dedupes the owlmeans/react singletons.
|
|
96
|
+
`index.css` is `@import "tailwindcss";` + a shadcn `@theme` token block (replaces `@owlmeans/owl-theme`).
|
|
97
|
+
A parent `BASE` route renders the layout via `handler(LayoutComponent)`; `HOME` is its default child.
|
|
98
|
+
Screens call the backend with `context.entrypoint(alias).call({ params, body })` → `[data, outcome]`.
|
|
99
|
+
See [[web-panel]], [[web-client]], [[shadcn-web]], [[client-entrypoint]].
|
|
100
|
+
|
|
101
|
+
## Authentication
|
|
102
|
+
|
|
103
|
+
This shape is intentionally **auth-free**. To add it: `@owlmeans/server-auth` + `@owlmeans/client-auth`
|
|
104
|
+
and `guard(...)` on entrypoints. See [[auth-protocol]], [[server-auth]], [[client-auth]].
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: scaffolding
|
|
3
|
+
description: How to scaffold a new OwlMeans Common project — the @owlmeans/create-app CLI (npm/bun/yarn create), its flags, what it generates, and the manual alternative. Use when asked to create/bootstrap/start a new OwlMeans app or set up a fresh project.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
scope: general
|
|
6
|
+
---
|
|
7
|
+
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
8
|
+
|
|
9
|
+
# Scaffolding a new OwlMeans Common project
|
|
10
|
+
|
|
11
|
+
Two paths produce the same minimal fullstack project (`common` + `api` + `web`, shadcn UI
|
|
12
|
+
navigation/layout, **no auth**, a **session-scoped in-memory resource**). The full reference is
|
|
13
|
+
[`docs/getting-started.md`](../../../docs/getting-started.md); the framework shape is [[getting-started]].
|
|
14
|
+
|
|
15
|
+
## Path 1 — `@owlmeans/create-app` (one command)
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
npm create @owlmeans/app@latest my-app
|
|
19
|
+
bun create @owlmeans/app my-app
|
|
20
|
+
yarn create @owlmeans/app my-app
|
|
21
|
+
npx @owlmeans/create-app my-app
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
By default it copies the template, runs `git init`, installs dependencies, and **deploys agent
|
|
25
|
+
guidance** into the project via [[bun]]-installed `@owlmeans/agent-skills` (`.claude/skills/` +
|
|
26
|
+
`.github/instructions/`).
|
|
27
|
+
|
|
28
|
+
Flags: `--name <name>`, `--pm <bun|npm|yarn>` (default `bun`), `--no-install`, `--no-skills`,
|
|
29
|
+
`--no-git`, `--yes`/`-y`, `--help`.
|
|
30
|
+
|
|
31
|
+
Then run:
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
cd my-app && bun run dev # API :3000, web :3001
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**When an agent should use this:** the user asks to start/bootstrap/create a new OwlMeans app from
|
|
38
|
+
nothing. Prefer it over hand-writing boilerplate. After it runs, point the user at the **Session**
|
|
39
|
+
screen and `docs/getting-started.md`.
|
|
40
|
+
|
|
41
|
+
## Path 2 — manual
|
|
42
|
+
|
|
43
|
+
Follow **Option B** in [`docs/getting-started.md`](../../../docs/getting-started.md): create the bun
|
|
44
|
+
workspace, then `common` (shared entrypoints/schemas/config), `api` (`@owlmeans/server-app` +
|
|
45
|
+
`appendStaticResource` handlers + `main`), and `web` (`@owlmeans/web-panel` + shadcn `@`-provided
|
|
46
|
+
primitives + layout/nav/screens). Finish with `npx @owlmeans/agent-skills` to add agent guidance.
|
|
47
|
+
|
|
48
|
+
## What gets generated
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
my-app/
|
|
52
|
+
├── package.json # bun workspaces: sources/*
|
|
53
|
+
├── sources/common/ # consts, types, schemas, config, modules (entrypoints)
|
|
54
|
+
├── sources/api/ # context.ts (appendStaticResource), app/session/*, modules.ts, index.ts
|
|
55
|
+
└── sources/web/ # vite + tailwind v4, components/ui/*, layout, nav, screens, render.tsx
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The session demo stores items in `@owlmeans/static-resource`, namespaced by a client-generated
|
|
59
|
+
`sid` kept in `localStorage` — no database, no authentication. See [[static-resource]],
|
|
60
|
+
[[server-app]], [[web-panel]].
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: shadcn-versions
|
|
3
3
|
description: How to update versions of shadcn UI primitives, Tailwind CSS v4, and related UI libs across all shadcn-based OwlMeans web packages. Distinct from the @owlmeans/* package version sync (see [[versions]] skill). Use when bumping tailwind, shadcn components, or utility libs.
|
|
4
4
|
allowed-tools: Bash(grep *), Bash(sed *), Bash(bun install)
|
|
5
|
+
scope: general
|
|
5
6
|
---
|
|
6
7
|
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
7
8
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: shadcn-web
|
|
3
3
|
description: How to build and maintain shadcn UI + Tailwind v4 web packages in the OwlMeans framework. Auto-invoked when editing components.json, tailwind.config.*, globals.css, or files under components/ui/. Use when creating a new shadcn-based web package or adding shadcn components.
|
|
4
4
|
user-invocable: false
|
|
5
|
+
scope: general
|
|
5
6
|
---
|
|
6
7
|
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
7
8
|
|
package/build/discover.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export interface ManifestEntry {
|
|
2
2
|
kind: 'skill' | 'instruction';
|
|
3
3
|
name: string;
|
|
4
|
-
category: 'package-specific' | 'multi-package';
|
|
4
|
+
category: 'package-specific' | 'multi-package' | 'general';
|
|
5
5
|
file: string;
|
|
6
6
|
canonicalPath: string;
|
|
7
7
|
}
|
|
@@ -16,7 +16,7 @@ export interface Manifest {
|
|
|
16
16
|
export interface DiscoveredEntry {
|
|
17
17
|
kind: 'skill' | 'instruction';
|
|
18
18
|
name: string;
|
|
19
|
-
category: 'package-specific' | 'multi-package';
|
|
19
|
+
category: 'package-specific' | 'multi-package' | 'general';
|
|
20
20
|
/** Absolute path to the embedded source file. */
|
|
21
21
|
sourcePath: string;
|
|
22
22
|
canonicalPath: string;
|
package/build/discover.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,GAAG,aAAa,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,kBAAkB,GAAG,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,GAAG,aAAa,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,kBAAkB,GAAG,eAAe,GAAG,SAAS,CAAA;IAC1D,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,aAAa,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,aAAa,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,kBAAkB,GAAG,eAAe,GAAG,SAAS,CAAA;IAC1D,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAA;CACjB;AA4FD,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,2BAA2B;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,iCAAiC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,mEAAmE;AACnE,eAAO,MAAM,QAAQ,GAAI,WAAW,MAAM,EAAE,OAAM,eAAoB,KAAG,eAAe,EA4CvF,CAAA"}
|
package/package.json
CHANGED
package/src/discover.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { fileURLToPath } from 'node:url'
|
|
|
5
5
|
export interface ManifestEntry {
|
|
6
6
|
kind: 'skill' | 'instruction'
|
|
7
7
|
name: string
|
|
8
|
-
category: 'package-specific' | 'multi-package'
|
|
8
|
+
category: 'package-specific' | 'multi-package' | 'general'
|
|
9
9
|
file: string
|
|
10
10
|
canonicalPath: string
|
|
11
11
|
}
|
|
@@ -22,7 +22,7 @@ export interface Manifest {
|
|
|
22
22
|
export interface DiscoveredEntry {
|
|
23
23
|
kind: 'skill' | 'instruction'
|
|
24
24
|
name: string
|
|
25
|
-
category: 'package-specific' | 'multi-package'
|
|
25
|
+
category: 'package-specific' | 'multi-package' | 'general'
|
|
26
26
|
/** Absolute path to the embedded source file. */
|
|
27
27
|
sourcePath: string
|
|
28
28
|
canonicalPath: string
|