@andresmassello/uscha 1.40.1 → 1.40.2
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 +20 -12
- package/package.json +1 -1
- package/uscha-kit/.claude-plugin/plugin.json +1 -1
- package/uscha-kit/.codex-plugin/plugin.json +1 -1
- package/uscha-kit/CHANGELOG-1.40.2.md +13 -0
- package/uscha-kit/INSTALL.md +101 -0
- package/uscha-kit/README.md +17 -57
- package/uscha-kit/VERSION +1 -1
- package/uscha-kit/tests/smoke-engine.sh +7 -7
- package/uscha-kit/uscha.config.json +1 -1
package/README.md
CHANGED
|
@@ -12,13 +12,15 @@ instantiation in Claude Code, the **uscha-kit**.
|
|
|
12
12
|
|
|
13
13
|
```
|
|
14
14
|
SpecLoop/
|
|
15
|
-
|
|
15
|
+
??? package.json # npm package: @andresmassello/uscha
|
|
16
|
+
??? bin/uscha.js # thin npx router to uscha-kit/install-uscha.py
|
|
17
|
+
├── uscha-kit/ # ★ canonical SOURCE of the kit (v1.40.2)
|
|
16
18
|
│ ├── .claude/skills/ # 8 skills: uscha-discovery · uscha-adr-refine · uscha-devloop · uscha-sysdoc
|
|
17
19
|
│ │ # uscha-reverse-discovery · uscha-characterize · uscha-rubric · uscha-mirador
|
|
18
20
|
│ ├── .claude/skills/uscha-devloop/qa_ledger.py # evidence engine (29 subcommands, stdlib)
|
|
19
21
|
│ ├── hooks/ # PreToolUse: the agent never writes .approved (INV-GOLDEN-01)
|
|
20
22
|
│ ├── templates/ # CLAUDE.md · CONSTITUTION.md · .gitattributes · docs/adr
|
|
21
|
-
│ └── CHANGELOG-*.md # 1.2.x → 1.3.0 ("facts block, wired") → 1.4.0 (python) → 1.5.0 (node) → 1.6.0 (go) → 1.7.0 (rust+dotnet) → 1.8.0 (cpp) → 1.9.0 (gradle+swift) → 1.10.0 (traceable acceptance) → 1.11.0 (tests outside the budget) → 1.12.0 (secret-scan) → 1.13.0 (atomic ledger) → 1.14.0 (plateau/stop-signal) → 1.15.0 (golden scrub) → 1.16.0 (regression-capture) → 1.17.0 (threshold provenance) → 1.18.0 (derived FSM) → 1.19.0 (spikes — PragProg backlog CLOSED) → 1.20.0 (global install) → 1.21.0 (namespace uscha-*) → 1.22.0 (doctor) → 1.23.0 (rubric layer) → 1.24.0 (Claude Code plugin) → 1.25.0 (anti-ceremony) → 1.26.0 (waste-check REUSE-FIRST) → 1.27.0 (FTY) → 1.28.0 (measured acceptance %) → 1.29.0 (rebrand → Uscha) → 1.30.0 (dependency gate) → 1.31.0 (evidence freshness + doc-version gate) → 1.32.0 (mirador — bird's-eye view + dashboard --json) → 1.33.0 (mirador telemetry — per-model tokens/time/model + transcript extractor) → 1.34.0 (mirador: project name from config + live watch/auto-refresh) -> 1.35.0 (execution-policy routing) -> 1.36.0 (discovery-intake: production findings + spec-doubt) -> 1.37.0 (ADR experiments: visible hypotheses) -> 1.38.0 (contract closure: SCR bridge + golden labels + calibration) -> 1.39.0 (universal Codex/Claude installer) -> 1.40.
|
|
23
|
+
│ └── CHANGELOG-*.md # 1.2.x → 1.3.0 ("facts block, wired") → 1.4.0 (python) → 1.5.0 (node) → 1.6.0 (go) → 1.7.0 (rust+dotnet) → 1.8.0 (cpp) → 1.9.0 (gradle+swift) → 1.10.0 (traceable acceptance) → 1.11.0 (tests outside the budget) → 1.12.0 (secret-scan) → 1.13.0 (atomic ledger) → 1.14.0 (plateau/stop-signal) → 1.15.0 (golden scrub) → 1.16.0 (regression-capture) → 1.17.0 (threshold provenance) → 1.18.0 (derived FSM) → 1.19.0 (spikes — PragProg backlog CLOSED) → 1.20.0 (global install) → 1.21.0 (namespace uscha-*) → 1.22.0 (doctor) → 1.23.0 (rubric layer) → 1.24.0 (Claude Code plugin) → 1.25.0 (anti-ceremony) → 1.26.0 (waste-check REUSE-FIRST) → 1.27.0 (FTY) → 1.28.0 (measured acceptance %) → 1.29.0 (rebrand → Uscha) → 1.30.0 (dependency gate) → 1.31.0 (evidence freshness + doc-version gate) → 1.32.0 (mirador — bird's-eye view + dashboard --json) → 1.33.0 (mirador telemetry — per-model tokens/time/model + transcript extractor) → 1.34.0 (mirador: project name from config + live watch/auto-refresh) -> 1.35.0 (execution-policy routing) -> 1.36.0 (discovery-intake: production findings + spec-doubt) -> 1.37.0 (ADR experiments: visible hypotheses) -> 1.38.0 (contract closure: SCR bridge + golden labels + calibration) -> 1.39.0 (universal Codex/Claude installer) -> 1.40.0 (npm/npx router) -> 1.40.1 (npm package hygiene) -> 1.40.2 (install docs)
|
|
22
24
|
├── docs/ # published artifacts (canonical here; Downloads = snapshots)
|
|
23
25
|
│ ├── uscha-claude-code-doc-FINAL.html # long deck ES (36 slides)
|
|
24
26
|
│ ├── uscha-claude-code-doc-EN.html # long deck EN
|
|
@@ -40,7 +42,7 @@ SpecLoop/
|
|
|
40
42
|
|
|
41
43
|
## Status (2026-07-05)
|
|
42
44
|
|
|
43
|
-
- **Kit v1.40.
|
|
45
|
+
- **Kit v1.40.2** <!-- uscha:version --> — the fact-gates are WIRED into the engine (1.3.0: `log-gate`,
|
|
44
46
|
`flag-blocker`, `resolve-escalation`; UNMEASURED; per-tool convergence with a veto from
|
|
45
47
|
the measured snapshot) and the engine measures **Python** repos (1.4.0: pytest/Cobertura + ruff +
|
|
46
48
|
mypy) **TypeScript/JS** (1.5.0: lcov + jest-junit + eslint + tsc) **Go** (1.6.0: native cover
|
|
@@ -62,13 +64,13 @@ SpecLoop/
|
|
|
62
64
|
headline — M5). **Derived FSM** (1.18.0: `phase` computes the workflow state
|
|
63
65
|
from the ledger's facts, never declared; the PR is gated with `--require
|
|
64
66
|
pr-ready` — M4). **Formal spikes** (1.19.0: a `spike/*` branch never passes the PR
|
|
65
|
-
gate; the legitimate output is an ADR with lessons — M10). **Execution policy routing** (1.35.0: phase-level methodology/model/effort metadata for the operator and Mirador, not readiness scoring). **Discovery intake** (1.36.0: production findings + spec-doubt/SPEC-WRONG enter the ledger and reopen discovery instead of disappearing into narration). **ADR experiments** (1.37.0: `Status: Experiment` is visible/advisory in dashboard/Mirador with feedback/review metadata, not a readiness score). **Contract closure** (1.38.0: structured `spec-change-request`, golden intended vs observed-accidental labels, and post-merge calibration metrics). **Universal installer** (1.39.0: one machine installer for Codex plugin adoption and Claude global install, with dry-run/doctor/version checks). **npm/npx router** (1.40.
|
|
67
|
+
gate; the legitimate output is an ADR with lessons — M10). **Execution policy routing** (1.35.0: phase-level methodology/model/effort metadata for the operator and Mirador, not readiness scoring). **Discovery intake** (1.36.0: production findings + spec-doubt/SPEC-WRONG enter the ledger and reopen discovery instead of disappearing into narration). **ADR experiments** (1.37.0: `Status: Experiment` is visible/advisory in dashboard/Mirador with feedback/review metadata, not a readiness score). **Contract closure** (1.38.0: structured `spec-change-request`, golden intended vs observed-accidental labels, and post-merge calibration metrics). **Universal installer** (1.39.0: one machine installer for Codex plugin adoption and Claude global install, with dry-run/doctor/version checks). **npm/npx router** (1.40.0: `@andresmassello/uscha` exposes `uscha`/`uscha-kit` and delegates to the canonical Python installer). **Install docs** (1.40.2: npx-first guide for Codex, Claude Code, and mixed-machine setups). Smoke suite 224/224 green.
|
|
66
68
|
**The PragProg backlog is CLOSED: 10 of 10** (see
|
|
67
69
|
`docs/analisis-pragmatic-programmer.md`).
|
|
68
70
|
License: MIT. The principle "facts block, guesses advise" is an enforced property,
|
|
69
71
|
not a slogan.
|
|
70
72
|
- **Docs** — passed through truth-pass against the real engine: every claim describes what
|
|
71
|
-
v1.40.
|
|
73
|
+
v1.40.2 does; the references appendix has **fetch-verified links** to the 10
|
|
72
74
|
sources. Status convention in the docs: `in the kit` / `new` / `proposal`.
|
|
73
75
|
- **In progress** — dogfooding on a real case (pilot project, Python): the 1.4.0 adapter unblocked it;
|
|
74
76
|
what remains is the read-only dry-run (criterion 2 of the python-adapter HANDOFF) and the on-ramp.
|
|
@@ -76,17 +78,23 @@ SpecLoop/
|
|
|
76
78
|
profiles).
|
|
77
79
|
|
|
78
80
|
|
|
79
|
-
## Install
|
|
81
|
+
## Install
|
|
82
|
+
|
|
83
|
+
Recommended for Codex and Claude Code:
|
|
80
84
|
|
|
81
85
|
```bash
|
|
82
|
-
npx @andresmassello/uscha@latest install --target codex
|
|
83
|
-
npx @andresmassello/uscha@latest doctor --target codex
|
|
84
|
-
# or both Codex + Claude:
|
|
85
|
-
npx @andresmassello/uscha@latest install --target both
|
|
86
|
+
npx --yes @andresmassello/uscha@latest install --target codex
|
|
87
|
+
npx --yes @andresmassello/uscha@latest doctor --target codex
|
|
88
|
+
# or both Codex + Claude Code:
|
|
89
|
+
npx --yes @andresmassello/uscha@latest install --target both
|
|
90
|
+
npx --yes @andresmassello/uscha@latest doctor --target both
|
|
86
91
|
```
|
|
87
92
|
|
|
88
|
-
|
|
89
|
-
|
|
93
|
+
Full install guide: [`uscha-kit/INSTALL.md`](uscha-kit/INSTALL.md).
|
|
94
|
+
|
|
95
|
+
The npm package is only a thin router. The canonical installer remains
|
|
96
|
+
`uscha-kit/install-uscha.py`, and Python 3.8+ is still required on the target
|
|
97
|
+
machine.
|
|
90
98
|
|
|
91
99
|
## How the kit is re-packaged
|
|
92
100
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
3
|
"name": "uscha",
|
|
4
|
-
"version": "1.40.
|
|
4
|
+
"version": "1.40.2",
|
|
5
5
|
"displayName": "Uscha",
|
|
6
6
|
"description": "Spec-driven development for LLM coding agents: 8 skills (discovery, adr-refine, reverse-discovery, characterize, devloop, sysdoc, rubric, mirador) + a stdlib measurement engine (qa_ledger.py, 29 subcommands + universal installer + npm/npx router). Facts block, guesses advise; the human approves.",
|
|
7
7
|
"author": {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# uscha-kit 1.40.2
|
|
2
|
+
|
|
3
|
+
## Changed
|
|
4
|
+
|
|
5
|
+
- Reworked install documentation around the npm/npx path for Codex, Claude Code, and mixed-machine setups.
|
|
6
|
+
- Added `uscha-kit/INSTALL.md` as the focused install guide.
|
|
7
|
+
- Kept Git checkout/link mode, Claude Code plugin commands, and manual copy as secondary/debugging options with tradeoffs.
|
|
8
|
+
|
|
9
|
+
## Verification
|
|
10
|
+
|
|
11
|
+
- `npm view @andresmassello/uscha version`
|
|
12
|
+
- `npx --yes @andresmassello/uscha@latest version --json`
|
|
13
|
+
- `bash uscha-kit/tests/smoke-engine.sh`
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Install Uscha
|
|
2
|
+
|
|
3
|
+
Uscha installs as a machine-level helper for coding agents. The recommended path
|
|
4
|
+
is npm/npx because it works the same on a fresh Codex or Claude Code machine.
|
|
5
|
+
|
|
6
|
+
## Quick path
|
|
7
|
+
|
|
8
|
+
### Codex Desktop
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npx --yes @andresmassello/uscha@latest version
|
|
12
|
+
npx --yes @andresmassello/uscha@latest install --target codex --dry-run
|
|
13
|
+
npx --yes @andresmassello/uscha@latest install --target codex
|
|
14
|
+
npx --yes @andresmassello/uscha@latest doctor --target codex
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Then restart Codex or open a new thread. The installer registers Uscha as a
|
|
18
|
+
personal local plugin under `~/plugins/uscha` and updates
|
|
19
|
+
`~/.agents/plugins/marketplace.json`.
|
|
20
|
+
|
|
21
|
+
### Claude Code
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npx --yes @andresmassello/uscha@latest install --target claude --dry-run
|
|
25
|
+
npx --yes @andresmassello/uscha@latest install --target claude
|
|
26
|
+
npx --yes @andresmassello/uscha@latest doctor --target claude
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
This installs the `uscha-*` skills and hooks under `~/.claude`. Restart or reload
|
|
30
|
+
Claude Code after installing.
|
|
31
|
+
|
|
32
|
+
### Same machine uses both
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npx --yes @andresmassello/uscha@latest install --target both --dry-run
|
|
36
|
+
npx --yes @andresmassello/uscha@latest install --target both
|
|
37
|
+
npx --yes @andresmassello/uscha@latest doctor --target both
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Prepare a project repo
|
|
41
|
+
|
|
42
|
+
After the machine install, initialize each project where Uscha should govern the
|
|
43
|
+
workflow:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npx --yes @andresmassello/uscha@latest init --repo . --dry-run
|
|
47
|
+
npx --yes @andresmassello/uscha@latest init --repo .
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Project state stays in the project: `uscha.config.json`, `QA-LEDGER.json`,
|
|
51
|
+
`ACCEPTANCE.md`, and approved golden fixtures when used.
|
|
52
|
+
|
|
53
|
+
## Requirements
|
|
54
|
+
|
|
55
|
+
| Requirement | Why |
|
|
56
|
+
|-------------|-----|
|
|
57
|
+
| Node.js + npm | Runs the universal `npx` entrypoint. |
|
|
58
|
+
| Python 3.8+ | Runs the canonical stdlib installer and engine. |
|
|
59
|
+
| Git | Used by the method and by project setup checks. |
|
|
60
|
+
| Codex Desktop and/or Claude Code | The agent runtime you want to install Uscha into. |
|
|
61
|
+
|
|
62
|
+
No `pip install` is required. The engine is Python stdlib-only.
|
|
63
|
+
|
|
64
|
+
## Other install options
|
|
65
|
+
|
|
66
|
+
| Option | Use when | Tradeoff |
|
|
67
|
+
|--------|----------|----------|
|
|
68
|
+
| `npx @andresmassello/uscha@latest ...` | Normal install/update on any machine. | Requires npm registry access. |
|
|
69
|
+
| Git checkout + `python uscha-kit/install-uscha.py ...` | Developing Uscha itself or testing unreleased changes. | You must clone/pull the repo yourself. |
|
|
70
|
+
| `--mode link` from a checkout | This machine develops the kit and installed skills should follow local edits. | Links are great for development, risky for normal users. |
|
|
71
|
+
| Claude Code plugin commands | You specifically want Claude Code's native plugin flow. | Codex still needs the npm/git installer path. |
|
|
72
|
+
| Manual copy | Debugging the installer. | Easy to drift; not recommended for adoption. |
|
|
73
|
+
|
|
74
|
+
Development checkout example:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
git clone https://github.com/andresmassello/uscha.git
|
|
78
|
+
cd uscha
|
|
79
|
+
python uscha-kit/install-uscha.py install --target both --mode link --dry-run
|
|
80
|
+
python uscha-kit/install-uscha.py install --target both --mode link
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Claude Code plugin option:
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
/plugin marketplace add andresmassello/uscha
|
|
87
|
+
/plugin install uscha@uscha
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Update and verify
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npm view @andresmassello/uscha version
|
|
94
|
+
npx --yes @andresmassello/uscha@latest version
|
|
95
|
+
npx --yes @andresmassello/uscha@latest install --target both
|
|
96
|
+
npx --yes @andresmassello/uscha@latest doctor --target both
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
If `npm view` returns `404` immediately after a new release, wait a few minutes:
|
|
100
|
+
npm search/dist-tags can propagate before the package metadata endpoint used by
|
|
101
|
+
`npx`. Do not republish the same version while propagation is in progress.
|
package/uscha-kit/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# uscha-kit
|
|
2
2
|
|
|
3
|
-
**Kit version:** v1.40.
|
|
3
|
+
**Kit version:** v1.40.2 <!-- uscha:version -->
|
|
4
4
|
|
|
5
5
|
Spec-driven orchestrator + multi-repo QA for Claude Code, with a deterministic ledger.
|
|
6
6
|
**Eight skills** (`uscha-discovery`, `uscha-adr-refine`, `uscha-devloop`, `uscha-sysdoc`, `uscha-reverse-discovery`,
|
|
@@ -14,6 +14,8 @@ changes (a one-liner runs build+test and that's it).
|
|
|
14
14
|
|
|
15
15
|
```
|
|
16
16
|
uscha-kit/
|
|
17
|
+
?? INSTALL.md # install guide: npx, Codex, Claude Code, alternatives
|
|
18
|
+
?? install-uscha.py # canonical installer used by npm/npx
|
|
17
19
|
├─ uscha.config.json # config: repos, thresholds, commands
|
|
18
20
|
├─ hooks/
|
|
19
21
|
│ └─ block-approved-writes.ps1 # PreToolUse: the agent CANNOT write .approved (INV-GOLDEN-01)
|
|
@@ -206,76 +208,34 @@ BEFORE touching anything.
|
|
|
206
208
|
|
|
207
209
|
## Installation
|
|
208
210
|
|
|
209
|
-
**
|
|
210
|
-
|
|
211
|
-
duplicating installer logic. You need Node/npm for this path and Python 3.8+ for
|
|
212
|
-
the underlying installer.
|
|
213
|
-
|
|
214
|
-
Codex-only machine:
|
|
215
|
-
|
|
216
|
-
```bash
|
|
217
|
-
npx @andresmassello/uscha@latest version
|
|
218
|
-
npx @andresmassello/uscha@latest install --target codex --dry-run
|
|
219
|
-
npx @andresmassello/uscha@latest install --target codex
|
|
220
|
-
npx @andresmassello/uscha@latest doctor --target codex
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
Machine used by both Codex and Claude:
|
|
211
|
+
**Recommended path: npm/npx.** Use the same installer for Codex, Claude Code,
|
|
212
|
+
or both. Full guide: [`INSTALL.md`](INSTALL.md).
|
|
224
213
|
|
|
225
214
|
```bash
|
|
226
|
-
npx @andresmassello/uscha@latest
|
|
227
|
-
npx @andresmassello/uscha@latest install --target
|
|
228
|
-
npx @andresmassello/uscha@latest
|
|
215
|
+
npx --yes @andresmassello/uscha@latest version
|
|
216
|
+
npx --yes @andresmassello/uscha@latest install --target codex --dry-run
|
|
217
|
+
npx --yes @andresmassello/uscha@latest install --target codex
|
|
218
|
+
npx --yes @andresmassello/uscha@latest doctor --target codex
|
|
229
219
|
```
|
|
230
220
|
|
|
231
|
-
|
|
232
|
-
itself.** One interface, two adapters: Codex gets a personal local plugin
|
|
233
|
-
(`~/plugins/uscha` + `~/.agents/plugins/marketplace.json`), Claude gets global
|
|
234
|
-
skills/hooks under `~/.claude`. Use `--dry-run` first on every new machine.
|
|
221
|
+
For a machine used by both Codex and Claude Code:
|
|
235
222
|
|
|
236
223
|
```bash
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
python uscha-kit/install-uscha.py doctor --target codex
|
|
224
|
+
npx --yes @andresmassello/uscha@latest install --target both --dry-run
|
|
225
|
+
npx --yes @andresmassello/uscha@latest install --target both
|
|
226
|
+
npx --yes @andresmassello/uscha@latest doctor --target both
|
|
241
227
|
```
|
|
242
228
|
|
|
243
|
-
|
|
244
|
-
|
|
229
|
+
Use a Git checkout only when developing Uscha itself or testing unreleased
|
|
230
|
+
changes:
|
|
245
231
|
|
|
246
232
|
```bash
|
|
247
233
|
python uscha-kit/install-uscha.py install --target both --mode link --dry-run
|
|
248
234
|
python uscha-kit/install-uscha.py install --target both --mode link
|
|
249
235
|
```
|
|
250
236
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
```bash
|
|
254
|
-
npx @andresmassello/uscha@latest init --repo <repo> --dry-run
|
|
255
|
-
npx @andresmassello/uscha@latest init --repo <repo>
|
|
256
|
-
# or from a checkout:
|
|
257
|
-
python uscha-kit/install-uscha.py init --repo <repo>
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
What remains PER PROJECT (state, not installable): `uscha.config.json` in the
|
|
261
|
-
repo root where you run the run (the `path` values are relative to there ? and your declared
|
|
262
|
-
quality bar lives there), the `QA-LEDGER.json`, the `ACCEPTANCE.md`, and for migration
|
|
263
|
-
work the `.gitattributes` from `templates/` (`*.approved.* binary`).
|
|
264
|
-
|
|
265
|
-
**Legacy/manual install** still works: copy `.claude/` and `uscha.config.json`
|
|
266
|
-
per project, or copy the `uscha-*` skills to `~/.claude/skills/`. Prefer the
|
|
267
|
-
installer unless you are debugging the installer itself.
|
|
268
|
-
|
|
269
|
-
**Claude Code plugin** remains available for Claude Code users:
|
|
270
|
-
|
|
271
|
-
```
|
|
272
|
-
/plugin marketplace add andresmassello/uscha
|
|
273
|
-
/plugin install uscha@uscha
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
Updates: `/plugin update uscha@uscha` for Claude Code plugin installs,
|
|
277
|
-
`npx @andresmassello/uscha@latest install ...` for npm installs, or rerun
|
|
278
|
-
`install-uscha.py install ...` from a repo checkout.
|
|
237
|
+
Claude Code's native plugin flow remains available for Claude-only users, but
|
|
238
|
+
`npx` is the universal path and also covers Codex.
|
|
279
239
|
|
|
280
240
|
|
|
281
241
|
|
package/uscha-kit/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
uscha-kit 1.40.
|
|
1
|
+
uscha-kit 1.40.2
|
|
@@ -1658,13 +1658,13 @@ sys.exit(0 if ok else 1)" \
|
|
|
1658
1658
|
&& { PASS=$((PASS+1)); echo " ok summary expone calibracion post-merge desde PF/SD/SCR"; } \
|
|
1659
1659
|
|| { FAIL=$((FAIL+1)); echo " FAIL summary no expone calibracion post-merge"; }
|
|
1660
1660
|
|
|
1661
|
-
echo "== T66 universal installer (1.40.
|
|
1661
|
+
echo "== T66 universal installer (1.40.2): Codex plugin + Claude adapter, dry-run safe =="
|
|
1662
1662
|
INST_HOME="$SB/home-installer"
|
|
1663
1663
|
mkdir -p "$INST_HOME"
|
|
1664
1664
|
"$PY" "$KIT/install-uscha.py" version --json 2>/dev/null | "$PY" -c "
|
|
1665
1665
|
import json, sys
|
|
1666
1666
|
d = json.load(sys.stdin)
|
|
1667
|
-
ok = (d['source_version'] == '1.40.
|
|
1667
|
+
ok = (d['source_version'] == '1.40.2' and 'codex' in d['targets'] and 'claude' in d['targets'])
|
|
1668
1668
|
sys.exit(0 if ok else 1)" \
|
|
1669
1669
|
&& { PASS=$((PASS+1)); echo " ok install-uscha version expone version fuente y targets"; } \
|
|
1670
1670
|
|| { FAIL=$((FAIL+1)); echo " FAIL install-uscha version no expone targets/version"; }
|
|
@@ -1688,7 +1688,7 @@ market = h/'.agents/plugins/marketplace.json'
|
|
|
1688
1688
|
engine = h/'plugins/uscha/skills/uscha-devloop/qa_ledger.py'
|
|
1689
1689
|
marker = h/'plugins/uscha/uscha-install.json'
|
|
1690
1690
|
ok = (manifest.exists() and market.exists() and engine.exists() and
|
|
1691
|
-
json.load(open(manifest, encoding='utf-8'))['version'] == '1.40.
|
|
1691
|
+
json.load(open(manifest, encoding='utf-8'))['version'] == '1.40.2' and
|
|
1692
1692
|
json.load(open(marker, encoding='utf-8'))['target'] == 'codex')
|
|
1693
1693
|
sys.exit(0 if ok else 1)" \
|
|
1694
1694
|
&& { PASS=$((PASS+1)); echo " ok install codex crea plugin personal, marketplace y marker"; } \
|
|
@@ -1696,7 +1696,7 @@ sys.exit(0 if ok else 1)" \
|
|
|
1696
1696
|
"$PY" "$KIT/install-uscha.py" doctor --target codex --home "$INST_HOME" --json 2>/dev/null | "$PY" -c "
|
|
1697
1697
|
import json, sys
|
|
1698
1698
|
d = json.load(sys.stdin)
|
|
1699
|
-
ok = (d['source_version'] == '1.40.
|
|
1699
|
+
ok = (d['source_version'] == '1.40.2' and d['targets']['codex']['installed'] is True and d['targets']['codex']['version_match'] is True)
|
|
1700
1700
|
sys.exit(0 if ok else 1)" \
|
|
1701
1701
|
&& { PASS=$((PASS+1)); echo " ok doctor detecta Codex instalado y version match"; } \
|
|
1702
1702
|
|| { FAIL=$((FAIL+1)); echo " FAIL doctor no detecta install Codex"; }
|
|
@@ -1705,12 +1705,12 @@ diff -qr "$KIT/.claude/skills" "$KIT/skills" -x __pycache__ >/dev/null 2>&1 \
|
|
|
1705
1705
|
|| { FAIL=$((FAIL+1)); echo " FAIL uscha-kit/skills drifted from .claude/skills"; }
|
|
1706
1706
|
|
|
1707
1707
|
|
|
1708
|
-
echo "== T67 npm router (1.40.
|
|
1708
|
+
echo "== T67 npm router (1.40.2): npx package delegates to canonical installer =="
|
|
1709
1709
|
if command -v node >/dev/null 2>&1; then
|
|
1710
1710
|
node "$ROOT/bin/uscha.js" version --json 2>/dev/null | "$PY" -c "
|
|
1711
1711
|
import json, sys
|
|
1712
1712
|
d = json.load(sys.stdin)
|
|
1713
|
-
ok = (d['source_version'] == '1.40.
|
|
1713
|
+
ok = (d['source_version'] == '1.40.2' and 'codex' in d['targets'] and 'claude' in d['targets'])
|
|
1714
1714
|
sys.exit(0 if ok else 1)" \
|
|
1715
1715
|
&& { PASS=$((PASS+1)); echo " ok npm router expone version/targets desde install-uscha.py"; } \
|
|
1716
1716
|
|| { FAIL=$((FAIL+1)); echo " FAIL npm router no delega correctamente al installer"; }
|
|
@@ -1722,7 +1722,7 @@ if command -v npm >/dev/null 2>&1; then
|
|
|
1722
1722
|
import json, sys
|
|
1723
1723
|
d = json.load(sys.stdin)[0]
|
|
1724
1724
|
files = {f['path'] for f in d['files']}
|
|
1725
|
-
ok = (d['name'] == '@andresmassello/uscha' and d['version'] == '1.40.
|
|
1725
|
+
ok = (d['name'] == '@andresmassello/uscha' and d['version'] == '1.40.2'
|
|
1726
1726
|
and 'bin/uscha.js' in files and 'uscha-kit/install-uscha.py' in files
|
|
1727
1727
|
and '.atl/skill-registry.md' not in files and 'handoff.md' not in files and 'mirador.html' not in files
|
|
1728
1728
|
and not any('__pycache__' in f or f.endswith(('.pyc', '.pyo')) for f in files))
|