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 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).