@andresmassello/uscha 1.53.0 → 1.55.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 +2 -2
- package/package.json +1 -1
- package/uscha-kit/.claude/skills/uscha-adr-refine/SKILL.md +28 -0
- package/uscha-kit/.claude/skills/uscha-characterize/SKILL.md +28 -0
- package/uscha-kit/.claude/skills/uscha-devloop/SKILL.md +28 -0
- package/uscha-kit/.claude/skills/uscha-devloop/qa_ledger.py +171 -171
- package/uscha-kit/.claude/skills/uscha-discovery/SKILL.md +28 -0
- package/uscha-kit/.claude/skills/uscha-reverse-discovery/SKILL.md +30 -0
- package/uscha-kit/.claude/skills/uscha-rubric/SKILL.md +28 -0
- package/uscha-kit/.claude/skills/uscha-sysdoc/SKILL.md +28 -0
- package/uscha-kit/.claude-plugin/plugin.json +1 -1
- package/uscha-kit/.codex-plugin/plugin.json +1 -1
- package/uscha-kit/README.md +1 -1
- package/uscha-kit/VERSION +1 -1
- package/uscha-kit/skills/uscha-adr-refine/SKILL.md +28 -0
- package/uscha-kit/skills/uscha-characterize/SKILL.md +28 -0
- package/uscha-kit/skills/uscha-devloop/SKILL.md +28 -0
- package/uscha-kit/skills/uscha-devloop/qa_ledger.py +171 -171
- package/uscha-kit/skills/uscha-discovery/SKILL.md +28 -0
- package/uscha-kit/skills/uscha-reverse-discovery/SKILL.md +30 -0
- package/uscha-kit/skills/uscha-rubric/SKILL.md +28 -0
- package/uscha-kit/skills/uscha-sysdoc/SKILL.md +28 -0
- package/uscha-kit/uscha.config.json +1 -1
|
@@ -18,6 +18,34 @@ The human brings the idea, the constraints and the reference material. **You bri
|
|
|
18
18
|
shape.** Your job is to interrogate until there is a shared system shape, and to write
|
|
19
19
|
the documents as you go — not to ask the human to design the system for you.
|
|
20
20
|
|
|
21
|
+
## First contact (show ONCE, then never again)
|
|
22
|
+
|
|
23
|
+
**Only when this project has no uscha artifacts yet** -- no `QA-LEDGER.json`, no `SPEC.md` or
|
|
24
|
+
`ACCEPTANCE.md`, no `docs/adr/` -- open with this block, then start working. If any of those
|
|
25
|
+
exist, the operator already knows the method: skip it entirely and go straight to the
|
|
26
|
+
breadcrumb. Repeating it every run would be exactly the ceremony the method forbids.
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
[uscha · discovery · START]
|
|
30
|
+
Method: you bring the idea, the method builds the rest. Facts block, guesses advise;
|
|
31
|
+
nothing closes on a checkbox, and the human approves the merge.
|
|
32
|
+
Here: I grill you ONE question at a time, each with my recommended answer. You decide.
|
|
33
|
+
Output: CONTEXT.md · SPEC.md · docs/adr/*.md · ACCEPTANCE.md · RISKS.md
|
|
34
|
+
Next: `/uscha-devloop` builds against the package. No code until the package exists.
|
|
35
|
+
Stop: say so at any point -- whatever is already written stays.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Bilingual by construction.** The labels (`START`, `Method`, `Here`, `Output`, `Next`,
|
|
39
|
+
`Stop`) stay VERBATIM in English -- they are the method's vocabulary and the smoke suite checks
|
|
40
|
+
for them mechanically, which is only possible if they never move. The wording after each label
|
|
41
|
+
is the canonical English; **render it in the operator's language**. If they are writing to you
|
|
42
|
+
in Spanish, the whole block reads in Spanish under English labels. Do not translate the labels,
|
|
43
|
+
do not leave the content in English when they are not writing in English.
|
|
44
|
+
|
|
45
|
+
Unlike the close block, `Next` here MAY name the nominal route: on a first run there is no
|
|
46
|
+
measured state to derive from yet, so the nominal path is the honest answer. From the close
|
|
47
|
+
block onward, derived state wins.
|
|
48
|
+
|
|
21
49
|
## Orientation markers (non-negotiable)
|
|
22
50
|
|
|
23
51
|
The operator must never have to ask "where am I?" or "what happens now?". Two markers, always.
|
|
@@ -18,6 +18,36 @@ disable-model-invocation: false
|
|
|
18
18
|
opposite. The system already runs; its observable behavior is the ground truth. **You do
|
|
19
19
|
not invent anything — you characterize what is already there, as facts.**
|
|
20
20
|
|
|
21
|
+
## First contact (show ONCE, then never again)
|
|
22
|
+
|
|
23
|
+
**Only when this project has no uscha artifacts yet** -- no `QA-LEDGER.json`, no `SPEC.md` or
|
|
24
|
+
`ACCEPTANCE.md`, no `docs/adr/` -- open with this block, then start working. If any of those
|
|
25
|
+
exist, the operator already knows the method: skip it entirely and go straight to the
|
|
26
|
+
breadcrumb. Repeating it every run would be exactly the ceremony the method forbids.
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
[uscha · reverse-discovery · START]
|
|
30
|
+
Method: you bring the idea, the method builds the rest. Facts block, guesses advise;
|
|
31
|
+
nothing closes on a checkbox, and the human approves the merge.
|
|
32
|
+
Here: I EXTRACT facts from the system that already exists. I never invent its spec -- you write that reading my facts.
|
|
33
|
+
Output: SYSTEM-MAP.md · DISCOVERY-SUMMARY.md -- endpoints, contracts, dependency graph,
|
|
34
|
+
module candidates. Facts only: the SPEC and the ADRs are yours to write.
|
|
35
|
+
Next: `/uscha-characterize` freezes current behavior and a HUMAN approves the golden;
|
|
36
|
+
only then do you write the migration SPEC, reading these facts + that golden.
|
|
37
|
+
Stop: say so at any point -- whatever is already written stays.
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Bilingual by construction.** The labels (`START`, `Method`, `Here`, `Output`, `Next`,
|
|
41
|
+
`Stop`) stay VERBATIM in English -- they are the method's vocabulary and the smoke suite checks
|
|
42
|
+
for them mechanically, which is only possible if they never move. The wording after each label
|
|
43
|
+
is the canonical English; **render it in the operator's language**. If they are writing to you
|
|
44
|
+
in Spanish, the whole block reads in Spanish under English labels. Do not translate the labels,
|
|
45
|
+
do not leave the content in English when they are not writing in English.
|
|
46
|
+
|
|
47
|
+
Unlike the close block, `Next` here MAY name the nominal route: on a first run there is no
|
|
48
|
+
measured state to derive from yet, so the nominal path is the honest answer. From the close
|
|
49
|
+
block onward, derived state wins.
|
|
50
|
+
|
|
21
51
|
## Orientation markers (non-negotiable)
|
|
22
52
|
|
|
23
53
|
The operator must never have to ask "where am I?" or "what happens now?". Two markers, always.
|
|
@@ -21,6 +21,34 @@ contract + `qa_ledger.py rubric-ingest` (stdlib, runs anywhere). ANY runner can
|
|
|
21
21
|
the grader — this skill just wraps the neutral prompt so Claude Code users get it
|
|
22
22
|
in one command. Never add Claude-specific behavior to the contract.
|
|
23
23
|
|
|
24
|
+
## First contact (show ONCE, then never again)
|
|
25
|
+
|
|
26
|
+
**Only when this project has no uscha artifacts yet** -- no `QA-LEDGER.json`, no `SPEC.md` or
|
|
27
|
+
`ACCEPTANCE.md`, no `docs/adr/` -- open with this block, then start working. If any of those
|
|
28
|
+
exist, the operator already knows the method: skip it entirely and go straight to the
|
|
29
|
+
breadcrumb. Repeating it every run would be exactly the ceremony the method forbids.
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
[uscha · rubric · START]
|
|
33
|
+
Method: you bring the idea, the method builds the rest. Facts block, guesses advise;
|
|
34
|
+
nothing closes on a checkbox, and the human approves the merge.
|
|
35
|
+
Here: I grade what tests cannot: conventions, error handling, API ergonomics, doc quality -- against your versioned RUBRIC.md.
|
|
36
|
+
Output: a graded verdict ingested into the ledger (advisory unless you declared it a gate)
|
|
37
|
+
Next: back to `/uscha-devloop`, or the human gate if the loop already converged.
|
|
38
|
+
Stop: say so at any point -- whatever is already written stays.
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Bilingual by construction.** The labels (`START`, `Method`, `Here`, `Output`, `Next`,
|
|
42
|
+
`Stop`) stay VERBATIM in English -- they are the method's vocabulary and the smoke suite checks
|
|
43
|
+
for them mechanically, which is only possible if they never move. The wording after each label
|
|
44
|
+
is the canonical English; **render it in the operator's language**. If they are writing to you
|
|
45
|
+
in Spanish, the whole block reads in Spanish under English labels. Do not translate the labels,
|
|
46
|
+
do not leave the content in English when they are not writing in English.
|
|
47
|
+
|
|
48
|
+
Unlike the close block, `Next` here MAY name the nominal route: on a first run there is no
|
|
49
|
+
measured state to derive from yet, so the nominal path is the honest answer. From the close
|
|
50
|
+
block onward, derived state wins.
|
|
51
|
+
|
|
24
52
|
## Orientation markers (non-negotiable)
|
|
25
53
|
|
|
26
54
|
The operator must never have to ask "where am I?" or "what happens now?". Two markers, always.
|
|
@@ -21,6 +21,34 @@ switch between at any time:
|
|
|
21
21
|
- **Technical track** — architecture, modules, data flow, contracts, QA results,
|
|
22
22
|
coverage, known deferred issues.
|
|
23
23
|
|
|
24
|
+
## First contact (show ONCE, then never again)
|
|
25
|
+
|
|
26
|
+
**Only when this project has no uscha artifacts yet** -- no `QA-LEDGER.json`, no `SPEC.md` or
|
|
27
|
+
`ACCEPTANCE.md`, no `docs/adr/` -- open with this block, then start working. If any of those
|
|
28
|
+
exist, the operator already knows the method: skip it entirely and go straight to the
|
|
29
|
+
breadcrumb. Repeating it every run would be exactly the ceremony the method forbids.
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
[uscha · sysdoc · START]
|
|
33
|
+
Method: you bring the idea, the method builds the rest. Facts block, guesses advise;
|
|
34
|
+
nothing closes on a checkbox, and the human approves the merge.
|
|
35
|
+
Here: I build a two-track deck (commercial + technical) from what the ledger already measured.
|
|
36
|
+
Output: a single self-contained HTML deck
|
|
37
|
+
Next: nothing -- this is a read-only artifact you share.
|
|
38
|
+
Stop: say so at any point -- whatever is already written stays.
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Bilingual by construction.** The labels (`START`, `Method`, `Here`, `Output`, `Next`,
|
|
42
|
+
`Stop`) stay VERBATIM in English -- they are the method's vocabulary and the smoke suite checks
|
|
43
|
+
for them mechanically, which is only possible if they never move. The wording after each label
|
|
44
|
+
is the canonical English; **render it in the operator's language**. If they are writing to you
|
|
45
|
+
in Spanish, the whole block reads in Spanish under English labels. Do not translate the labels,
|
|
46
|
+
do not leave the content in English when they are not writing in English.
|
|
47
|
+
|
|
48
|
+
Unlike the close block, `Next` here MAY name the nominal route: on a first run there is no
|
|
49
|
+
measured state to derive from yet, so the nominal path is the honest answer. From the close
|
|
50
|
+
block onward, derived state wins.
|
|
51
|
+
|
|
24
52
|
## Orientation markers (non-negotiable)
|
|
25
53
|
|
|
26
54
|
The operator must never have to ask "where am I?" or "what happens now?". Two markers, always.
|