@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.
@@ -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.