skill-automation-package 0.2.0 → 0.2.2

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
@@ -2,7 +2,8 @@
2
2
 
3
3
  Portable repo-local skill automation for Codex and Claude Code.
4
4
 
5
- This repository ships a Python-installed automation bundle. It is not an npm runtime package; `package.json` is used here as a package manifest for managed assets, versioning, and install metadata.
5
+ The published npm package is `skill-automation-package`. It is a thin installer frontend over the same Python-based automation bundle; the runtime and install core still live in Python.
6
+ This remains a Python-installed automation bundle, not an npm runtime package.
6
7
 
7
8
  ## Why This Exists
8
9
 
@@ -20,32 +21,32 @@ After installation, an agent can:
20
21
  ## What It Installs
21
22
 
22
23
  - `.claude/tools/skill_agent.py`
23
- - `.claude/skills/project-skill-router/`
24
+ - five packaged core default skills under `.claude/skills/`: `project-skill-router/` plus read-only helpers for project summary, repo structure analysis, docs entrypoint guidance, and change summary
24
25
  - optional `.claude/tests/test_skill_agent.py`
25
26
  - managed automation blocks for `AGENTS.md` and `CLAUDE.md`
26
27
 
27
28
  ## Quick Start
28
29
 
29
- Install into another repository:
30
+ Use the published package to install into another repository:
30
31
 
31
32
  ```bash
32
- python3 scripts/install.py --target /path/to/target-repo
33
+ npx skill-automation-package install --target /path/to/target-repo
33
34
  ```
34
35
 
35
- Or use the npm wrapper entrypoint:
36
+ Update an existing target with version-aware reinstall behavior:
36
37
 
37
38
  ```bash
38
- npx skill-automation-package install --target /path/to/target-repo
39
+ npx skill-automation-package update --target /path/to/target-repo
39
40
  ```
40
41
 
41
- To update an existing target without forcing an unnecessary reinstall when it is already current:
42
+ Python 3.10 or newer is still required. The npm entrypoint is a thin wrapper around the Python installer and does not replace the Python core.
43
+
44
+ If you already have this repository checked out locally, the direct Python install path remains fully supported:
42
45
 
43
46
  ```bash
44
- npx skill-automation-package update --target /path/to/target-repo
47
+ python3 scripts/install.py --target /path/to/target-repo
45
48
  ```
46
49
 
47
- The npm entrypoint is a thin wrapper around the Python installer. It does not replace the Python core, and Python 3.10 or newer is still required.
48
- If you already have this repository checked out locally, the direct `python3 scripts/install.py ...` path remains fully supported.
49
50
  `install` always allows reinstall. `update` is version-aware and only reinstalls when the target reports an older installed version.
50
51
  Before reinstalling, the wrapper checks `.claude/skill-automation-package.json` in the target repo and reports whether the target is not installed, already at the current version, or behind the current package version.
51
52
 
@@ -98,33 +99,54 @@ The exact skill name is inferred from the task, but the flow is stable: reuse wh
98
99
 
99
100
  ## Installation Guide
100
101
 
101
- Use this package when you have the package repository checked out locally and want to install the automation bundle into another repository.
102
+ Use this package when you want to install the automation bundle into another repository. The published npm package is the default entrypoint, and the direct Python path remains available when you are working from a local checkout of this repository.
102
103
 
103
104
  ### Prerequisites
104
105
 
105
106
  - Python 3.10 or newer
106
- - for the npm entrypoint, Node.js 18 or newer
107
+ - Node.js 18 or newer
108
+ - npm or `npx` for the published package entrypoint
107
109
  - a target repository where you want repo-local skill automation under `.claude/`
108
110
  - write access to the target repository
109
111
 
110
112
  ### Standard Install
111
113
 
112
114
  1. Choose the target repository.
113
- 2. Run the installer from this package repository:
115
+ 2. Use the published package:
116
+
117
+ ```bash
118
+ npx skill-automation-package install --target /path/to/target-repo
119
+ ```
120
+
121
+ 3. Or, if you already have this repository checked out locally, run the Python installer directly:
114
122
 
