@owlmeans/create-app 0.1.15 → 0.1.16

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 (31) hide show
  1. package/README.md +12 -10
  2. package/build/run.d.ts.map +1 -1
  3. package/build/run.js +4 -6
  4. package/build/run.js.map +1 -1
  5. package/build/template.d.ts.map +1 -1
  6. package/build/template.js +5 -2
  7. package/build/template.js.map +1 -1
  8. package/package.json +2 -2
  9. package/template/{_github/copilot-instructions.md → AGENTS.md} +30 -34
  10. package/template/CLAUDE.md +10 -94
  11. package/template/_agents/scripts/link-skills.sh +82 -0
  12. package/template/{_claude → _agents}/skills/agent-memory/SKILL.md +8 -7
  13. package/template/{_claude → _agents}/skills/getting-started/SKILL.md +2 -1
  14. package/template/{_claude → _agents}/skills/git/SKILL.md +2 -1
  15. package/template/{_claude → _agents}/skills/memory-promotion/SKILL.md +5 -4
  16. package/template/{_claude → _agents}/skills/memory-recompact/SKILL.md +3 -3
  17. package/template/{_claude → _agents}/skills/reuse-code/SKILL.md +4 -3
  18. package/template/{_claude → _agents}/skills/self-education/SKILL.md +10 -10
  19. package/template/_agents/skills/skill-authoring/SKILL.md +89 -0
  20. package/template/_claude/settings.json +14 -0
  21. package/template/_claude/skills/.gitkeep +0 -0
  22. package/template/_gitignore +4 -0
  23. package/template/_claude/skills/skill-authoring/SKILL.md +0 -84
  24. package/template/_github/instructions/agent-memory.instructions.md +0 -143
  25. package/template/_github/instructions/getting-started.instructions.md +0 -62
  26. package/template/_github/instructions/git.instructions.md +0 -52
  27. package/template/_github/instructions/memory-promotion.instructions.md +0 -111
  28. package/template/_github/instructions/memory-recompact.instructions.md +0 -73
  29. package/template/_github/instructions/reuse-code.instructions.md +0 -50
  30. package/template/_github/instructions/self-education.instructions.md +0 -85
  31. 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
- ├── CLAUDE.md # agent context for Claude Code
22
- ├── .github/copilot-instructions.md # the same for GitHub Copilot
23
- ├── .agents/memory/MEMORY.md # shared agent memory index (both tools)
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
- (`.claude/skills/` + `.github/instructions/`).
37
+ (`.agents/skills/`).
37
38
 
38
- `CLAUDE.md` and `.github/copilot-instructions.md` carry the four mandatory sections a real OwlMeans
39
- monorepo uses — **Git Workflow**, **Reporting**, **Memory**, **Self-Education** — plus a
40
- project-purpose placeholder your agent fills in on its first session. Project memory is one shared
41
- graph store at `.agents/memory/` for both tools. The harness guidance (memory protocol, self-education,
42
- git policy, skill authoring, reuse-first) ships with the template, so it is present even with
43
- `--no-install`.
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
 
@@ -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,GAAU,MAAM,UAAU,KAAG,OAAO,CAAC,MAAM,CA8E1D,CAAA"}
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,GAAU,MAAM,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: CLAUDE.md, .github/copilot-instructions.md and the');
81
- log('shared memory store at .agents/memory/MEMORY.md.');
82
- log('Open the project in Claude Code or Copilot — on the first session the agent will ask');
83
- log('what the project is for and fill in its purpose for you.\n');
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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4D,UAAU,EAA2B,MAAM,SAAS,CAAA;AAmBvH,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,GAAI,KAAK,MAAM,EAAE,MAAM,MAAM,EAAE,GAAG,oBAAoB,KAAG,IAoBjF,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,OAGxC,CAAA;AAED,OAAO,EAAE,UAAU,EAAE,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,GAAI,KAAK,MAAM,EAAE,MAAM,MAAM,EAAE,GAAG,oBAAoB,KAAG,IAoBjF,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,KAAK,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. */
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
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.15",
3
+ "version": "0.1.16",
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,7 +29,7 @@
29
29
  "template"
