@seanyao/roll 3.620.1 → 3.624.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 +46 -0
- package/dist/roll.mjs +4563 -3369
- package/package.json +1 -1
- package/lib/__pycache__/changelog_audit.cpython-314.pyc +0 -0
- package/lib/__pycache__/github_sync.cpython-314.pyc +0 -0
- package/lib/__pycache__/loop-fmt.cpython-314.pyc +0 -0
- package/lib/__pycache__/loop_result_eval.cpython-314.pyc +0 -0
- package/lib/__pycache__/loop_unstick.cpython-314.pyc +0 -0
- package/lib/__pycache__/model_prices.cpython-314.pyc +0 -0
- package/lib/__pycache__/prices_fetcher.cpython-314.pyc +0 -0
- package/lib/__pycache__/roll-home.cpython-314.pyc +0 -0
- package/lib/__pycache__/roll-loop-status.cpython-314.pyc +0 -0
- package/lib/__pycache__/roll_git.cpython-314.pyc +0 -0
- package/lib/__pycache__/roll_render.cpython-314.pyc +0 -0
- package/lib/__pycache__/slides-render.cpython-314.pyc +0 -0
- package/lib/agent_usage/__pycache__/__init__.cpython-314.pyc +0 -0
- package/lib/agent_usage/__pycache__/gemini.cpython-314.pyc +0 -0
- package/lib/agent_usage/__pycache__/kimi.cpython-314.pyc +0 -0
- package/lib/agent_usage/__pycache__/openai.cpython-314.pyc +0 -0
- package/lib/agent_usage/__pycache__/pi.cpython-314.pyc +0 -0
- package/lib/agent_usage/__pycache__/pi_emit.cpython-314.pyc +0 -0
- package/lib/agent_usage/__pycache__/qwen.cpython-314.pyc +0 -0
- package/skills/README.md +0 -64
- package/skills/docs/skill-authoring.md +0 -74
- package/skills/reports/skill-audit-summary.md +0 -53
- package/skills/roll-.changelog/SKILL.md +0 -47
- package/skills/roll-.changelog/references/full-contract.md +0 -462
- package/skills/roll-.clarify/SKILL.md +0 -64
- package/skills/roll-.dream/SKILL.md +0 -47
- package/skills/roll-.dream/references/full-contract.md +0 -365
- package/skills/roll-.echo/SKILL.md +0 -118
- package/skills/roll-.qa/SKILL.md +0 -47
- package/skills/roll-.qa/references/full-contract.md +0 -256
- package/skills/roll-.review/SKILL.md +0 -148
- package/skills/roll-build/SKILL.md +0 -49
- package/skills/roll-build/references/full-contract.md +0 -968
- package/skills/roll-debug/SKILL.md +0 -48
- package/skills/roll-debug/assets/injectable-bb.js +0 -263
- package/skills/roll-debug/references/full-contract.md +0 -607
- package/skills/roll-design/SKILL.md +0 -52
- package/skills/roll-design/references/engineering-checklist.md +0 -298
- package/skills/roll-design/references/full-contract.md +0 -940
- package/skills/roll-doc-audit/SKILL.md +0 -51
- package/skills/roll-doc-audit/references/full-contract.md +0 -796
- package/skills/roll-doctor/SKILL.md +0 -211
- package/skills/roll-fix/SKILL.md +0 -49
- package/skills/roll-fix/references/full-contract.md +0 -672
- package/skills/roll-idea/SKILL.md +0 -62
- package/skills/roll-loop/SKILL.md +0 -50
- package/skills/roll-loop/references/full-contract.md +0 -534
- package/skills/roll-notes/SKILL.md +0 -107
- package/skills/roll-onboard/SKILL.md +0 -238
- package/skills/roll-peer/SKILL.md +0 -47
- package/skills/roll-peer/references/full-contract.md +0 -323
- package/skills/roll-propose/SKILL.md +0 -155
- package/skills/roll-review-pr/SKILL.md +0 -62
- package/skills/roll-spar/SKILL.md +0 -47
- package/skills/roll-spar/references/full-contract.md +0 -288
- package/skills/route-cases/skills.json +0 -216
- package/skills/scripts/audit-skills.mjs +0 -272
- package/skills/scripts/test-audit-skills.mjs +0 -39
- package/skills/tests/fixtures/skill-audit/block-skill/SKILL.md +0 -12
- package/skills/tests/fixtures/skill-audit/minimal-skill/SKILL.md +0 -8
- package/skills/tests/fixtures/skill-audit/quoted-skill/SKILL.md +0 -10
- package/skills/tests/fixtures/skill-audit/route-cases.json +0 -21
- package/skills/tests/fixtures/skill-audit/spoke-skill/SKILL.md +0 -12
- package/skills/tests/fixtures/skill-audit/spoke-skill/references/runbook.md +0 -3
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: roll-notes
|
|
3
|
-
license: MIT
|
|
4
|
-
allowed-tools: "Read, Edit, Write, Bash(date:*)"
|
|
5
|
-
description: "Load when recording a development moment, decision, discovery, success, or failure into Roll chronological project diary."
|
|
6
|
-
---
|
|
7
|
-
# roll-notes
|
|
8
|
-
|
|
9
|
-
## Gotchas
|
|
10
|
-
|
|
11
|
-
- Notes are chronological memory, not backlog commitments or release notes.
|
|
12
|
-
- Record concrete observations with date context; avoid turning notes into hidden task lists.
|
|
13
|
-
|
|
14
|
-
> 项目日记技能。记录开发过程中的成功、失败、感受和任何值得记住的事情。
|
|
15
|
-
> Append-only, timeline-driven, no fixed format.
|
|
16
|
-
|
|
17
|
-
## Trigger
|
|
18
|
-
|
|
19
|
-
- User says "记一下"、"写进日记"、"append 到日记"
|
|
20
|
-
- User asks to record a feeling, finding, or moment
|
|
21
|
-
- A project milestone is reached and worth capturing
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
$roll-notes 终于搞定了那个 WebSocket 断线重连的 bug
|
|
25
|
-
$roll-notes 今天的 code review 给了很好的反馈
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## When Not to Use
|
|
29
|
-
|
|
30
|
-
- Capturing a bug or feature idea into BACKLOG (use `$roll-idea`)
|
|
31
|
-
- Generating the user-facing changelog (use `$roll-.changelog`)
|
|
32
|
-
- Writing design documents or AC (use `$roll-design`)
|
|
33
|
-
|
|
34
|
-
## Behavior
|
|
35
|
-
|
|
36
|
-
1. **Determine file path**: `.roll/notes/YYYY-MM-DD.md` relative to project root (parallel to `.roll/dream/` and `.roll/briefs/` — notes is project metadata, not source)
|
|
37
|
-
2. **Get current time**: Use `Asia/Shanghai` timezone (`TZ=Asia/Shanghai date`)
|
|
38
|
-
3. **Read existing entries for style**: Before writing, read the last 2–3 entries
|
|
39
|
-
in the same file. Analyze their style: heading format, voice/tone,
|
|
40
|
-
paragraph structure, emoji usage, code block conventions, sign-off pattern.
|
|
41
|
-
New entries must continue this style — do not invent new structural patterns.
|
|
42
|
-
4. **Append**: Add new entry at end of file — never overwrite existing content
|
|
43
|
-
5. **Create if missing**: If file doesn't exist, create with a `# YYYY-MM-DD — <one-line summary>` header
|
|
44
|
-
6. **Free format**: Paragraph, list, code block — whatever fits the moment
|
|
45
|
-
|
|
46
|
-
## File format
|
|
47
|
-
|
|
48
|
-
```markdown
|
|
49
|
-
# YYYY-MM-DD — 一句话概括今天
|
|
50
|
-
|
|
51
|
-
> 时间:北京时间 HH:MM
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
## HH:MM — 事件标题
|
|
56
|
-
|
|
57
|
-
发生了什么、怎么解决的、什么感受。
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## HH:MM — 另一个事件
|
|
62
|
-
|
|
63
|
-
...
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
## 写作风格(强制)
|
|
67
|
-
|
|
68
|
-
**禁止干巴巴的 checklist。禁止只有结论没有过程。必须有人的声音。**
|
|
69
|
-
|
|
70
|
-
### 叙事驱动
|
|
71
|
-
以时间线和事件推进为主线,像讲故事一样记录。不是 `补了功能,pytest 绿`,而是 `"电池剩余电量在哪里看?"我一愣,US-PLAT-003 的 AC 明明写了...`
|
|
72
|
-
|
|
73
|
-
### 技术细节嵌入叙事
|
|
74
|
-
代码、数据、命令行是故事的一部分,自然插入,不是附录。
|
|
75
|
-
|
|
76
|
-
### 对话与互动
|
|
77
|
-
记录用户的反馈、提问、情绪。日记是对话记录,不是独白。
|
|
78
|
-
|
|
79
|
-
### 诚实记录错误
|
|
80
|
-
失败、困惑、教训比成功更值得记录。
|
|
81
|
-
|
|
82
|
-
### 标题有画面感
|
|
83
|
-
不是功能清单。如 `每秒 20 行的噪音`、`22 个文件挤在一个抽屉里`。
|
|
84
|
-
|
|
85
|
-
### 结尾有收束
|
|
86
|
-
最后一段回到人的状态。如 `"值了"。"睡了"。push。`
|
|
87
|
-
|
|
88
|
-
## Rules
|
|
89
|
-
|
|
90
|
-
- **Style continuity**: Match the EXACT style, tone, and formatting of previous
|
|
91
|
-
entries in the same file. Do not invent new structural patterns or section
|
|
92
|
-
headers. If the file already has entries, analyze them first and confirm your
|
|
93
|
-
understanding of their style before writing.
|
|
94
|
-
- **No planning**: Never write "明日待办" or "下一步"
|
|
95
|
-
- **No summaries**: Never write "今日收获" or "经验教训"
|
|
96
|
-
- **Pure record**: What happened, as-is — honest, immediate, rough is fine
|
|
97
|
-
- **Append freely**: Multiple entries per day is normal
|
|
98
|
-
|
|
99
|
-
## File location
|
|
100
|
-
|
|
101
|
-
```
|
|
102
|
-
.roll/
|
|
103
|
-
└── notes/
|
|
104
|
-
└── YYYY-MM-DD.md
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
注:notes 是项目元数据(与 `.roll/dream/` / `.roll/briefs/` 同级),不入 git;由 dream/brief 等下游 skill 跨日聚合。
|
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: roll-onboard
|
|
3
|
-
license: MIT
|
|
4
|
-
description: "Load when bringing a legacy project into Roll through interactive discovery questions and generation of .roll/onboard-plan.yaml for roll init --apply."
|
|
5
|
-
---
|
|
6
|
-
# Roll Onboard
|
|
7
|
-
|
|
8
|
-
## Gotchas
|
|
9
|
-
|
|
10
|
-
- Onboard gathers a contract for roll init --apply; it should not mutate the project before the plan is reviewed.
|
|
11
|
-
- Respect privacy/scope answers from the interactive questions as hard constraints.
|
|
12
|
-
|
|
13
|
-
> Follows the Architecture Constraints, Development Discipline, and Engineering Common Sense defined in the project AGENTS.md.
|
|
14
|
-
|
|
15
|
-
Interactive onboarding flow for **legacy projects**: existing code that needs to adopt the Roll convention without disrupting how the team already works.
|
|
16
|
-
|
|
17
|
-
## Trigger
|
|
18
|
-
|
|
19
|
-
This skill runs when:
|
|
20
|
-
|
|
21
|
-
- `roll init` detected a legacy project (≥10 source files, no `AGENTS.md`)
|
|
22
|
-
- The CLI told the user to open an AI agent and run `$roll-onboard`
|
|
23
|
-
- The user has now invoked you here
|
|
24
|
-
|
|
25
|
-
## Hard responsibility boundary
|
|
26
|
-
|
|
27
|
-
You are the **认知 (cognition) layer**. Your job ends with writing a plan file.
|
|
28
|
-
|
|
29
|
-
| You do | You do NOT |
|
|
30
|
-
|--------|------------|
|
|
31
|
-
| Read project code, infer type/domains/modules | Modify any source file |
|
|
32
|
-
| Call `roll-doc-audit --dry-run` to get a gap report | Call `roll-doc-audit` (write mode) |
|
|
33
|
-
| Ask the user 9 questions across 3 groups | Decide for the user |
|
|
34
|
-
| Produce `.roll/onboard-plan.yaml` | Write `.gitignore` |
|
|
35
|
-
| Produce `.roll/onboard-plan.yaml` | Run `roll init --apply` |
|
|
36
|
-
|
|
37
|
-
Hard constraint: **AI cannot create files in the user's project other than `.roll/onboard-plan.yaml`.** Anything else is `bash`'s job (`roll init --apply`).
|
|
38
|
-
|
|
39
|
-
## Inputs you must read
|
|
40
|
-
|
|
41
|
-
1. The repository tree (use the project's own structure to infer technologies)
|
|
42
|
-
2. Any existing `README.md` / `package.json` / `pyproject.toml` / `Cargo.toml` / `go.mod` etc. as evidence
|
|
43
|
-
3. `roll-doc-audit --dry-run` output → identifies what documentation gaps exist
|
|
44
|
-
4. The path-audit pattern: scan for legacy structure markers (`BACKLOG.md`, `docs/features/`, etc.) — if any are present, REFUSE and tell the user to run `npx @seanyao/roll@2 migrate` first
|
|
45
|
-
|
|
46
|
-
## Workflow
|
|
47
|
-
|
|
48
|
-
### Step 0 — Pre-flight
|
|
49
|
-
|
|
50
|
-
1. Check that you're in a legacy project root (no `AGENTS.md`, has source code)
|
|
51
|
-
2. If `BACKLOG.md` or `docs/features/` already present → STOP, tell user to run `npx @seanyao/roll@2 migrate` first (this is a partial-migration project, not legacy)
|
|
52
|
-
3. Check `.roll/onboard-plan.yaml` doesn't already exist; if it does, ask user whether to overwrite
|
|
53
|
-
|
|
54
|
-
### Step 1 — Read code, build understanding
|
|
55
|
-
|
|
56
|
-
Walk the repo. Identify:
|
|
57
|
-
- **type**: one of `backend-service` / `frontend-only` / `fullstack` / `cli`
|
|
58
|
-
- **description**: 1-2 sentence summary of what this project does
|
|
59
|
-
- **domains**: top business/technical domains (e.g., "auth", "billing", "search")
|
|
60
|
-
- **key_modules**: top 3-5 modules that hold most of the logic
|
|
61
|
-
|
|
62
|
-
### Step 1b — Phase 2 analysis: business model, tech, tests (US-ONBOARD-016)
|
|
63
|
-
|
|
64
|
-
A single onboard now produces three structured analysis sections in the plan
|
|
65
|
-
(`domain_model`, `tech_analysis`, `test_assessment`). Build them here so Step 4
|
|
66
|
-
can serialise them.
|
|
67
|
-
|
|
68
|
-
**`domain_model`** — from the code you read, identify the bounded contexts. For
|
|
69
|
-
each: a `name`, its `aggregates` (the entities that own consistency), and its
|
|
70
|
-
`ubiquitous_language` (the domain terms the code/docs actually use). If you
|
|
71
|
-
genuinely cannot infer contexts from the code, emit an empty
|
|
72
|
-
`bounded_contexts: []` — do NOT invent contexts that aren't in the code.
|
|
73
|
-
|
|
74
|
-
**`tech_analysis`** — `stack` (languages/frameworks evidenced by manifests),
|
|
75
|
-
`dependencies` (from `package.json` / `pyproject.toml` / `go.mod` / `Cargo.toml`
|
|
76
|
-
etc.), `architecture_notes` (observed structure, not aspirational), and `risks`
|
|
77
|
-
(each a mapping with a `description`; optionally `severity: LOW|MEDIUM|HIGH` and
|
|
78
|
-
an `evidence: detected|inferred` tag).
|
|
79
|
-
|
|
80
|
-
**`test_assessment`** — this section is under a **hard anti-hallucination
|
|
81
|
-
constraint** (next sub-step). Do NOT write it from intuition.
|
|
82
|
-
|
|
83
|
-
#### The verifiable test scan (ANTI-HALLUCINATION HARD CONSTRAINT)
|
|
84
|
-
|
|
85
|
-
Every `test_assessment` claim must be backed by a real filesystem scan you run
|
|
86
|
-
here — never by "what a project like this usually needs". Run these probes and
|
|
87
|
-
record the raw counts/paths:
|
|
88
|
-
|
|
89
|
-
1. **Count test files** by the conventional patterns:
|
|
90
|
-
- `*.test.*` / `*.spec.*` (JS/TS), `*_test.go` (Go), `test_*.py` / `*_test.py` (Python), `*_spec.rb` (Ruby), `*Test.java` (Java)
|
|
91
|
-
- e.g. `git ls-files | grep -cE '\.(test|spec)\.[jt]sx?$'` and similar per pattern
|
|
92
|
-
2. **Probe for runner configs**: `jest.config.*`, `pytest.ini` (or `[tool.pytest]` in `pyproject.toml`), `.mocharc.*`, `vitest.config.*`, `karma.conf.*`, `phpunit.xml`, `go test` (implied by `*_test.go`)
|
|
93
|
-
3. **Probe for a `coverage/` directory** (and `.coverage` / `coverage.xml` artifacts)
|
|
94
|
-
|
|
95
|
-
Then turn the raw findings into claims, each a **mapping** carrying a `claim`
|
|
96
|
-
string plus an `evidence` tag:
|
|
97
|
-
|
|
98
|
-
- `evidence: detected` — the scan directly found it (e.g. "42 `*.test.ts` files detected", "vitest.config.ts present", "coverage/ directory present").
|
|
99
|
-
- `evidence: inferred` — a judgement you derived FROM the detected facts (e.g. "unit layer present but no E2E config — integration coverage likely thin"). The inference must trace back to something the scan detected.
|
|
100
|
-
|
|
101
|
-
**"none detected" rule**: when a probe finds nothing, you MUST say so explicitly
|
|
102
|
-
with a tagged claim — `{claim: "none detected", evidence: detected}` (a scan that
|
|
103
|
-
ran and returned zero is a genuine `detected` finding). You must NOT silently
|
|
104
|
-
omit the dimension, and you must NOT invent generic filler like "needs more E2E
|
|
105
|
-
tests" / "consider adding integration tests" with no detected basis. The plan
|
|
106
|
-
validator (`lib/roll-plan-validate.py`) rejects any untagged free-text claim, so
|
|
107
|
-
filler will fail `roll init --apply`.
|
|
108
|
-
|
|
109
|
-
Map the findings into the three buckets:
|
|
110
|
-
- `current_layers`: what test layers actually exist (each tagged `detected`)
|
|
111
|
-
- `gaps`: dimensions where the scan found nothing (`none detected`, tagged `detected`) or thin coverage you can justify (`inferred`)
|
|
112
|
-
- `recommended_actions`: actions that trace to a detected gap (tag `inferred`); if nothing is missing, this bucket may be `[]`
|
|
113
|
-
|
|
114
|
-
### Step 2 — Get gap report
|
|
115
|
-
|
|
116
|
-
Run `roll-doc-audit --dry-run` (READ-ONLY mode). This reports:
|
|
117
|
-
- Which standard Roll artifacts (BACKLOG, features, domain models) are missing
|
|
118
|
-
- Which existing docs Roll could `include` rather than regenerate
|
|
119
|
-
|
|
120
|
-
### Step 3 — Three groups of nine questions
|
|
121
|
-
|
|
122
|
-
Present these in chat. **Aim for total time ≤ 3 minutes.** Group 1 confirms your understanding; group 2 scopes the work; group 3 handles privacy and next steps.
|
|
123
|
-
|
|
124
|
-
**$(msg onboard.questions_group1)**
|
|
125
|
-
|
|
126
|
-
1. $(msg onboard.q1 "[type]" "[description]")
|
|
127
|
-
2. $(msg onboard.q2 "[domain A, domain B, …]")
|
|
128
|
-
3. $(msg onboard.q3 "[X, Y, Z]")
|
|
129
|
-
|
|
130
|
-
**$(msg onboard.questions_group2)**
|
|
131
|
-
|
|
132
|
-
4. $(msg onboard.q4) Multi-select:
|
|
133
|
-
- `backlog` — initial BACKLOG with seeded stories
|
|
134
|
-
- `features` — features index + per-feature spec stubs
|
|
135
|
-
- `domain` — DDD context map
|
|
136
|
-
- `briefs` — directory for `$roll-brief` outputs
|
|
137
|
-
5. Of these existing docs, which should I `include` rather than regenerate?
|
|
138
|
-
- (list candidates: README.md, docs/architecture.md, etc.)
|
|
139
|
-
6. Put drafts inside `.roll/`? (default: yes; "no" means use the legacy `docs/` layout — not recommended for new adoption)
|
|
140
|
-
|
|
141
|
-
**Group 3 — Privacy & next steps**
|
|
142
|
-
|
|
143
|
-
7. Add `.roll/` to `.gitignore`? (yes = keep project management private; no = commit it like Roll itself does)
|
|
144
|
-
8. Sync Roll conventions to which AI tools? Multi-select from detected agents (claude / cursor / codex / kimi / deepseek / pi / opencode / agy / trae)
|
|
145
|
-
9. Enable `roll loop` autonomous execution after init?
|
|
146
|
-
|
|
147
|
-
### Step 4 — Write plan file
|
|
148
|
-
|
|
149
|
-
Write `.roll/onboard-plan.yaml` with this exact schema (validated by `lib/roll-plan-validate.py`):
|
|
150
|
-
|
|
151
|
-
```yaml
|
|
152
|
-
version: 1
|
|
153
|
-
generated_at: "2026-05-19T14:30:00+08:00" # current ISO 8601, your timezone OK
|
|
154
|
-
|
|
155
|
-
project_understanding:
|
|
156
|
-
type: cli # one of: backend-service / frontend-only / fullstack / cli
|
|
157
|
-
description: "..."
|
|
158
|
-
domains: [...]
|
|
159
|
-
key_modules: [...]
|
|
160
|
-
|
|
161
|
-
scope:
|
|
162
|
-
approved: [backlog, features, domain] # user's Q4 multi-select
|
|
163
|
-
declined: [briefs] # what they said no to
|
|
164
|
-
|
|
165
|
-
include_existing:
|
|
166
|
-
- README.md # user's Q5 selections
|
|
167
|
-
- docs/architecture.md
|
|
168
|
-
|
|
169
|
-
privacy:
|
|
170
|
-
gitignore_dot_roll: true # user's Q7
|
|
171
|
-
|
|
172
|
-
sync_targets: [claude, cursor] # user's Q8
|
|
173
|
-
enable_loop: false # user's Q9
|
|
174
|
-
agent_routes_template: default # user's Q10 — agent routing preset
|
|
175
|
-
# one of: default / minimal / heavy / skip
|
|
176
|
-
# default = pi/deepseek/claude + history (US-AGENT-002)
|
|
177
|
-
# minimal = single agent (pi), no history
|
|
178
|
-
# heavy = pi/deepseek/claude/kimi + larger window
|
|
179
|
-
# skip = don't seed .roll/agent-routes.yaml
|
|
180
|
-
|
|
181
|
-
# ── US-ONBOARD-016: Phase 2 analysis sections (optional, but emit all three) ──
|
|
182
|
-
# All three are validated only when present, so they are backward-compatible,
|
|
183
|
-
# but a normal onboard should produce them from Step 1b.
|
|
184
|
-
|
|
185
|
-
domain_model:
|
|
186
|
-
bounded_contexts: # [] if none can be inferred — never invent
|
|
187
|
-
- name: auth
|
|
188
|
-
aggregates: [User, Session]
|
|
189
|
-
ubiquitous_language: [login, token, refresh]
|
|
190
|
-
|
|
191
|
-
tech_analysis:
|
|
192
|
-
stack: [bash, python3] # evidenced by manifests
|
|
193
|
-
dependencies: [pyyaml] # from package.json / pyproject / go.mod / ...
|
|
194
|
-
architecture_notes: ["single-binary CLI + python helpers in lib/"]
|
|
195
|
-
risks:
|
|
196
|
-
- description: "no automated test run on macOS bash 3.2"
|
|
197
|
-
severity: HIGH # optional: LOW | MEDIUM | HIGH
|
|
198
|
-
evidence: detected # optional: detected | inferred
|
|
199
|
-
|
|
200
|
-
# test_assessment — ANTI-HALLUCINATION: every claim is a mapping with an
|
|
201
|
-
# `evidence` tag (detected | inferred). A zero-result scan is `none detected`
|
|
202
|
-
# tagged `detected`. Untagged free-text is REJECTED by the validator.
|
|
203
|
-
test_assessment:
|
|
204
|
-
current_layers:
|
|
205
|
-
- claim: "112 bats files detected under tests/" # evidence: a real scan count
|
|
206
|
-
evidence: detected
|
|
207
|
-
gaps:
|
|
208
|
-
- claim: "none detected" # e.g. no coverage/ dir found
|
|
209
|
-
evidence: detected
|
|
210
|
-
recommended_actions: # [] if nothing is missing
|
|
211
|
-
- claim: "add a macOS CI runner (inferred from launchd-only test skips)"
|
|
212
|
-
evidence: inferred # an inference traceable to a detected fact
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
Then tell the user:
|
|
216
|
-
|
|
217
|
-
> Onboard conversation done. Plan saved to `.roll/onboard-plan.yaml`.
|
|
218
|
-
> Return to your terminal and run:
|
|
219
|
-
>
|
|
220
|
-
> roll init --apply
|
|
221
|
-
>
|
|
222
|
-
> The plan expires in 24 hours.
|
|
223
|
-
|
|
224
|
-
### Step 5 — Stop
|
|
225
|
-
|
|
226
|
-
Do NOT run `roll init --apply` yourself. Do NOT modify other project files. Your job is done.
|
|
227
|
-
|
|
228
|
-
## When NOT to use
|
|
229
|
-
|
|
230
|
-
- **Not a legacy project**: empty dir or fresh project → use plain `roll init` instead
|
|
231
|
-
- **Has BACKLOG.md or docs/features/**: this is a pre-2.0 Roll project → run `npx @seanyao/roll@2 migrate` first
|
|
232
|
-
- **Has .roll/ already**: already onboarded → don't re-run
|
|
233
|
-
|
|
234
|
-
## Failure modes
|
|
235
|
-
|
|
236
|
-
- User aborts mid-conversation → don't write partial plan; tell user to re-run from scratch
|
|
237
|
-
- User answers contradict the gap report (e.g., declines `features` but has lots of code) → ask the contradictory question once more before accepting; if they confirm, respect the choice
|
|
238
|
-
- You can't read enough code to fill `project_understanding` (e.g., binary repo) → write a placeholder plan but ask user to fill in `type` and `description` manually before applying
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: roll-peer
|
|
3
|
-
license: MIT
|
|
4
|
-
allowed-tools: "Read, Bash, Write, Edit"
|
|
5
|
-
description: "Load when the user explicitly asks for peer review, cross-agent negotiation, /peer, or a high-risk decision needs an external agent perspective."
|
|
6
|
-
---
|
|
7
|
-
# Roll Peer
|
|
8
|
-
|
|
9
|
-
This hub keeps the routing boundary, hard gates, and execution skeleton in the initial context. Load the heavier runbook only when the task actually needs the detailed contract.
|
|
10
|
-
|
|
11
|
-
## Load
|
|
12
|
-
|
|
13
|
-
Load when the user explicitly asks for peer review, cross-agent negotiation, /peer, or a high-risk decision needs an external agent perspective.
|
|
14
|
-
|
|
15
|
-
## When Not to Use
|
|
16
|
-
|
|
17
|
-
- Local self-review; load roll-.review.
|
|
18
|
-
- PR-only review; load roll-review-pr.
|
|
19
|
-
|
|
20
|
-
## Read On Demand
|
|
21
|
-
|
|
22
|
-
- Read [the full contract](references/full-contract.md) before executing the workflow end to end, recovering from failures, or checking exact output templates.
|
|
23
|
-
- Keep this hub in context for trigger boundaries and hard gates.
|
|
24
|
-
|
|
25
|
-
## Workflow Skeleton
|
|
26
|
-
|
|
27
|
-
1. Confirm peer review is explicitly requested or required by a documented gate.
|
|
28
|
-
2. Route to an appropriate external agent.
|
|
29
|
-
3. Run bounded negotiation rounds.
|
|
30
|
-
4. Record consensus, disagreement, and unresolved questions.
|
|
31
|
-
5. Escalate to human when consensus fails.
|
|
32
|
-
|
|
33
|
-
## Hard Gates
|
|
34
|
-
|
|
35
|
-
- Do not spawn subagents without explicit permission/tool availability.
|
|
36
|
-
- Peer output is advisory unless local gates accept it.
|
|
37
|
-
|
|
38
|
-
## Gotchas
|
|
39
|
-
|
|
40
|
-
- Only invoke cross-agent work when explicitly requested or at documented gates; do not surprise the user with extra delegation.
|
|
41
|
-
- Consensus does not override local evidence, tests, or the owner decision.
|
|
42
|
-
|
|
43
|
-
## Maintenance
|
|
44
|
-
|
|
45
|
-
- Description changes require updates in `route-cases/skills.json`.
|
|
46
|
-
- New observed failures should add a gotcha and the matching positive or negative route case.
|
|
47
|
-
- Heavy examples, templates, recovery paths, and deterministic snippets belong in `references/`, `assets/`, or `scripts/`, not in this hub.
|