You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(setup): install via the plugin marketplace flow, not a bare symlink
./setup symlinked the repo into ~/.claude/plugins/idstack. Current Claude
Code (2.1.x) does not discover plugins from bare symlinks — it requires a
marketplace registration — so `claude plugin list` showed nothing and
/idstack:<skill> never appeared in the slash-command picker.
Core fix:
- Add .claude-plugin/marketplace.json — the one-plugin marketplace manifest
the install flow requires (source: "./", repo root).
- setup: Claude branch now runs `claude plugin marketplace add` +
`claude plugin install --scope <user|project>` (both idempotent, so
re-running setup is safe). --local maps to project scope. Detects when
`claude` is missing on PATH and prints manual steps. Removes the now-
vestigial bare symlink from prior installs (only ever a symlink, never a
real dir). Codex branch unchanged.
- bin/idstack-doctor: rewritten to self-locate the repo and check the real
signal — `claude plugin list` for idstack@idstack installed+enabled —
plus the plugin + marketplace manifests. Keeps legacy-conflict detection;
flags the vestigial symlink as an informational note.
- test/smoke-test.sh: $IDSTACK_DIR now self-locates the repo instead of
assuming ~/.claude/plugins/idstack; legacy-conflict checks gate on "no $1
override" instead of the old plugins-dir path. Adds marketplace.json
assertions.
- templates/preamble.md: $_IDSTACK detection no longer falls back to the
removed bare symlink; the last-ditch branch resolves the marketplace
cache dir. Regenerated all 22 skill files (claude + codex).
Docs (README, docs/index.html, CONTRIBUTING, CLAUDE.md): install command
changes from `git clone … ~/.claude/plugins/idstack && …` to
`git clone … && cd idstack && ./setup`; update/troubleshooting text and
the doctor reference updated to match.
Verified: smoke-test 257/257, idstack-doctor OK, ./setup idempotent end
to end, gen-skills --dry-run clean.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -40,7 +40,7 @@ allowed-tools:
40
40
---
41
41
```
42
42
43
-
The bare `name` field becomes the slash-command suffix: `name: course-import` is invoked as `/idstack:course-import`. The plugin layout at `~/.claude/plugins/idstack/` handles the `idstack:` namespace; do not prefix the name yourself.
43
+
The bare `name` field becomes the slash-command suffix: `name: course-import` is invoked as `/idstack:course-import`. The installed plugin handles the `idstack:` namespace; do not prefix the name yourself.
44
44
45
45
**2. `{{PREAMBLE}}` placeholder** — this is replaced by `bin/idstack-gen-skills` with the shared preamble (update check, manifest check, context recovery).
Restart Claude Code if it was already running — plugins load at session start. You should see `/idstack:<skill>` commands in the slash picker.
109
+
`./setup` registers the repo as a Claude Code plugin marketplace and installs it. Restart Claude Code if it was already running — plugins load at session start. You should see `/idstack:<skill>` commands in the slash picker.
110
110
111
111
### Alternative install methods
112
112
@@ -115,7 +115,7 @@ Restart Claude Code if it was already running — plugins load at session start.
115
115
116
116
If you'd rather not touch the terminal, paste this into Claude Code:
117
117
118
-
> Install idstack: run `git clone https://github.com/savvides/idstack.git ~/.claude/plugins/idstack && cd ~/.claude/plugins/idstack && ./setup`, then tell me it's installed and show me the available skills.
118
+
> Install idstack: run `git clone https://github.com/savvides/idstack.git && cd idstack && ./setup`, then tell me it's installed and show me the available skills.
119
119
120
120
Claude clones the repo, runs setup, and confirms the skills are registered.
121
121
</details>
@@ -275,7 +275,7 @@ Any skill works independently. Run `/idstack:pipeline` to chain them all, or inv
Skills are plain Markdown files generated from templates. No build step for users, no dependencies. `./setup` registers the repo as a Claude Code plugin at `~/.claude/plugins/idstack`, which is what gives the namespaced `/idstack:<skill>` commands. Users invoke skills via `/idstack:<skill>`. Each skill reads the shared manifest and session history, runs its evidence-based workflow, writes back its section, and logs the session to the timeline. The pipeline adds context but every skill also works standalone.
278
+
Skills are plain Markdown files generated from templates. No build step for users, no dependencies. `./setup` registers the repo as a Claude Code plugin marketplace and installs it, which is what gives the namespaced `/idstack:<skill>` commands. Users invoke skills via `/idstack:<skill>`. Each skill reads the shared manifest and session history, runs its evidence-based workflow, writes back its section, and logs the session to the timeline. The pipeline adds context but every skill also works standalone.
279
279
280
280
## How it works
281
281
@@ -366,7 +366,7 @@ idstack runs locally on your machine. Course data stays in your project folder (
366
366
You can, but let the skills manage it. If you do edit it, keep the JSON valid.
367
367
368
368
**How do I update idstack?**
369
-
idstack checks for updates when you run any skill. If a newer version is available, you'll see a notification. Update manually: `cd ~/.claude/plugins/idstack && git pull && ./setup`
369
+
idstack checks for updates when you run any skill. If a newer version is available, you'll see a notification. Update manually: `cd <your idstack clone> && git pull && ./setup`
370
370
If you downloaded ZIP: download the latest version and run `./setup` again.
371
371
372
372
**How do I request a feature or report a bug?**
@@ -379,18 +379,18 @@ idstack itself is just text files. But it runs inside Claude Code, which require
379
379
380
380
**Skill not showing up?** Claude Code loads skills at session start. If you installed while Claude Code was running, restart it (close and reopen). If that doesn't help, run setup again:
381
381
```bash
382
-
cd~/.claude/plugins/idstack && ./setup
382
+
cd<your idstack clone>&& ./setup
383
383
```
384
384
385
385
**Can't import a .imscc cartridge?** Make sure the file is a valid ZIP. Try re-exporting from your LMS with "Course" selected (not just content).
386
386
387
387
**Canvas API says "token rejected"?** Generate a fresh token: Canvas -> Account -> Settings -> New Access Token. Tokens expire.
388
388
389
-
**Claude says it can't find idstack skills?** Make sure you've run `./setup` after cloning. Setup registers the repo as a plugin at `~/.claude/plugins/idstack` so Claude Code discovers the namespaced `/idstack:<skill>` commands. Restart Claude Code after install — plugins load at session start.
389
+
**Claude says it can't find idstack skills?** Make sure you've run `./setup` after cloning. Setup registers the repo as a plugin marketplace and installs it so Claude Code discovers the namespaced `/idstack:<skill>` commands. Restart Claude Code after install — plugins load at session start.
390
390
391
-
**Upgrading from v2.0?** v2.0 installed under `~/.claude/skills/idstack`, which only exposed `/idstack` (the dispatcher) — never the 11 namespaced sub-skills. Re-clone to the new location: `git clone https://github.com/savvides/idstack.git ~/.claude/plugins/idstack && cd ~/.claude/plugins/idstack && ./setup`. Setup now detects and removes any pre-v2.0.1.0 install at `~/.claude/skills/idstack` (symlink *or* real directory). If you ran an older setup that only warned, run `./setup` once more — or remove it manually with `rm -rf ~/.claude/skills/idstack`.
391
+
**Upgrading from v2.0?** v2.0 installed under `~/.claude/skills/idstack`, which only exposed `/idstack` (the dispatcher) — never the 11 namespaced sub-skills. Clone fresh and run setup: `git clone https://github.com/savvides/idstack.git && cd idstack && ./setup`. Setup now detects and removes any pre-v2.0.1.0 install at `~/.claude/skills/idstack` (symlink *or* real directory). If you ran an older setup that only warned, run `./setup` once more — or remove it manually with `rm -rf ~/.claude/skills/idstack`.
392
392
393
-
**`/idstack:<skill>` won't autocomplete or returns "Unknown skill"?** Run `bin/idstack-doctor` from the plugin dir (`~/.claude/plugins/idstack`). It checks plugin presence, manifest version, all 11 SKILL.md files, and detects legacy-install conflicts — printing the exact remediation command for whatever it finds.
393
+
**`/idstack:<skill>` won't autocomplete or returns "Unknown skill"?** Run `bin/idstack-doctor` from your idstack clone. It checks the plugin + marketplace manifests, the Claude Code install state, all 11 SKILL.md files, and detects legacy-install conflicts — printing the exact remediation command for whatever it finds.
0 commit comments