@sassywares/skills 0.4.0 → 0.4.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/CONCEPTS.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Source of truth
4
4
 
5
- The repo's `skills/` directory is the only copy of the skills. It ships as the npm package `@sassywares/skills`, so consumers pin a version rather than linking a directory; the sync service handles git commit and push.
5
+ The repo's `skills/` directory is the only copy of the skills. Consumers install from it with `npx skills add sassywares/sassy-skills`, which vendors the files into their project and pins content hashes in `skills-lock.json`; the sync service handles git commit and push.
6
6
 
7
7
  ## Skill
8
8
 
package/README.md CHANGED
@@ -302,12 +302,12 @@ npx skills remove # take the suite out again
302
302
  `@sassywares/skills` is on npm for harnesses that install packages rather than skill directories:
303
303
 
304
304
  ```bash
305
- pi install npm:@sassywares/skills@0.4.0
305
+ pi install npm:@sassywares/skills
306
306
  ```
307
307
 
308
308
  ## Repository maintenance
309
309
 
310
- `scripts/sync.sh` commits skill changes, rebases on `origin/main`, and pushes. Any agent that changes a skill must run it immediately, without asking for confirmation. It installs nothing anywhere — a change reaches consumers when a version is released and they bump their pin. `AGENTS.md` documents the workflow for agents working on this repo.
310
+ `scripts/sync.sh` commits skill changes, rebases on `origin/main`, and pushes. Any agent that changes a skill must run it immediately, without asking for confirmation. It installs nothing anywhere — consumers get a change when they run `npx skills update` after a push. `AGENTS.md` documents the workflow for agents working on this repo.
311
311
 
312
312
  ### Releases
313
313
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sassywares/skills",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "Lean, explicit-invocation Agent Skills for shipping fast: plan, work, review, validate, ship.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -2,8 +2,8 @@
2
2
  name: sassy-setup
3
3
  description: >-
4
4
  Detect a project's topology and wire it for the Sassy Skills suite: write
5
- .sassywares/config.yaml, pin the skills as an npm dependency, link them where
6
- harnesses look, and install the snapshot tooling in a multi-repo workspace.
5
+ .sassywares/config.yaml, vendor the skills from upstream with the open
6
+ `skills` CLI, and install the snapshot tooling in a multi-repo workspace.
7
7
  Use when asked to set up, configure, or verify a project.
8
8
  argument-hint: "[path] [--check]"
9
9
  disable-model-invocation: true
@@ -11,7 +11,7 @@ disable-model-invocation: true
11
11
 
12
12
  # Sassy Setup
13
13
 
14
- **Outcome:** `.sassywares/config.yaml` at the project root matching the tree it describes, the skills wired as a pinned dependency and visible to the harness, and — in `workspace` mode — the snapshot tooling installed.
14
+ **Outcome:** `.sassywares/config.yaml` at the project root matching the tree it describes, the skills vendored and pinned in `skills-lock.json` and visible to the harness, and — in `workspace` mode — the snapshot tooling installed.
15
15
 
16
16
  **Read `references/config.md` first.** It is the schema and the resolution rules; this skill only decides and writes.
17
17
 
@@ -33,7 +33,7 @@ disable-model-invocation: true
33
33
  5. **Wire the skills.** The suite is installed from upstream with the open `skills` CLI, which vendors the skill files into the project and pins them. Never copy skill files in by hand, never add the suite as a dependency.
34
34
 
35
35
  - **Install it**: `npx -y skills add sassywares/sassy-skills -y`. That writes `.agents/skills/sassy-*` (real files), per-agent links such as `.claude/skills/sassy-*`, and `skills-lock.json`.
36
- - **Scripts**, adding only what is missing: `"skills:sync": "npx -y skills experimental_install"` (restores exactly what the lock pins) and `"skills:update": "npx -y skills update -y"` (pulls the latest from upstream). **Never rewrite an existing `postinstall`** — leave it alone and tell the user to chain what they need.
36
+ - **Do not wire updates.** How and when the project refreshes the suite is the project's decision, not setup's: no `skills:*` scripts, no `postinstall` edit. Mention the commands (`npx skills update`, `npx skills experimental_install`) and stop there.
37
37
  - **Commit the vendored skills and the lock.** `.agents/skills/sassy-*` and `skills-lock.json` are the pin; a clone then needs no network.
38
38
  - **Ignore `.claude/skills` only.** It is a link created at install time. Create `.gitignore` only when there is none — and in `workspace` topology never touch the project's root `.gitignore` at all.
39
39
  - **Write `.sassywares/README.md`** from `assets/sassywares-readme.md` when absent. Never overwrite it — it may carry project notes.
@@ -41,8 +41,8 @@ disable-model-invocation: true
41
41
 