30
30
  ],
31
31
  "dependencies": {
32
- "@owlmeans/agent-skills": "^0.1.15"
32
+ "@owlmeans/agent-skills": "^0.1.16"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@owlmeans/dep-config": "workspace:*",
@@ -1,18 +1,17 @@
1
- # __APP_NAME__ — GitHub Copilot Project Context
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 in **both** `.github/copilot-instructions.md` and `CLAUDE.md` with
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
- [.github/instructions/git.instructions.md](.github/instructions/git.instructions.md).
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** an instruction/skill
52
- as short general rules — never pasted in as memory text — follow
53
- `.github/instructions/memory-promotion.instructions.md`.
54
- - If the store degrades (event logs, oversized nodes, bloated index) — follow
55
- `.github/instructions/memory-recompact.instructions.md`.
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
- `.github/instructions/<topic>.instructions.md`.
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
- [.github/instructions/self-education.instructions.md](.github/instructions/self-education.instructions.md)
65
- has been applied: rewrite the project instructions/skills the change touched so they state
66
- current rules (never a note about what changed), record external-doc findings (URL + gist)
67
- in the governing instruction, or add an instruction/skill for a new subsystem or technology.
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.instructions.md` for how the pieces fit together, and `scaffolding.instructions.md`
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.instructions.md`: search for an
81
- `@owlmeans/*` package (in the installed packages and at https://github.com/owlmeans/common) or existing
82
- code that already solves the problem **before** proposing a third-party library or a custom solution,
83
- and simplify whatever you do write. This is required for every planning and development task.
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
- ## Instructions
79
+ ## Skills
86
80
 
87
- Reusable guidance lives in `.github/instructions/<name>.instructions.md`, deployed by
88
- `@owlmeans/agent-skills` from the installed `@owlmeans/*` packages and auto-attached by `applyTo`.
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 and instructions.
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.instructions.md`; to turn repeatedly-used memory
94
- into an instruction, `memory-promotion.instructions.md`. Keep it inside this repository — never in
95
- `~/.copilot/`.
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
 
@@ -1,97 +1,13 @@
1
- # __APP_NAME__ — Project Context
1
+ @AGENTS.md
2
2
 
3
- ## Project purpose
3
+ ## Claude Code bridge
4
4
 
5
- <!-- OWLMEANS:PROJECT-PURPOSE -->
6
- > **Agents this project has not been described yet.** Before doing anything else on the first
7
- > session, ask the user what this project is for: its purpose, domain, goals, and key constraints.
8
- > Then replace this whole block — in **both** `CLAUDE.md` and `.github/copilot-instructions.md` — with
9
- > a short description of the project, and remove this notice.
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
- ## Git Workflow (mandatory)
12
-
13
- 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: 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 used by both Claude Code and GitHub Copilot: 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.
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
- scope: general
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 **both** Claude Code and GitHub Copilot: a graph
12
- of subsystem nodes rooted in the `MEMORY.md` index. Compactness is the core value — every write
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`, `vslots`. Deepest
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: vslots # = filename without .md; = wiki-link target
70
- scope: "scripts/vslots/**" # repo-relative globs; ext:<service> for integrations; . for workspace
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
- scope: general
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
- scope: general
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
- scope: general
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 SKILL.md and its `.github/instructions/<name>.instructions.md` twin,
98
- following the repo's `skill-authoring` or `create-skill` conventions. Where an existing rule
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 .claude/skills/<name>/ + .github/instructions/<name>.instructions.md)
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
- scope: general
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 `CLAUDE.md` / `.github/copilot-instructions.md`. Move genuinely non-obvious
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
- scope: general
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
- `.claude/skills/<pkg>/SKILL.md` (and `.github/instructions/<pkg>.instructions.md`) describing what it
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 `.claude/skills/`. **Do
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.