@owlmeans/agent-skills 0.1.11 → 0.1.12
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.
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Discovery-first, reuse-first workflow for OwlMeans projects. Apply before planning or building any feature, before proposing a third-party library or custom solution, and after writing code: find an existing @owlmeans/* package or existing code first, extend before writing new, and simplify what you write."
|
|
3
|
+
applyTo: "**/*.ts, **/*.tsx, **/package.json"
|
|
4
|
+
scope: general
|
|
5
|
+
---
|
|
6
|
+
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
7
|
+
|
|
8
|
+
# Reuse before you build
|
|
9
|
+
|
|
10
|
+
OwlMeans ships a large framework of `@owlmeans/*` packages. Before proposing a third-party library,
|
|
11
|
+
designing a custom solution, or finishing a feature, exhaust what already exists. Apply these four
|
|
12
|
+
steps in order — during planning **and** implementation.
|
|
13
|
+
|
|
14
|
+
## 1. Find an `@owlmeans/*` package first
|
|
15
|
+
|
|
16
|
+
- **Consult the deployed instructions.** Each installed `@owlmeans/*` package ships
|
|
17
|
+
`.github/instructions/<pkg>.instructions.md` (and `.claude/skills/<pkg>/SKILL.md`) describing what it
|
|
18
|
+
does — your local catalogue of installed capabilities.
|
|
19
|
+
- **Scan installed packages** in `node_modules/@owlmeans/*` and, in a workspace, the nested
|
|
20
|
+
`sources/*/node_modules/@owlmeans/*`.
|
|
21
|
+
- **Discover not-yet-installed packages** by researching the **owlmeans/common** repository — its
|
|
22
|
+
`tree.md` dependency map and per-package READMEs.
|
|
23
|
+
|
|
24
|
+
### Local vs. web research (the symlink rule)
|
|
25
|
+
|
|
26
|
+
- `ls -la node_modules/@owlmeans/<pkg>`: a **symlink escaping `node_modules`** — or a project whose own
|
|
27
|
+
workspace publishes `@owlmeans/*` packages (**this is the common repo**) — means the source is local.
|
|
28
|
+
**Research locally** (`tree.md`, the package sources, the canonical instructions); do **not** use the
|
|
29
|
+
internet.
|
|
30
|
+
- Otherwise (clean npm install), **research the web**: https://github.com/owlmeans/common.
|
|
31
|
+
|
|
32
|
+
After adding an `@owlmeans/*` dependency, run `npx @owlmeans/agent-skills` to deploy its instruction.
|
|
33
|
+
Prefer an `@owlmeans/*` package over a third-party library or bespoke code.
|
|
34
|
+
|
|
35
|
+
## 2. Reuse or extend before writing custom
|
|
36
|
+
|
|
37
|
+
If an installed package nearly fits, configure or extend it (its resources, services, modules, helpers)
|
|
38
|
+
rather than writing a parallel implementation.
|
|
39
|
+
|
|
40
|
+
## 3. No package? Reuse code and extract an abstraction
|
|
41
|
+
|
|
42
|
+
Search the codebase for code solving a **similar** problem. Factor out a shared helper or abstraction
|
|
43
|
+
instead of duplicating or starting from scratch. Write new code only when nothing reusable exists.
|
|
44
|
+
|
|
45
|
+
## 4. Simplify after writing
|
|
46
|
+
|
|
47
|
+
Review new code: can it be shorter, clearer, fewer moving parts? Lean on framework utilities, drop dead
|
|
48
|
+
branches. Less code that reuses the framework beats more bespoke code.
|
|
49
|
+
|
|
50
|
+
See the `dependency-tree`, `scaffolding`, and `bun` instructions.
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"package": "@owlmeans/agent-skills",
|
|
4
|
-
"version": "0.1.
|
|
5
|
-
"generatedAt": "2026-06-
|
|
4
|
+
"version": "0.1.12",
|
|
5
|
+
"generatedAt": "2026-06-17T14:51:24.131Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -26,6 +26,13 @@
|
|
|
26
26
|
"file": "skills/agent-memory/SKILL.md",
|
|
27
27
|
"canonicalPath": ".claude/skills/agent-memory/SKILL.md"
|
|
28
28
|
},
|
|
29
|
+
{
|
|
30
|
+
"kind": "skill",
|
|
31
|
+
"name": "reuse-code",
|
|
32
|
+
"category": "general",
|
|
33
|
+
"file": "skills/reuse-code/SKILL.md",
|
|
34
|
+
"canonicalPath": ".claude/skills/reuse-code/SKILL.md"
|
|
35
|
+
},
|
|
29
36
|
{
|
|
30
37
|
"kind": "skill",
|
|
31
38
|
"name": "scaffolding",
|
|
@@ -47,6 +54,13 @@
|
|
|
47
54
|
"file": "skills/shadcn-versions/SKILL.md",
|
|
48
55
|
"canonicalPath": ".claude/skills/shadcn-versions/SKILL.md"
|
|
49
56
|
},
|
|
57
|
+
{
|
|
58
|
+
"kind": "instruction",
|
|
59
|
+
"name": "reuse-code",
|
|
60
|
+
"category": "general",
|
|
61
|
+
"file": "instructions/reuse-code.instructions.md",
|
|
62
|
+
"canonicalPath": ".github/instructions/reuse-code.instructions.md"
|
|
63
|
+
},
|
|
50
64
|
{
|
|
51
65
|
"kind": "instruction",
|
|
52
66
|
"name": "getting-started",
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
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.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
scope: general
|
|
6
|
+
---
|
|
7
|
+
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
8
|
+
|
|
9
|
+
# Reuse before you build
|
|
10
|
+
|
|
11
|
+
OwlMeans ships a large framework of `@owlmeans/*` packages. Before you propose a third-party library,
|
|
12
|
+
design a custom solution, or finish a feature, exhaust what already exists. Apply these four steps in
|
|
13
|
+
order — during planning **and** during implementation.
|
|
14
|
+
|
|
15
|
+
## 1. Find an `@owlmeans/*` package first
|
|
16
|
+
|
|
17
|
+
Before suggesting any external library or writing custom code, look for an `@owlmeans/*` package that
|
|
18
|
+
already solves the problem.
|
|
19
|
+
|
|
20
|
+
- **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
|
+
does. Read those first — they are your local catalogue of installed capabilities.
|
|
23
|
+
- **Scan installed packages.** Look in `node_modules/@owlmeans/*` **and**, in a workspace monorepo,
|
|
24
|
+
the nested `sources/*/node_modules/@owlmeans/*` (bun nests workspace deps).
|
|
25
|
+
- **Discover packages that aren't installed yet** by researching the **owlmeans/common** repository —
|
|
26
|
+
its dependency map (`tree.md`) and the per-package READMEs name every package and its purpose.
|
|
27
|
+
|
|
28
|
+
### Local vs. web research (the symlink rule)
|
|
29
|
+
|
|
30
|
+
How you research the repo depends on whether `@owlmeans/*` is linked locally:
|
|
31
|
+
|
|
32
|
+
- Run `ls -la node_modules/@owlmeans/<pkg>` (try a package you know is installed). If it is a **symlink
|
|
33
|
+
whose target escapes `node_modules`** — or if the project's *own* workspace publishes `@owlmeans/*`
|
|
34
|
+
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
|
+
not** use the internet.
|
|
37
|
+
- Otherwise (a clean install from npm), **research the web**: fetch/search
|
|
38
|
+
**https://github.com/owlmeans/common** — `tree.md` and package READMEs — to find the right package.
|
|
39
|
+
|
|
40
|
+
This is the same dev-linked detection `@owlmeans/agent-skills` uses (see its `detectLinked`). After
|
|
41
|
+
adding an `@owlmeans/*` dependency, run `npx @owlmeans/agent-skills` to deploy its skill. Prefer an
|
|
42
|
+
`@owlmeans/*` package over a third-party library or bespoke code whenever one fits.
|
|
43
|
+
|
|
44
|
+
## 2. Reuse or extend before writing custom
|
|
45
|
+
|
|
46
|
+
If an installed package nearly fits, **configure or extend it** rather than writing something new — use
|
|
47
|
+
its resources, services, modules, and helpers. A small extension of a framework package beats a new
|
|
48
|
+
parallel implementation.
|
|
49
|
+
|
|
50
|
+
## 3. No package? Reuse code and extract an abstraction
|
|
51
|
+
|
|
52
|
+
When no package solves it, search the codebase for code that already solves a **similar** problem.
|
|
53
|
+
Prefer factoring out a shared helper, base, or generic function — extract an abstraction — over
|
|
54
|
+
duplicating logic or writing from scratch. Only write genuinely new code when nothing reusable exists.
|
|
55
|
+
|
|
56
|
+
## 4. Simplify after writing
|
|
57
|
+
|
|
58
|
+
Once code is written, review it: can it be **shorter, clearer, or expressed with fewer moving parts**?
|
|
59
|
+
Lean on framework utilities, remove dead branches, collapse needless indirection. Less code that reuses
|
|
60
|
+
the framework is better than more bespoke code.
|
|
61
|
+
|
|
62
|
+
See `[[dependency-tree]]` for the package map, `[[scaffolding]]` for how a project is assembled, and
|
|
63
|
+
`[[bun]]` for adding dependencies.
|
|
@@ -70,7 +70,9 @@ The session demo stores items in `@owlmeans/static-resource`, namespaced by a cl
|
|
|
70
70
|
real OwlMeans project, plus a **project-purpose placeholder** (`<!-- OWLMEANS:PROJECT-PURPOSE -->`).
|
|
71
71
|
On the first agent session that block instructs the agent to ask the user what the project is for and
|
|
72
72
|
replace it in both files. The deployed skills include the general management skills
|
|
73
|
-
[[skill-authoring]]
|
|
73
|
+
[[skill-authoring]], [[agent-memory]] and the mandatory [[reuse-code]] (find an existing `@owlmeans/*`
|
|
74
|
+
package or code before proposing third-party libraries or custom solutions) so the project can grow its own guidance.
|
|
75
|
+
`CLAUDE.md` and `.github/copilot-instructions.md` reference [[reuse-code]] as mandatory. After adding any
|
|
74
76
|
`@owlmeans/*` dependency, re-run `npx @owlmeans/agent-skills` — discovery scans **every**
|
|
75
77
|
`node_modules/@owlmeans` in the workspace (root and nested under `sources/*`), so package-specific
|
|
76
78
|
skills are picked up even though bun nests them.
|