@descent-vtt/spec-brief 0.5.0 → 0.5.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/CHANGELOG.md +22 -0
- package/README.md +25 -7
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,28 @@ release that can turn a run red. This is the family's policy, recorded in
|
|
|
11
11
|
releases up to 0.2.7 came before it, and several of their patches changed
|
|
12
12
|
what a run reports.
|
|
13
13
|
|
|
14
|
+
## 0.5.1
|
|
15
|
+
|
|
16
|
+
The README's commands gave `npx` the command's bare name, which on npm is
|
|
17
|
+
not this project's package. spec-brief itself is unchanged.
|
|
18
|
+
|
|
19
|
+
### Security
|
|
20
|
+
|
|
21
|
+
- Every command in the README gives `npx` the package's full name behind
|
|
22
|
+
`--no-install`, as in `npx --no-install @descent-vtt/spec-brief ...`.
|
|
23
|
+
`spec-brief` without the scope belongs to nobody on npm (2026-10-07), so
|
|
24
|
+
anyone can register it.
|
|
25
|
+
`npx` given a name the project has not installed fetches the package of
|
|
26
|
+
that name and runs it, unasked when no terminal is attached: a fresh
|
|
27
|
+
clone, a worktree before `npm ci`, a CI job with no install step.
|
|
28
|
+
The CI examples install first, and [Names](README.md#names) says whose the
|
|
29
|
+
names are; what was measured is in the family's
|
|
30
|
+
[adopting guide](https://github.com/DescentVTT/spec-core/blob/main/docs/adopting.md#names).
|
|
31
|
+
Upgrading: where a CI job or a script gives `npx` the command's name
|
|
32
|
+
alone, write `npx --no-install @descent-vtt/spec-brief`. `--no-install`
|
|
33
|
+
before the bare name is not enough: npm still runs a copy of that name's
|
|
34
|
+
package an earlier fetch left in its cache.
|
|
35
|
+
|
|
14
36
|
## 0.5.0
|
|
15
37
|
|
|
16
38
|
Five defects a reading of every surviving mutant found, none of which a test
|
package/README.md
CHANGED
|
@@ -8,11 +8,23 @@ spec-brief is one of the [spec-\* tools](https://github.com/DescentVTT/spec-core
|
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
npm install --save-dev @descent-vtt/spec-brief
|
|
11
|
-
npx spec-brief init
|
|
12
|
-
npx spec-brief new "Rotate session tokens on privilege change" --wave 1
|
|
13
|
-
npx spec-brief lint
|
|
11
|
+
npx --no-install @descent-vtt/spec-brief init
|
|
12
|
+
npx --no-install @descent-vtt/spec-brief new "Rotate session tokens on privilege change" --wave 1
|
|
13
|
+
npx --no-install @descent-vtt/spec-brief lint
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
+
## Names
|
|
17
|
+
|
|
18
|
+
The package is `@descent-vtt/spec-brief`, and the command it installs is `spec-brief`. The name without the scope is not this project: on npm, `spec-brief` belonged to nobody on 2026-10-07, and whoever registers it decides what it runs.
|
|
19
|
+
|
|
20
|
+
`npx` fetches and runs the package of whatever name it is given when the project has none installed - a fresh clone, a worktree before `npm ci`, a CI job without the install step - and without a terminal it does not ask first. So give `npx` the full name:
|
|
21
|
+
|
|
22
|
+
- `npx --no-install @descent-vtt/spec-brief` in a project that installed it: it runs that install, the version the lockfile pins, and where there is none it stops with an error that names this package.
|
|
23
|
+
- `npx @descent-vtt/spec-brief`, without `--no-install`, where nothing is installed: it fetches this package and runs it.
|
|
24
|
+
|
|
25
|
+
<!-- bare-name: the two forms in the next sentence are shown as what not to write -->
|
|
26
|
+
Never `npx spec-brief`, and not `npx --no-install spec-brief` either: `--no-install` stops a download, and npm still runs a copy of the bare name's package that an earlier fetch left in its cache. A `package.json` script names the command alone, as in `"briefs": "spec-brief lint"`, because npm fetches nothing for a script. The family's [adopting guide](https://github.com/DescentVTT/spec-core/blob/main/docs/adopting.md#names) has what was measured, under npm 10, 11 and 12.
|
|
27
|
+
|
|
16
28
|
## Why
|
|
17
29
|
|
|
18
30
|
Repositories that run agents on briefs end up doing the same ceremony by hand, and getting it wrong in the same places:
|
|
@@ -357,12 +369,16 @@ How a heading fills a section, and what counts as a heading, a task or a link, i
|
|
|
357
369
|
|
|
358
370
|
## In CI
|
|
359
371
|
|
|
372
|
+
After the job has installed the project, with `npm ci`:
|
|
373
|
+
|
|
360
374
|
```yaml
|
|
361
|
-
- run: npx spec-brief lint --format github
|
|
362
|
-
- run: npx spec-brief matrix --format github
|
|
363
|
-
- run: npx spec-brief schedule --format github
|
|
375
|
+
- run: npx --no-install @descent-vtt/spec-brief lint --format github
|
|
376
|
+
- run: npx --no-install @descent-vtt/spec-brief matrix --format github
|
|
377
|
+
- run: npx --no-install @descent-vtt/spec-brief schedule --format github
|
|
364
378
|
```
|
|
365
379
|
|
|
380
|
+
Each gives `npx` the package's [full name](#names) and `--no-install`: a job that lost its install step then stops, where the command's name alone would fetch whatever package has that name.
|
|
381
|
+
|
|
366
382
|
| Format | What it writes |
|
|
367
383
|
| --- | --- |
|
|
368
384
|
| `github` | Workflow commands, which annotate the pull request with no upload and no permission. |
|
|
@@ -372,7 +388,9 @@ How a heading fills a section, and what counts as a heading, a task or a link, i
|
|
|
372
388
|
|
|
373
389
|
```yaml
|
|
374
390
|
spec-brief:
|
|
375
|
-
script:
|
|
391
|
+
script:
|
|
392
|
+
- npm ci
|
|
393
|
+
- npx --no-install @descent-vtt/spec-brief lint --format gitlab > gl-code-quality.json
|
|
376
394
|
artifacts:
|
|
377
395
|
reports:
|
|
378
396
|
codequality: gl-code-quality.json
|
package/package.json
CHANGED