115
123
  ```bash
116
124
  python3 scripts/install.py --target /path/to/target-repo
117
125
  ```
118
126
 
119
- 3. The installer will:
127
+ 4. The installer will:
120
128
 
121
129
  - copy `.claude/tools/skill_agent.py`
122
- - copy `.claude/skills/project-skill-router/`
130
+ - copy the packaged core default skills under `.claude/skills/`
123
131
  - optionally copy `.claude/tests/test_skill_agent.py`
124
132
  - insert managed automation blocks into `AGENTS.md` and `CLAUDE.md`
125
133
  - write `.claude/skill-automation-package.json`
126
134
  - refresh `.claude/skills/registry.json`
127
135
 
136
+ ### Install Vs Update
137
+
138
+ Install always runs and allows a deliberate reinstall:
139
+
140
+ ```bash
141
+ npx skill-automation-package install --target /path/to/target-repo
142
+ ```
143
+
144
+ Update is version-aware and skips work when the target is already current:
145
+
146
+ ```bash
147
+ npx skill-automation-package update --target /path/to/target-repo
148
+ ```
149
+
128
150
  ### Why `AGENTS.md` And `CLAUDE.md` Are Updated
129
151
 
130
152
  The installer adds a bounded managed block so future Codex and Claude Code sessions start from the same routing command instead of bypassing the local skill system.
@@ -145,7 +167,7 @@ python3 .claude/tools/skill_agent.py list
145
167
  python3 .claude/tools/skill_agent.py auto "find or create the right reusable workflow" --json
