@andresmassello/uscha 2.8.0 → 2.9.0
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 +1 -1
- package/package.json +1 -1
- package/uscha-kit/.claude/skills/uscha-adr-refine/SKILL.md +1 -1
- package/uscha-kit/.claude/skills/uscha-characterize/SKILL.md +1 -1
- package/uscha-kit/.claude/skills/uscha-devloop/SKILL.md +1 -1
- package/uscha-kit/.claude/skills/uscha-discovery/SKILL.md +1 -1
- package/uscha-kit/.claude/skills/uscha-mirador/SKILL.md +1 -1
- package/uscha-kit/.claude/skills/uscha-reverse-discovery/SKILL.md +1 -1
- package/uscha-kit/.claude/skills/uscha-rubric/SKILL.md +1 -1
- package/uscha-kit/.claude/skills/uscha-status/SKILL.md +1 -1
- package/uscha-kit/.claude/skills/uscha-sysdoc/SKILL.md +1 -1
- package/uscha-kit/.claude-plugin/plugin.json +1 -1
- package/uscha-kit/.codex-plugin/plugin.json +1 -1
- package/uscha-kit/README.md +16 -12
- package/uscha-kit/VERSION +1 -1
- package/uscha-kit/skills/uscha-adr-refine/SKILL.md +1 -1
- package/uscha-kit/skills/uscha-characterize/SKILL.md +1 -1
- package/uscha-kit/skills/uscha-devloop/SKILL.md +1 -1
- package/uscha-kit/skills/uscha-discovery/SKILL.md +1 -1
- package/uscha-kit/skills/uscha-mirador/SKILL.md +1 -1
- package/uscha-kit/skills/uscha-reverse-discovery/SKILL.md +1 -1
- package/uscha-kit/skills/uscha-rubric/SKILL.md +1 -1
- package/uscha-kit/skills/uscha-status/SKILL.md +1 -1
- package/uscha-kit/skills/uscha-sysdoc/SKILL.md +1 -1
- package/uscha-kit/uscha.config.json +1 -1
package/README.md
CHANGED
|
@@ -56,7 +56,7 @@ binary on PATH reads "binary found, not wired into Claude". The MCP check reads
|
|
|
56
56
|
configuration, for `--target codex` too. It only reports: it installs nothing, asks nothing and
|
|
57
57
|
runs none of the commands it prints, and it never changes an exit code.
|
|
58
58
|
|
|
59
|
-
**Kit v2.
|
|
59
|
+
**Kit v2.9.0** <!-- uscha:version --> · [uscha.dev](https://uscha.dev) ·
|
|
60
60
|
[changelog](https://github.com/andresmassello/uscha/blob/main/uscha-kit/CHANGELOG.md)
|
|
61
61
|
(the per-release changelogs live in the repo, not in the npm tarball)
|
|
62
62
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andresmassello/uscha",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"description": "Spec-driven development for LLM coding agents: 9 skills + a stdlib evidence engine. Facts block, guesses advise; the human approves.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Andres Massello",
|
|
@@ -19,7 +19,7 @@ phases. **You are NOT a generator. You are an interrogator that distills.** The
|
|
|
19
19
|
is in the questions, not in agreeing.
|
|
20
20
|
|
|
21
21
|
<!-- uscha:orientation-block:begin -->
|
|
22
|
-
<!-- uscha kit: 2.
|
|
22
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
23
23
|
|
|
24
24
|
## First contact (show ONCE, then never again)
|
|
25
25
|
|
|
@@ -19,7 +19,7 @@ what the code DOES, mechanically, by running it — never what it should do.** Y
|
|
|
19
19
|
the capture harness; you may NOT create, rename, or edit any `.approved` file.
|
|
20
20
|
|
|
21
21
|
<!-- uscha:orientation-block:begin -->
|
|
22
|
-
<!-- uscha kit: 2.
|
|
22
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
23
23
|
|
|
24
24
|
## First contact (show ONCE, then never again)
|
|
25
25
|
|
|
@@ -27,7 +27,7 @@ artifacts; these can block) and **self-reported** agent counts (log-step — nar
|
|
|
27
27
|
recorded for the retrospective; a measured red always overrides a narrated green).
|
|
28
28
|
|
|
29
29
|
<!-- uscha:orientation-block:begin -->
|
|
30
|
-
<!-- uscha kit: 2.
|
|
30
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
31
31
|
|
|
32
32
|
## First contact (show ONCE, then never again)
|
|
33
33
|
|
|
@@ -19,7 +19,7 @@ shape.** Your job is to interrogate until there is a shared system shape, and to
|
|
|
19
19
|
the documents as you go — not to ask the human to design the system for you.
|
|
20
20
|
|
|
21
21
|
<!-- uscha:orientation-block:begin -->
|
|
22
|
-
<!-- uscha kit: 2.
|
|
22
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
23
23
|
|
|
24
24
|
## First contact (show ONCE, then never again)
|
|
25
25
|
|
|
@@ -18,7 +18,7 @@ Paints the REAL state of the project at a glance. It does not narrate or estimat
|
|
|
18
18
|
wires the JSON the engine emits into the template. Read-only.
|
|
19
19
|
|
|
20
20
|
<!-- uscha:orientation-block:begin -->
|
|
21
|
-
<!-- uscha kit: 2.
|
|
21
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
22
22
|
|
|
23
23
|
## Orientation markers (non-negotiable)
|
|
24
24
|
|
|
@@ -24,7 +24,7 @@ evidence-classed, content-addressed, and promoted to the contract only by a per-
|
|
|
24
24
|
human verdict (ADR-013).**
|
|
25
25
|
|
|
26
26
|
<!-- uscha:orientation-block:begin -->
|
|
27
|
-
<!-- uscha kit: 2.
|
|
27
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
28
28
|
|
|
29
29
|
## First contact (show ONCE, then never again)
|
|
30
30
|
|
|
@@ -22,7 +22,7 @@ the grader — this skill just wraps the neutral prompt so Claude Code users get
|
|
|
22
22
|
in one command. Never add Claude-specific behavior to the contract.
|
|
23
23
|
|
|
24
24
|
<!-- uscha:orientation-block:begin -->
|
|
25
|
-
<!-- uscha kit: 2.
|
|
25
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
26
26
|
|
|
27
27
|
## First contact (show ONCE, then never again)
|
|
28
28
|
|
|
@@ -58,7 +58,7 @@ that surface the warning cannot come from the skill itself. The `doctor` seam is
|
|
|
58
58
|
that still works there — it runs from any kit checkout and reads the installs from outside.
|
|
59
59
|
|
|
60
60
|
<!-- uscha:orientation-block:begin -->
|
|
61
|
-
<!-- uscha kit: 2.
|
|
61
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
62
62
|
|
|
63
63
|
## Orientation markers (non-negotiable)
|
|
64
64
|
|
|
@@ -22,7 +22,7 @@ switch between at any time:
|
|
|
22
22
|
coverage, known deferred issues.
|
|
23
23
|
|
|
24
24
|
<!-- uscha:orientation-block:begin -->
|
|
25
|
-
<!-- uscha kit: 2.
|
|
25
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
26
26
|
|
|
27
27
|
## First contact (show ONCE, then never again)
|
|
28
28
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
3
|
"name": "uscha",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.9.0",
|
|
5
5
|
"displayName": "Uscha",
|
|
6
6
|
"description": "Spec-driven development for LLM coding agents: 9 skills (discovery, adr-refine, reverse-discovery, characterize, devloop, sysdoc, rubric, mirador, status) + a stdlib measurement engine (qa_ledger.py, 57 subcommands + universal installer + npm/npx router). Facts block, guesses advise; the human approves.",
|
|
7
7
|
"author": {
|
package/uscha-kit/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# uscha-kit
|
|
2
2
|
|
|
3
|
-
**Kit version:** v2.
|
|
3
|
+
**Kit version:** v2.9.0 <!-- uscha:version --> · **[uscha.dev](https://uscha.dev)**
|
|
4
4
|
|
|
5
5
|
Spec-driven orchestrator + multi-repo QA for Claude Code, with a deterministic ledger.
|
|
6
6
|
**Nine skills** (`uscha-discovery`, `uscha-adr-refine`, `uscha-devloop`, `uscha-sysdoc`, `uscha-reverse-discovery`,
|
|
@@ -939,22 +939,26 @@ refuses it. `--kind ci` (2.2.0) records what the pipeline did, with `--ref <run
|
|
|
939
939
|
stored on the record as the receipt; a `ci` fail caps and blocks exactly like `gate-check`. A CONSTITUTION violation is recorded with `flag-blocker` (same
|
|
940
940
|
effect, until `--resolve`).
|
|
941
941
|
|
|
942
|
-
## Testing the kit — the smoke suite,
|
|
942
|
+
## Testing the kit — the smoke suite, parallel by default (ADR-053, ADR-054)
|
|
943
943
|
|
|
944
944
|
The kit's own regression suite lives in the source repo (`uscha-kit/tests/`, not in the npm
|
|
945
945
|
package). Run it from the repo root:
|
|
946
946
|
|
|
947
947
|
```bash
|
|
948
|
-
bash uscha-kit/tests/smoke-engine.sh #
|
|
949
|
-
USCHA_JOBS=
|
|
950
|
-
```
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
`
|
|
956
|
-
|
|
957
|
-
|
|
948
|
+
bash uscha-kit/tests/smoke-engine.sh # parallel by default: min(cores, 8) jobs
|
|
949
|
+
USCHA_JOBS=1 bash uscha-kit/tests/smoke-engine.sh # the serial escape hatch: the same checks, one at a time
|
|
950
|
+
```
|
|
951
|
+
|
|
952
|
+
The suite runs its self-contained blocks as background units and replays their output in the
|
|
953
|
+
original order, so the log and the `RESULTADO` / `ACCEPTANCE` lines read the same as a serial run.
|
|
954
|
+
It prints `suite mode: ...` once, on stderr, saying which one it ran and, when serial, why (a
|
|
955
|
+
merged `2>&1` log differs between modes by that one line). With
|
|
956
|
+
`USCHA_JOBS` unset or empty the job count is `min(cores, 8)` and a machine that reports one core is
|
|
957
|
+
serial; an explicit `USCHA_JOBS=N` is capped at the cores; `USCHA_JOBS=1`, `0`, a non-number and
|
|
958
|
+
`USCHA_COVERAGE=1` are the serial suite. The release ritual and CI run the default (one CI cell,
|
|
959
|
+
ubuntu/py3.8 of the six-cell grid, sets `USCHA_JOBS=1`, so the serial path is measured on every
|
|
960
|
+
tag and manual dispatch). The gain depends on the
|
|
961
|
+
cores — a 2–4-core CI runner gains much less than a workstation.
|
|
958
962
|
|
|
959
963
|
## Notes
|
|
960
964
|
|
package/uscha-kit/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
uscha-kit 2.
|
|
1
|
+
uscha-kit 2.9.0
|
|
@@ -19,7 +19,7 @@ phases. **You are NOT a generator. You are an interrogator that distills.** The
|
|
|
19
19
|
is in the questions, not in agreeing.
|
|
20
20
|
|
|
21
21
|
<!-- uscha:orientation-block:begin -->
|
|
22
|
-
<!-- uscha kit: 2.
|
|
22
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
23
23
|
|
|
24
24
|
## First contact (show ONCE, then never again)
|
|
25
25
|
|
|
@@ -19,7 +19,7 @@ what the code DOES, mechanically, by running it — never what it should do.** Y
|
|
|
19
19
|
the capture harness; you may NOT create, rename, or edit any `.approved` file.
|
|
20
20
|
|
|
21
21
|
<!-- uscha:orientation-block:begin -->
|
|
22
|
-
<!-- uscha kit: 2.
|
|
22
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
23
23
|
|
|
24
24
|
## First contact (show ONCE, then never again)
|
|
25
25
|
|
|
@@ -27,7 +27,7 @@ artifacts; these can block) and **self-reported** agent counts (log-step — nar
|
|
|
27
27
|
recorded for the retrospective; a measured red always overrides a narrated green).
|
|
28
28
|
|
|
29
29
|
<!-- uscha:orientation-block:begin -->
|
|
30
|
-
<!-- uscha kit: 2.
|
|
30
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
31
31
|
|
|
32
32
|
## First contact (show ONCE, then never again)
|
|
33
33
|
|
|
@@ -19,7 +19,7 @@ shape.** Your job is to interrogate until there is a shared system shape, and to
|
|
|
19
19
|
the documents as you go — not to ask the human to design the system for you.
|
|
20
20
|
|
|
21
21
|
<!-- uscha:orientation-block:begin -->
|
|
22
|
-
<!-- uscha kit: 2.
|
|
22
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
23
23
|
|
|
24
24
|
## First contact (show ONCE, then never again)
|
|
25
25
|
|
|
@@ -18,7 +18,7 @@ Paints the REAL state of the project at a glance. It does not narrate or estimat
|
|
|
18
18
|
wires the JSON the engine emits into the template. Read-only.
|
|
19
19
|
|
|
20
20
|
<!-- uscha:orientation-block:begin -->
|
|
21
|
-
<!-- uscha kit: 2.
|
|
21
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
22
22
|
|
|
23
23
|
## Orientation markers (non-negotiable)
|
|
24
24
|
|
|
@@ -24,7 +24,7 @@ evidence-classed, content-addressed, and promoted to the contract only by a per-
|
|
|
24
24
|
human verdict (ADR-013).**
|
|
25
25
|
|
|
26
26
|
<!-- uscha:orientation-block:begin -->
|
|
27
|
-
<!-- uscha kit: 2.
|
|
27
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
28
28
|
|
|
29
29
|
## First contact (show ONCE, then never again)
|
|
30
30
|
|
|
@@ -22,7 +22,7 @@ the grader — this skill just wraps the neutral prompt so Claude Code users get
|
|
|
22
22
|
in one command. Never add Claude-specific behavior to the contract.
|
|
23
23
|
|
|
24
24
|
<!-- uscha:orientation-block:begin -->
|
|
25
|
-
<!-- uscha kit: 2.
|
|
25
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
26
26
|
|
|
27
27
|
## First contact (show ONCE, then never again)
|
|
28
28
|
|
|
@@ -58,7 +58,7 @@ that surface the warning cannot come from the skill itself. The `doctor` seam is
|
|
|
58
58
|
that still works there — it runs from any kit checkout and reads the installs from outside.
|
|
59
59
|
|
|
60
60
|
<!-- uscha:orientation-block:begin -->
|
|
61
|
-
<!-- uscha kit: 2.
|
|
61
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
62
62
|
|
|
63
63
|
## Orientation markers (non-negotiable)
|
|
64
64
|
|
|
@@ -22,7 +22,7 @@ switch between at any time:
|
|
|
22
22
|
coverage, known deferred issues.
|
|
23
23
|
|
|
24
24
|
<!-- uscha:orientation-block:begin -->
|
|
25
|
-
<!-- uscha kit: 2.
|
|
25
|
+
<!-- uscha kit: 2.9.0 -- generated region: edit tools/skill-blocks/, then run `python tools/gen-skill-blocks.py` (never this block by hand) -->
|
|
26
26
|
|
|
27
27
|
## First contact (show ONCE, then never again)
|
|
28
28
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_comment": "COMPREHENSIVE REFERENCE, not a project config. Every knob the engine and the skills understand, at the kit's own value, so a human can read what can be declared. `uscha init` does NOT copy this file: it GENERATES a minimal project config, because a copied default is an explicit declaration and an explicit declaration outranks the preset named by defaults.risk_profile (ADR-001, as amended). Copy a block from here into your project only when you mean to override the engine default or the preset. NOTE: no version string may be written into this comment -- the release script requires exactly one occurrence of the version in this file (I3), and a second one refuses the next release.",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"project": null,
|
|
5
5
|
"defaults": {
|
|
6
6
|
"coverage_threshold": 60,
|