@aubron/skill-factory 0.1.0
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/.claude-plugin/plugin.json +9 -0
- package/LICENSE +21 -0
- package/README.md +26 -0
- package/package.json +31 -0
- package/skills/skill-factory/SKILL.md +132 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
|
+
"name": "skill-factory",
|
|
4
|
+
"description": "Author and release Claude Agent Skills in the @aubron package factory.",
|
|
5
|
+
"version": "0.0.0",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Aubron Wood"
|
|
8
|
+
}
|
|
9
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 aubron
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# @aubron/skill-factory
|
|
2
|
+
|
|
3
|
+
A Claude Agent Skill, published from the `@aubron` package factory and
|
|
4
|
+
distributed through the `aubron` plugin marketplace.
|
|
5
|
+
|
|
6
|
+
## Install
|
|
7
|
+
|
|
8
|
+
From the marketplace (recommended):
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
# add the marketplace once
|
|
12
|
+
claude plugin marketplace add GraffAI/aubron
|
|
13
|
+
# then install this skill's plugin
|
|
14
|
+
claude plugin install skill-factory@aubron
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The skill lives at [`skills/skill-factory/SKILL.md`](skills/skill-factory/SKILL.md). Edit
|
|
18
|
+
that file to change the skill; the frontmatter `description` controls when Claude
|
|
19
|
+
invokes it.
|
|
20
|
+
|
|
21
|
+
## Develop
|
|
22
|
+
|
|
23
|
+
```sh
|
|
24
|
+
pnpm --filter @aubron/skill-factory test # validate the skill (aubron-skill validate)
|
|
25
|
+
pnpm --filter @aubron/skill-factory lint # prettier --check
|
|
26
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aubron/skill-factory",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Author and release Claude Agent Skills in the @aubron package factory.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"files": [
|
|
8
|
+
".claude-plugin",
|
|
9
|
+
"skills",
|
|
10
|
+
"README.md"
|
|
11
|
+
],
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"prettier": "^3.8.3",
|
|
14
|
+
"@aubron/prettier-config": "0.1.0",
|
|
15
|
+
"@aubron/skill-tools": "0.1.0"
|
|
16
|
+
},
|
|
17
|
+
"aubronSkill": {
|
|
18
|
+
"source": "git-subdir"
|
|
19
|
+
},
|
|
20
|
+
"publishConfig": {
|
|
21
|
+
"access": "public",
|
|
22
|
+
"provenance": true
|
|
23
|
+
},
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": ">=22"
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"test": "aubron-skill validate",
|
|
29
|
+
"lint": "prettier --check ."
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-factory
|
|
3
|
+
description: Create, validate, and release a Claude Agent Skill from the @aubron package factory monorepo. Use this when adding a new skill to this repo, packaging a skill as an installable plugin, wiring it into the marketplace, or deciding how to distribute a skill (marketplace plugin vs library-bundled). Triggers on requests like "add a skill", "make this a skill", "publish/release a skill", or "how do we distribute skills here".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# skill-factory
|
|
7
|
+
|
|
8
|
+
How this monorepo contains and ships Claude Agent Skills. Skills here are **npm
|
|
9
|
+
packages that are also Claude plugins**: a `SKILL.md` plus a `.claude-plugin/plugin.json`,
|
|
10
|
+
published under `@aubron/*` and listed in a root marketplace. There are two
|
|
11
|
+
distribution shapes — pick by intent:
|
|
12
|
+
|
|
13
|
+
- **Standalone skill** → a `--type skill` package in the `aubron` marketplace.
|
|
14
|
+
- **Library-bundled skill** → a `SKILL.md` shipped _inside_ a normal library
|
|
15
|
+
(e.g. `@aubron/ankerts-cli`) so consumers of that library can install it. See
|
|
16
|
+
[Pattern B](#pattern-b-library-bundled-skills) below.
|
|
17
|
+
|
|
18
|
+
## Create a standalone skill
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
pnpm new <name> --type skill --description "One line: what it does + when to use it."
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
This scaffolds `packages/<name>/` with:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
packages/<name>/
|
|
28
|
+
.claude-plugin/plugin.json # the plugin manifest (name = install id)
|
|
29
|
+
skills/<name>/SKILL.md # the skill itself
|
|
30
|
+
package.json # @aubron/<name>; files ship .claude-plugin + skills
|
|
31
|
+
README.md
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
It also drops a changeset and regenerates the root `.claude-plugin/marketplace.json`.
|
|
35
|
+
|
|
36
|
+
## Write a good SKILL.md
|
|
37
|
+
|
|
38
|
+
The frontmatter is the contract:
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
---
|
|
42
|
+
name: my-skill # kebab-case; this is the /command name and install id
|
|
43
|
+
description: What it does AND when Claude should invoke it. # this line drives triggering
|
|
44
|
+
---
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
- **`name`** must be kebab-case (`a-z`, `0-9`, `-`).
|
|
48
|
+
- **`description`** is required and is _how Claude decides to trigger the skill_ —
|
|
49
|
+
lead with the capability, then concrete triggers ("Use this when…"). Keep
|
|
50
|
+
`description` (+ optional `when_to_use`) well under ~1024 chars.
|
|
51
|
+
- **Progressive disclosure**: keep `SKILL.md` small. Move deep reference docs,
|
|
52
|
+
examples, and scripts into sibling files under `skills/<name>/` and link to
|
|
53
|
+
them; the agent reads them only when needed.
|
|
54
|
+
- Optional frontmatter you may use: `allowed-tools`, `disable-model-invocation`
|
|
55
|
+
(user-only), `user-invocable: false` (Claude-only), `argument-hint`, `model`.
|
|
56
|
+
|
|
57
|
+
## Validate
|
|
58
|
+
|
|
59
|
+
```sh
|
|
60
|
+
pnpm --filter @aubron/<name> test # runs `aubron-skill validate`
|
|
61
|
+
pnpm --filter @aubron/<name> lint # prettier --check
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
`aubron-skill validate` checks the plugin manifest, the SKILL.md frontmatter
|
|
65
|
+
(name kebab-case, description present and within limits), and the `skills/`
|
|
66
|
+
layout. `claude plugin validate .` is the Claude-native cross-check.
|
|
67
|
+
|
|
68
|
+
## Keep the marketplace in sync
|
|
69
|
+
|
|
70
|
+
The root `.claude-plugin/marketplace.json` is generated from the skill packages —
|
|
71
|
+
never hand-edit it. Regenerate after adding/removing a skill or changing its
|
|
72
|
+
source preference:
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
pnpm --filter @aubron/skill-tools exec aubron-skill sync-marketplace
|
|
76
|
+
# CI guard: fail if the committed file is stale
|
|
77
|
+
aubron-skill sync-marketplace --check
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Choose a source type (hybrid)
|
|
81
|
+
|
|
82
|
+
Each skill package declares how the marketplace should fetch it, via
|
|
83
|
+
`"aubronSkill": { "source": ... }` in its `package.json`:
|
|
84
|
+
|
|
85
|
+
- **`git-subdir`** (default): the marketplace points at `packages/<name>/` in the
|
|
86
|
+
repo. No publish step — works the moment you push. Best for unreleased/dev skills.
|
|
87
|
+
- **`npm`**: the marketplace references the published `@aubron/<name>` package,
|
|
88
|
+
pinned to `^version`. Best for released skills. Requires a changeset + publish.
|
|
89
|
+
|
|
90
|
+
Flip `git-subdir` → `npm` when a skill is ready to release, then re-run
|
|
91
|
+
`sync-marketplace`.
|
|
92
|
+
|
|
93
|
+
## Release
|
|
94
|
+
|
|
95
|
+
Releases are CI-first (same as every package here):
|
|
96
|
+
|
|
97
|
+
1. `pnpm changeset` (the scaffolder already wrote an initial one) — pick the bump.
|
|
98
|
+
2. Merge to `main` → the Version Packages PR bumps versions/changelogs.
|
|
99
|
+
3. Merge that → CI publishes `@aubron/<name>` to npm (provenance on).
|
|
100
|
+
4. If the skill uses an `npm` marketplace source, bump its pinned version and
|
|
101
|
+
re-run `sync-marketplace`.
|
|
102
|
+
|
|
103
|
+
## Install / use a skill
|
|
104
|
+
|
|
105
|
+
```sh
|
|
106
|
+
claude plugin marketplace add GraffAI/aubron # once
|
|
107
|
+
claude plugin install <name>@aubron # install a skill's plugin
|
|
108
|
+
claude plugin list --available
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Pattern B: library-bundled skills
|
|
112
|
+
|
|
113
|
+
To ship a skill _with_ a library so its consumers get it (the way
|
|
114
|
+
`@aubron/ankerts-cli` ships an `ankerts` skill):
|
|
115
|
+
|
|
116
|
+
1. Put `skills/<skill>/SKILL.md` inside the library package and add `"skills"` to
|
|
117
|
+
its `files` so it's published.
|
|
118
|
+
2. Point the SKILL.md at the package's own docs in `node_modules` (e.g. a
|
|
119
|
+
`--json` introspection command or the README) — no network needed.
|
|
120
|
+
3. Expose an explicit installer (`<bin> skills install`) that copies the bundled
|
|
121
|
+
skill into `.claude/skills/` on demand. **Never use a `postinstall` copy** —
|
|
122
|
+
it's unversioned, hard to uninstall, and surprising.
|
|
123
|
+
|
|
124
|
+
Because `SKILL.md` is the open Agent Skills standard, the same file also works in
|
|
125
|
+
Codex, Cursor, and Copilot.
|
|
126
|
+
|
|
127
|
+
## Eject
|
|
128
|
+
|
|
129
|
+
`pnpm eject <name>` copies a skill package into its own repo, rewriting
|
|
130
|
+
`workspace:*`/`catalog:` deps to concrete versions. The ejected repo keeps its
|
|
131
|
+
`.claude-plugin/plugin.json` + `skills/`, so it can be referenced directly by a
|
|
132
|
+
`github`/`git-subdir` marketplace source.
|