@camunda8/spm 0.1.0 → 0.1.1
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 +24 -20
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
# spm — skill package manager
|
|
2
2
|
|
|
3
3
|
Declare AI skills as git dependencies in `ai.json`, and `spm` wires them into your
|
|
4
|
-
AI tool (Claude Code and GitHub Copilot CLI) **without ever
|
|
5
|
-
your repo**.
|
|
4
|
+
AI tool (Claude Code and GitHub Copilot CLI) **without ever committing skills to
|
|
5
|
+
your repo**. Anything spm materializes into the working tree is gitignored — no
|
|
6
|
+
symlinks, no skills under version control.
|
|
6
7
|
|
|
7
8
|
## How it works
|
|
8
9
|
|
|
9
10
|
```
|
|
10
11
|
ai.json ──resolve──▶ ai.lock ──fetch──▶ ~/.spm/store/<repo>@<sha> (global cache, one clone per commit)
|
|
11
12
|
│
|
|
12
|
-
└─project──▶
|
|
13
|
-
│
|
|
14
|
-
└─register─▶ vendor picks it up (see below)
|
|
13
|
+
└─project──▶ materialized where the vendor expects it (see below)
|
|
15
14
|
```
|
|
16
15
|
|
|
17
16
|
- **`ai.json`** — you author it, commit it. Declares target vendors + skill deps.
|
|
18
17
|
- **`ai.lock`** — generated, commit it. Pins every version selector to an immutable commit SHA → reproducible installs.
|
|
19
18
|
- **Global store** (`~/.spm/store`) — each repo@commit fetched once, shared across all projects.
|
|
20
|
-
- **Vendor projection**
|
|
19
|
+
- **Vendor projection** — spm copies the store's skills into wherever each vendor loads them from. Nothing spm generates is committed to your repo.
|
|
21
20
|
- **Registration** differs per vendor:
|
|
22
|
-
- **Claude** — spm writes a pointer to
|
|
23
|
-
- **Copilot CLI** — spm
|
|
21
|
+
- **Claude** — spm assembles a self-contained plugin marketplace in the **project-local**, gitignored `.spm/claude/` dir and writes a pointer to it into `.claude/settings.local.json` (gitignored by convention). The dir sits outside `.agents/skills/` so Copilot's scanner never picks it up. Declarative, per-project, zero VCS footprint.
|
|
22
|
+
- **Copilot CLI** — spm copies the resolved skills into a **project-local** directory, `.agents/skills/spm-managed-skills/<name>/`, where Copilot CLI auto-discovers them (`.agents/skills/**/SKILL.md`). That directory is added to the project's `.gitignore` (with an explanatory comment) so the materialized skills stay truly local and are never committed. No user-global state, no `copilot` CLI required.
|
|
24
23
|
|
|
25
24
|
On a fresh clone, teammates run `spm install` — it rebuilds their own store and re-registers from `ai.lock`. Same model as `node_modules`.
|
|
26
25
|
|
|
@@ -85,11 +84,10 @@ instead of hanging on a prompt (helpers and ssh-agent still work).
|
|
|
85
84
|
## Installation
|
|
86
85
|
|
|
87
86
|
`spm` ships as a single self-contained binary (needs the system `git` on `PATH`
|
|
88
|
-
at runtime
|
|
87
|
+
at runtime).
|
|
89
88
|
|
|
90
|
-
**From npm (recommended)** —
|
|
91
|
-
|
|
92
|
-
your `PATH` with no manual steps:
|
|
89
|
+
**From npm (recommended)** — the zero-setup path on every platform. It puts `spm`
|
|
90
|
+
on your `PATH` with no manual steps:
|
|
93
91
|
|
|
94
92
|
```bash
|
|
95
93
|
npm i -g @camunda8/spm
|
|
@@ -101,6 +99,13 @@ your OS/CPU via an optional dependency (`@camunda8/spm-<os>-<cpu>`), so nothing
|
|
|
101
99
|
compiled or downloaded outside npm. Supported: `darwin-x64`, `darwin-arm64`,
|
|
102
100
|
`linux-x64`, `linux-arm64`, `win32-x64`. Update with `npm i -g @camunda8/spm@latest`.
|
|
103
101
|
|
|
102
|
+
**From crates.io** — build and install from source via Cargo (needs a Rust
|
|
103
|
+
toolchain). The crate is `spm-cli`; the installed binary is `spm`:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
cargo install spm-cli
|
|
107
|
+
```
|
|
108
|
+
|
|
104
109
|
**Prebuilt binary** — the repo is **internal**, so release assets require
|
|
105
110
|
authentication. Download with the [GitHub CLI](https://cli.github.com/) (you must
|
|
106
111
|
be signed in via `gh auth login` and be a Camunda org member), then put the binary
|
|
@@ -120,13 +125,6 @@ Assets: `spm-x86_64-unknown-linux-gnu`, `spm-aarch64-unknown-linux-gnu`,
|
|
|
120
125
|
`spm-x86_64-apple-darwin`, `spm-aarch64-apple-darwin`,
|
|
121
126
|
`spm-x86_64-pc-windows-msvc.exe`.
|
|
122
127
|
|
|
123
|
-
**From crates.io** — _not published yet_. The crate name `spm-cli` is reserved
|
|
124
|
-
(the binary is `spm`); once it's published you'll be able to run:
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
cargo install spm-cli
|
|
128
|
-
```
|
|
129
|
-
|
|
130
128
|
**From source:**
|
|
131
129
|
|
|
132
130
|
```bash
|
|
@@ -153,12 +151,18 @@ spm clean # remove generated vendor con
|
|
|
153
151
|
|
|
154
152
|
- **Cross-OS**: shells out to the system `git` (no libgit2 build deps); no symlinks; all paths via `std::path`. Runs on Linux, macOS, Windows.
|
|
155
153
|
- **`SPM_HOME`** overrides the store/vendor root (default `~/.spm`) — used by tests.
|
|
156
|
-
- **Vendor adapters**: adding a target means implementing one `Vendor` trait (`src/vendor/`).
|
|
154
|
+
- **Vendor adapters**: adding a target means implementing one `Vendor` trait (`src/vendor/`). `claude` assembles a plugin-marketplace layout (`marketplace.json` → `plugin.json` → `skills/<name>/SKILL.md`) into the gitignored project-local `.spm/claude/` and points to it; `copilot` copies skills into the gitignored project-local `.agents/skills/spm-managed-skills/`. Both keep their materialized files out of VCS via the shared `src/gitignore.rs` helper.
|
|
157
155
|
|
|
158
156
|
## Development
|
|
159
157
|
|
|
160
158
|
`make check` runs the full CI gate locally (`fmt-check` + `clippy` + `test`).
|
|
161
159
|
|
|
160
|
+
To cut a release, bump the crate version (the single source of truth for
|
|
161
|
+
crates.io, npm, and the GitHub Release) with `make bump` — `PART=patch|minor|major`
|
|
162
|
+
(default `patch`) or `VERSION=X.Y.Z`. Since `main` is protected, `make bump-pr`
|
|
163
|
+
does the bump on a branch and opens the PR for you. See [`RELEASE.md`](RELEASE.md)
|
|
164
|
+
for the full procedure.
|
|
165
|
+
|
|
162
166
|
A **pre-commit hook** (fmt + clippy) installs itself automatically via
|
|
163
167
|
[`cargo-husky`](https://github.com/rhysd/cargo-husky) — just run `cargo test`
|
|
164
168
|
(or `cargo build`) once after cloning and the hook lands in `.git/hooks`. The
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camunda8/spm",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Skill package manager (spm): declare AI skills in ai.json and materialize them for Claude/Copilot.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/camunda/spm-cli#readme",
|
|
@@ -33,10 +33,10 @@
|
|
|
33
33
|
"node": ">=18"
|
|
34
34
|
},
|
|
35
35
|
"optionalDependencies": {
|
|
36
|
-
"@camunda8/spm-linux-x64": "0.1.
|
|
37
|
-
"@camunda8/spm-linux-arm64": "0.1.
|
|
38
|
-
"@camunda8/spm-darwin-x64": "0.1.
|
|
39
|
-
"@camunda8/spm-darwin-arm64": "0.1.
|
|
40
|
-
"@camunda8/spm-win32-x64": "0.1.
|
|
36
|
+
"@camunda8/spm-linux-x64": "0.1.1",
|
|
37
|
+
"@camunda8/spm-linux-arm64": "0.1.1",
|
|
38
|
+
"@camunda8/spm-darwin-x64": "0.1.1",
|
|
39
|
+
"@camunda8/spm-darwin-arm64": "0.1.1",
|
|
40
|
+
"@camunda8/spm-win32-x64": "0.1.1"
|
|
41
41
|
}
|
|
42
42
|
}
|