146
168
  ```
147
169
 
148
- You should see the packaged router skill in the list, and `auto` should return either a reusable local skill match or a generated preview/result.
170
+ You should see the packaged core skills in the list, including the router, and `auto` should return either a reusable local skill match or a generated preview/result.
149
171
 
150
172
  ### Common Install Variants
151
173
 
@@ -172,7 +194,7 @@ Use this when the repository wants shared repo-local skills and shared entrypoin
172
194
  Usually commit:
173
195
 
174
196
  - `.claude/tools/skill_agent.py`
175
- - `.claude/skills/project-skill-router/`
197
+ - the packaged core default skills under `.claude/skills/`
176
198
  - `.claude/tests/test_skill_agent.py` when installed
177
199
  - `AGENTS.md` and `CLAUDE.md` when you want the managed guidance blocks shared with the team
178
200
 
@@ -345,7 +367,7 @@ python3 scripts/install.py --target /path/to/target-repo --skip-claude
345
367
  ## Package Layout
346
368
 
347
369
  - `assets/.claude/tools/skill_agent.py`: resolver, search, scaffold, usage tracking, refresh review/update, and prune CLI
348
- - `assets/.claude/skills/project-skill-router/`: default reusable routing skill
370
+ - `assets/.claude/skills/`: packaged core default skills, including the router and four read-only helper skills
349
371
  - `scripts/package_layout.py`: shared package manifest loader and asset copy helpers
350
372
  - `templates/agents_block.md`: managed block for `AGENTS.md`
351
373
  - `templates/claude_block.md`: managed block for `CLAUDE.md`
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: core-change-summary
3
+ description: Summarize the current working tree or recent changes in a read-only way. Use when an agent needs fast change context without editing the repo.
4
+ ---
5
+
6
+ # Core Change Summary
7
+
8
+ ## Goal
9
+
10
+ Build a concise summary of what changed, where it changed, and what still looks important before deeper review or follow-up work.
11
+
12
+ ## Workflow
13
+
14
+ 1. Inspect the current working tree, changed files, and the smallest relevant diff or file set.
15
+ 2. Group changes by area, intent, or likely effect instead of listing raw filenames only.
16
+ 3. Call out obvious risks, open questions, or verification gaps that follow from the observed changes.
17
+ 4. Keep the output read-only and limited to summary, not repo modification.
18
+
19
+ ## Guardrails
20
+
21
+ - Do not create, edit, or delete repository files.
22
+ - Do not infer intent that is not supported by the observed changes.
23
+ - Prefer a compact status summary over a file-by-file changelog.
@@ -0,0 +1,31 @@
1
+ {
2
+ "category": "workflow",
3
+ "summary": "Summarize the current working tree or recent changes without editing the repository.",
4
+ "management_mode": "locked",
5
+ "tags": [
6
+ "changes",
7
+ "summary",
8
+ "read-only",
9
+ "review"
10
+ ],
11
+ "triggers": [
12
+ "summarize the current changes",
13
+ "what changed in this repo",
14
+ "give me a change summary",
15
+ "show me the current working tree status"
16
+ ],
17
+ "steps": [
18
+ "Inspect the current working tree, changed files, and the smallest relevant diff or file set.",
19
+ "Group changes by area, intent, or likely effect.",
20
+ "Call out obvious risks, open questions, or verification gaps from the observed changes.",
21
+ "Keep the result read-only and focused on summary."
22
+ ],
23
+ "validation": [
24
+ "Reference the files or diffs used to build the summary.",
25
+ "Avoid modifying repository files while summarizing changes."
26
+ ],
27
+ "examples": [
28
+ "Summarize the current working tree before I continue.",
29
+ "Explain the recent changes and any obvious follow-up risks."
30
+ ]
31
+ }
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: core-docs-entrypoint-guidance
3
+ description: Identify the best documentation entrypoints and reading order in a read-only way. Use when an agent needs to find canonical docs without changing the repo.
4
+ ---
5
+
6
+ # Core Docs Entrypoint Guidance
7
+
8
+ ## Goal
9
+
10
+ Point an agent to the smallest set of documents worth reading first and distinguish active references from lower-priority material.
11
+
12
+ ## Workflow
13
+
14
+ 1. Inspect the root `README.md`, `docs/` tree, and any obvious operations or reference directories.
15
+ 2. Separate canonical docs from working notes, archives, examples, or historical records.
16
+ 3. Recommend a practical reading order for the current task.
17
+ 4. Keep the output read-only and focused on navigation, not documentation edits.
18
+
19
+ ## Guardrails
20
+
21
+ - Do not create, edit, or delete repository files.
22
+ - Do not treat archived or draft material as current truth unless the repo says so.
23
+ - Prefer a short ordered list of entrypoints over a broad document dump.
@@ -0,0 +1,31 @@
1
+ {
2
+ "category": "docs",
3
+ "summary": "Identify the best documentation entrypoints and reading order from the existing repo.",
4
+ "management_mode": "locked",
5
+ "tags": [
6
+ "docs",
7
+ "navigation",
8
+ "read-only",
9
+ "onboarding"
10
+ ],
11
+ "triggers": [
12
+ "where should I start reading docs",
13
+ "find the canonical documentation",
14
+ "guide me through this repo's docs",
15
+ "what docs matter first"
16
+ ],
17
+ "steps": [
18
+ "Inspect the root README and the main docs directories.",
19
+ "Separate canonical references from working notes or archives.",
20
+ "Recommend the smallest useful reading order for the current task.",
21
+ "Keep the result read-only and grounded in the existing doc structure."
22
+ ],
23
+ "validation": [
24
+ "Call out which docs are active references and which are background material.",
25
+ "Avoid changing documentation files while guiding entrypoints."
26
+ ],
27
+ "examples": [
28
+ "Show me which docs to read first in this repository.",
29
+ "Point me to the canonical docs before I start implementation."
30
+ ]
31
+ }
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: core-project-summary
3
+ description: Produce a read-only summary of the repository's purpose, main components, and current constraints. Use when an agent needs fast onboarding context without changing the repo.
4
+ ---
5
+
6
+ # Core Project Summary
7
+
8
+ ## Goal
9
+
10
+ Build a short, source-grounded summary of what the repository does and what matters before deeper work.
11
+
12
+ ## Workflow
13
+
14
+ 1. Read the root `README.md`, top-level manifests, and the most relevant entry directories before summarizing.
15
+ 2. Identify the repository purpose, main subsystems, runtime or build stack, and current constraints from existing files only.
16
+ 3. Keep the output read-only: summarize what exists, cite the files you used, and do not create or modify repository files.
17
+ 4. End with the smallest set of next files or directories worth reading for the current task.
18
+
19
+ ## Guardrails
20
+
21
+ - Do not create, edit, or delete repository files.
22
+ - Do not invent architecture, roadmap, or ownership details that are not supported by source material.
23
+ - Prefer a short orientation summary over a long document.
@@ -0,0 +1,31 @@
1
+ {
2
+ "category": "docs",
3
+ "summary": "Summarize the repository purpose, main components, and current constraints from existing files.",
4
+ "management_mode": "locked",
5
+ "tags": [
6
+ "summary",
7
+ "onboarding",
8
+ "read-only",
9
+ "context"
10
+ ],
11
+ "triggers": [
12
+ "summarize this project",
13
+ "give me a project overview",
14
+ "what does this repo do",
15
+ "onboard me to this repository"
16
+ ],
17
+ "steps": [
18
+ "Read the root README, top-level manifests, and the most relevant entry directories.",
19
+ "Extract the repository purpose, main components, and current constraints from existing files only.",
20
+ "Keep the result read-only and grounded in the files you inspected.",
21
+ "Point to the next files or directories worth reading."
22
+ ],
23
+ "validation": [
24
+ "Name the files or directories used to build the summary.",
25
+ "Avoid unsupported claims or repo changes."
26
+ ],
27
+ "examples": [
28
+ "Summarize this repository before we start coding.",
29
+ "Give me a quick project overview and the most important files to read next."
30
+ ]
31
+ }
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: core-repo-structure-analysis
3
+ description: Map the repository layout, key entrypoints, and likely edit locations in a read-only way. Use when an agent needs to understand where code, docs, tests, or config live without changing the repo.
4
+ ---
5
+
6
+ # Core Repo Structure Analysis
7
+
8
+ ## Goal
9
+
10
+ Create a compact map of the repository layout so an agent can find the right area before making changes.
11
+
12
+ ## Workflow
13
+
14
+ 1. Inspect the top-level directories, manifests, and obvious entrypoint files before drawing conclusions.
15
+ 2. Group the repository into major areas such as application code, tests, docs, scripts, tooling, or generated assets.
16
+ 3. Explain which directories are likely to matter for the current task and why.
17
+ 4. Keep the analysis read-only and limit the output to navigation guidance rather than implementation advice.
18
+
19
+ ## Guardrails
20
+
21
+ - Do not create, edit, or delete repository files.
22
+ - Do not claim a directory is authoritative unless the repository structure supports that conclusion.
23
+ - Prefer a practical map of likely edit locations over a full file inventory.
@@ -0,0 +1,31 @@
1
+ {
2
+ "category": "workflow",
3
+ "summary": "Map the repository layout, entrypoints, and likely edit locations without changing files.",
4
+ "management_mode": "locked",
5
+ "tags": [
6
+ "structure",
7
+ "navigation",
8
+ "read-only",
9
+ "codebase"
10
+ ],
11
+ "triggers": [
12
+ "analyze this repo structure",
13
+ "map this codebase",
14
+ "where is everything in this repo",
15
+ "find the right directory for this task"
16
+ ],
17
+ "steps": [
18
+ "Inspect the top-level directories, manifests, and obvious entrypoints.",
19
+ "Group the repository into major areas such as app code, tests, docs, and tooling.",
20
+ "Call out the directories or files most relevant to the current task.",
21
+ "Keep the result read-only and focused on navigation."
22
+ ],
23
+ "validation": [
24
+ "Reference the directories or files that support the structure map.",
25
+ "Avoid changing the repository while analyzing it."
26
+ ],
27
+ "examples": [
28
+ "Map this repository before I start editing files.",
29
+ "Show me where the main code, tests, docs, and tooling live."
30
+ ]
31
+ }
@@ -452,6 +452,40 @@ class SkillAgentTests(unittest.TestCase):
452
452
  self.assertEqual(payload[0]["name"], "dusty-skill")
453
453
  self.assertEqual(payload[0]["status"], "candidate")
454
454
 
455
+ def test_usage_keeps_packaged_core_helper_protected(self) -> None:
456
+ old_timestamp = (datetime.now(UTC) - timedelta(days=60)).replace(microsecond=0).isoformat()
457
+ self.write_skill(
458
+ "core-project-summary",
459
+ description="Summarize the repository in a read-only way.",
460
+ metadata={
461
+ "category": "docs",
462
+ "summary": "Summarize the repository in a read-only way.",
463
+ "created_at": old_timestamp,
464
+ "updated_at": old_timestamp,
465
+ "management_mode": "locked",
466
+ },
467
+ )
468
+
469
+ result = subprocess.run(
470
+ [
471
+ sys.executable,
472
+ str(SCRIPT_PATH),
473
+ "usage",
474
+ "--repo-root",
475
+ str(self.repo_root),
476
+ "--status",
477
+ "protected",
478
+ "--json",
479
+ ],
480
+ check=True,
481
+ capture_output=True,
482
+ text=True,
483
+ )
484
+
485
+ payload = json.loads(result.stdout)
486
+ self.assertEqual(payload[0]["name"], "core-project-summary")
487
+ self.assertEqual(payload[0]["status"], "protected")
488
+
455
489
  def test_prune_apply_archives_candidate_skill(self) -> None:
456
490
  old_timestamp = (datetime.now(UTC) - timedelta(days=60)).replace(microsecond=0).isoformat()
457
491
  self.write_skill(
@@ -335,7 +335,14 @@ TITLE_CASE_OVERRIDES = {
335
335
  "xcode": "Xcode",
336
336
  }
337
337
 
338
- PROTECTED_SKILLS = {"project-skill-router", "omc-reference"}
338
+ PROTECTED_SKILLS = {
339
+ "project-skill-router",
340
+ "core-project-summary",
341
+ "core-repo-structure-analysis",
342
+ "core-docs-entrypoint-guidance",
343
+ "core-change-summary",
344
+ "omc-reference",
345
+ }
339
346
  ARCHIVE_DIRNAME = "_archived"
340
347
  USAGE_FILENAME = "usage.json"
341
348
  USAGE_HISTORY_LIMIT = 12
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skill-automation-package",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Portable repo-local skill automation bundle for Codex and Claude Code.",
5
5
  "bin": {
6
6
  "skill-automation-package": "bin/skill-automation-package.js"
@@ -11,6 +11,10 @@
11
11
  "scripts/package_layout.py",
12
12
  "assets/.claude/tools/skill_agent.py",
13
13
  "assets/.claude/skills/project-skill-router/",
14
+ "assets/.claude/skills/core-project-summary/",
15
+ "assets/.claude/skills/core-repo-structure-analysis/",
16
+ "assets/.claude/skills/core-docs-entrypoint-guidance/",
17
+ "assets/.claude/skills/core-change-summary/",
14
18
  "assets/.claude/tests/test_skill_agent.py",
15
19
  "templates/agents_block.md",
16
20
  "templates/claude_block.md",
@@ -30,7 +34,11 @@
30
34
  },
31
35
  "managed_assets": [
32
36
  ".claude/tools/skill_agent.py",
33
- ".claude/skills/project-skill-router"
37
+ ".claude/skills/project-skill-router",
38
+ ".claude/skills/core-project-summary",
39
+ ".claude/skills/core-repo-structure-analysis",
40
+ ".claude/skills/core-docs-entrypoint-guidance",
41
+ ".claude/skills/core-change-summary"
34
42
  ],
35
43
  "optional_assets": [
36
44
  ".claude/tests/test_skill_agent.py"