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 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://raw.githubusercontent.com/<owner>/<repo>/main/install.sh) --all
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 link -> global CLI)
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 remote-friendly and 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.
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. **Installer** (`install-local.sh`) -- update `PROJECT_NAME`, `CLI_BIN_NAME`, `MANAGED_MARKER`, `SKILLS` array
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
- 6. **Package metadata** (`package.json`) -- update `name` and `bin` key
452
+ 9. **README** -- update title, CLI references, project layout, npx examples, install URLs
356
453
 
357
- 7. **CLI metadata** (`src/cli/index.ts`) -- update `.name()` and `.description()` calls
454
+ 10. **Landing page** (`site/index.html`) -- update title, CLI references, install commands, GitHub link
358
455
 
359
- 8. **README** -- update title, CLI references, project layout example
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
- 9. **Any docs** referencing the old name (translation-map, lessons-learned, etc.)
458
+ 12. **Any docs** referencing the old name (translation-map, lessons-learned, etc.)
362
459
 
363
- 10. **Regenerate everything:**
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 link -> global CLI)
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 remote-friendly and 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.
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. **Installer** (`install-local.sh`) -- update `PROJECT_NAME`, `CLI_BIN_NAME`, `MANAGED_MARKER`, `SKILLS` array
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
- 6. **Package metadata** (`package.json`) -- update `name` and `bin` key
452
+ 9. **README** -- update title, CLI references, project layout, npx examples, install URLs
356
453
 
357
- 7. **CLI metadata** (`src/cli/index.ts`) -- update `.name()` and `.description()` calls
454
+ 10. **Landing page** (`site/index.html`) -- update title, CLI references, install commands, GitHub link
358
455
 
359
- 8. **README** -- update title, CLI references, project layout example
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
- 9. **Any docs** referencing the old name (translation-map, lessons-learned, etc.)
458
+ 12. **Any docs** referencing the old name (translation-map, lessons-learned, etc.)
362
459
 
363
- 10. **Regenerate everything:**
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 link -> global CLI)
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 remote-friendly and 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.
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. **Installer** (`install-local.sh`) -- update `PROJECT_NAME`, `CLI_BIN_NAME`, `MANAGED_MARKER`, `SKILLS` array
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
- 6. **Package metadata** (`package.json`) -- update `name` and `bin` key
452
+ 9. **README** -- update title, CLI references, project layout, npx examples, install URLs
356
453
 
357
- 7. **CLI metadata** (`src/cli/index.ts`) -- update `.name()` and `.description()` calls
454
+ 10. **Landing page** (`site/index.html`) -- update title, CLI references, install commands, GitHub link
358
455
 
359
- 8. **README** -- update title, CLI references, project layout example
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
- 9. **Any docs** referencing the old name (translation-map, lessons-learned, etc.)
458
+ 12. **Any docs** referencing the old name (translation-map, lessons-learned, etc.)
362
459
 
363
- 10. **Regenerate everything:**
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).