@owlmeans/create-app 0.1.16-rc.0 → 0.1.17
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 +12 -10
- package/build/args.d.ts.map +1 -1
- package/build/args.js.map +1 -1
- package/build/run.d.ts.map +1 -1
- package/build/run.js +4 -6
- package/build/run.js.map +1 -1
- package/build/template.d.ts.map +1 -1
- package/build/template.js +5 -2
- package/build/template.js.map +1 -1
- package/package.json +3 -3
- package/template/{_github/copilot-instructions.md → AGENTS.md} +30 -34
- package/template/CLAUDE.md +10 -94
- package/template/_agents/scripts/link-skills.sh +82 -0
- package/template/{_claude → _agents}/skills/agent-memory/SKILL.md +8 -7
- package/template/{_claude → _agents}/skills/getting-started/SKILL.md +2 -1
- package/template/{_claude → _agents}/skills/git/SKILL.md +2 -1
- package/template/{_claude → _agents}/skills/memory-promotion/SKILL.md +5 -4
- package/template/{_claude → _agents}/skills/memory-recompact/SKILL.md +3 -3
- package/template/{_claude → _agents}/skills/reuse-code/SKILL.md +4 -3
- package/template/{_claude → _agents}/skills/self-education/SKILL.md +10 -10
- package/template/_agents/skills/skill-authoring/SKILL.md +89 -0
- package/template/_claude/settings.json +14 -0
- package/template/_claude/skills/.gitkeep +0 -0
- package/template/_gitignore +4 -0
- package/template/package.json +2 -5
- package/template/sources/api/package.json +4 -4
- package/template/sources/common/package.json +7 -7
- package/template/sources/web/package.json +20 -20
- package/template/sources/web/src/render.tsx +2 -2
- package/template/_claude/skills/skill-authoring/SKILL.md +0 -84
- package/template/_github/instructions/agent-memory.instructions.md +0 -143
- package/template/_github/instructions/getting-started.instructions.md +0 -62
- package/template/_github/instructions/git.instructions.md +0 -52
- package/template/_github/instructions/memory-promotion.instructions.md +0 -111
- package/template/_github/instructions/memory-recompact.instructions.md +0 -73
- package/template/_github/instructions/reuse-code.instructions.md +0 -50
- package/template/_github/instructions/self-education.instructions.md +0 -85
- package/template/_github/instructions/skill-authoring.instructions.md +0 -66
package/README.md
CHANGED
|
@@ -18,9 +18,10 @@ A bun-workspace monorepo with three packages and **no authentication**:
|
|
|
18
18
|
|
|
19
19
|
```
|
|
20
20
|
my-app/
|
|
21
|
-
├──
|
|
22
|
-
├── .
|
|
23
|
-
├── .agents/
|
|
21
|
+
├── AGENTS.md # agent context, read by every coding agent
|
|
22
|
+
├── CLAUDE.md # thin bridge: imports AGENTS.md, links skills for Claude Code
|
|
23
|
+
├── .agents/skills/<name>/SKILL.md # deployed agent skills
|
|
24
|
+
├── .agents/memory/MEMORY.md # shared agent memory index
|
|
24
25
|
├── sources/
|
|
25
26
|
│ ├── common/ # shared entrypoints (routes), schemas and types
|
|
26
27
|
│ ├── api/ # @owlmeans/server-app backend; session data in an in-memory static resource
|
|
@@ -33,14 +34,15 @@ that creates, lists and removes items held in a **session-scoped in-memory resou
|
|
|
33
34
|
|
|
34
35
|
By default the scaffolder also installs dependencies and **deploys agent guidance**
|
|
35
36
|
into the project via [`@owlmeans/agent-skills`](https://www.npmjs.com/package/@owlmeans/agent-skills)
|
|
36
|
-
(`.
|
|
37
|
+
(`.agents/skills/`).
|
|
37
38
|
|
|
38
|
-
`
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
`AGENTS.md` carries the four mandatory sections a real OwlMeans monorepo uses — **Git Workflow**,
|
|
40
|
+
**Reporting**, **Memory**, **Self-Education** — plus a project-purpose placeholder your agent fills
|
|
41
|
+
in on its first session. GitHub Copilot and Codex read `AGENTS.md` and `.agents/skills/` natively;
|
|
42
|
+
Claude Code reads `CLAUDE.md`, which imports `AGENTS.md` and keeps per-skill symlinks in
|
|
43
|
+
`.claude/skills/` fresh through `sh .agents/scripts/link-skills.sh`. The harness guidance (memory
|
|
44
|
+
protocol, self-education, git policy, skill authoring, reuse-first) ships with the template, so it
|
|
45
|
+
is present even with `--no-install`.
|
|
44
46
|
|
|
45
47
|
## Options
|
|
46
48
|
|
package/build/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;AAEnD,MAAM,WAAW,UAAU;IACzB,+EAA+E;IAC/E,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,4EAA4E;IAC5E,EAAE,EAAE,cAAc,CAAA;IAClB,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAA;IAChB,oEAAoE;IACpE,MAAM,EAAE,OAAO,CAAA;IACf,yCAAyC;IACzC,GAAG,EAAE,OAAO,CAAA;IACZ,+DAA+D;IAC/D,GAAG,EAAE,OAAO,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;CACd;AA0BD,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;AAEnD,MAAM,WAAW,UAAU;IACzB,+EAA+E;IAC/E,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,4EAA4E;IAC5E,EAAE,EAAE,cAAc,CAAA;IAClB,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAA;IAChB,oEAAoE;IACpE,MAAM,EAAE,OAAO,CAAA;IACf,yCAAyC;IACzC,GAAG,EAAE,OAAO,CAAA;IACZ,+DAA+D;IAC/D,GAAG,EAAE,OAAO,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;CACd;AA0BD,eAAO,MAAM,SAAS,SAAU,MAAM,EAAE,KAAG,UAAU,GAAG,IAsEvD,CAAA;AAED,eAAO,MAAM,SAAS,QAAO,IAE5B,CAAA"}
|
package/build/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAoBA,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;CAoBZ,CAAA;AAED,MAAM,GAAG,GAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;AAEpD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAc,EAAqB,EAAE;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1B,MAAM,MAAM,GAAe;QACzB,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,KAAK;QACT,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,IAAI;QACT,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,KAAK;KACZ,CAAA;IAED,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,QAAQ,CAAC,EAAE,CAAC;YACV,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;gBAClB,MAAK;YACP,KAAK,OAAO,CAAC;YACb,KAAK,IAAI;gBACP,MAAM,CAAC,GAAG,GAAG,IAAI,CAAA;gBACjB,MAAK;YACP,KAAK,cAAc;gBACjB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAA;gBACtB,MAAK;YACP,KAAK,aAAa;gBAChB,MAAM,CAAC,MAAM,GAAG,KAAK,CAAA;gBACrB,MAAK;YACP,KAAK,UAAU;gBACb,MAAM,CAAC,GAAG,GAAG,KAAK,CAAA;gBAClB,MAAK;YACP,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"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"}
|
package/build/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,WAAW,CAAA;AAiB3D,eAAO,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,WAAW,CAAA;AAiB3D,eAAO,MAAM,GAAG,SAAgB,UAAU,KAAG,OAAO,CAAC,MAAM,CA4E1D,CAAA"}
|
package/build/run.js
CHANGED
|
@@ -53,8 +53,6 @@ export const run = async (args) => {
|
|
|
53
53
|
dir: dest,
|
|
54
54
|
yes: true,
|
|
55
55
|
only: [],
|
|
56
|
-
claudeOnly: false,
|
|
57
|
-
copilotOnly: false,
|
|
58
56
|
extras: true,
|
|
59
57
|
force: false,
|
|
60
58
|
dryRun: false,
|
|
@@ -77,10 +75,10 @@ export const run = async (args) => {
|
|
|
77
75
|
log(` ${runCmd}\n`);
|
|
78
76
|
log('The web app starts on http://localhost:3001 and the API on http://localhost:3000.');
|
|
79
77
|
log('Open the "Session" page to exercise the in-memory session resource.\n');
|
|
80
|
-
log('Agent guidance was scaffolded:
|
|
81
|
-
log('shared memory store at .agents/memory/MEMORY.md.');
|
|
82
|
-
log('Open the project in
|
|
83
|
-
log('
|
|
78
|
+
log('Agent guidance was scaffolded: AGENTS.md (with a CLAUDE.md bridge), the skills in');
|
|
79
|
+
log('.agents/skills/ and the shared memory store at .agents/memory/MEMORY.md.');
|
|
80
|
+
log('Open the project in any coding agent — on the first session it will ask what the');
|
|
81
|
+
log('project is for and fill in its purpose for you.\n');
|
|
84
82
|
return 0;
|
|
85
83
|
};
|
|
86
84
|
//# sourceMappingURL=run.js.map
|
package/build/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
package/build/template.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4D,UAAU,EAA2B,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4D,UAAU,EAA2B,MAAM,SAAS,CAAA;AAsBvH,MAAM,WAAW,oBAAoB;IACnC,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAA;IACZ,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAA;CACb;AAED,gFAAgF;AAChF,eAAO,MAAM,WAAW,QAAO,MACqC,CAAA;AAYpE;;;GAGG;AACH,eAAO,MAAM,YAAY,QAAS,MAAM,QAAQ,MAAM,KAAK,oBAAoB,KAAG,IAoBjF,CAAA;AAED,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,OAGxC,CAAA;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
|
package/build/template.js
CHANGED
|
@@ -7,9 +7,12 @@ const DOTFILE_RENAMES = {
|
|
|
7
7
|
'_npmrc': '.npmrc',
|
|
8
8
|
'_env': '.env',
|
|
9
9
|
'_github': '.github',
|
|
10
|
+
// `_agents` carries the canonical harness — AGENTS.md's skills, the shared memory
|
|
11
|
+
// store and the link-skills bridge; the template seed (sync-agent-meta) writes
|
|
12
|
+
// `_agents/skills/` into this tree. `_claude` carries only the Claude Code bridge
|
|
13
|
+
// (SessionStart hook + the gitkept symlink dir). Entries whose source dir is
|
|
14
|
+
// absent are inert.
|
|
10
15
|
'_agents': '.agents',
|
|
11
|
-
// Entries whose source dir is absent are inert — `_claude` is kept because the
|
|
12
|
-
// template seed (sync-agent-meta) writes `_claude/skills/` into this tree.
|
|
13
16
|
'_claude': '.claude',
|
|
14
17
|
};
|
|
15
18
|
/** Files whose contents are binary or must not be string-substituted. */
|
package/build/template.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAElD,uGAAuG;AACvG,MAAM,eAAe,GAA2B;IAC9C,YAAY,EAAE,YAAY;IAC1B,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,SAAS;IACpB,
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/create-app",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.17",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Scaffold a minimal fullstack OwlMeans Common app — common + api + web workspaces, shadcn UI navigation/layout, no auth, and a session-scoped in-memory resource. Deploys agent skills via @owlmeans/agent-skills by default.",
|
|
6
6
|
"type": "module",
|
|
@@ -29,13 +29,13 @@
|
|
|
29
29
|
"template"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@owlmeans/agent-skills": "^0.1.
|
|
32
|
+
"@owlmeans/agent-skills": "^0.1.17"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@owlmeans/dep-config": "workspace:*",
|
|
36
36
|
"@types/node": "^26.1.0",
|
|
37
37
|
"nodemon": "^3.1.14",
|
|
38
|
-
"typescript": "^
|
|
38
|
+
"typescript": "^7.0.2"
|
|
39
39
|
},
|
|
40
40
|
"publishConfig": {
|
|
41
41
|
"access": "public"
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
# __APP_NAME__ —
|
|
1
|
+
# __APP_NAME__ — Project Context
|
|
2
2
|
|
|
3
3
|
## Project purpose
|
|
4
4
|
|
|
5
5
|
<!-- OWLMEANS:PROJECT-PURPOSE -->
|
|
6
6
|
> **Agents — this project has not been described yet.** Before doing anything else on the first
|
|
7
7
|
> session, ask the user what this project is for: its purpose, domain, goals, and key constraints.
|
|
8
|
-
> Then replace this whole block
|
|
9
|
-
> a short description of the project, and remove this notice.
|
|
8
|
+
> Then replace this whole block with a short description of the project, and remove this notice.
|
|
10
9
|
|
|
11
10
|
## Git Workflow (mandatory)
|
|
12
11
|
|
|
13
12
|
These rules apply to every git operation in this repository and **override default agent behavior**
|
|
14
|
-
— including any automatic `Co-Authored-By` or AI/agent-attribution trailer. Full policy:
|
|
15
|
-
|
|
13
|
+
— including any automatic `Co-Authored-By` or AI/agent-attribution trailer. Full policy: the `git`
|
|
14
|
+
skill.
|
|
16
15
|
|
|
17
16
|
- **Never run state-changing git operations** (`commit`, `add`/`rm` staging, `push`,
|
|
18
17
|
`reset`/rollback, `revert`, `rebase`, `merge`, `branch`, `checkout`/`switch`, `stash`, `tag`,
|
|
@@ -41,58 +40,55 @@ unless the operator explicitly asks for another format, length, or level of deta
|
|
|
41
40
|
## Memory
|
|
42
41
|
|
|
43
42
|
Single shared agent memory store: `.agents/memory/` — a graph of subsystem nodes with index
|
|
44
|
-
`.agents/memory/MEMORY.md`. Protocol:
|
|
45
|
-
[.github/instructions/agent-memory.instructions.md](.github/instructions/agent-memory.instructions.md).
|
|
43
|
+
`.agents/memory/MEMORY.md`. Protocol: `agent-memory` skill.
|
|
46
44
|
|
|
47
45
|
- Session start: read `.agents/memory/MEMORY.md`. Before non-trivial work: open the nodes whose
|
|
48
46
|
scope matches the task.
|
|
49
47
|
- Every write merges into the matching subsystem node and compacts — record reusable knowledge,
|
|
50
48
|
never session events.
|
|
51
|
-
- Procedure-shaped or repeatedly-touched memory must be **distilled into**
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
- Never write memory to `.claude/memory/`, `.github/memory/`, `~/.copilot/`, or anywhere outside
|
|
57
|
-
this repository.
|
|
49
|
+
- Procedure-shaped or repeatedly-touched memory must be **distilled into** a skill as short
|
|
50
|
+
general rules — never pasted in as memory text (`memory-promotion`).
|
|
51
|
+
- If the store degrades (event logs, oversized nodes, bloated index) — `memory-recompact`.
|
|
52
|
+
- Never write memory to a per-agent directory (`.claude/memory/`, `.github/memory/`, `~/.claude/`,
|
|
53
|
+
`~/.copilot/`) or anywhere outside this repository.
|
|
58
54
|
- Context that must load every session belongs in this file; on-demand context goes in
|
|
59
|
-
`.
|
|
55
|
+
`.agents/<topic>.md` and is referenced from here.
|
|
60
56
|
|
|
61
57
|
## Self-Education (mandatory)
|
|
62
58
|
|
|
63
59
|
Whenever development started from a plan agreed with the agent, the work is not complete until
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
The completion report must include the self-education outcome — or state why none was needed.
|
|
60
|
+
the `self-education` skill has been applied: rewrite the project skills this change touched so
|
|
61
|
+
they state current rules (never a note about what changed), record external-doc findings
|
|
62
|
+
(URL + gist) in the governing skill, or add a skill for a new subsystem or technology. The
|
|
63
|
+
completion report must include the self-education outcome — or state why none was needed.
|
|
69
64
|
|
|
70
65
|
## What this is
|
|
71
66
|
|
|
72
67
|
`__APP_NAME__` is a fullstack [OwlMeans Common](https://github.com/owlmeans/common) app: a bun-workspace
|
|
73
68
|
monorepo with three packages under `sources/` — `common` (shared route entrypoints, schemas, config),
|
|
74
|
-
`api` (`@owlmeans/server-app` backend), and `web` (`@owlmeans/web-panel` + shadcn UI). See
|
|
75
|
-
`getting-started
|
|
76
|
-
for how it was generated.
|
|
69
|
+
`api` (`@owlmeans/server-app` backend), and `web` (`@owlmeans/web-panel` + shadcn UI). See the
|
|
70
|
+
`getting-started` skill for how the pieces fit together, and `scaffolding` for how it was generated.
|
|
77
71
|
|
|
78
72
|
## Reuse before you build (mandatory)
|
|
79
73
|
|
|
80
|
-
Before planning or writing any feature, follow `reuse-code
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
74
|
+
Before planning or writing any feature, follow the `reuse-code` skill: search for an `@owlmeans/*`
|
|
75
|
+
package (in the installed packages and at https://github.com/owlmeans/common) or existing code that
|
|
76
|
+
already solves the problem **before** proposing a third-party library or a custom solution, and
|
|
77
|
+
simplify whatever you do write. This is required for every planning and development task.
|
|
84
78
|
|
|
85
|
-
##
|
|
79
|
+
## Skills
|
|
86
80
|
|
|
87
|
-
Reusable guidance lives in `.
|
|
88
|
-
|
|
81
|
+
Reusable guidance lives in `.agents/skills/<name>/SKILL.md`, deployed by `@owlmeans/agent-skills`
|
|
82
|
+
from the installed `@owlmeans/*` packages. Agents load a skill by topic, or you run `/<name>`
|
|
83
|
+
explicitly. Copilot and Codex read `.agents/skills/` directly; Claude Code reads the generated
|
|
84
|
+
symlinks in `.claude/skills/` (see `CLAUDE.md`).
|
|
89
85
|
|
|
90
86
|
- After adding or updating any `@owlmeans/*` dependency, run `npx @owlmeans/agent-skills` to refresh
|
|
91
|
-
the deployed skills
|
|
87
|
+
the deployed skills.
|
|
92
88
|
- Deployed files carry an `AUTO-GENERATED` banner and are refreshed in place — never hand-edit them.
|
|
93
|
-
- To capture your own guidance, see `skill-authoring
|
|
94
|
-
|
|
95
|
-
|
|
89
|
+
- To capture your own guidance, see the `skill-authoring` skill; to turn repeatedly-used memory into
|
|
90
|
+
a skill, `memory-promotion`. Keep it inside this repository, in `.agents/skills/` — never in a
|
|
91
|
+
per-agent or home directory.
|
|
96
92
|
|
|
97
93
|
## Develop
|
|
98
94
|
|
package/template/CLAUDE.md
CHANGED
|
@@ -1,97 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
@AGENTS.md
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Claude Code bridge
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
All guidance lives in `AGENTS.md` (imported above) and in skills under
|
|
6
|
+
`.agents/skills/<name>/SKILL.md` — the single canonical location shared with Copilot
|
|
7
|
+
and Codex. `.claude/skills/` holds only generated per-skill symlinks (gitignored
|
|
8
|
+
except `.gitkeep`); the committed `SessionStart` hook runs
|
|
9
|
+
`sh .agents/scripts/link-skills.sh` to (re)create them each session.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
— including any automatic `Co-Authored-By` or AI/agent-attribution trailer. Full policy: the `git`
|
|
15
|
-
skill.
|
|
16
|
-
|
|
17
|
-
- **Never run state-changing git operations** (`commit`, `add`/`rm` staging, `push`,
|
|
18
|
-
`reset`/rollback, `revert`, `rebase`, `merge`, `branch`, `checkout`/`switch`, `stash`, `tag`,
|
|
19
|
-
`cherry-pick`, force-push, etc.) unless the user **explicitly instructs it in the current
|
|
20
|
-
request**. Permission to make code edits is **not** permission to touch git.
|
|
21
|
-
- **Only exception**: creating and operating inside a **temporary git worktree** that a task or
|
|
22
|
-
subagent has **explicitly requested** for that purpose.
|
|
23
|
-
- **Read-only inspection is allowed**: `git status`, `git diff`, `git log`, `git show`,
|
|
24
|
-
`git branch --list` — use these to report state, never to change it.
|
|
25
|
-
- Commit only under the repository's configured git identity. Never pass `--author`, never change
|
|
26
|
-
`user.name`/`user.email`, never add a `Co-Authored-By:` trailer attributing the commit to an
|
|
27
|
-
AI/agent. If no identity is configured, stop and ask.
|
|
28
|
-
- Report finished git work as a Markdown table (**Action**, **Target**, **Result**), and never
|
|
29
|
-
commit a conflicted working copy — stop, list the conflicted paths, hand control back.
|
|
30
|
-
|
|
31
|
-
## Reporting (mandatory)
|
|
32
|
-
|
|
33
|
-
Always report concisely and briefly, in table format, about WHAT was done rather than why —
|
|
34
|
-
unless the operator explicitly asks for another format, length, or level of detail.
|
|
35
|
-
|
|
36
|
-
- Changes: one row per file/item — **Change** (created / modified / deleted), **Path**,
|
|
37
|
-
**Why** (one short phrase).
|
|
38
|
-
- Findings / status / verification: a short table plus at most a few lines of prose.
|
|
39
|
-
- No preamble, no narration of the process; expand on WHY only when asked.
|
|
40
|
-
|
|
41
|
-
## Memory
|
|
42
|
-
|
|
43
|
-
Single shared agent memory store: `.agents/memory/` — a graph of subsystem nodes with index
|
|
44
|
-
`.agents/memory/MEMORY.md`. Protocol: `agent-memory` skill.
|
|
45
|
-
|
|
46
|
-
- Session start: read `.agents/memory/MEMORY.md`. Before non-trivial work: open the nodes whose
|
|
47
|
-
scope matches the task.
|
|
48
|
-
- Every write merges into the matching subsystem node and compacts — record reusable knowledge,
|
|
49
|
-
never session events.
|
|
50
|
-
- Procedure-shaped or repeatedly-touched memory must be **distilled into** a skill as short
|
|
51
|
-
general rules — never pasted in as memory text (`memory-promotion`).
|
|
52
|
-
- If the store degrades (event logs, oversized nodes, bloated index) — `memory-recompact`.
|
|
53
|
-
- Never write memory to `.claude/memory/`, `.github/memory/`, `~/.claude/`, or anywhere outside
|
|
54
|
-
this repository.
|
|
55
|
-
- Context that must load every session belongs in this file; on-demand context goes in
|
|
56
|
-
`.claude/<topic>.md` and is referenced from here.
|
|
57
|
-
|
|
58
|
-
## Self-Education (mandatory)
|
|
59
|
-
|
|
60
|
-
Whenever development started from a plan agreed with the agent, the work is not complete until
|
|
61
|
-
the `self-education` skill has been applied: rewrite the project skills/instructions the change
|
|
62
|
-
touched so they state current rules (never a note about what changed), record external-doc
|
|
63
|
-
findings (URL + gist) in the governing skill, or add a skill/instruction for a new subsystem or
|
|
64
|
-
technology. The completion report must include the self-education outcome — or state why none
|
|
65
|
-
was needed.
|
|
66
|
-
|
|
67
|
-
## What this is
|
|
68
|
-
|
|
69
|
-
`__APP_NAME__` is a fullstack [OwlMeans Common](https://github.com/owlmeans/common) app: a bun-workspace
|
|
70
|
-
monorepo with three packages under `sources/` — `common` (shared route entrypoints, schemas, config),
|
|
71
|
-
`api` (`@owlmeans/server-app` backend), and `web` (`@owlmeans/web-panel` + shadcn UI). See the
|
|
72
|
-
`getting-started` skill for how the pieces fit together, and `scaffolding` for how it was generated.
|
|
73
|
-
|
|
74
|
-
## Reuse before you build (mandatory)
|
|
75
|
-
|
|
76
|
-
Before planning or writing any feature, follow the `reuse-code` skill: search for an `@owlmeans/*`
|
|
77
|
-
package (in the installed packages and at https://github.com/owlmeans/common) or existing code that
|
|
78
|
-
already solves the problem **before** proposing a third-party library or a custom solution, and
|
|
79
|
-
simplify whatever you do write. This is required for every planning and development task.
|
|
80
|
-
|
|
81
|
-
## Skills
|
|
82
|
-
|
|
83
|
-
Reusable guidance lives in `.claude/skills/<name>/SKILL.md`, deployed by `@owlmeans/agent-skills` from
|
|
84
|
-
the installed `@owlmeans/*` packages. Claude auto-invokes them by topic, or run `/<name>` explicitly.
|
|
85
|
-
|
|
86
|
-
- After adding or updating any `@owlmeans/*` dependency, run `npx @owlmeans/agent-skills` to refresh
|
|
87
|
-
the deployed skills and instructions.
|
|
88
|
-
- Deployed files carry an `AUTO-GENERATED` banner and are refreshed in place — never hand-edit them.
|
|
89
|
-
- To capture your own guidance, see the `skill-authoring` skill; to turn repeatedly-used memory into
|
|
90
|
-
a skill, `memory-promotion`. Keep it inside this repository — never in `~/.claude/`.
|
|
91
|
-
|
|
92
|
-
## Develop
|
|
93
|
-
|
|
94
|
-
```sh
|
|
95
|
-
bun install
|
|
96
|
-
bun run dev # web on http://localhost:3001, api on http://localhost:3000
|
|
97
|
-
```
|
|
11
|
+
- Never author files under `.claude/skills/` — write skills in `.agents/skills/`.
|
|
12
|
+
- After creating, renaming, or deleting a skill, re-run
|
|
13
|
+
`sh .agents/scripts/link-skills.sh` so this session picks it up.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# link-skills.sh
|
|
3
|
+
#
|
|
4
|
+
# Bridge the canonical skill store (.agents/skills/) into .claude/skills/ for
|
|
5
|
+
# Claude Code, which discovers skills only under .claude/skills/. Copilot and
|
|
6
|
+
# Codex read .agents/skills/ natively and need nothing from this script.
|
|
7
|
+
#
|
|
8
|
+
# Each skill becomes its own symlink — Claude Code supports per-skill symlink
|
|
9
|
+
# entries, but not a symlinked skills directory.
|
|
10
|
+
#
|
|
11
|
+
# USAGE
|
|
12
|
+
# sh .agents/scripts/link-skills.sh
|
|
13
|
+
#
|
|
14
|
+
# BEHAVIOUR
|
|
15
|
+
# - creates .claude/skills/<name> -> ../../.agents/skills/<name> for every
|
|
16
|
+
# .agents/skills/<name>/SKILL.md
|
|
17
|
+
# - prunes symlinks that dangle or no longer have a SKILL.md behind them
|
|
18
|
+
# - never touches real directories or files (warns instead), never removes
|
|
19
|
+
# .gitkeep, and always exits 0 so it can run as a SessionStart hook
|
|
20
|
+
#
|
|
21
|
+
# The committed .claude/settings.json runs this at SessionStart. Run it by
|
|
22
|
+
# hand after creating, renaming, or deleting a skill mid-session.
|
|
23
|
+
|
|
24
|
+
set -u
|
|
25
|
+
|
|
26
|
+
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
|
|
27
|
+
ROOT=$(cd "$SCRIPT_DIR/../.." && pwd)
|
|
28
|
+
SRC="$ROOT/.agents/skills"
|
|
29
|
+
DST="$ROOT/.claude/skills"
|
|
30
|
+
|
|
31
|
+
linked=0
|
|
32
|
+
pruned=0
|
|
33
|
+
skipped=0
|
|
34
|
+
|
|
35
|
+
mkdir -p "$DST" 2>/dev/null || true
|
|
36
|
+
[ -f "$DST/.gitkeep" ] || : > "$DST/.gitkeep" 2>/dev/null || true
|
|
37
|
+
|
|
38
|
+
# ---- link pass -------------------------------------------------------------
|
|
39
|
+
if [ -d "$SRC" ]; then
|
|
40
|
+
for skill_dir in "$SRC"/*/; do
|
|
41
|
+
[ -d "$skill_dir" ] || continue
|
|
42
|
+
skill_dir="${skill_dir%/}"
|
|
43
|
+
name=$(basename "$skill_dir")
|
|
44
|
+
[ -f "$skill_dir/SKILL.md" ] || continue
|
|
45
|
+
|
|
46
|
+
target="$DST/$name"
|
|
47
|
+
if [ -e "$target" ] && [ ! -L "$target" ]; then
|
|
48
|
+
echo "link-skills: skip '$name' — a real file/directory shadows it in .claude/skills/" >&2
|
|
49
|
+
skipped=$((skipped + 1))
|
|
50
|
+
continue
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
ln -sfn "../../.agents/skills/$name" "$target" 2>/dev/null || {
|
|
54
|
+
echo "link-skills: failed to link '$name'" >&2
|
|
55
|
+
skipped=$((skipped + 1))
|
|
56
|
+
continue
|
|
57
|
+
}
|
|
58
|
+
linked=$((linked + 1))
|
|
59
|
+
done
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
# ---- prune pass ------------------------------------------------------------
|
|
63
|
+
if [ -d "$DST" ]; then
|
|
64
|
+
for entry in "$DST"/* "$DST"/.[!.]*; do
|
|
65
|
+
[ -e "$entry" ] || [ -L "$entry" ] || continue
|
|
66
|
+
name=$(basename "$entry")
|
|
67
|
+
[ "$name" = ".gitkeep" ] && continue
|
|
68
|
+
[ -L "$entry" ] || continue
|
|
69
|
+
|
|
70
|
+
if [ ! -e "$entry" ] || [ ! -f "$SRC/$name/SKILL.md" ]; then
|
|
71
|
+
rm -f "$entry" 2>/dev/null && pruned=$((pruned + 1))
|
|
72
|
+
fi
|
|
73
|
+
done
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
if [ "$skipped" -gt 0 ]; then
|
|
77
|
+
echo "link-skills: $linked linked, $pruned pruned, $skipped skipped"
|
|
78
|
+
else
|
|
79
|
+
echo "link-skills: $linked linked, $pruned pruned"
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
exit 0
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agent-memory
|
|
3
|
-
description: Shared agent memory protocol — the .agents/memory/ graph store
|
|
3
|
+
description: Shared agent memory protocol — the .agents/memory/ graph store every agent reads and writes: MEMORY.md index, subsystem nodes, compact-on-write merging, size caps, and the read protocol. Use when reading or writing project memory, when asked to remember something, or to decide where knowledge belongs.
|
|
4
4
|
user-invocable: true
|
|
5
|
-
|
|
5
|
+
metadata:
|
|
6
|
+
scope: general
|
|
6
7
|
---
|
|
7
8
|
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
8
9
|
|
|
9
10
|
# Agent memory (`.agents/memory/`)
|
|
10
11
|
|
|
11
|
-
One shared memory store per repository, used by
|
|
12
|
-
|
|
12
|
+
One shared memory store per repository, used by every agent: a graph of subsystem nodes rooted in
|
|
13
|
+
the `MEMORY.md` index. Compactness is the core value — every write
|
|
13
14
|
merges and compacts; nothing is ever appended as a log.
|
|
14
15
|
|
|
15
16
|
Never write memory to `.claude/memory/`, `.github/memory/`, `~/.claude/`, `~/.copilot/`, or
|
|
@@ -30,7 +31,7 @@ Flat directory — graph structure lives in scopes and wiki-links, not subdirect
|
|
|
30
31
|
|
|
31
32
|
Node id = lowercase-kebab name of the **project-structure part** the knowledge attaches to:
|
|
32
33
|
|
|
33
|
-
1. **Subsystem** — workspace dir / package name: `manager-web`, `auth`, `
|
|
34
|
+
1. **Subsystem** — workspace dir / package name: `manager-web`, `auth`, `deploy`. Deepest
|
|
34
35
|
unambiguous segment; prefix with the parent only on collision.
|
|
35
36
|
2. **Cross-cutting concern** spanning subsystems: `build`, `testing`, `deploy`, `routing`, `i18n`.
|
|
36
37
|
3. **Integration** — external service/library: `stripe`, `cloudflare`, `openrouter`.
|
|
@@ -66,8 +67,8 @@ Frontmatter — exactly three fields:
|
|
|
66
67
|
|
|
67
68
|
```yaml
|
|
68
69
|
---
|
|
69
|
-
node:
|
|
70
|
-
scope: "
|
|
70
|
+
node: deploy # = filename without .md; = wiki-link target
|
|
71
|
+
scope: "deploy/**" # repo-relative globs; ext:<service> for integrations; . for workspace
|
|
71
72
|
updated: 2026-08 # month granularity only
|
|
72
73
|
---
|
|
73
74
|
```
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
name: getting-started
|
|
3
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
4
|
user-invocable: true
|
|
5
|
-
|
|
5
|
+
metadata:
|
|
6
|
+
scope: general
|
|
6
7
|
---
|
|
7
8
|
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
8
9
|
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
name: git
|
|
3
3
|
description: "Git workflow policy — never run state-changing git without an explicit instruction, commit only under the repository's configured identity (no AI-attribution trailer), report finished git work as a Markdown table, never commit a conflicted working copy. Use before any git operation."
|
|
4
4
|
user-invocable: false
|
|
5
|
-
|
|
5
|
+
metadata:
|
|
6
|
+
scope: general
|
|
6
7
|
---
|
|
7
8
|
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
8
9
|
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
name: memory-promotion
|
|
3
3
|
description: Transform procedure-shaped or repeatedly-used memory into skills and instructions — the procedure-shape test, the mandatory distillation rewrite, promote? repeated-touch flags, over-cap trigger, update-vs-create decision, and the post-promotion pointer state. Use when memory content reads as "how to", when a promote? flag is encountered again, when writing memory-derived content into a skill, or during recompaction.
|
|
4
4
|
user-invocable: true
|
|
5
|
-
|
|
5
|
+
metadata:
|
|
6
|
+
scope: general
|
|
6
7
|
---
|
|
7
8
|
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
8
9
|
|
|
@@ -94,8 +95,8 @@ skill's body.
|
|
|
94
95
|
1. Collect the flagged / procedure-shaped memory lines.
|
|
95
96
|
2. **Distill** each into a general rule (section above). Not optional — skipping it is the
|
|
96
97
|
failure mode this skill exists to prevent.
|
|
97
|
-
3. Author or extend the
|
|
98
|
-
|
|
98
|
+
3. Author or extend the skill at `.agents/skills/<name>/SKILL.md`, following the repo's
|
|
99
|
+
`skill-authoring` or `create-skill` conventions. Where an existing rule
|
|
99
100
|
already covers the ground, **rewrite that rule in place**; append only when nothing covers it.
|
|
100
101
|
4. Shrink the node: delete the source lines; leave one pointer line (format below).
|
|
101
102
|
5. Remove the ` → promote?` flags.
|
|
@@ -107,5 +108,5 @@ skill's body.
|
|
|
107
108
|
The node keeps exactly one line under `## Pointers`:
|
|
108
109
|
|
|
109
110
|
```
|
|
110
|
-
- <activity> → skill `<name>` (procedure lives in .
|
|
111
|
+
- <activity> → skill `<name>` (procedure lives in .agents/skills/<name>/)
|
|
111
112
|
```
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
name: memory-recompact
|
|
3
3
|
description: Recompact or migrate a whole .agents/memory/ store — rebuild the node map from project structure, merge event-shaped records into subsystem nodes, deduplicate, enforce caps, regenerate the MEMORY.md index, and fold in legacy .claude/memory and .github/memory stores. Use when a store degrades into event logs, indexes bloat or conflict, or for one-time migration.
|
|
4
4
|
disable-model-invocation: true
|
|
5
|
-
|
|
5
|
+
metadata:
|
|
6
|
+
scope: general
|
|
6
7
|
---
|
|
7
8
|
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
8
9
|
|
|
@@ -48,8 +49,7 @@ For each old file or section:
|
|
|
48
49
|
ONE node — merge both; the code-consistent version wins.
|
|
49
50
|
2. Index-only entries with no backing file: extract the fact into its node, or drop if stale.
|
|
50
51
|
3. Old `## Skills` / "Key Files" index sections are dropped — skills self-describe; harness
|
|
51
|
-
layout belongs to `
|
|
52
|
-
dispatch hints there.
|
|
52
|
+
layout belongs to `AGENTS.md`. Move genuinely non-obvious dispatch hints there.
|
|
53
53
|
4. When the new store verifies (below), delete both legacy dirs entirely.
|
|
54
54
|
|
|
55
55
|
## Regenerate the index
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
name: reuse-code
|
|
3
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.
|
|
4
4
|
user-invocable: true
|
|
5
|
-
|
|
5
|
+
metadata:
|
|
6
|
+
scope: general
|
|
6
7
|
---
|
|
7
8
|
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
8
9
|
|
|
@@ -18,7 +19,7 @@ Before suggesting any external library or writing custom code, look for an `@owl
|
|
|
18
19
|
already solves the problem.
|
|
19
20
|
|
|
20
21
|
- **Consult the deployed skills.** Each installed `@owlmeans/*` package ships a skill at
|
|
21
|
-
`.
|
|
22
|
+
`.agents/skills/<pkg>/SKILL.md` describing what it
|
|
22
23
|
does. Read those first — they are your local catalogue of installed capabilities.
|
|
23
24
|
- **Scan installed packages.** Look in `node_modules/@owlmeans/*` **and**, in a workspace monorepo,
|
|
24
25
|
the nested `sources/*/node_modules/@owlmeans/*` (bun nests workspace deps).
|
|
@@ -32,7 +33,7 @@ How you research the repo depends on whether `@owlmeans/*` is linked locally:
|
|
|
32
33
|
- Run `ls -la node_modules/@owlmeans/<pkg>` (try a package you know is installed). If it is a **symlink
|
|
33
34
|
whose target escapes `node_modules`** — or if the project's *own* workspace publishes `@owlmeans/*`
|
|
34
35
|
packages (i.e. **this is the common repo**) — you have the source locally. **Research locally:** read
|
|
35
|
-
`tree.md`, browse the framework's package sources, and read the canonical `.
|
|
36
|
+
`tree.md`, browse the framework's package sources, and read the canonical `.agents/skills/`. **Do
|
|
36
37
|
not** use the internet.
|
|
37
38
|
- Otherwise (a clean install from npm), **research the web**: fetch/search
|
|
38
39
|
**https://github.com/owlmeans/common** — `tree.md` and package READMEs — to find the right package.
|