@ritualai/cli 0.7.10 → 0.7.11
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/dist/commands/doctor.js +113 -18
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.js +124 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/node-managers.js +114 -0
- package/dist/lib/node-managers.js.map +1 -0
- package/dist/lib/npm-registry.js +107 -0
- package/dist/lib/npm-registry.js.map +1 -0
- package/dist/lib/skill-bundles.js +62 -0
- package/dist/lib/skill-bundles.js.map +1 -0
- package/dist/lib/skill-manifest.js +53 -0
- package/dist/lib/skill-manifest.js.map +1 -0
- package/package.json +1 -1
- package/skills/claude-code/ritual/.ritual-bundle.json +4 -0
- package/skills/claude-code/ritual/references/build-flow.md +75 -12
- package/skills/codex/ritual/.ritual-bundle.json +4 -0
- package/skills/codex/ritual/references/build-flow.md +75 -12
- package/skills/cursor/ritual/.ritual-bundle.json +4 -0
- package/skills/cursor/ritual/references/build-flow.md +75 -12
- package/skills/gemini/ritual/.ritual-bundle.json +4 -0
- package/skills/gemini/ritual/references/build-flow.md +75 -12
- package/skills/kiro/ritual/.ritual-bundle.json +4 -0
- package/skills/kiro/ritual/references/build-flow.md +75 -12
- package/skills/vscode/ritual/.ritual-bundle.json +4 -0
- package/skills/vscode/ritual/references/build-flow.md +75 -12
|
@@ -397,7 +397,7 @@ Steps:
|
|
|
397
397
|
> **{candidate.name}** *(LLM confidence: {Math.round(candidate.llmConfidence * 100)}%)*
|
|
398
398
|
> - *"{candidate.problemStatement first 120 chars, no ellipsis padding}..."*
|
|
399
399
|
> - Why I think it overlaps: {candidate.llmRationale}
|
|
400
|
-
> - URL: `https://
|
|
400
|
+
> - URL: `https://app.ritualapp.cloud/e/{candidate.explorationId}`
|
|
401
401
|
> {endfor}
|
|
402
402
|
>
|
|
403
403
|
> **Choose:**
|
|
@@ -983,7 +983,7 @@ Optimize for:
|
|
|
983
983
|
|
|
984
984
|
References:
|
|
985
985
|
- {RB/decision/exploration label} — {one-line meaning}
|
|
986
|
-
Source: {exploration title or id}{ optional ': https://
|
|
986
|
+
Source: {exploration title or id}{ optional ': https://app.ritualapp.cloud/e/{exploration_id}' if available}
|
|
987
987
|
- {reference}
|
|
988
988
|
|
|
989
989
|
Reply `use` to use this frame and review discovery questions.
|
|
@@ -1040,7 +1040,7 @@ Store `exploration_id`. Move the progress header from Scope to Discovery:
|
|
|
1040
1040
|
Ritual build
|
|
1041
1041
|
✓ Context ✓ Scope ● Discovery ○ Recommendations ○ Build brief ○ Implementation (Your agent)
|
|
1042
1042
|
|
|
1043
|
-
Exploration created. Track progress at https://
|
|
1043
|
+
Exploration created. Track progress at https://app.ritualapp.cloud/e/{exploration_id}
|
|
1044
1044
|
|
|
1045
1045
|
Next: generate discovery questions to resolve the implementation trade-offs.
|
|
1046
1046
|
```
|
|
@@ -1504,10 +1504,67 @@ If you don't already know the user's role on this workspace, prefer the workspac
|
|
|
1504
1504
|
|
|
1505
1505
|
##### 9.1 — Landing screen: grouped category summary + compact scope
|
|
1506
1506
|
|
|
1507
|
-
The recommendations review is the most-read screen in the whole build flow.
|
|
1507
|
+
The recommendations review is the most-read screen in the whole build flow.
|
|
1508
1508
|
|
|
1509
|
-
|
|
1510
|
-
|
|
1509
|
+
```text
|
|
1510
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1511
|
+
STEP 9.1 RENDERING CONTRACT — non-negotiable
|
|
1512
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1513
|
+
|
|
1514
|
+
Landing view is for SELECTION, not reading. Full prose belongs in 9.3.
|
|
1515
|
+
|
|
1516
|
+
✓ DO:
|
|
1517
|
+
- Number categories `1.`, `2.`, `3.` … `K.` in page order
|
|
1518
|
+
- Assign recommendations stable `R1`, `R2`, … `RN` IDs GLOBALLY across
|
|
1519
|
+
all categories (NOT restart per-category — so `detail R7` is
|
|
1520
|
+
unambiguous without naming the category)
|
|
1521
|
+
- Show recommendation TITLES ONLY at the landing
|
|
1522
|
+
- Indent recs 3 spaces under their category
|
|
1523
|
+
- One blank line between categories
|
|
1524
|
+
- Include compact scope line above the list
|
|
1525
|
+
- End with the action block (`accept recommended` etc.)
|
|
1526
|
+
|
|
1527
|
+
✗ DO NOT:
|
|
1528
|
+
- Do NOT render recs as a flat `1..N` list with no category structure
|
|
1529
|
+
- Do NOT use raw numeric rec IDs like `1.`, `2.`, `3.` — use `R1`, `R2`, `R3`
|
|
1530
|
+
- Do NOT show recommendation `content` / summary text at the landing
|
|
1531
|
+
- Do NOT show acceptance criteria, rationale, tactics, or references at
|
|
1532
|
+
the landing — those are 9.3 detail-card content
|
|
1533
|
+
- Do NOT omit category numbering (the prefix is what separates this
|
|
1534
|
+
from a wall-of-text grouped list)
|
|
1535
|
+
- Do NOT invent a "raw / deduped" framing line — the API does not return
|
|
1536
|
+
pre-dedup counts. Use `{N} recommendations across {K} categories.`
|
|
1537
|
+
|
|
1538
|
+
OBSERVED FAILURE — never render this:
|
|
1539
|
+
|
|
1540
|
+
Recommendations (13)
|
|
1541
|
+
|
|
1542
|
+
1. Backfill legacy data to fail-closed PRIVATE visibility
|
|
1543
|
+
Add a constrained `visibility` field with DB default PRIVATE...
|
|
1544
|
+
|
|
1545
|
+
2. Codify actor-state rights around owner-only mutation
|
|
1546
|
+
Define a single permission matrix across PRIVATE/SHARED/PUBLIC...
|
|
1547
|
+
|
|
1548
|
+
3. Centralize object permissions across storefront and dashboard
|
|
1549
|
+
Reusable `can_view_wishlist` / `can_edit_wishlist` methods...
|
|
1550
|
+
|
|
1551
|
+
Why wrong:
|
|
1552
|
+
- Looks grouped only implicitly; categories not visible as headers
|
|
1553
|
+
- Uses `1..N` numeric IDs (should be `R1..RN`)
|
|
1554
|
+
- Dumps `content` summaries — defeats the purpose of a landing view
|
|
1555
|
+
- `detail R7` no longer maps to a stable ID
|
|
1556
|
+
|
|
1557
|
+
PREFLIGHT — before printing 9.1 output, self-check:
|
|
1558
|
+
□ Did I group by `metadata.category.name`?
|
|
1559
|
+
□ Did I prefix each category with `1.`, `2.`, … `K.`?
|
|
1560
|
+
□ Did I assign global `R1..RN` IDs across categories?
|
|
1561
|
+
□ Did I show titles only (no summaries / no rationale)?
|
|
1562
|
+
□ Is there a compact scope line above the list?
|
|
1563
|
+
□ Does my action block use `R{N}` references that match the IDs above?
|
|
1564
|
+
|
|
1565
|
+
If any answer is no, FIX BEFORE PRINTING.
|
|
1566
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1567
|
+
```
|
|
1511
1568
|
|
|
1512
1569
|
Full rail at the landing (Recommendations stage opens):
|
|
1513
1570
|
|
|
@@ -1542,7 +1599,11 @@ Pulse: Reasoning Readiness ~88% · Context Debt 12% · +26% (implementation-read
|
|
|
1542
1599
|
Recommended: reply `accept recommended` to approve these {N} and generate
|
|
1543
1600
|
the build brief.
|
|
1544
1601
|
|
|
1545
|
-
Or reply
|
|
1602
|
+
Or reply:
|
|
1603
|
+
- `detail R7` to inspect one recommendation
|
|
1604
|
+
- `drop R8` to remove one before accepting
|
|
1605
|
+
- `change R3: <edit>` to revise one
|
|
1606
|
+
- `hold` to stop here
|
|
1546
1607
|
```
|
|
1547
1608
|
|
|
1548
1609
|
Notes:
|
|
@@ -1551,7 +1612,9 @@ Notes:
|
|
|
1551
1612
|
- **One blank line between categories**; titles indent at 3 spaces (so the eye lands on the category name first, then the R-IDs scan down).
|
|
1552
1613
|
- **Pulse uses full labels** per `references/cli-output-contract.md` § Pulse tier labels.
|
|
1553
1614
|
- **`accept recommended`** is the visible CTA — NOT `accept all`. "Recommended" frames the action as "the curated set you see on screen"; "all" sounds like a bulk operation over deduped/hidden/raw recs.
|
|
1554
|
-
-
|
|
1615
|
+
- **Surface 4 actions at first render — not more.** The four above (`detail R{N}`, `drop R{N}`, `change R{N}: <edit>`, `hold`) cover the decisive cases. Less-frequent actions stay discoverable but off-screen at the landing:
|
|
1616
|
+
- **`add <topic>`** lets the user request an additional recommendation on the fly (e.g. `add telemetry` → agent calls `regenerate_recommendation` with a new rec hint, or asks the user to clarify what's missing). Surface it in `help` or on the 9.3 detail card, NOT in the landing action line — too many actions at once weakens the selection screen. If the backing API doesn't yet support targeted single-rec addition, prompt the user with: "I can add a rec for `{topic}` by regenerating the full set with that pinned — that takes ~30s. Or hold the current set and add manually via the web UI."
|
|
1617
|
+
- **`show scope`** to expand the full problem statement (covered in 9.2).
|
|
1555
1618
|
|
|
1556
1619
|
##### 9.2 — `show scope` handling
|
|
1557
1620
|
|
|
@@ -1646,7 +1709,7 @@ Ritual build
|
|
|
1646
1709
|
|
|
1647
1710
|
Accepted {N} recommendations.
|
|
1648
1711
|
|
|
1649
|
-
View: https://
|
|
1712
|
+
View: https://app.ritualapp.cloud/e/{exploration_id}
|
|
1650
1713
|
|
|
1651
1714
|
Next: generating the build brief…
|
|
1652
1715
|
```
|
|
@@ -1783,7 +1846,7 @@ When the brief content is in hand (from generate OR polling), **don't dump 300 l
|
|
|
1783
1846
|
```markdown
|
|
1784
1847
|
<!--
|
|
1785
1848
|
Generated by Ritual
|
|
1786
|
-
Exploration: https://
|
|
1849
|
+
Exploration: https://app.ritualapp.cloud/e/{exploration_id}
|
|
1787
1850
|
Build brief id: {brief_id}
|
|
1788
1851
|
Do not remove this header; it preserves implementation lineage.
|
|
1789
1852
|
-->
|
|
@@ -1927,7 +1990,7 @@ feat(<area>): <one-line headline>
|
|
|
1927
1990
|
<short body — what changed, why, key trade-off>
|
|
1928
1991
|
|
|
1929
1992
|
Ritual-Exploration: <exploration_id>
|
|
1930
|
-
Ritual-Exploration-Url: https://
|
|
1993
|
+
Ritual-Exploration-Url: https://app.ritualapp.cloud/e/<exploration_id>
|
|
1931
1994
|
Ritual-RBs-Satisfied: RB-1, RB-2, RB-7
|
|
1932
1995
|
```
|
|
1933
1996
|
|
|
@@ -1980,7 +2043,7 @@ If the user says "y" / "push" / "open PR":
|
|
|
1980
2043
|
|
|
1981
2044
|
## Exploration
|
|
1982
2045
|
|
|
1983
|
-
- Exploration: [<exploration name>](https://
|
|
2046
|
+
- Exploration: [<exploration name>](https://app.ritualapp.cloud/e/<exploration_id>)
|
|
1984
2047
|
- Build brief: see `BUILD-BRIEF.md` (committed in this PR for reviewer reference)
|
|
1985
2048
|
- Deferrals intentionally punted: <count, with one-line each>
|
|
1986
2049
|
|
|
@@ -397,7 +397,7 @@ Steps:
|
|
|
397
397
|
> **{candidate.name}** *(LLM confidence: {Math.round(candidate.llmConfidence * 100)}%)*
|
|
398
398
|
> - *"{candidate.problemStatement first 120 chars, no ellipsis padding}..."*
|
|
399
399
|
> - Why I think it overlaps: {candidate.llmRationale}
|
|
400
|
-
> - URL: `https://
|
|
400
|
+
> - URL: `https://app.ritualapp.cloud/e/{candidate.explorationId}`
|
|
401
401
|
> {endfor}
|
|
402
402
|
>
|
|
403
403
|
> **Choose:**
|
|
@@ -983,7 +983,7 @@ Optimize for:
|
|
|
983
983
|
|
|
984
984
|
References:
|
|
985
985
|
- {RB/decision/exploration label} — {one-line meaning}
|
|
986
|
-
Source: {exploration title or id}{ optional ': https://
|
|
986
|
+
Source: {exploration title or id}{ optional ': https://app.ritualapp.cloud/e/{exploration_id}' if available}
|
|
987
987
|
- {reference}
|
|
988
988
|
|
|
989
989
|
Reply `use` to use this frame and review discovery questions.
|
|
@@ -1040,7 +1040,7 @@ Store `exploration_id`. Move the progress header from Scope to Discovery:
|
|
|
1040
1040
|
Ritual build
|
|
1041
1041
|
✓ Context ✓ Scope ● Discovery ○ Recommendations ○ Build brief ○ Implementation (Your agent)
|
|
1042
1042
|
|
|
1043
|
-
Exploration created. Track progress at https://
|
|
1043
|
+
Exploration created. Track progress at https://app.ritualapp.cloud/e/{exploration_id}
|
|
1044
1044
|
|
|
1045
1045
|
Next: generate discovery questions to resolve the implementation trade-offs.
|
|
1046
1046
|
```
|
|
@@ -1504,10 +1504,67 @@ If you don't already know the user's role on this workspace, prefer the workspac
|
|
|
1504
1504
|
|
|
1505
1505
|
##### 9.1 — Landing screen: grouped category summary + compact scope
|
|
1506
1506
|
|
|
1507
|
-
The recommendations review is the most-read screen in the whole build flow.
|
|
1507
|
+
The recommendations review is the most-read screen in the whole build flow.
|
|
1508
1508
|
|
|
1509
|
-
|
|
1510
|
-
|
|
1509
|
+
```text
|
|
1510
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1511
|
+
STEP 9.1 RENDERING CONTRACT — non-negotiable
|
|
1512
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1513
|
+
|
|
1514
|
+
Landing view is for SELECTION, not reading. Full prose belongs in 9.3.
|
|
1515
|
+
|
|
1516
|
+
✓ DO:
|
|
1517
|
+
- Number categories `1.`, `2.`, `3.` … `K.` in page order
|
|
1518
|
+
- Assign recommendations stable `R1`, `R2`, … `RN` IDs GLOBALLY across
|
|
1519
|
+
all categories (NOT restart per-category — so `detail R7` is
|
|
1520
|
+
unambiguous without naming the category)
|
|
1521
|
+
- Show recommendation TITLES ONLY at the landing
|
|
1522
|
+
- Indent recs 3 spaces under their category
|
|
1523
|
+
- One blank line between categories
|
|
1524
|
+
- Include compact scope line above the list
|
|
1525
|
+
- End with the action block (`accept recommended` etc.)
|
|
1526
|
+
|
|
1527
|
+
✗ DO NOT:
|
|
1528
|
+
- Do NOT render recs as a flat `1..N` list with no category structure
|
|
1529
|
+
- Do NOT use raw numeric rec IDs like `1.`, `2.`, `3.` — use `R1`, `R2`, `R3`
|
|
1530
|
+
- Do NOT show recommendation `content` / summary text at the landing
|
|
1531
|
+
- Do NOT show acceptance criteria, rationale, tactics, or references at
|
|
1532
|
+
the landing — those are 9.3 detail-card content
|
|
1533
|
+
- Do NOT omit category numbering (the prefix is what separates this
|
|
1534
|
+
from a wall-of-text grouped list)
|
|
1535
|
+
- Do NOT invent a "raw / deduped" framing line — the API does not return
|
|
1536
|
+
pre-dedup counts. Use `{N} recommendations across {K} categories.`
|
|
1537
|
+
|
|
1538
|
+
OBSERVED FAILURE — never render this:
|
|
1539
|
+
|
|
1540
|
+
Recommendations (13)
|
|
1541
|
+
|
|
1542
|
+
1. Backfill legacy data to fail-closed PRIVATE visibility
|
|
1543
|
+
Add a constrained `visibility` field with DB default PRIVATE...
|
|
1544
|
+
|
|
1545
|
+
2. Codify actor-state rights around owner-only mutation
|
|
1546
|
+
Define a single permission matrix across PRIVATE/SHARED/PUBLIC...
|
|
1547
|
+
|
|
1548
|
+
3. Centralize object permissions across storefront and dashboard
|
|
1549
|
+
Reusable `can_view_wishlist` / `can_edit_wishlist` methods...
|
|
1550
|
+
|
|
1551
|
+
Why wrong:
|
|
1552
|
+
- Looks grouped only implicitly; categories not visible as headers
|
|
1553
|
+
- Uses `1..N` numeric IDs (should be `R1..RN`)
|
|
1554
|
+
- Dumps `content` summaries — defeats the purpose of a landing view
|
|
1555
|
+
- `detail R7` no longer maps to a stable ID
|
|
1556
|
+
|
|
1557
|
+
PREFLIGHT — before printing 9.1 output, self-check:
|
|
1558
|
+
□ Did I group by `metadata.category.name`?
|
|
1559
|
+
□ Did I prefix each category with `1.`, `2.`, … `K.`?
|
|
1560
|
+
□ Did I assign global `R1..RN` IDs across categories?
|
|
1561
|
+
□ Did I show titles only (no summaries / no rationale)?
|
|
1562
|
+
□ Is there a compact scope line above the list?
|
|
1563
|
+
□ Does my action block use `R{N}` references that match the IDs above?
|
|
1564
|
+
|
|
1565
|
+
If any answer is no, FIX BEFORE PRINTING.
|
|
1566
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1567
|
+
```
|
|
1511
1568
|
|
|
1512
1569
|
Full rail at the landing (Recommendations stage opens):
|
|
1513
1570
|
|
|
@@ -1542,7 +1599,11 @@ Pulse: Reasoning Readiness ~88% · Context Debt 12% · +26% (implementation-read
|
|
|
1542
1599
|
Recommended: reply `accept recommended` to approve these {N} and generate
|
|
1543
1600
|
the build brief.
|
|
1544
1601
|
|
|
1545
|
-
Or reply
|
|
1602
|
+
Or reply:
|
|
1603
|
+
- `detail R7` to inspect one recommendation
|
|
1604
|
+
- `drop R8` to remove one before accepting
|
|
1605
|
+
- `change R3: <edit>` to revise one
|
|
1606
|
+
- `hold` to stop here
|
|
1546
1607
|
```
|
|
1547
1608
|
|
|
1548
1609
|
Notes:
|
|
@@ -1551,7 +1612,9 @@ Notes:
|
|
|
1551
1612
|
- **One blank line between categories**; titles indent at 3 spaces (so the eye lands on the category name first, then the R-IDs scan down).
|
|
1552
1613
|
- **Pulse uses full labels** per `references/cli-output-contract.md` § Pulse tier labels.
|
|
1553
1614
|
- **`accept recommended`** is the visible CTA — NOT `accept all`. "Recommended" frames the action as "the curated set you see on screen"; "all" sounds like a bulk operation over deduped/hidden/raw recs.
|
|
1554
|
-
-
|
|
1615
|
+
- **Surface 4 actions at first render — not more.** The four above (`detail R{N}`, `drop R{N}`, `change R{N}: <edit>`, `hold`) cover the decisive cases. Less-frequent actions stay discoverable but off-screen at the landing:
|
|
1616
|
+
- **`add <topic>`** lets the user request an additional recommendation on the fly (e.g. `add telemetry` → agent calls `regenerate_recommendation` with a new rec hint, or asks the user to clarify what's missing). Surface it in `help` or on the 9.3 detail card, NOT in the landing action line — too many actions at once weakens the selection screen. If the backing API doesn't yet support targeted single-rec addition, prompt the user with: "I can add a rec for `{topic}` by regenerating the full set with that pinned — that takes ~30s. Or hold the current set and add manually via the web UI."
|
|
1617
|
+
- **`show scope`** to expand the full problem statement (covered in 9.2).
|
|
1555
1618
|
|
|
1556
1619
|
##### 9.2 — `show scope` handling
|
|
1557
1620
|
|
|
@@ -1646,7 +1709,7 @@ Ritual build
|
|
|
1646
1709
|
|
|
1647
1710
|
Accepted {N} recommendations.
|
|
1648
1711
|
|
|
1649
|
-
View: https://
|
|
1712
|
+
View: https://app.ritualapp.cloud/e/{exploration_id}
|
|
1650
1713
|
|
|
1651
1714
|
Next: generating the build brief…
|
|
1652
1715
|
```
|
|
@@ -1783,7 +1846,7 @@ When the brief content is in hand (from generate OR polling), **don't dump 300 l
|
|
|
1783
1846
|
```markdown
|
|
1784
1847
|
<!--
|
|
1785
1848
|
Generated by Ritual
|
|
1786
|
-
Exploration: https://
|
|
1849
|
+
Exploration: https://app.ritualapp.cloud/e/{exploration_id}
|
|
1787
1850
|
Build brief id: {brief_id}
|
|
1788
1851
|
Do not remove this header; it preserves implementation lineage.
|
|
1789
1852
|
-->
|
|
@@ -1927,7 +1990,7 @@ feat(<area>): <one-line headline>
|
|
|
1927
1990
|
<short body — what changed, why, key trade-off>
|
|
1928
1991
|
|
|
1929
1992
|
Ritual-Exploration: <exploration_id>
|
|
1930
|
-
Ritual-Exploration-Url: https://
|
|
1993
|
+
Ritual-Exploration-Url: https://app.ritualapp.cloud/e/<exploration_id>
|
|
1931
1994
|
Ritual-RBs-Satisfied: RB-1, RB-2, RB-7
|
|
1932
1995
|
```
|
|
1933
1996
|
|
|
@@ -1980,7 +2043,7 @@ If the user says "y" / "push" / "open PR":
|
|
|
1980
2043
|
|
|
1981
2044
|
## Exploration
|
|
1982
2045
|
|
|
1983
|
-
- Exploration: [<exploration name>](https://
|
|
2046
|
+
- Exploration: [<exploration name>](https://app.ritualapp.cloud/e/<exploration_id>)
|
|
1984
2047
|
- Build brief: see `BUILD-BRIEF.md` (committed in this PR for reviewer reference)
|
|
1985
2048
|
- Deferrals intentionally punted: <count, with one-line each>
|
|
1986
2049
|
|
|
@@ -397,7 +397,7 @@ Steps:
|
|
|
397
397
|
> **{candidate.name}** *(LLM confidence: {Math.round(candidate.llmConfidence * 100)}%)*
|
|
398
398
|
> - *"{candidate.problemStatement first 120 chars, no ellipsis padding}..."*
|
|
399
399
|
> - Why I think it overlaps: {candidate.llmRationale}
|
|
400
|
-
> - URL: `https://
|
|
400
|
+
> - URL: `https://app.ritualapp.cloud/e/{candidate.explorationId}`
|
|
401
401
|
> {endfor}
|
|
402
402
|
>
|
|
403
403
|
> **Choose:**
|
|
@@ -983,7 +983,7 @@ Optimize for:
|
|
|
983
983
|
|
|
984
984
|
References:
|
|
985
985
|
- {RB/decision/exploration label} — {one-line meaning}
|
|
986
|
-
Source: {exploration title or id}{ optional ': https://
|
|
986
|
+
Source: {exploration title or id}{ optional ': https://app.ritualapp.cloud/e/{exploration_id}' if available}
|
|
987
987
|
- {reference}
|
|
988
988
|
|
|
989
989
|
Reply `use` to use this frame and review discovery questions.
|
|
@@ -1040,7 +1040,7 @@ Store `exploration_id`. Move the progress header from Scope to Discovery:
|
|
|
1040
1040
|
Ritual build
|
|
1041
1041
|
✓ Context ✓ Scope ● Discovery ○ Recommendations ○ Build brief ○ Implementation (Your agent)
|
|
1042
1042
|
|
|
1043
|
-
Exploration created. Track progress at https://
|
|
1043
|
+
Exploration created. Track progress at https://app.ritualapp.cloud/e/{exploration_id}
|
|
1044
1044
|
|
|
1045
1045
|
Next: generate discovery questions to resolve the implementation trade-offs.
|
|
1046
1046
|
```
|
|
@@ -1504,10 +1504,67 @@ If you don't already know the user's role on this workspace, prefer the workspac
|
|
|
1504
1504
|
|
|
1505
1505
|
##### 9.1 — Landing screen: grouped category summary + compact scope
|
|
1506
1506
|
|
|
1507
|
-
The recommendations review is the most-read screen in the whole build flow.
|
|
1507
|
+
The recommendations review is the most-read screen in the whole build flow.
|
|
1508
1508
|
|
|
1509
|
-
|
|
1510
|
-
|
|
1509
|
+
```text
|
|
1510
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1511
|
+
STEP 9.1 RENDERING CONTRACT — non-negotiable
|
|
1512
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1513
|
+
|
|
1514
|
+
Landing view is for SELECTION, not reading. Full prose belongs in 9.3.
|
|
1515
|
+
|
|
1516
|
+
✓ DO:
|
|
1517
|
+
- Number categories `1.`, `2.`, `3.` … `K.` in page order
|
|
1518
|
+
- Assign recommendations stable `R1`, `R2`, … `RN` IDs GLOBALLY across
|
|
1519
|
+
all categories (NOT restart per-category — so `detail R7` is
|
|
1520
|
+
unambiguous without naming the category)
|
|
1521
|
+
- Show recommendation TITLES ONLY at the landing
|
|
1522
|
+
- Indent recs 3 spaces under their category
|
|
1523
|
+
- One blank line between categories
|
|
1524
|
+
- Include compact scope line above the list
|
|
1525
|
+
- End with the action block (`accept recommended` etc.)
|
|
1526
|
+
|
|
1527
|
+
✗ DO NOT:
|
|
1528
|
+
- Do NOT render recs as a flat `1..N` list with no category structure
|
|
1529
|
+
- Do NOT use raw numeric rec IDs like `1.`, `2.`, `3.` — use `R1`, `R2`, `R3`
|
|
1530
|
+
- Do NOT show recommendation `content` / summary text at the landing
|
|
1531
|
+
- Do NOT show acceptance criteria, rationale, tactics, or references at
|
|
1532
|
+
the landing — those are 9.3 detail-card content
|
|
1533
|
+
- Do NOT omit category numbering (the prefix is what separates this
|
|
1534
|
+
from a wall-of-text grouped list)
|
|
1535
|
+
- Do NOT invent a "raw / deduped" framing line — the API does not return
|
|
1536
|
+
pre-dedup counts. Use `{N} recommendations across {K} categories.`
|
|
1537
|
+
|
|
1538
|
+
OBSERVED FAILURE — never render this:
|
|
1539
|
+
|
|
1540
|
+
Recommendations (13)
|
|
1541
|
+
|
|
1542
|
+
1. Backfill legacy data to fail-closed PRIVATE visibility
|
|
1543
|
+
Add a constrained `visibility` field with DB default PRIVATE...
|
|
1544
|
+
|
|
1545
|
+
2. Codify actor-state rights around owner-only mutation
|
|
1546
|
+
Define a single permission matrix across PRIVATE/SHARED/PUBLIC...
|
|
1547
|
+
|
|
1548
|
+
3. Centralize object permissions across storefront and dashboard
|
|
1549
|
+
Reusable `can_view_wishlist` / `can_edit_wishlist` methods...
|
|
1550
|
+
|
|
1551
|
+
Why wrong:
|
|
1552
|
+
- Looks grouped only implicitly; categories not visible as headers
|
|
1553
|
+
- Uses `1..N` numeric IDs (should be `R1..RN`)
|
|
1554
|
+
- Dumps `content` summaries — defeats the purpose of a landing view
|
|
1555
|
+
- `detail R7` no longer maps to a stable ID
|
|
1556
|
+
|
|
1557
|
+
PREFLIGHT — before printing 9.1 output, self-check:
|
|
1558
|
+
□ Did I group by `metadata.category.name`?
|
|
1559
|
+
□ Did I prefix each category with `1.`, `2.`, … `K.`?
|
|
1560
|
+
□ Did I assign global `R1..RN` IDs across categories?
|
|
1561
|
+
□ Did I show titles only (no summaries / no rationale)?
|
|
1562
|
+
□ Is there a compact scope line above the list?
|
|
1563
|
+
□ Does my action block use `R{N}` references that match the IDs above?
|
|
1564
|
+
|
|
1565
|
+
If any answer is no, FIX BEFORE PRINTING.
|
|
1566
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1567
|
+
```
|
|
1511
1568
|
|
|
1512
1569
|
Full rail at the landing (Recommendations stage opens):
|
|
1513
1570
|
|
|
@@ -1542,7 +1599,11 @@ Pulse: Reasoning Readiness ~88% · Context Debt 12% · +26% (implementation-read
|
|
|
1542
1599
|
Recommended: reply `accept recommended` to approve these {N} and generate
|
|
1543
1600
|
the build brief.
|
|
1544
1601
|
|
|
1545
|
-
Or reply
|
|
1602
|
+
Or reply:
|
|
1603
|
+
- `detail R7` to inspect one recommendation
|
|
1604
|
+
- `drop R8` to remove one before accepting
|
|
1605
|
+
- `change R3: <edit>` to revise one
|
|
1606
|
+
- `hold` to stop here
|
|
1546
1607
|
```
|
|
1547
1608
|
|
|
1548
1609
|
Notes:
|
|
@@ -1551,7 +1612,9 @@ Notes:
|
|
|
1551
1612
|
- **One blank line between categories**; titles indent at 3 spaces (so the eye lands on the category name first, then the R-IDs scan down).
|
|
1552
1613
|
- **Pulse uses full labels** per `references/cli-output-contract.md` § Pulse tier labels.
|
|
1553
1614
|
- **`accept recommended`** is the visible CTA — NOT `accept all`. "Recommended" frames the action as "the curated set you see on screen"; "all" sounds like a bulk operation over deduped/hidden/raw recs.
|
|
1554
|
-
-
|
|
1615
|
+
- **Surface 4 actions at first render — not more.** The four above (`detail R{N}`, `drop R{N}`, `change R{N}: <edit>`, `hold`) cover the decisive cases. Less-frequent actions stay discoverable but off-screen at the landing:
|
|
1616
|
+
- **`add <topic>`** lets the user request an additional recommendation on the fly (e.g. `add telemetry` → agent calls `regenerate_recommendation` with a new rec hint, or asks the user to clarify what's missing). Surface it in `help` or on the 9.3 detail card, NOT in the landing action line — too many actions at once weakens the selection screen. If the backing API doesn't yet support targeted single-rec addition, prompt the user with: "I can add a rec for `{topic}` by regenerating the full set with that pinned — that takes ~30s. Or hold the current set and add manually via the web UI."
|
|
1617
|
+
- **`show scope`** to expand the full problem statement (covered in 9.2).
|
|
1555
1618
|
|
|
1556
1619
|
##### 9.2 — `show scope` handling
|
|
1557
1620
|
|
|
@@ -1646,7 +1709,7 @@ Ritual build
|
|
|
1646
1709
|
|
|
1647
1710
|
Accepted {N} recommendations.
|
|
1648
1711
|
|
|
1649
|
-
View: https://
|
|
1712
|
+
View: https://app.ritualapp.cloud/e/{exploration_id}
|
|
1650
1713
|
|
|
1651
1714
|
Next: generating the build brief…
|
|
1652
1715
|
```
|
|
@@ -1783,7 +1846,7 @@ When the brief content is in hand (from generate OR polling), **don't dump 300 l
|
|
|
1783
1846
|
```markdown
|
|
1784
1847
|
<!--
|
|
1785
1848
|
Generated by Ritual
|
|
1786
|
-
Exploration: https://
|
|
1849
|
+
Exploration: https://app.ritualapp.cloud/e/{exploration_id}
|
|
1787
1850
|
Build brief id: {brief_id}
|
|
1788
1851
|
Do not remove this header; it preserves implementation lineage.
|
|
1789
1852
|
-->
|
|
@@ -1927,7 +1990,7 @@ feat(<area>): <one-line headline>
|
|
|
1927
1990
|
<short body — what changed, why, key trade-off>
|
|
1928
1991
|
|
|
1929
1992
|
Ritual-Exploration: <exploration_id>
|
|
1930
|
-
Ritual-Exploration-Url: https://
|
|
1993
|
+
Ritual-Exploration-Url: https://app.ritualapp.cloud/e/<exploration_id>
|
|
1931
1994
|
Ritual-RBs-Satisfied: RB-1, RB-2, RB-7
|
|
1932
1995
|
```
|
|
1933
1996
|
|
|
@@ -1980,7 +2043,7 @@ If the user says "y" / "push" / "open PR":
|
|
|
1980
2043
|
|
|
1981
2044
|
## Exploration
|
|
1982
2045
|
|
|
1983
|
-
- Exploration: [<exploration name>](https://
|
|
2046
|
+
- Exploration: [<exploration name>](https://app.ritualapp.cloud/e/<exploration_id>)
|
|
1984
2047
|
- Build brief: see `BUILD-BRIEF.md` (committed in this PR for reviewer reference)
|
|
1985
2048
|
- Deferrals intentionally punted: <count, with one-line each>
|
|
1986
2049
|
|
|
@@ -397,7 +397,7 @@ Steps:
|
|
|
397
397
|
> **{candidate.name}** *(LLM confidence: {Math.round(candidate.llmConfidence * 100)}%)*
|
|
398
398
|
> - *"{candidate.problemStatement first 120 chars, no ellipsis padding}..."*
|
|
399
399
|
> - Why I think it overlaps: {candidate.llmRationale}
|
|
400
|
-
> - URL: `https://
|
|
400
|
+
> - URL: `https://app.ritualapp.cloud/e/{candidate.explorationId}`
|
|
401
401
|
> {endfor}
|
|
402
402
|
>
|
|
403
403
|
> **Choose:**
|
|
@@ -983,7 +983,7 @@ Optimize for:
|
|
|
983
983
|
|
|
984
984
|
References:
|
|
985
985
|
- {RB/decision/exploration label} — {one-line meaning}
|
|
986
|
-
Source: {exploration title or id}{ optional ': https://
|
|
986
|
+
Source: {exploration title or id}{ optional ': https://app.ritualapp.cloud/e/{exploration_id}' if available}
|
|
987
987
|
- {reference}
|
|
988
988
|
|
|
989
989
|
Reply `use` to use this frame and review discovery questions.
|
|
@@ -1040,7 +1040,7 @@ Store `exploration_id`. Move the progress header from Scope to Discovery:
|
|
|
1040
1040
|
Ritual build
|
|
1041
1041
|
✓ Context ✓ Scope ● Discovery ○ Recommendations ○ Build brief ○ Implementation (Your agent)
|
|
1042
1042
|
|
|
1043
|
-
Exploration created. Track progress at https://
|
|
1043
|
+
Exploration created. Track progress at https://app.ritualapp.cloud/e/{exploration_id}
|
|
1044
1044
|
|
|
1045
1045
|
Next: generate discovery questions to resolve the implementation trade-offs.
|
|
1046
1046
|
```
|
|
@@ -1504,10 +1504,67 @@ If you don't already know the user's role on this workspace, prefer the workspac
|
|
|
1504
1504
|
|
|
1505
1505
|
##### 9.1 — Landing screen: grouped category summary + compact scope
|
|
1506
1506
|
|
|
1507
|
-
The recommendations review is the most-read screen in the whole build flow.
|
|
1507
|
+
The recommendations review is the most-read screen in the whole build flow.
|
|
1508
1508
|
|
|
1509
|
-
|
|
1510
|
-
|
|
1509
|
+
```text
|
|
1510
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1511
|
+
STEP 9.1 RENDERING CONTRACT — non-negotiable
|
|
1512
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1513
|
+
|
|
1514
|
+
Landing view is for SELECTION, not reading. Full prose belongs in 9.3.
|
|
1515
|
+
|
|
1516
|
+
✓ DO:
|
|
1517
|
+
- Number categories `1.`, `2.`, `3.` … `K.` in page order
|
|
1518
|
+
- Assign recommendations stable `R1`, `R2`, … `RN` IDs GLOBALLY across
|
|
1519
|
+
all categories (NOT restart per-category — so `detail R7` is
|
|
1520
|
+
unambiguous without naming the category)
|
|
1521
|
+
- Show recommendation TITLES ONLY at the landing
|
|
1522
|
+
- Indent recs 3 spaces under their category
|
|
1523
|
+
- One blank line between categories
|
|
1524
|
+
- Include compact scope line above the list
|
|
1525
|
+
- End with the action block (`accept recommended` etc.)
|
|
1526
|
+
|
|
1527
|
+
✗ DO NOT:
|
|
1528
|
+
- Do NOT render recs as a flat `1..N` list with no category structure
|
|
1529
|
+
- Do NOT use raw numeric rec IDs like `1.`, `2.`, `3.` — use `R1`, `R2`, `R3`
|
|
1530
|
+
- Do NOT show recommendation `content` / summary text at the landing
|
|
1531
|
+
- Do NOT show acceptance criteria, rationale, tactics, or references at
|
|
1532
|
+
the landing — those are 9.3 detail-card content
|
|
1533
|
+
- Do NOT omit category numbering (the prefix is what separates this
|
|
1534
|
+
from a wall-of-text grouped list)
|
|
1535
|
+
- Do NOT invent a "raw / deduped" framing line — the API does not return
|
|
1536
|
+
pre-dedup counts. Use `{N} recommendations across {K} categories.`
|
|
1537
|
+
|
|
1538
|
+
OBSERVED FAILURE — never render this:
|
|
1539
|
+
|
|
1540
|
+
Recommendations (13)
|
|
1541
|
+
|
|
1542
|
+
1. Backfill legacy data to fail-closed PRIVATE visibility
|
|
1543
|
+
Add a constrained `visibility` field with DB default PRIVATE...
|
|
1544
|
+
|
|
1545
|
+
2. Codify actor-state rights around owner-only mutation
|
|
1546
|
+
Define a single permission matrix across PRIVATE/SHARED/PUBLIC...
|
|
1547
|
+
|
|
1548
|
+
3. Centralize object permissions across storefront and dashboard
|
|
1549
|
+
Reusable `can_view_wishlist` / `can_edit_wishlist` methods...
|
|
1550
|
+
|
|
1551
|
+
Why wrong:
|
|
1552
|
+
- Looks grouped only implicitly; categories not visible as headers
|
|
1553
|
+
- Uses `1..N` numeric IDs (should be `R1..RN`)
|
|
1554
|
+
- Dumps `content` summaries — defeats the purpose of a landing view
|
|
1555
|
+
- `detail R7` no longer maps to a stable ID
|
|
1556
|
+
|
|
1557
|
+
PREFLIGHT — before printing 9.1 output, self-check:
|
|
1558
|
+
□ Did I group by `metadata.category.name`?
|
|
1559
|
+
□ Did I prefix each category with `1.`, `2.`, … `K.`?
|
|
1560
|
+
□ Did I assign global `R1..RN` IDs across categories?
|
|
1561
|
+
□ Did I show titles only (no summaries / no rationale)?
|
|
1562
|
+
□ Is there a compact scope line above the list?
|
|
1563
|
+
□ Does my action block use `R{N}` references that match the IDs above?
|
|
1564
|
+
|
|
1565
|
+
If any answer is no, FIX BEFORE PRINTING.
|
|
1566
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1567
|
+
```
|
|
1511
1568
|
|
|
1512
1569
|
Full rail at the landing (Recommendations stage opens):
|
|
1513
1570
|
|
|
@@ -1542,7 +1599,11 @@ Pulse: Reasoning Readiness ~88% · Context Debt 12% · +26% (implementation-read
|
|
|
1542
1599
|
Recommended: reply `accept recommended` to approve these {N} and generate
|
|
1543
1600
|
the build brief.
|
|
1544
1601
|
|
|
1545
|
-
Or reply
|
|
1602
|
+
Or reply:
|
|
1603
|
+
- `detail R7` to inspect one recommendation
|
|
1604
|
+
- `drop R8` to remove one before accepting
|
|
1605
|
+
- `change R3: <edit>` to revise one
|
|
1606
|
+
- `hold` to stop here
|
|
1546
1607
|
```
|
|
1547
1608
|
|
|
1548
1609
|
Notes:
|
|
@@ -1551,7 +1612,9 @@ Notes:
|
|
|
1551
1612
|
- **One blank line between categories**; titles indent at 3 spaces (so the eye lands on the category name first, then the R-IDs scan down).
|
|
1552
1613
|
- **Pulse uses full labels** per `references/cli-output-contract.md` § Pulse tier labels.
|
|
1553
1614
|
- **`accept recommended`** is the visible CTA — NOT `accept all`. "Recommended" frames the action as "the curated set you see on screen"; "all" sounds like a bulk operation over deduped/hidden/raw recs.
|
|
1554
|
-
-
|
|
1615
|
+
- **Surface 4 actions at first render — not more.** The four above (`detail R{N}`, `drop R{N}`, `change R{N}: <edit>`, `hold`) cover the decisive cases. Less-frequent actions stay discoverable but off-screen at the landing:
|
|
1616
|
+
- **`add <topic>`** lets the user request an additional recommendation on the fly (e.g. `add telemetry` → agent calls `regenerate_recommendation` with a new rec hint, or asks the user to clarify what's missing). Surface it in `help` or on the 9.3 detail card, NOT in the landing action line — too many actions at once weakens the selection screen. If the backing API doesn't yet support targeted single-rec addition, prompt the user with: "I can add a rec for `{topic}` by regenerating the full set with that pinned — that takes ~30s. Or hold the current set and add manually via the web UI."
|
|
1617
|
+
- **`show scope`** to expand the full problem statement (covered in 9.2).
|
|
1555
1618
|
|
|
1556
1619
|
##### 9.2 — `show scope` handling
|
|
1557
1620
|
|
|
@@ -1646,7 +1709,7 @@ Ritual build
|
|
|
1646
1709
|
|
|
1647
1710
|
Accepted {N} recommendations.
|
|
1648
1711
|
|
|
1649
|
-
View: https://
|
|
1712
|
+
View: https://app.ritualapp.cloud/e/{exploration_id}
|
|
1650
1713
|
|
|
1651
1714
|
Next: generating the build brief…
|
|
1652
1715
|
```
|
|
@@ -1783,7 +1846,7 @@ When the brief content is in hand (from generate OR polling), **don't dump 300 l
|
|
|
1783
1846
|
```markdown
|
|
1784
1847
|
<!--
|
|
1785
1848
|
Generated by Ritual
|
|
1786
|
-
Exploration: https://
|
|
1849
|
+
Exploration: https://app.ritualapp.cloud/e/{exploration_id}
|
|
1787
1850
|
Build brief id: {brief_id}
|
|
1788
1851
|
Do not remove this header; it preserves implementation lineage.
|
|
1789
1852
|
-->
|
|
@@ -1927,7 +1990,7 @@ feat(<area>): <one-line headline>
|
|
|
1927
1990
|
<short body — what changed, why, key trade-off>
|
|
1928
1991
|
|
|
1929
1992
|
Ritual-Exploration: <exploration_id>
|
|
1930
|
-
Ritual-Exploration-Url: https://
|
|
1993
|
+
Ritual-Exploration-Url: https://app.ritualapp.cloud/e/<exploration_id>
|
|
1931
1994
|
Ritual-RBs-Satisfied: RB-1, RB-2, RB-7
|
|
1932
1995
|
```
|
|
1933
1996
|
|
|
@@ -1980,7 +2043,7 @@ If the user says "y" / "push" / "open PR":
|
|
|
1980
2043
|
|
|
1981
2044
|
## Exploration
|
|
1982
2045
|
|
|
1983
|
-
- Exploration: [<exploration name>](https://
|
|
2046
|
+
- Exploration: [<exploration name>](https://app.ritualapp.cloud/e/<exploration_id>)
|
|
1984
2047
|
- Build brief: see `BUILD-BRIEF.md` (committed in this PR for reviewer reference)
|
|
1985
2048
|
- Deferrals intentionally punted: <count, with one-line each>
|
|
1986
2049
|
|