skissue 0.1.11
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 +132 -0
- package/dist/entry.js +1127 -0
- package/package.json +75 -0
- package/scripts/INDEX.md +10 -0
- package/scripts/ensure-local-bin.mjs +32 -0
- package/scripts/install.sh +33 -0
package/README.md
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# skissue
|
|
2
|
+
|
|
3
|
+
CLI to **install and sync agent skills** from a **GitHub registry** or a **local directory** (e.g. a monorepo whose root contains **`registry/`** and **`registry.json`**). On the **consumer**, skills are installed under **`skillsRoot`** (default **`.agents/skills/<skill-id>/`**, each with **`SKILL.md`**). Configuration and lock state live under **`.skill-issue/`** (committable; no secrets).
|
|
4
|
+
|
|
5
|
+
**This repository** contains the **CLI** (`src/`) and a **harness** (`harness/`) — TypeScript checks for this repo's docs, indexes, and `src/` layout. The **hosted skill catalog** (`registry.json` + `registry/<skill-id>/`) lives in the separate **skill-registry** repository. **`.agents/`** holds **agent rules** and mirrored skill docs for this repo only — it is **not** the installable registry.
|
|
6
|
+
|
|
7
|
+
## Structure
|
|
8
|
+
|
|
9
|
+
| Path | Role |
|
|
10
|
+
| ---------------------- | ---------------------------------------------------------------------------------------------- |
|
|
11
|
+
| [AGENTS.md](AGENTS.md) | Agent entry point |
|
|
12
|
+
| [harness/](harness/) | CI checks (`harness/runner.ts`, `npm run check:all`); see [harness/INDEX.md](harness/INDEX.md) |
|
|
13
|
+
| [.agents/](.agents/) | Rules for maintaining this repo (not the skill-registry payload) |
|
|
14
|
+
| [docs/](docs/) | Harness (`HARNESS.md`), architecture (`ARCHITECTURE.md`), INDEX format |
|
|
15
|
+
| [src/](src/) | skissue CLI source |
|
|
16
|
+
| [scripts/](scripts/) | `install.sh` for global install from a clone |
|
|
17
|
+
|
|
18
|
+
## Requirements
|
|
19
|
+
|
|
20
|
+
- **Node** 24+ (see `.nvmrc`)
|
|
21
|
+
- **git** on your `PATH`
|
|
22
|
+
- For **remote** registries: access via **`GITHUB_TOKEN`** / **`GH_TOKEN`**, or **git credentials** / **`gh auth`**. **Local** registries need no network auth.
|
|
23
|
+
|
|
24
|
+
## Install the CLI
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx skissue --help
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Or install globally:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npm install -g skissue
|
|
34
|
+
skissue --help
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
With no arguments, **`npx skissue`** runs interactive **setup** (`.skill-issue/config.yaml`) if needed, then opens the **manage** menu to install or remove skills.
|
|
38
|
+
|
|
39
|
+
### From source
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
git clone https://github.com/midyan/skill-issue.git
|
|
43
|
+
cd skill-issue
|
|
44
|
+
npm install
|
|
45
|
+
npm run build
|
|
46
|
+
node dist/entry.js --help
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Automated publish (CI):**
|
|
50
|
+
|
|
51
|
+
1. **Pull requests:** [`.github/workflows/ci.yml`](.github/workflows/ci.yml) runs **`npm run verify`** (TypeScript, ESLint, Prettier, tests, harness, build).
|
|
52
|
+
2. **Push to `main`:** Same **verify** runs unless the commit message contains **`[skip ci]`** (used by the automated version bump so the full suite does not run twice for that commit).
|
|
53
|
+
3. When **CI succeeds** after a push to **`main`**, [`.github/workflows/version-and-release.yml`](.github/workflows/version-and-release.yml) bumps the **patch** version, commits to **`main`** with **`[skip ci]`**, then creates a **GitHub Release** and tag **`v<version>`**. That tag triggers [`.github/workflows/publish.yml`](.github/workflows/publish.yml) to **`npm publish --provenance --access public`** to the public npm registry.
|
|
54
|
+
|
|
55
|
+
**Branch protection:** `GITHUB_TOKEN` must be allowed to **push to `main`** and create releases (or use a PAT with `contents: write` stored as a secret). If publish fails after the tag exists, **re-run** the publish workflow or use **workflow dispatch** with the tag (e.g. `v0.1.0`).
|
|
56
|
+
|
|
57
|
+
## Quick start
|
|
58
|
+
|
|
59
|
+
### Consumer project + GitHub registry
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
cd your-consumer-repo
|
|
63
|
+
skissue init # choose "GitHub" and enter owner/repo
|
|
64
|
+
skissue install skill-issue
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Local skill-registry checkout
|
|
68
|
+
|
|
69
|
+
Point **`registry.path`** at a clone of **skill-registry** (or another repo whose root has **`registry.json`** and **`registry/`**):
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
cd /path/to/your-consumer
|
|
73
|
+
npm run dev -- init # choose "Local directory", path ../skill-registry
|
|
74
|
+
skissue install skill-issue
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
`registry.path` is **relative to the consumer project root** (where `.skill-issue/` lives). The local registry must be a **git** checkout so `HEAD` can be stored in the lockfile.
|
|
78
|
+
|
|
79
|
+
`init` writes `.skill-issue/config.yaml` (either **`registry.path`** or **`registry.owner` / `registry.repo`**, optional **`registry.useSsh`**, branch, and skills root). `install` resolves the path from **`registry.json`** (or **`registry/<id>`** by convention), copies into **`skillsRoot/<id>/`**, and updates **`.skill-issue/lock.json`**.
|
|
80
|
+
|
|
81
|
+
**Remote transport (auto):** if **`registry.useSsh`** is omitted, the CLI uses **SSH** (`git@github.com:…`) when **`GITHUB_TOKEN` / `GH_TOKEN` are unset** (typical laptop with GitHub SSH keys), and **HTTPS with a token** when a token is set (CI). Set **`registry.useSsh: true`** or **`false`** to force SSH or HTTPS.
|
|
82
|
+
|
|
83
|
+
## Environment
|
|
84
|
+
|
|
85
|
+
| Variable | Purpose |
|
|
86
|
+
| -------------- | ----------------------------------------------------------------------------------- |
|
|
87
|
+
| `GITHUB_TOKEN` | HTTPS auth when the resolved transport is HTTPS (e.g. CI, or auto when this is set) |
|
|
88
|
+
| `GH_TOKEN` | Same as above if `GITHUB_TOKEN` is unset |
|
|
89
|
+
|
|
90
|
+
Do not put tokens in `config.yaml`; keep them in the environment or credential helper.
|
|
91
|
+
|
|
92
|
+
## Registry layout (in the registry repo)
|
|
93
|
+
|
|
94
|
+
- **`registry.json`** at the **repository root** maps skill ids to paths (typically under **`registry/`**):
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"skills": {
|
|
99
|
+
"my-skill": "registry/my-skill"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
- If `registry.json` is missing or does not list an id, the convention **`registry/<id>/`** is used.
|
|
105
|
+
|
|
106
|
+
## Commands
|
|
107
|
+
|
|
108
|
+
| Command | Description |
|
|
109
|
+
| ------------------------ | ------------------------------------------------- |
|
|
110
|
+
| `skissue init` | Create config interactively |
|
|
111
|
+
| `skissue install <id>` | Install skill at registry branch tip; update lock |
|
|
112
|
+
| `skissue uninstall <id>` | Remove install dir and lock entry |
|
|
113
|
+
| `skissue list` | Show installed ids and lock metadata |
|
|
114
|
+
| `skissue manage` | Interactive menu to install or uninstall skills |
|
|
115
|
+
| `skissue outdated` | Compare locked commit vs current branch path diff |
|
|
116
|
+
| `skissue update [id]` | Re-install from registry |
|
|
117
|
+
| `skissue doctor` | Check Node, config, `git ls-remote` |
|
|
118
|
+
|
|
119
|
+
`manage` is also available as `skissue browse`.
|
|
120
|
+
|
|
121
|
+
### Interactive
|
|
122
|
+
|
|
123
|
+
After `init`, run `skissue manage` (or `browse`) to see registry skills vs installed skills and batch install or uninstall with prompts. Non-interactive `install` / `uninstall` remain for scripts.
|
|
124
|
+
|
|
125
|
+
## Development
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
npm install # installs deps and runs `prepare` — enables Husky git hooks
|
|
129
|
+
npm run verify
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**`npm run verify`** runs TypeScript (`tsc --noEmit`), ESLint, Prettier check, Vitest, **`npm run check:all`** ( **`harness/runner.ts`** — each **`harness/<id>/hard/index.ts`** without **`hard/.no-auto-run`** ), then **`npm run build`**. The same pipeline runs on **`git commit`** via **`.husky/pre-commit`** (skip with **`git commit --no-verify`** if needed). See [harness/SKILL.md](harness/SKILL.md), [harness/repo-verify/SKILL.md](harness/repo-verify/SKILL.md), and [docs/HARNESS.md](docs/HARNESS.md).
|