@owlmeans/create-app 0.1.18-rc.54 → 0.1.18-rc.55
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/README.md +1 -1
- package/build/args.js +1 -1
- package/build/bin.js +0 -0
- package/build/run.js +2 -2
- package/package.json +2 -2
- package/template/AGENTS.md +1 -1
- package/template/README.bare.md +1 -1
- package/template/_agents/skills/reuse-code/SKILL.md +19 -2
- package/template/sources/api/package.json +1 -1
- package/template/sources/common/package.json +2 -2
- package/template/sources/web/package.json +8 -8
package/README.md
CHANGED
package/build/args.js
CHANGED
|
@@ -5,7 +5,7 @@ Usage:
|
|
|
5
5
|
npm create @owlmeans/app@latest <dir> [options]
|
|
6
6
|
bun create @owlmeans/app <dir> [options]
|
|
7
7
|
yarn create @owlmeans/app <dir> [options]
|
|
8
|
-
npx @owlmeans/create-app@^0.1.18-rc.
|
|
8
|
+
npx @owlmeans/create-app@^0.1.18-rc.55 <dir> [options]
|
|
9
9
|
|
|
10
10
|
Generates three workspaces (common + api + web) with shadcn UI navigation and
|
|
11
11
|
layout, no authentication, and a session-scoped in-memory resource on the
|
package/build/bin.js
CHANGED
|
File without changes
|
package/build/run.js
CHANGED
|
@@ -50,7 +50,7 @@ export const run = async (args) => {
|
|
|
50
50
|
log(args.install
|
|
51
51
|
? '\nDeploying agent skills via @owlmeans/agent-skills…'
|
|
52
52
|
: '\nDeploying harness guidance via @owlmeans/agent-skills (general skills only — re-run'
|
|
53
|
-
+ '\n`npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
53
|
+
+ '\n`npx @owlmeans/agent-skills@^0.1.18-rc.46` after installing to add the package-specific ones)…');
|
|
54
54
|
try {
|
|
55
55
|
const result = await installSkills({
|
|
56
56
|
dir: dest,
|
|
@@ -62,7 +62,7 @@ export const run = async (args) => {
|
|
|
62
62
|
help: false,
|
|
63
63
|
});
|
|
64
64
|
if (result.code !== 0) {
|
|
65
|
-
process.stderr.write(` agent-skills exited with code ${result.code} — you can re-run \`npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
65
|
+
process.stderr.write(` agent-skills exited with code ${result.code} — you can re-run \`npx @owlmeans/agent-skills@^0.1.18-rc.46\` later.\n`);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
catch (err) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/create-app",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.55",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Scaffold a fullstack OwlMeans Common app — common + api + web workspaces, shadcn UI navigation/layout, no auth, and a session-scoped in-memory resource, or --bare for the demo-free shell. Also usable programmatically via scaffold(). Deploys agent skills via @owlmeans/agent-skills by default.",
|
|
6
6
|
"type": "module",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"template"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@owlmeans/agent-skills": "^0.1.18-rc.
|
|
33
|
+
"@owlmeans/agent-skills": "^0.1.18-rc.46"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@owlmeans/dep-config": "workspace:*",
|
package/template/AGENTS.md
CHANGED
|
@@ -94,7 +94,7 @@ from the installed `@owlmeans/*` packages. Agents load a skill by topic, or you
|
|
|
94
94
|
explicitly. Copilot and Codex read `.agents/skills/` directly; Claude Code reads the generated
|
|
95
95
|
symlinks in `.claude/skills/` (see "Claude Code" below).
|
|
96
96
|
|
|
97
|
-
- After adding or updating any `@owlmeans/*` dependency, run `npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
97
|
+
- After adding or updating any `@owlmeans/*` dependency, run `npx @owlmeans/agent-skills@^0.1.18-rc.46` to refresh
|
|
98
98
|
the deployed skills.
|
|
99
99
|
- Deployed files carry an `AUTO-GENERATED` banner and are refreshed in place — never hand-edit them.
|
|
100
100
|
- To capture your own guidance, see the `skill-authoring` skill; to turn repeatedly-used memory into
|
package/template/README.bare.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: reuse-code
|
|
3
|
-
description: Discovery-first, reuse-first workflow for OwlMeans projects. Use BEFORE planning or building any feature, before proposing a third-party library or a custom solution, and after writing code. Find an existing @owlmeans/* package or existing code first; extend before writing new; simplify what you write.
|
|
3
|
+
description: Discovery-first, reuse-first workflow for OwlMeans projects. Use BEFORE planning or building any feature, before proposing a third-party library or a custom solution, and after writing code. Find an existing @owlmeans/* package or existing code first (membership, invitations, organizations and access come from the IAM); extend before writing new; simplify what you write.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
metadata:
|
|
6
6
|
scope: general
|
|
@@ -47,7 +47,7 @@ How you research the repo depends on whether `@owlmeans/*` is linked locally:
|
|
|
47
47
|
**https://github.com/owlmeans/common** — `tree.md` and package READMEs — to find the right package.
|
|
48
48
|
|
|
49
49
|
This is the same dev-linked detection `@owlmeans/agent-skills` uses (see its `detectLinked`). After
|
|
50
|
-
adding an `@owlmeans/*` dependency, run `npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
50
|
+
adding an `@owlmeans/*` dependency, run `npx @owlmeans/agent-skills@^0.1.18-rc.46` to deploy its
|
|
51
51
|
skill. Prefer an `@owlmeans/*` package over a third-party library or bespoke code whenever one fits.
|
|
52
52
|
|
|
53
53
|
### Never add an OwlMeans dependency without an explicit range
|
|
@@ -74,6 +74,23 @@ If an installed package nearly fits, **configure or extend it** rather than writ
|
|
|
74
74
|
its resources, services, entrypoints, and helpers. A small extension of a framework package beats a new
|
|
75
75
|
parallel implementation.
|
|
76
76
|
|
|
77
|
+
### People, organizations and access come from the IAM
|
|
78
|
+
|
|
79
|
+
An application that signs its people in through an OwlMeans IAM provider already has accounts,
|
|
80
|
+
organizations, memberships, invitations and grants — the provider keeps them. Before writing a
|
|
81
|
+
members table, an invitation flow, a role column or an organization picker:
|
|
82
|
+
|
|
83
|
+
- **Server** (`@owlmeans/server-iam`): `iamRuntime(context, request)` lists the person's
|
|
84
|
+
organizations, creates one, lists / adds (find-or-create by e-mail) / updates / removes members,
|
|
85
|
+
and lists, assigns and revokes grants — as the signed-in person, with owner and member rights
|
|
86
|
+
decided by the provider. `organizationOf` / `organizationsOf` read the session's organizations;
|
|
87
|
+
gates and `hasPermission` enforce access; `requireEntityKey(req)` is the tenant key to store
|
|
88
|
+
records by.
|
|
89
|
+
- **Browser** (`@owlmeans/client-iam`): `listOrganizations` / `switchOrganization` — the acting
|
|
90
|
+
organization is session state, never a per-request parameter.
|
|
91
|
+
- If the project's own scaffold already ships an organization switcher or a people / access screen,
|
|
92
|
+
extend it rather than adding a second one.
|
|
93
|
+
|
|
77
94
|
## 3. No package? Reuse code and extract an abstraction
|
|
78
95
|
|
|
79
96
|
When no package solves it, search the codebase for code that already solves a **similar** problem.
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"typecheck": "tsc -b"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@owlmeans/config": "^0.1.18-rc.
|
|
23
|
-
"@owlmeans/entrypoint": "^0.1.18-rc.
|
|
22
|
+
"@owlmeans/config": "^0.1.18-rc.41",
|
|
23
|
+
"@owlmeans/entrypoint": "^0.1.18-rc.39",
|
|
24
24
|
"@owlmeans/error": "^0.1.18-rc.36",
|
|
25
25
|
"@owlmeans/resource": "^0.1.18-rc.37",
|
|
26
26
|
"@owlmeans/route": "^0.1.18-rc.33",
|
|
@@ -11,16 +11,16 @@
|
|
|
11
11
|
"preview": "vite preview"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@owlmeans/client": "^0.1.18-rc.
|
|
15
|
-
"@owlmeans/client-config": "^0.1.18-rc.
|
|
16
|
-
"@owlmeans/client-context": "^0.1.18-rc.
|
|
17
|
-
"@owlmeans/client-entrypoint": "^0.1.18-rc.
|
|
18
|
-
"@owlmeans/client-i18n": "^0.1.18-rc.
|
|
19
|
-
"@owlmeans/entrypoint": "^0.1.18-rc.
|
|
14
|
+
"@owlmeans/client": "^0.1.18-rc.48",
|
|
15
|
+
"@owlmeans/client-config": "^0.1.18-rc.41",
|
|
16
|
+
"@owlmeans/client-context": "^0.1.18-rc.45",
|
|
17
|
+
"@owlmeans/client-entrypoint": "^0.1.18-rc.44",
|
|
18
|
+
"@owlmeans/client-i18n": "^0.1.18-rc.47",
|
|
19
|
+
"@owlmeans/entrypoint": "^0.1.18-rc.39",
|
|
20
20
|
"@owlmeans/route": "^0.1.18-rc.33",
|
|
21
21
|
"@owlmeans/state": "^0.1.18-rc.36",
|
|
22
|
-
"@owlmeans/web-client": "^0.1.18-rc.
|
|
23
|
-
"@owlmeans/web-panel": "^0.1.18-rc.
|
|
22
|
+
"@owlmeans/web-client": "^0.1.18-rc.58",
|
|
23
|
+
"@owlmeans/web-panel": "^0.1.18-rc.68",
|
|
24
24
|
"@radix-ui/react-label": "^2.1.0",
|
|
25
25
|
"@radix-ui/react-navigation-menu": "^1.2.14",
|
|
26
26
|
"@radix-ui/react-progress": "^1.1.0",
|