agentic-skill-mill 1.0.4 → 1.0.6
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 +2 -1
- package/compiled/claude/agentic-skill-mill/SKILL.md +107 -10
- package/compiled/codex/agentic-skill-mill/SKILL.md +107 -10
- package/compiled/cursor/rules/agentic-skill-mill.mdc +107 -10
- package/compiled/cursor/skills/agentic-skill-mill/SKILL.md +107 -10
- package/compiled/opencode/agentic-skill-mill.md +107 -10
- package/compiled/windsurf/rules/agentic-skill-mill.md +107 -10
- package/compiled/windsurf/skills/agentic-skill-mill/SKILL.md +107 -10
- package/package.json +1 -1
- package/skill/build/manifest.json +1 -0
- package/skill/fragments/meta/architecture-overview.md +11 -2
- package/skill/fragments/meta/distribution-and-ci.md +77 -0
- package/skill/fragments/meta/rename-workflow.md +13 -7
- package/skill/skills/agentic-skill-mill/agentic-skill-mill.md +7 -1
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ bash install-local.sh --all # local repo setup for all tools
|
|
|
15
15
|
## One-Line Remote Install (No Clone)
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
bash <(curl -fsSL https://
|
|
18
|
+
bash <(curl -fsSL https://agenticskillmill.com/install.sh) --all
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
This bootstrap script installs the npm utility library globally, then installs skills for the targets you specify.
|
|
@@ -79,6 +79,7 @@ src/
|
|
|
79
79
|
|
|
80
80
|
compiled/ # Machine-generated, one subdir per IDE target
|
|
81
81
|
contributions/ # Field observations from real runs
|
|
82
|
+
site/ # GitHub Pages site (agenticskillmill.com)
|
|
82
83
|
install-local.sh # One-command local setup: build CLI + install skills
|
|
83
84
|
install.sh # One-command remote bootstrap: install package + skills
|
|
84
85
|
```
|
|
@@ -6,7 +6,7 @@ description: "Build, augment, and maintain skill projects that follow the skill-
|
|
|
6
6
|
|
|
7
7
|
# Agentic Skill Mill
|
|
8
8
|
|
|
9
|
-
Forge and refine skill projects that follow the skill-system-template architecture: fragment-composed skills compiled to multiple IDE targets, paired with a TypeScript companion CLI (`skillmill`) that provides structured commands for agents and humans. Prefer `npx --yes agentic-skill-mill@latest <command>` when the utility is not globally installed.
|
|
9
|
+
Forge and refine skill projects that follow the skill-system-template architecture: fragment-composed skills compiled to multiple IDE targets, paired with a TypeScript companion CLI (`skillmill`) that provides structured commands for agents and humans. Prefer `npx --yes agentic-skill-mill@latest <command>` when the utility is not globally installed. Remote users can install everything via `bash <(curl -fsSL https://agenticskillmill.com/install.sh) --all`.
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
@@ -20,9 +20,15 @@ Skills (what to do) CLI Companion (tools to do it with)
|
|
|
20
20
|
skill/fragments/*.md src/core/*.ts
|
|
21
21
|
| |
|
|
22
22
|
v v
|
|
23
|
-
compiled/ (7 IDE formats) dist/ (npm
|
|
23
|
+
compiled/ (7 IDE formats) dist/ (npm -> npx or global CLI)
|
|
24
24
|
| |
|
|
25
25
|
+---------> Agent <----------+
|
|
26
|
+
^
|
|
27
|
+
|
|
|
28
|
+
Distribution: npm publish + agenticskillmill.com
|
|
29
|
+
.github/workflows/release.yml (build, test, version, publish)
|
|
30
|
+
.github/workflows/deploy-pages.yml (site/ -> GitHub Pages)
|
|
31
|
+
site/install.sh (curl-friendly bootstrap)
|
|
26
32
|
```
|
|
27
33
|
|
|
28
34
|
**Skills** are step-by-step runbooks in markdown with YAML frontmatter. They tell the agent *what* to do. Skills reference the CLI by name so the agent can invoke structured commands.
|
|
@@ -39,7 +45,7 @@ Skills (what to do) CLI Companion (tools to do it with)
|
|
|
39
45
|
- `src/errors/types.ts` — Typed error hierarchy (AppError, NotFoundError, etc.)
|
|
40
46
|
- `src/cache/cache-manager.ts` — Two-tier cache (memory + disk) with TTL
|
|
41
47
|
|
|
42
|
-
**The local installer** (`install-local.sh`) builds the CLI, compiles skills, and copies compiled outputs to IDE-specific directories (~/.claude/skills, ~/.cursor/rules, etc.) with marker-based stale file cleanup. The bootstrap installer (`install.sh`) is
|
|
48
|
+
**The local installer** (`install-local.sh`) builds the CLI, compiles skills, and copies compiled outputs to IDE-specific directories (~/.claude/skills, ~/.cursor/rules, etc.) with marker-based stale file cleanup. The bootstrap installer is hosted at `https://agenticskillmill.com/install.sh` (source: `site/install.sh`) and is also bundled in the npm package as `install.sh`. It installs the npm utility first, then delegates to `install-local.sh --skills-only`. Local installer functions use `set -e` for fail-fast behavior. Any function that uses an early-exit guard (`[[ -d ... ]] || return`, `[[ -z ... ]] && return`) **must** use `return 0`, never bare `return`. Bare `return` inherits the exit code of the last command, which for a failed conditional test is 1 -- and `set -e` treats that as a script-terminating failure with no error message.
|
|
43
49
|
|
|
44
50
|
### Key files to modify when augmenting a project
|
|
45
51
|
|
|
@@ -48,10 +54,95 @@ Skills (what to do) CLI Companion (tools to do it with)
|
|
|
48
54
|
| Add a CLI command | `src/core/<name>.ts`, `src/cli/commands/<name>.ts`, `src/cli/index.ts`, `src/index.ts` |
|
|
49
55
|
| Add a fragment | `skill/fragments/<category>/<name>.md`, `skill/build/manifest.json`, skill source |
|
|
50
56
|
| Add a skill | `skill/skills/<name>/<name>.md`, `skill/build/manifest.json`, `install-local.sh` SKILLS array |
|
|
57
|
+
| Change installer behavior | `install.sh` (repo root) then copy to `site/install.sh` |
|
|
58
|
+
| Update the landing page | `site/index.html`, `site/style.css` |
|
|
59
|
+
| Change CI secrets or workflow | `.github/workflows/release.yml` or `deploy-pages.yml`, repo settings |
|
|
51
60
|
| Rename the project | See the rename workflow |
|
|
52
61
|
|
|
53
62
|
---
|
|
54
63
|
|
|
64
|
+
## Distribution and CI
|
|
65
|
+
|
|
66
|
+
### Distribution model
|
|
67
|
+
|
|
68
|
+
The project is published to npmjs as a public package and hosted at `https://agenticskillmill.com`. There are three ways users consume it:
|
|
69
|
+
|
|
70
|
+
| Method | Command | Who uses it |
|
|
71
|
+
|--------|---------|-------------|
|
|
72
|
+
| Remote install (no clone) | `bash <(curl -fsSL https://agenticskillmill.com/install.sh) --all` | End users who want skills installed into their IDE tools |
|
|
73
|
+
| npx (no install) | `npx --yes agentic-skill-mill@latest <command>` | Users running CLI commands without global install |
|
|
74
|
+
| Local development | `git clone` then `bash install-local.sh --all` | Contributors working on the project itself |
|
|
75
|
+
|
|
76
|
+
### Two installer scripts
|
|
77
|
+
|
|
78
|
+
**`install-local.sh`** is the full local installer. It runs from a cloned repo and handles:
|
|
79
|
+
- `npm install` + `npm run build` + `npm run compile`
|
|
80
|
+
- `npm link` to make `skillmill` available globally
|
|
81
|
+
- Copies compiled skill outputs to IDE-specific directories (~/.claude/skills, ~/.cursor/rules, etc.)
|
|
82
|
+
- Supports `--skills-only` (skip build, just copy), `--uninstall`, `--compile-only`, and per-tool flags (`--cursor`, `--claude`, etc.)
|
|
83
|
+
- Auto-detects installed tools when no flags are provided
|
|
84
|
+
|
|
85
|
+
**`install.sh`** is the remote bootstrap installer. It is hosted at `https://agenticskillmill.com/install.sh` (source: `site/install.sh`) and bundled in the npm package. It:
|
|
86
|
+
1. Runs `npm install -g agentic-skill-mill@latest`
|
|
87
|
+
2. Locates `install-local.sh` inside the globally installed package
|
|
88
|
+
3. Delegates to `install-local.sh --skills-only` with the user's flags
|
|
89
|
+
|
|
90
|
+
Both scripts respect environment overrides `SKILLMILL_PACKAGE_NAME` and `SKILLMILL_PACKAGE_VERSION`.
|
|
91
|
+
|
|
92
|
+
### npm package contents
|
|
93
|
+
|
|
94
|
+
The `files` array in `package.json` controls what ships to npm:
|
|
95
|
+
|
|
96
|
+
| Entry | Purpose |
|
|
97
|
+
|-------|---------|
|
|
98
|
+
| `dist` | Compiled TypeScript CLI and library |
|
|
99
|
+
| `compiled` | Pre-compiled skill outputs for all 7 IDE targets |
|
|
100
|
+
| `skill` | Skill sources, fragments, compiler, and manifest |
|
|
101
|
+
| `README.md` | Package documentation |
|
|
102
|
+
| `install.sh` | Bootstrap installer (bundled for remote delegation) |
|
|
103
|
+
| `install-local.sh` | Full local installer (used by bootstrap in --skills-only mode) |
|
|
104
|
+
|
|
105
|
+
The `bin` field maps `skillmill` to `dist/cli/index.js`, so `npx agentic-skill-mill` and global install both expose the `skillmill` command.
|
|
106
|
+
|
|
107
|
+
### GitHub Actions workflows
|
|
108
|
+
|
|
109
|
+
**Release to npm** (`.github/workflows/release.yml`):
|
|
110
|
+
- Triggers on push to `main` or `workflow_dispatch`
|
|
111
|
+
- Skips runs caused by its own release commits (loop guard via `chore(release):` in commit message)
|
|
112
|
+
- Steps: `npm ci` -> `npm run build` -> `npm run test -- --passWithNoTests` -> `npm run compile` -> `npm run compile:validate` -> version bump -> `git push --follow-tags` -> `npm publish --access public`
|
|
113
|
+
- Version bump finds the next available patch tag to avoid collisions with existing tags
|
|
114
|
+
- Required secrets: `AGENT_TOKEN` (PAT with repo scope for push), `AGENT_NPM_TOKEN` (npm automation token for publish)
|
|
115
|
+
|
|
116
|
+
**Deploy GitHub Pages** (`.github/workflows/deploy-pages.yml`):
|
|
117
|
+
- Triggers on push to `main` when files in `site/` change, or `workflow_dispatch`
|
|
118
|
+
- Uploads `site/` directory as the Pages artifact
|
|
119
|
+
- Deploys to the `github-pages` environment at `agenticskillmill.com`
|
|
120
|
+
|
|
121
|
+
### The `site/` directory
|
|
122
|
+
|
|
123
|
+
Static site served via GitHub Pages at `https://agenticskillmill.com`:
|
|
124
|
+
|
|
125
|
+
| File | Purpose |
|
|
126
|
+
|------|---------|
|
|
127
|
+
| `site/CNAME` | Custom domain binding |
|
|
128
|
+
| `site/index.html` | Landing page with architecture, CLI commands, and install instructions |
|
|
129
|
+
| `site/style.css` | Site styles |
|
|
130
|
+
| `site/install.sh` | Bootstrap installer served at `https://agenticskillmill.com/install.sh` |
|
|
131
|
+
|
|
132
|
+
When updating the bootstrap installer logic, edit `install.sh` at the repo root and copy it to `site/install.sh` to keep both in sync. The release workflow publishes the repo-root copy to npm; the Pages workflow serves the site copy to the domain.
|
|
133
|
+
|
|
134
|
+
### Modifying distribution touchpoints
|
|
135
|
+
|
|
136
|
+
| Change | Files to update |
|
|
137
|
+
|--------|----------------|
|
|
138
|
+
| Add a new skill | `install-local.sh` SKILLS array, `skill/build/manifest.json` |
|
|
139
|
+
| Change package name | `package.json` name + bin, `install.sh` default, `site/install.sh` default, `install-local.sh` PROJECT_NAME + CLI_BIN_NAME + MANAGED_MARKER, `site/index.html`, README |
|
|
140
|
+
| Change bootstrap behavior | `install.sh` (repo root), then copy to `site/install.sh` |
|
|
141
|
+
| Add a GitHub Actions secret | Repo settings, document in README |
|
|
142
|
+
| Update domain | `site/CNAME`, README, skill source, architecture fragment |
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
55
146
|
## Workflow
|
|
56
147
|
|
|
57
148
|
### Step 1: Understand the Goal
|
|
@@ -350,17 +441,23 @@ When the project, skill, or CLI needs a new name, update all touchpoints in one
|
|
|
350
441
|
|
|
351
442
|
4. **Compiler marker** (`skill/build/compile.mjs`) -- update the `MANAGED_BY` constant
|
|
352
443
|
|
|
353
|
-
5. **
|
|
444
|
+
5. **Local installer** (`install-local.sh`) -- update `PROJECT_NAME`, `CLI_BIN_NAME`, `MANAGED_MARKER`, `SKILLS` array
|
|
445
|
+
|
|
446
|
+
6. **Bootstrap installer** (`install.sh`) -- update the default `PACKAGE_NAME`, then copy to `site/install.sh`
|
|
447
|
+
|
|
448
|
+
7. **Package metadata** (`package.json`) -- update `name`, `bin` key, and `description`
|
|
449
|
+
|
|
450
|
+
8. **CLI metadata** (`src/cli/index.ts`) -- update `.name()` and `.description()` calls
|
|
354
451
|
|
|
355
|
-
|
|
452
|
+
9. **README** -- update title, CLI references, project layout, npx examples, install URLs
|
|
356
453
|
|
|
357
|
-
|
|
454
|
+
10. **Landing page** (`site/index.html`) -- update title, CLI references, install commands, GitHub link
|
|
358
455
|
|
|
359
|
-
|
|
456
|
+
11. **GitHub Actions secrets** -- if the npm package name changed, verify `AGENT_NPM_TOKEN` still works for the new package scope
|
|
360
457
|
|
|
361
|
-
|
|
458
|
+
12. **Any docs** referencing the old name (translation-map, lessons-learned, etc.)
|
|
362
459
|
|
|
363
|
-
|
|
460
|
+
13. **Regenerate everything:**
|
|
364
461
|
```bash
|
|
365
462
|
rm -rf compiled
|
|
366
463
|
npm install # regenerates package-lock.json
|
|
@@ -373,7 +470,7 @@ When the project, skill, or CLI needs a new name, update all touchpoints in one
|
|
|
373
470
|
After renaming, run this sweep to confirm no stale references remain:
|
|
374
471
|
|
|
375
472
|
```bash
|
|
376
|
-
grep -r "<old-name>" --include="*.md" --include="*.json" --include="*.mjs" --include="*.ts" --include="*.sh" .
|
|
473
|
+
grep -r "<old-name>" --include="*.md" --include="*.json" --include="*.mjs" --include="*.ts" --include="*.sh" --include="*.html" --include="*.yml" .
|
|
377
474
|
```
|
|
378
475
|
|
|
379
476
|
The grep should return zero results (excluding node_modules and dist).
|
|
@@ -6,7 +6,7 @@ description: "Build, augment, and maintain skill projects that follow the skill-
|
|
|
6
6
|
|
|
7
7
|
# Agentic Skill Mill
|
|
8
8
|
|
|
9
|
-
Forge and refine skill projects that follow the skill-system-template architecture: fragment-composed skills compiled to multiple IDE targets, paired with a TypeScript companion CLI (`skillmill`) that provides structured commands for agents and humans. Prefer `npx --yes agentic-skill-mill@latest <command>` when the utility is not globally installed.
|
|
9
|
+
Forge and refine skill projects that follow the skill-system-template architecture: fragment-composed skills compiled to multiple IDE targets, paired with a TypeScript companion CLI (`skillmill`) that provides structured commands for agents and humans. Prefer `npx --yes agentic-skill-mill@latest <command>` when the utility is not globally installed. Remote users can install everything via `bash <(curl -fsSL https://agenticskillmill.com/install.sh) --all`.
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
@@ -20,9 +20,15 @@ Skills (what to do) CLI Companion (tools to do it with)
|
|
|
20
20
|
skill/fragments/*.md src/core/*.ts
|
|
21
21
|
| |
|
|
22
22
|
v v
|
|
23
|
-
compiled/ (7 IDE formats) dist/ (npm
|
|
23
|
+
compiled/ (7 IDE formats) dist/ (npm -> npx or global CLI)
|
|
24
24
|
| |
|
|
25
25
|
+---------> Agent <----------+
|
|
26
|
+
^
|
|
27
|
+
|
|
|
28
|
+
Distribution: npm publish + agenticskillmill.com
|
|
29
|
+
.github/workflows/release.yml (build, test, version, publish)
|
|
30
|
+
.github/workflows/deploy-pages.yml (site/ -> GitHub Pages)
|
|
31
|
+
site/install.sh (curl-friendly bootstrap)
|
|
26
32
|
```
|
|
27
33
|
|
|
28
34
|
**Skills** are step-by-step runbooks in markdown with YAML frontmatter. They tell the agent *what* to do. Skills reference the CLI by name so the agent can invoke structured commands.
|
|
@@ -39,7 +45,7 @@ Skills (what to do) CLI Companion (tools to do it with)
|
|
|
39
45
|
- `src/errors/types.ts` — Typed error hierarchy (AppError, NotFoundError, etc.)
|
|
40
46
|
- `src/cache/cache-manager.ts` — Two-tier cache (memory + disk) with TTL
|
|
41
47
|
|
|
42
|
-
**The local installer** (`install-local.sh`) builds the CLI, compiles skills, and copies compiled outputs to IDE-specific directories (~/.claude/skills, ~/.cursor/rules, etc.) with marker-based stale file cleanup. The bootstrap installer (`install.sh`) is
|
|
48
|
+
**The local installer** (`install-local.sh`) builds the CLI, compiles skills, and copies compiled outputs to IDE-specific directories (~/.claude/skills, ~/.cursor/rules, etc.) with marker-based stale file cleanup. The bootstrap installer is hosted at `https://agenticskillmill.com/install.sh` (source: `site/install.sh`) and is also bundled in the npm package as `install.sh`. It installs the npm utility first, then delegates to `install-local.sh --skills-only`. Local installer functions use `set -e` for fail-fast behavior. Any function that uses an early-exit guard (`[[ -d ... ]] || return`, `[[ -z ... ]] && return`) **must** use `return 0`, never bare `return`. Bare `return` inherits the exit code of the last command, which for a failed conditional test is 1 -- and `set -e` treats that as a script-terminating failure with no error message.
|
|
43
49
|
|
|
44
50
|
### Key files to modify when augmenting a project
|
|
45
51
|
|
|
@@ -48,10 +54,95 @@ Skills (what to do) CLI Companion (tools to do it with)
|
|
|
48
54
|
| Add a CLI command | `src/core/<name>.ts`, `src/cli/commands/<name>.ts`, `src/cli/index.ts`, `src/index.ts` |
|
|
49
55
|
| Add a fragment | `skill/fragments/<category>/<name>.md`, `skill/build/manifest.json`, skill source |
|
|
50
56
|
| Add a skill | `skill/skills/<name>/<name>.md`, `skill/build/manifest.json`, `install-local.sh` SKILLS array |
|
|
57
|
+
| Change installer behavior | `install.sh` (repo root) then copy to `site/install.sh` |
|
|
58
|
+
| Update the landing page | `site/index.html`, `site/style.css` |
|
|
59
|
+
| Change CI secrets or workflow | `.github/workflows/release.yml` or `deploy-pages.yml`, repo settings |
|
|
51
60
|
| Rename the project | See the rename workflow |
|
|
52
61
|
|
|
53
62
|
---
|
|
54
63
|
|
|
64
|
+
## Distribution and CI
|
|
65
|
+
|
|
66
|
+
### Distribution model
|
|
67
|
+
|
|
68
|
+
The project is published to npmjs as a public package and hosted at `https://agenticskillmill.com`. There are three ways users consume it:
|
|
69
|
+
|
|
70
|
+
| Method | Command | Who uses it |
|
|
71
|
+
|--------|---------|-------------|
|
|
72
|
+
| Remote install (no clone) | `bash <(curl -fsSL https://agenticskillmill.com/install.sh) --all` | End users who want skills installed into their IDE tools |
|
|
73
|
+
| npx (no install) | `npx --yes agentic-skill-mill@latest <command>` | Users running CLI commands without global install |
|
|
74
|
+
| Local development | `git clone` then `bash install-local.sh --all` | Contributors working on the project itself |
|
|
75
|
+
|
|
76
|
+
### Two installer scripts
|
|
77
|
+
|
|
78
|
+
**`install-local.sh`** is the full local installer. It runs from a cloned repo and handles:
|
|
79
|
+
- `npm install` + `npm run build` + `npm run compile`
|
|
80
|
+
- `npm link` to make `skillmill` available globally
|
|
81
|
+
- Copies compiled skill outputs to IDE-specific directories (~/.claude/skills, ~/.cursor/rules, etc.)
|
|
82
|
+
- Supports `--skills-only` (skip build, just copy), `--uninstall`, `--compile-only`, and per-tool flags (`--cursor`, `--claude`, etc.)
|
|
83
|
+
- Auto-detects installed tools when no flags are provided
|
|
84
|
+
|
|
85
|
+
**`install.sh`** is the remote bootstrap installer. It is hosted at `https://agenticskillmill.com/install.sh` (source: `site/install.sh`) and bundled in the npm package. It:
|
|
86
|
+
1. Runs `npm install -g agentic-skill-mill@latest`
|
|
87
|
+
2. Locates `install-local.sh` inside the globally installed package
|
|
88
|
+
3. Delegates to `install-local.sh --skills-only` with the user's flags
|
|
89
|
+
|
|
90
|
+
Both scripts respect environment overrides `SKILLMILL_PACKAGE_NAME` and `SKILLMILL_PACKAGE_VERSION`.
|
|
91
|
+
|
|
92
|
+
### npm package contents
|
|
93
|
+
|
|
94
|
+
The `files` array in `package.json` controls what ships to npm:
|
|
95
|
+
|
|
96
|
+
| Entry | Purpose |
|
|
97
|
+
|-------|---------|
|
|
98
|
+
| `dist` | Compiled TypeScript CLI and library |
|
|
99
|
+
| `compiled` | Pre-compiled skill outputs for all 7 IDE targets |
|
|
100
|
+
| `skill` | Skill sources, fragments, compiler, and manifest |
|
|
101
|
+
| `README.md` | Package documentation |
|
|
102
|
+
| `install.sh` | Bootstrap installer (bundled for remote delegation) |
|
|
103
|
+
| `install-local.sh` | Full local installer (used by bootstrap in --skills-only mode) |
|
|
104
|
+
|
|
105
|
+
The `bin` field maps `skillmill` to `dist/cli/index.js`, so `npx agentic-skill-mill` and global install both expose the `skillmill` command.
|
|
106
|
+
|
|
107
|
+
### GitHub Actions workflows
|
|
108
|
+
|
|
109
|
+
**Release to npm** (`.github/workflows/release.yml`):
|
|
110
|
+
- Triggers on push to `main` or `workflow_dispatch`
|
|
111
|
+
- Skips runs caused by its own release commits (loop guard via `chore(release):` in commit message)
|
|
112
|
+
- Steps: `npm ci` -> `npm run build` -> `npm run test -- --passWithNoTests` -> `npm run compile` -> `npm run compile:validate` -> version bump -> `git push --follow-tags` -> `npm publish --access public`
|
|
113
|
+
- Version bump finds the next available patch tag to avoid collisions with existing tags
|
|
114
|
+
- Required secrets: `AGENT_TOKEN` (PAT with repo scope for push), `AGENT_NPM_TOKEN` (npm automation token for publish)
|
|
115
|
+
|
|
116
|
+
**Deploy GitHub Pages** (`.github/workflows/deploy-pages.yml`):
|
|
117
|
+
- Triggers on push to `main` when files in `site/` change, or `workflow_dispatch`
|
|
118
|
+
- Uploads `site/` directory as the Pages artifact
|
|
119
|
+
- Deploys to the `github-pages` environment at `agenticskillmill.com`
|
|
120
|
+
|
|
121
|
+
### The `site/` directory
|
|
122
|
+
|
|
123
|
+
Static site served via GitHub Pages at `https://agenticskillmill.com`:
|
|
124
|
+
|
|
125
|
+
| File | Purpose |
|
|
126
|
+
|------|---------|
|
|
127
|
+
| `site/CNAME` | Custom domain binding |
|
|
128
|
+
| `site/index.html` | Landing page with architecture, CLI commands, and install instructions |
|
|
129
|
+
| `site/style.css` | Site styles |
|
|
130
|
+
| `site/install.sh` | Bootstrap installer served at `https://agenticskillmill.com/install.sh` |
|
|
131
|
+
|
|
132
|
+
When updating the bootstrap installer logic, edit `install.sh` at the repo root and copy it to `site/install.sh` to keep both in sync. The release workflow publishes the repo-root copy to npm; the Pages workflow serves the site copy to the domain.
|
|
133
|
+
|
|
134
|
+
### Modifying distribution touchpoints
|
|
135
|
+
|
|
136
|
+
| Change | Files to update |
|
|
137
|
+
|--------|----------------|
|
|
138
|
+
| Add a new skill | `install-local.sh` SKILLS array, `skill/build/manifest.json` |
|
|
139
|
+
| Change package name | `package.json` name + bin, `install.sh` default, `site/install.sh` default, `install-local.sh` PROJECT_NAME + CLI_BIN_NAME + MANAGED_MARKER, `site/index.html`, README |
|
|
140
|
+
| Change bootstrap behavior | `install.sh` (repo root), then copy to `site/install.sh` |
|
|
141
|
+
| Add a GitHub Actions secret | Repo settings, document in README |
|
|
142
|
+
| Update domain | `site/CNAME`, README, skill source, architecture fragment |
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
55
146
|
## Workflow
|
|
56
147
|
|
|
57
148
|
### Step 1: Understand the Goal
|
|
@@ -350,17 +441,23 @@ When the project, skill, or CLI needs a new name, update all touchpoints in one
|
|
|
350
441
|
|
|
351
442
|
4. **Compiler marker** (`skill/build/compile.mjs`) -- update the `MANAGED_BY` constant
|
|
352
443
|
|
|
353
|
-
5. **
|
|
444
|
+
5. **Local installer** (`install-local.sh`) -- update `PROJECT_NAME`, `CLI_BIN_NAME`, `MANAGED_MARKER`, `SKILLS` array
|
|
445
|
+
|
|
446
|
+
6. **Bootstrap installer** (`install.sh`) -- update the default `PACKAGE_NAME`, then copy to `site/install.sh`
|
|
447
|
+
|
|
448
|
+
7. **Package metadata** (`package.json`) -- update `name`, `bin` key, and `description`
|
|
449
|
+
|
|
450
|
+
8. **CLI metadata** (`src/cli/index.ts`) -- update `.name()` and `.description()` calls
|
|
354
451
|
|
|
355
|
-
|
|
452
|
+
9. **README** -- update title, CLI references, project layout, npx examples, install URLs
|
|
356
453
|
|
|
357
|
-
|
|
454
|
+
10. **Landing page** (`site/index.html`) -- update title, CLI references, install commands, GitHub link
|
|
358
455
|
|
|
359
|
-
|
|
456
|
+
11. **GitHub Actions secrets** -- if the npm package name changed, verify `AGENT_NPM_TOKEN` still works for the new package scope
|
|
360
457
|
|
|
361
|
-
|
|
458
|
+
12. **Any docs** referencing the old name (translation-map, lessons-learned, etc.)
|
|
362
459
|
|
|
363
|
-
|
|
460
|
+
13. **Regenerate everything:**
|
|
364
461
|
```bash
|
|
365
462
|
rm -rf compiled
|
|
366
463
|
npm install # regenerates package-lock.json
|
|
@@ -373,7 +470,7 @@ When the project, skill, or CLI needs a new name, update all touchpoints in one
|
|
|
373
470
|
After renaming, run this sweep to confirm no stale references remain:
|
|
374
471
|
|
|
375
472
|
```bash
|
|
376
|
-
grep -r "<old-name>" --include="*.md" --include="*.json" --include="*.mjs" --include="*.ts" --include="*.sh" .
|
|
473
|
+
grep -r "<old-name>" --include="*.md" --include="*.json" --include="*.mjs" --include="*.ts" --include="*.sh" --include="*.html" --include="*.yml" .
|
|
377
474
|
```
|
|
378
475
|
|
|
379
476
|
The grep should return zero results (excluding node_modules and dist).
|
|
@@ -6,7 +6,7 @@ alwaysApply: false
|
|
|
6
6
|
|
|
7
7
|
# Agentic Skill Mill
|
|
8
8
|
|
|
9
|
-
Forge and refine skill projects that follow the skill-system-template architecture: fragment-composed skills compiled to multiple IDE targets, paired with a TypeScript companion CLI (`skillmill`) that provides structured commands for agents and humans. Prefer `npx --yes agentic-skill-mill@latest <command>` when the utility is not globally installed.
|
|
9
|
+
Forge and refine skill projects that follow the skill-system-template architecture: fragment-composed skills compiled to multiple IDE targets, paired with a TypeScript companion CLI (`skillmill`) that provides structured commands for agents and humans. Prefer `npx --yes agentic-skill-mill@latest <command>` when the utility is not globally installed. Remote users can install everything via `bash <(curl -fsSL https://agenticskillmill.com/install.sh) --all`.
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
@@ -20,9 +20,15 @@ Skills (what to do) CLI Companion (tools to do it with)
|
|
|
20
20
|
skill/fragments/*.md src/core/*.ts
|
|
21
21
|
| |
|
|
22
22
|
v v
|
|
23
|
-
compiled/ (7 IDE formats) dist/ (npm
|
|
23
|
+
compiled/ (7 IDE formats) dist/ (npm -> npx or global CLI)
|
|
24
24
|
| |
|
|
25
25
|
+---------> Agent <----------+
|
|
26
|
+
^
|
|
27
|
+
|
|
|
28
|
+
Distribution: npm publish + agenticskillmill.com
|
|
29
|
+
.github/workflows/release.yml (build, test, version, publish)
|
|
30
|
+
.github/workflows/deploy-pages.yml (site/ -> GitHub Pages)
|
|
31
|
+
site/install.sh (curl-friendly bootstrap)
|
|
26
32
|
```
|
|
27
33
|
|
|
28
34
|
**Skills** are step-by-step runbooks in markdown with YAML frontmatter. They tell the agent *what* to do. Skills reference the CLI by name so the agent can invoke structured commands.
|
|
@@ -39,7 +45,7 @@ Skills (what to do) CLI Companion (tools to do it with)
|
|
|
39
45
|
- `src/errors/types.ts` — Typed error hierarchy (AppError, NotFoundError, etc.)
|
|
40
46
|
- `src/cache/cache-manager.ts` — Two-tier cache (memory + disk) with TTL
|
|
41
47
|
|
|
42
|
-
**The local installer** (`install-local.sh`) builds the CLI, compiles skills, and copies compiled outputs to IDE-specific directories (~/.claude/skills, ~/.cursor/rules, etc.) with marker-based stale file cleanup. The bootstrap installer (`install.sh`) is
|
|
48
|
+
**The local installer** (`install-local.sh`) builds the CLI, compiles skills, and copies compiled outputs to IDE-specific directories (~/.claude/skills, ~/.cursor/rules, etc.) with marker-based stale file cleanup. The bootstrap installer is hosted at `https://agenticskillmill.com/install.sh` (source: `site/install.sh`) and is also bundled in the npm package as `install.sh`. It installs the npm utility first, then delegates to `install-local.sh --skills-only`. Local installer functions use `set -e` for fail-fast behavior. Any function that uses an early-exit guard (`[[ -d ... ]] || return`, `[[ -z ... ]] && return`) **must** use `return 0`, never bare `return`. Bare `return` inherits the exit code of the last command, which for a failed conditional test is 1 -- and `set -e` treats that as a script-terminating failure with no error message.
|
|
43
49
|
|
|
44
50
|
### Key files to modify when augmenting a project
|
|
45
51
|
|
|
@@ -48,10 +54,95 @@ Skills (what to do) CLI Companion (tools to do it with)
|
|
|
48
54
|
| Add a CLI command | `src/core/<name>.ts`, `src/cli/commands/<name>.ts`, `src/cli/index.ts`, `src/index.ts` |
|
|
49
55
|
| Add a fragment | `skill/fragments/<category>/<name>.md`, `skill/build/manifest.json`, skill source |
|
|
50
56
|
| Add a skill | `skill/skills/<name>/<name>.md`, `skill/build/manifest.json`, `install-local.sh` SKILLS array |
|
|
57
|
+
| Change installer behavior | `install.sh` (repo root) then copy to `site/install.sh` |
|
|
58
|
+
| Update the landing page | `site/index.html`, `site/style.css` |
|
|
59
|
+
| Change CI secrets or workflow | `.github/workflows/release.yml` or `deploy-pages.yml`, repo settings |
|
|
51
60
|
| Rename the project | See the rename workflow |
|
|
52
61
|
|
|
53
62
|
---
|
|
54
63
|
|
|
64
|
+
## Distribution and CI
|
|
65
|
+
|
|
66
|
+
### Distribution model
|
|
67
|
+
|
|
68
|
+
The project is published to npmjs as a public package and hosted at `https://agenticskillmill.com`. There are three ways users consume it:
|
|
69
|
+
|
|
70
|
+
| Method | Command | Who uses it |
|
|
71
|
+
|--------|---------|-------------|
|
|
72
|
+
| Remote install (no clone) | `bash <(curl -fsSL https://agenticskillmill.com/install.sh) --all` | End users who want skills installed into their IDE tools |
|
|
73
|
+
| npx (no install) | `npx --yes agentic-skill-mill@latest <command>` | Users running CLI commands without global install |
|
|
74
|
+
| Local development | `git clone` then `bash install-local.sh --all` | Contributors working on the project itself |
|
|
75
|
+
|
|
76
|
+
### Two installer scripts
|
|
77
|
+
|
|
78
|
+
**`install-local.sh`** is the full local installer. It runs from a cloned repo and handles:
|
|
79
|
+
- `npm install` + `npm run build` + `npm run compile`
|
|
80
|
+
- `npm link` to make `skillmill` available globally
|
|
81
|
+
- Copies compiled skill outputs to IDE-specific directories (~/.claude/skills, ~/.cursor/rules, etc.)
|
|
82
|
+
- Supports `--skills-only` (skip build, just copy), `--uninstall`, `--compile-only`, and per-tool flags (`--cursor`, `--claude`, etc.)
|
|
83
|
+
- Auto-detects installed tools when no flags are provided
|
|
84
|
+
|
|
85
|
+
**`install.sh`** is the remote bootstrap installer. It is hosted at `https://agenticskillmill.com/install.sh` (source: `site/install.sh`) and bundled in the npm package. It:
|
|
86
|
+
1. Runs `npm install -g agentic-skill-mill@latest`
|
|
87
|
+
2. Locates `install-local.sh` inside the globally installed package
|
|
88
|
+
3. Delegates to `install-local.sh --skills-only` with the user's flags
|
|
89
|
+
|
|
90
|
+
Both scripts respect environment overrides `SKILLMILL_PACKAGE_NAME` and `SKILLMILL_PACKAGE_VERSION`.
|
|
91
|
+
|
|
92
|
+
### npm package contents
|
|
93
|
+
|
|
94
|
+
The `files` array in `package.json` controls what ships to npm:
|
|
95
|
+
|
|
96
|
+
| Entry | Purpose |
|
|
97
|
+
|-------|---------|
|
|
98
|
+
| `dist` | Compiled TypeScript CLI and library |
|
|
99
|
+
| `compiled` | Pre-compiled skill outputs for all 7 IDE targets |
|
|
100
|
+
| `skill` | Skill sources, fragments, compiler, and manifest |
|
|
101
|
+
| `README.md` | Package documentation |
|
|
102
|
+
| `install.sh` | Bootstrap installer (bundled for remote delegation) |
|
|
103
|
+
| `install-local.sh` | Full local installer (used by bootstrap in --skills-only mode) |
|
|
104
|
+
|
|
105
|
+
The `bin` field maps `skillmill` to `dist/cli/index.js`, so `npx agentic-skill-mill` and global install both expose the `skillmill` command.
|
|
106
|
+
|
|
107
|
+
### GitHub Actions workflows
|
|
108
|
+
|
|
109
|
+
**Release to npm** (`.github/workflows/release.yml`):
|
|
110
|
+
- Triggers on push to `main` or `workflow_dispatch`
|
|
111
|
+
- Skips runs caused by its own release commits (loop guard via `chore(release):` in commit message)
|
|
112
|
+
- Steps: `npm ci` -> `npm run build` -> `npm run test -- --passWithNoTests` -> `npm run compile` -> `npm run compile:validate` -> version bump -> `git push --follow-tags` -> `npm publish --access public`
|
|
113
|
+
- Version bump finds the next available patch tag to avoid collisions with existing tags
|
|
114
|
+
- Required secrets: `AGENT_TOKEN` (PAT with repo scope for push), `AGENT_NPM_TOKEN` (npm automation token for publish)
|
|
115
|
+
|
|
116
|
+
**Deploy GitHub Pages** (`.github/workflows/deploy-pages.yml`):
|
|
117
|
+
- Triggers on push to `main` when files in `site/` change, or `workflow_dispatch`
|
|
118
|
+
- Uploads `site/` directory as the Pages artifact
|
|
119
|
+
- Deploys to the `github-pages` environment at `agenticskillmill.com`
|
|
120
|
+
|
|
121
|
+
### The `site/` directory
|
|
122
|
+
|
|
123
|
+
Static site served via GitHub Pages at `https://agenticskillmill.com`:
|
|
124
|
+
|
|
125
|
+
| File | Purpose |
|
|
126
|
+
|------|---------|
|
|
127
|
+
| `site/CNAME` | Custom domain binding |
|
|
128
|
+
| `site/index.html` | Landing page with architecture, CLI commands, and install instructions |
|
|
129
|
+
| `site/style.css` | Site styles |
|
|
130
|
+
| `site/install.sh` | Bootstrap installer served at `https://agenticskillmill.com/install.sh` |
|
|
131
|
+
|
|
132
|
+
When updating the bootstrap installer logic, edit `install.sh` at the repo root and copy it to `site/install.sh` to keep both in sync. The release workflow publishes the repo-root copy to npm; the Pages workflow serves the site copy to the domain.
|
|
133
|
+
|
|
134
|
+
### Modifying distribution touchpoints
|
|
135
|
+
|
|
136
|
+
| Change | Files to update |
|
|
137
|
+
|--------|----------------|
|
|
138
|
+
| Add a new skill | `install-local.sh` SKILLS array, `skill/build/manifest.json` |
|
|
139
|
+
| Change package name | `package.json` name + bin, `install.sh` default, `site/install.sh` default, `install-local.sh` PROJECT_NAME + CLI_BIN_NAME + MANAGED_MARKER, `site/index.html`, README |
|
|
140
|
+
| Change bootstrap behavior | `install.sh` (repo root), then copy to `site/install.sh` |
|
|
141
|
+
| Add a GitHub Actions secret | Repo settings, document in README |
|
|
142
|
+
| Update domain | `site/CNAME`, README, skill source, architecture fragment |
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
55
146
|
## Workflow
|
|
56
147
|
|
|
57
148
|
### Step 1: Understand the Goal
|
|
@@ -350,17 +441,23 @@ When the project, skill, or CLI needs a new name, update all touchpoints in one
|
|
|
350
441
|
|
|
351
442
|
4. **Compiler marker** (`skill/build/compile.mjs`) -- update the `MANAGED_BY` constant
|
|
352
443
|
|
|
353
|
-
5. **
|
|
444
|
+
5. **Local installer** (`install-local.sh`) -- update `PROJECT_NAME`, `CLI_BIN_NAME`, `MANAGED_MARKER`, `SKILLS` array
|
|
445
|
+
|
|
446
|
+
6. **Bootstrap installer** (`install.sh`) -- update the default `PACKAGE_NAME`, then copy to `site/install.sh`
|
|
447
|
+
|
|
448
|
+
7. **Package metadata** (`package.json`) -- update `name`, `bin` key, and `description`
|
|
449
|
+
|
|
450
|
+
8. **CLI metadata** (`src/cli/index.ts`) -- update `.name()` and `.description()` calls
|
|
354
451
|
|
|
355
|
-
|
|
452
|
+
9. **README** -- update title, CLI references, project layout, npx examples, install URLs
|
|
356
453
|
|
|
357
|
-
|
|
454
|
+
10. **Landing page** (`site/index.html`) -- update title, CLI references, install commands, GitHub link
|
|
358
455
|
|
|
359
|
-
|
|
456
|
+
11. **GitHub Actions secrets** -- if the npm package name changed, verify `AGENT_NPM_TOKEN` still works for the new package scope
|
|
360
457
|
|
|
361
|
-
|
|
458
|
+
12. **Any docs** referencing the old name (translation-map, lessons-learned, etc.)
|
|
362
459
|
|
|
363
|
-
|
|
460
|
+
13. **Regenerate everything:**
|
|
364
461
|
```bash
|
|
365
462
|
rm -rf compiled
|
|
366
463
|
npm install # regenerates package-lock.json
|
|
@@ -373,7 +470,7 @@ When the project, skill, or CLI needs a new name, update all touchpoints in one
|
|
|
373
470
|
After renaming, run this sweep to confirm no stale references remain:
|
|
374
471
|
|
|
375
472
|
```bash
|
|
376
|
-
grep -r "<old-name>" --include="*.md" --include="*.json" --include="*.mjs" --include="*.ts" --include="*.sh" .
|
|
473
|
+
grep -r "<old-name>" --include="*.md" --include="*.json" --include="*.mjs" --include="*.ts" --include="*.sh" --include="*.html" --include="*.yml" .
|
|
377
474
|
```
|
|
378
475
|
|
|
379
476
|
The grep should return zero results (excluding node_modules and dist).
|