Stop publishing the repo as a plugin marketplace, and refresh the run skill
Three small things. Removed `.claude-plugin/marketplace.json`. It is the file `/plugin marketplace add` reads, so without it this repo no longer offers itself as a marketplace — which is the odd part of an Angular app carrying one. The caveman plugin's own files stay, so it can be listed from a marketplace of its own later; only the listing is gone. That left four documents asserting an install path that no longer exists, including a README section handing out `/plugin marketplace add` and `/plugin install` commands that would now fail. All four now say what is actually true. `.junie/plans/nasa-star-map.md` still describes the repo as containing only a marketplace, and is left alone: it records what was here before the app was written, and is not a claim about the present. The run skill's numbers had drifted a release behind — 496 tests in 28 files against a real 527 in 31, and a build timed at 9s that now takes 12. Measured rather than guessed. The pinned Playwright version it names was correct. It also gains the Pages build, which is not a plain `npm run build`: the base href and the 404.html copy are both required for a project site, and the artifact root is `dist/star-map/browser` rather than its parent. Plus the matching gotcha, since a Pages build served at `/` looks broken in a way that tells you nothing about whether it would work. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WaySiNst4HhDXBHnMy8p5G
This commit is contained in:
@@ -1,28 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "star-map",
|
|
||||||
"owner": {
|
|
||||||
"name": "avalon-vanguard",
|
|
||||||
"url": "https://github.com/avalon-vanguard"
|
|
||||||
},
|
|
||||||
"description": "Personal marketplace of cs:* Claude Code commands, agents, and skills.",
|
|
||||||
"plugins": [
|
|
||||||
{
|
|
||||||
"name": "caveman",
|
|
||||||
"source": "./",
|
|
||||||
"description": "Ultra-compressed communication mode. Cuts token usage ~75% by dropping filler, articles, and pleasantries while keeping full technical accuracy. Adds a cs-caveman-mode persona agent, /cs:caveman slash command, and stdlib Python tooling (compressor, token-savings estimator, lint) on top of Matt Pocock's MIT-licensed caveman skill.",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"author": {
|
|
||||||
"name": "avalon-vanguard",
|
|
||||||
"url": "https://github.com/avalon-vanguard"
|
|
||||||
},
|
|
||||||
"license": "MIT",
|
|
||||||
"keywords": [
|
|
||||||
"caveman",
|
|
||||||
"communication",
|
|
||||||
"tokens",
|
|
||||||
"productivity"
|
|
||||||
],
|
|
||||||
"category": "productivity"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -130,15 +130,38 @@ already-running server and leaves it alone on exit).
|
|||||||
## Test
|
## Test
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
PATH=/opt/node/bin:$PATH npm test # 496 tests, 28 files, ~5s
|
PATH=/opt/node/bin:$PATH npm test # 527 tests, 31 files, ~6s
|
||||||
PATH=/opt/node/bin:$PATH npm run build # ~9s
|
PATH=/opt/node/bin:$PATH npm run build # ~12s
|
||||||
PATH=/opt/node/bin:$PATH npm run etl:typecheck
|
PATH=/opt/node/bin:$PATH npm run etl:typecheck
|
||||||
PATH=/opt/node/bin:$PATH npm run e2e:typecheck
|
PATH=/opt/node/bin:$PATH npm run e2e:typecheck
|
||||||
PATH=/opt/node/bin:$PATH npm run e2e -- --workers=1 # 6 tests, ~2.3m
|
PATH=/opt/node/bin:$PATH npm run e2e -- --workers=1 # 6 tests, 3 files, ~2.3m
|
||||||
```
|
```
|
||||||
|
|
||||||
`--workers=1` on the e2e suite is **not optional here** — see Gotchas.
|
`--workers=1` on the e2e suite is **not optional here** — see Gotchas.
|
||||||
|
|
||||||
|
## Build for GitHub Pages
|
||||||
|
|
||||||
|
`.github/workflows/pages.yml` publishes the app on a push to `main`. To reproduce what it builds:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export PATH=/opt/node/bin:$PATH
|
||||||
|
npm run build -- --base-href "/star-map/"
|
||||||
|
cp dist/star-map/browser/index.html dist/star-map/browser/404.html
|
||||||
|
```
|
||||||
|
|
||||||
|
Two things differ from a plain `npm run build`, and both exist because a project site is served
|
||||||
|
from a subdirectory rather than a domain root:
|
||||||
|
|
||||||
|
- **`--base-href`.** `DataLoaderService` fetches its catalogues with relative URLs
|
||||||
|
(`assets/data/stars.bin`), which resolve against `<base>` rather than the current path. Get it
|
||||||
|
wrong and a deep link asks for `/body/assets/data/stars.bin`. The workflow derives it from the
|
||||||
|
repository name so a rename cannot strand it.
|
||||||
|
- **`404.html`.** Pages has no rewrite rules, so `/body/mars` has no file behind it. Serving the
|
||||||
|
app as the 404 body lets the router render the route. The response stays HTTP 404.
|
||||||
|
|
||||||
|
The uploaded artifact is `dist/star-map/browser`, **not** `dist/star-map` — the parent also holds
|
||||||
|
`3rdpartylicenses.txt` and `prerendered-routes.json`, which are not part of the site.
|
||||||
|
|
||||||
## Gotchas
|
## Gotchas
|
||||||
|
|
||||||
- **The wrong Node is first on `PATH`.** `/opt/node22` is v22.22.2; `/opt/node` is v22.23.2.
|
- **The wrong Node is first on `PATH`.** `/opt/node22` is v22.22.2; `/opt/node` is v22.23.2.
|
||||||
@@ -172,6 +195,10 @@ PATH=/opt/node/bin:$PATH npm run e2e -- --workers=1 # 6 tests, ~2.3m
|
|||||||
view) to see Mercury/Venus/Earth/Mars labelled.
|
view) to see Mercury/Venus/Earth/Mars labelled.
|
||||||
- **Port 4300, not Angular's usual 4200** — the project's own convention, set in
|
- **Port 4300, not Angular's usual 4200** — the project's own convention, set in
|
||||||
`playwright.config.ts` so it never collides with an unrelated `ng serve`.
|
`playwright.config.ts` so it never collides with an unrelated `ng serve`.
|
||||||
|
- **A Pages build looks broken if you serve it at the root.** `<base href="/star-map/">` makes
|
||||||
|
every asset resolve under that prefix, so opening `dist/star-map/browser` at `/` gets you a
|
||||||
|
blank page and a wall of 404s. Serve it under the same prefix as Pages does, with unknown paths
|
||||||
|
falling back to `404.html`, or the check tells you nothing.
|
||||||
- **Don't write driver scripts in `.ts` outside the repo.** `tsx` compiles a bare `.ts` as CJS
|
- **Don't write driver scripts in `.ts` outside the repo.** `tsx` compiles a bare `.ts` as CJS
|
||||||
("Top-level await is currently not supported with the cjs output format"), and a script outside
|
("Top-level await is currently not supported with the cjs output format"), and a script outside
|
||||||
the repo can't resolve `@playwright/test` at all. The driver is `.mjs` inside the repo for both
|
the repo can't resolve `@playwright/test` at all. The driver is `.mjs` inside the repo for both
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ real astronomical data instead of fictional systems. Browse the solar neighbourh
|
|||||||
star's system to see its planets on their real orbits, and drill into a single body for the
|
star's system to see its planets on their real orbits, and drill into a single body for the
|
||||||
NASA figures behind it.
|
NASA figures behind it.
|
||||||
|
|
||||||
This repo also hosts a small Claude Code plugin marketplace — see [Plugins](#plugins) below.
|
The source of a small Claude Code plugin also lives here — see [Plugins](#plugins) below.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -290,27 +290,10 @@ The design document behind all of this is `.junie/plans/nasa-star-map.md`.
|
|||||||
|
|
||||||
## Plugins
|
## Plugins
|
||||||
|
|
||||||
This repo doubles as a Claude Code plugin marketplace. Adding it and installing a plugin
|
This repo carries the source of one Claude Code plugin, but no longer publishes itself as a
|
||||||
defaults to **user scope**, meaning the plugin becomes available in *every* project on your
|
marketplace — `.claude-plugin/marketplace.json` was removed, which is the file `/plugin
|
||||||
machine, not just the one you happen to be in:
|
marketplace add` reads. So there is currently no install path from here; the manifest and the
|
||||||
|
plugin's own files are kept so it can be listed from a marketplace of its own later.
|
||||||
```bash
|
|
||||||
/plugin marketplace add avalon-vanguard/star-map
|
|
||||||
/plugin install caveman@star-map
|
|
||||||
```
|
|
||||||
|
|
||||||
Scope can be overridden at install time if you want it tied to a single repo instead:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Shared with collaborators via that repo's .claude/settings.json
|
|
||||||
/plugin install caveman@star-map --scope project
|
|
||||||
|
|
||||||
# Just for you, in that one repo only (gitignored)
|
|
||||||
/plugin install caveman@star-map --scope local
|
|
||||||
```
|
|
||||||
|
|
||||||
See [Claude Code plugin installation scopes](https://code.claude.com/docs/en/plugins-reference)
|
|
||||||
for details on `user` / `project` / `local` scope.
|
|
||||||
|
|
||||||
- **caveman** — `/cs:caveman` ultra-compressed communication mode.
|
- **caveman** — `/cs:caveman` ultra-compressed communication mode.
|
||||||
- Command: [`commands/cs/caveman.md`](commands/cs/caveman.md)
|
- Command: [`commands/cs/caveman.md`](commands/cs/caveman.md)
|
||||||
|
|||||||
@@ -18,10 +18,9 @@ turns until explicit deactivation.
|
|||||||
|
|
||||||
## Scope
|
## Scope
|
||||||
|
|
||||||
Ships as part of this repo's plugin marketplace. Installing it via
|
Part of the caveman plugin, whose source lives here. This repo no longer
|
||||||
`/plugin install caveman@star-map` defaults to **user scope**, so this
|
publishes itself as a plugin marketplace, so the agent is not installable
|
||||||
agent is available in every project, not scoped to a single repo. See the
|
from it as things stand. See the [README](../README.md).
|
||||||
[README](../README.md) for `--scope project` / `--scope local` overrides.
|
|
||||||
|
|
||||||
## Activation Triggers
|
## Activation Triggers
|
||||||
|
|
||||||
|
|||||||
@@ -11,12 +11,9 @@ Activate caveman mode. Stays active until explicit deactivation.
|
|||||||
|
|
||||||
## Scope
|
## Scope
|
||||||
|
|
||||||
Installed via this repo's plugin marketplace, this command defaults to
|
Part of the caveman plugin, whose source lives here. This repo no longer
|
||||||
**user scope** — available in every project, not just the one it was
|
publishes itself as a plugin marketplace, so the command is not installable
|
||||||
installed from. Override with `--scope project` (shared with collaborators
|
from it as things stand. See the [README](../../README.md).
|
||||||
via `.claude/settings.json`) or `--scope local` (gitignored, this repo
|
|
||||||
only) if you want it scoped down. See the [README](../../README.md) for
|
|
||||||
install commands.
|
|
||||||
|
|
||||||
## Activation
|
## Activation
|
||||||
|
|
||||||
|
|||||||
@@ -15,12 +15,10 @@ exactly as-is.
|
|||||||
|
|
||||||
## Scope
|
## Scope
|
||||||
|
|
||||||
This skill ships via this repo's plugin marketplace
|
This repo no longer publishes itself as a plugin marketplace, so there is
|
||||||
(`.claude-plugin/marketplace.json`). Installing with
|
currently no install path for this skill from here. Listing it from a
|
||||||
`/plugin install caveman@star-map` defaults to **user scope** — global,
|
marketplace elsewhere is what would make `/plugin install` work again; see
|
||||||
available in every project — instead of being tied to just one repo. Use
|
the [README](../../README.md).
|
||||||
`--scope project` or `--scope local` to narrow it; see the
|
|
||||||
[README](../../README.md).
|
|
||||||
|
|
||||||
## Persistence
|
## Persistence
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user