42
42
  6. **Install the snapshot, `workspace` only.** Read `references/workspace.md` and follow it.
43
43
 
44
- 7. **Verify.** Run `scripts/detect.sh --root <path> --check`, then `sassy-skills check` for the links. Report every `drift:` line it prints — including an outdated `snapshot` version — or that the config matches the tree.
45
- 8. **Report.** The config path, the topology, the resolved artifact and knowledge paths, the skills version pinned and that `/reload` is needed, and in `workspace` mode what was installed. **Commit nothing.**
44
+ 7. **Verify.** Run `scripts/detect.sh --root <path> --check`. Report every `drift:` line it prints — including an outdated `snapshot` version — or that the config matches the tree, plus that `skills-lock.json` is tracked and matches the vendored skills.
45
+ 8. **Report.** The config path, the topology, the resolved artifact and knowledge paths, that the vendored skills and lock are committed and `/reload` is needed, and in `workspace` mode what was installed. **Commit nothing.**
46
46
 
47
47
  ## Hard rules
48
48
 
@@ -55,7 +55,7 @@ disable-model-invocation: true
55
55
  | Never commit | Setup writes files and stops. Committing is `sassy-commit`. |
56
56
  | Skills come from upstream | Install with `npx skills add`; never hand-copy skill files or maintain the links yourself. |
57
57
  | Scripts are shared | Adding a missing script is fine; rewriting an existing `postinstall` or `skills:*` entry is not. |
58
- | Write boundary | Only `.sassywares/`, the vendored `.agents/skills/sassy-*`, `skills-lock.json`, two `package.json` scripts, and one `.gitignore` line. Never a root `.gitignore` in a workspace. |
58
+ | Write boundary | Only `.sassywares/`, the vendored `.agents/skills/sassy-*`, `skills-lock.json`, and one `.gitignore` line. Never `package.json`, never a root `.gitignore` in a workspace. |
59
59
  | Detect, don't guess | An unknown base branch stays unknown and gets asked about. A probed value is reported as probed. |
60
60
  | Comments are part of the file | Every key keeps its description and allowed values. A stripped config is an incomplete config. |
61
61
  | Hooks are named, not written | Setup records hook skill names. Creating those skills is the project's work. |
@@ -9,10 +9,12 @@ Installed from upstream with the open `skills` CLI, which vendors the skills int
9
9
 
10
10
  ```bash
11
11
  npx skills add sassywares/sassy-skills # first install
12
- bun run skills:sync # restore exactly what the lock pins
13
- bun run skills:update # pull the latest from upstream
12
+ npx skills update -y # pull the latest from upstream
13
+ npx skills experimental_install # restore exactly what the lock pins
14
14
  ```
15
15
 
16
+ Refreshing the suite is this project's decision — nothing here updates itself.
17
+
16
18
  The vendored skills and the lock are committed; `.claude/skills` is a link and is not.
17
19
 
18
20
  `.agents/skills/` is read by pi and Cursor; Claude Code reads `.claude/skills/` only, which is why that symlink exists. After any change, `/reload` your harness.
@@ -35,13 +35,13 @@ Ask which one, unless the request already made it obvious. The answer changes th
35
35
 
36
36
  | Location | Path | Who gets it | Extra work |
37
37
  |---|---|---|---|
38
- | **Internal** — part of this suite | `skills/<name>/` in the sassy-skills repo | Everyone, after a release | Name it `sassy-<name>`, bump `package.json`, run `scripts/sync.sh`, then tag to publish |
38
+ | **Internal** — part of this suite | `skills/<name>/` in the sassy-skills repo | Everyone, once pushed to `main` | Name it `sassy-<name>`, run `scripts/sync.sh`; the npm package follows the next tag |
39
39
  | **Project** — team workflow | `<repo>/.agents/skills/<name>/` | Everyone who clones that repo | Commit it; prefix the project (`tap2-…`) so it can't collide with a suite skill or a harness built-in |
40
40
  | **User** — personal workflow | `~/.agents/skills/<name>/` | Only this person, every repo on this machine | None — but nothing gates it either; never put something a teammate needs here |
41
41
 
42
42
  Recommend by audience: the team needs it → **project**; only the requester → **user**; it belongs to every project using this suite → **internal**.
43
43
 
44
- Internal is the only one that implies a release. Never choose it silently: from the moment it lands, consumers see it only when they bump their pin. Say that out loud when you do.
44
+ Internal is the only one that ships to everyone. Never choose it silently: once it lands on `main`, every consumer gets it on their next `npx skills update`. Say that out loud when you do.
45
45
 
46
46
  Paths in the table are the defaults. Harnesses also read `skills` arrays in settings and installed packages, so a skill may live elsewhere — write down where it actually went.
47
47