@grainulation/wheat 1.0.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/LICENSE +21 -0
- package/README.md +136 -0
- package/bin/wheat.js +193 -0
- package/compiler/detect-sprints.js +319 -0
- package/compiler/generate-manifest.js +280 -0
- package/compiler/wheat-compiler.js +1229 -0
- package/lib/compiler.js +35 -0
- package/lib/connect.js +418 -0
- package/lib/disconnect.js +188 -0
- package/lib/guard.js +151 -0
- package/lib/index.js +14 -0
- package/lib/init.js +457 -0
- package/lib/install-prompt.js +186 -0
- package/lib/quickstart.js +276 -0
- package/lib/serve-mcp.js +509 -0
- package/lib/server.js +391 -0
- package/lib/stats.js +184 -0
- package/lib/status.js +135 -0
- package/lib/update.js +71 -0
- package/package.json +53 -0
- package/public/index.html +1798 -0
- package/templates/claude.md +122 -0
- package/templates/commands/blind-spot.md +47 -0
- package/templates/commands/brief.md +73 -0
- package/templates/commands/calibrate.md +39 -0
- package/templates/commands/challenge.md +72 -0
- package/templates/commands/connect.md +104 -0
- package/templates/commands/evaluate.md +80 -0
- package/templates/commands/feedback.md +60 -0
- package/templates/commands/handoff.md +53 -0
- package/templates/commands/init.md +68 -0
- package/templates/commands/merge.md +51 -0
- package/templates/commands/present.md +52 -0
- package/templates/commands/prototype.md +68 -0
- package/templates/commands/replay.md +61 -0
- package/templates/commands/research.md +73 -0
- package/templates/commands/resolve.md +42 -0
- package/templates/commands/status.md +56 -0
- package/templates/commands/witness.md +79 -0
- package/templates/explainer.html +343 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# /init — Bootstrap a Wheat research sprint
|
|
2
|
+
|
|
3
|
+
You are initializing a new Wheat research sprint. Have a focused conversation with the user to establish:
|
|
4
|
+
|
|
5
|
+
1. **What are we figuring out?** Get a clear, specific question. Not "should we use X" but "should we use X given constraints Y and Z for audience A."
|
|
6
|
+
2. **Who is the audience?** Who needs to be convinced or informed? (engineering leads, CTO, product, finance, etc.)
|
|
7
|
+
3. **What constraints exist?** Budget, timeline, tech stack, compliance, team size, existing infrastructure.
|
|
8
|
+
4. **What does done look like?** What artifact ends this sprint? A recommendation? A prototype? A go/no-go decision?
|
|
9
|
+
|
|
10
|
+
Once you have answers:
|
|
11
|
+
|
|
12
|
+
## Step 1: Update CLAUDE.md
|
|
13
|
+
|
|
14
|
+
Update the Sprint section of CLAUDE.md with the question, audience, constraints, and success criteria.
|
|
15
|
+
|
|
16
|
+
## Step 2: Seed claims.json
|
|
17
|
+
|
|
18
|
+
Update claims.json with:
|
|
19
|
+
- `meta.question` — the sprint question
|
|
20
|
+
- `meta.initiated` — today's date (ISO format)
|
|
21
|
+
- `meta.audience` — array of audience labels
|
|
22
|
+
- `meta.phase` — set to "define"
|
|
23
|
+
- `meta.connectors` — empty array
|
|
24
|
+
|
|
25
|
+
Add constraint claims (type: "constraint") for each hard requirement identified. Use IDs starting with `d001`. Each claim needs:
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"id": "d001",
|
|
29
|
+
"type": "constraint",
|
|
30
|
+
"topic": "<relevant topic>",
|
|
31
|
+
"content": "<the constraint>",
|
|
32
|
+
"source": { "origin": "stakeholder", "artifact": null, "connector": null },
|
|
33
|
+
"evidence": "stated",
|
|
34
|
+
"status": "active",
|
|
35
|
+
"phase_added": "define",
|
|
36
|
+
"timestamp": "<ISO timestamp>",
|
|
37
|
+
"conflicts_with": [],
|
|
38
|
+
"resolved_by": null,
|
|
39
|
+
"tags": []
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Step 3: Run the compiler
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npx @grainulation/wheat compile --summary
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Verify compilation succeeds.
|
|
50
|
+
|
|
51
|
+
## Step 4: Generate problem statement
|
|
52
|
+
|
|
53
|
+
Generate `output/problem-statement.html` — a clean, self-contained HTML page summarizing the sprint question, audience, constraints, and success criteria. Use the dark theme from the explainer template in `templates/`. Keep it to a single page — this is the "here's what we're investigating" artifact that can be shared immediately.
|
|
54
|
+
|
|
55
|
+
## Step 5: Git commit
|
|
56
|
+
|
|
57
|
+
Stage claims.json, CLAUDE.md, output/problem-statement.html, and any other changed files.
|
|
58
|
+
|
|
59
|
+
Commit with message: `wheat: /init "<sprint question short>" — seeded <claim IDs>`
|
|
60
|
+
|
|
61
|
+
## Step 6: Tell the user what's next
|
|
62
|
+
|
|
63
|
+
Tell them:
|
|
64
|
+
- Their problem statement is in `output/problem-statement.html` — they can open it in a browser and share it
|
|
65
|
+
- Next step: `/research <topic>` to start exploring, or `/connect` to link org tools
|
|
66
|
+
- Remind them that `/status` shows the dashboard at any time
|
|
67
|
+
|
|
68
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# /merge — Combine Claim Sets Across Sprints
|
|
2
|
+
|
|
3
|
+
You are merging claims from another sprint into the current one. This is for when two teams researched the same problem independently and need to combine their findings.
|
|
4
|
+
|
|
5
|
+
## Process
|
|
6
|
+
|
|
7
|
+
1. **Parse the argument**: The user provides a path to another sprint's claims.json.
|
|
8
|
+
- Example: `/merge ../auth-sprint/claims.json`
|
|
9
|
+
- If no path given, ask for it.
|
|
10
|
+
|
|
11
|
+
2. **Validate both claim sets**:
|
|
12
|
+
- Read the current `claims.json`
|
|
13
|
+
- Read the incoming claims file
|
|
14
|
+
- Validate both against the compiler schema:
|
|
15
|
+
```bash
|
|
16
|
+
npx @grainulation/wheat compile --input <incoming-path> --output /tmp/wheat-merge-incoming.json
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
3. **Determine the sprint slug**: Derive from the incoming sprint's `meta.question`.
|
|
20
|
+
|
|
21
|
+
4. **Resolve ID collisions**: Prefix all incoming claim IDs with the sprint slug:
|
|
22
|
+
- `r001` -> `auth-r001`
|
|
23
|
+
- Also update all `conflicts_with` and `resolved_by` references.
|
|
24
|
+
|
|
25
|
+
5. **Align topics**: Present probable topic mappings for user confirmation.
|
|
26
|
+
|
|
27
|
+
6. **Detect cross-sprint conflicts** and **identify evidence upgrades**.
|
|
28
|
+
|
|
29
|
+
7. **Write merged claims.json** and compile:
|
|
30
|
+
```bash
|
|
31
|
+
npx @grainulation/wheat compile --summary
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Git commit
|
|
35
|
+
|
|
36
|
+
Commit: `wheat: /merge <slug> — merged <N> claims from <source path>`
|
|
37
|
+
|
|
38
|
+
## Tell the user
|
|
39
|
+
|
|
40
|
+
- How many claims were merged
|
|
41
|
+
- Topic alignment results
|
|
42
|
+
- Cross-sprint conflicts detected
|
|
43
|
+
- Suggest: `/resolve` for conflicts, `/blind-spot` for cross-sprint gaps
|
|
44
|
+
|
|
45
|
+
## Cleanup
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
rm -f /tmp/wheat-merge-*.json
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# /present — Generate a presentation from compiled claims
|
|
2
|
+
|
|
3
|
+
You are generating a presentation for this Wheat sprint. Same Bran compilation gate as /brief.
|
|
4
|
+
|
|
5
|
+
## Process
|
|
6
|
+
|
|
7
|
+
1. **Run the compiler with check**:
|
|
8
|
+
```bash
|
|
9
|
+
npx @grainulation/wheat compile --check
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
**If blocked, STOP.** Show errors, suggest fixes. Do not generate a presentation with unresolved conflicts.
|
|
13
|
+
|
|
14
|
+
2. **Read compilation.json** — use ONLY `resolved_claims`.
|
|
15
|
+
|
|
16
|
+
3. **Generate presentation HTML**: Create `output/presentation.html` — a self-contained, scroll-snap presentation using a dark theme.
|
|
17
|
+
|
|
18
|
+
Structure the slides as:
|
|
19
|
+
1. **Title slide**: Sprint question, date, audience
|
|
20
|
+
2. **The Problem**: Why this research was needed (from constraint claims)
|
|
21
|
+
3. **What We Found**: Key research findings (2-3 slides, from factual claims)
|
|
22
|
+
4. **What We Tested**: Prototype and evaluation results (from tested claims)
|
|
23
|
+
5. **Tradeoffs**: Risks and estimates
|
|
24
|
+
6. **Recommendation**: The compiled recommendation with evidence
|
|
25
|
+
7. **Next Steps**: Concrete actions
|
|
26
|
+
8. **Appendix**: Compilation certificate, claim count, evidence summary
|
|
27
|
+
|
|
28
|
+
Each slide should:
|
|
29
|
+
- Be visually clean (use the dark theme, accent colors, cards)
|
|
30
|
+
- Reference claim IDs subtly (small text at bottom of relevant sections)
|
|
31
|
+
- Include data visualizations where relevant (CSS-only charts, comparison tables)
|
|
32
|
+
- Work at any screen size (responsive)
|
|
33
|
+
|
|
34
|
+
## Key rules
|
|
35
|
+
|
|
36
|
+
- Same compilation gate as /brief — no presentation without passing compilation
|
|
37
|
+
- Cite claims, but more subtly than the brief (this is for presenting, not auditing)
|
|
38
|
+
- The presentation should tell a story: problem -> investigation -> evidence -> recommendation
|
|
39
|
+
|
|
40
|
+
## Git commit
|
|
41
|
+
|
|
42
|
+
Stage output/presentation.html.
|
|
43
|
+
|
|
44
|
+
Commit: `wheat: /present — generated presentation, certificate [hash]`
|
|
45
|
+
|
|
46
|
+
## Tell the user
|
|
47
|
+
|
|
48
|
+
- Presentation is at `output/presentation.html` — open in browser, works for screen share
|
|
49
|
+
- Mention the compilation certificate for reproducibility
|
|
50
|
+
- Suggest `/feedback` after they present to capture stakeholder responses
|
|
51
|
+
|
|
52
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# /prototype — Build something testable
|
|
2
|
+
|
|
3
|
+
You are building a proof-of-concept for the current Wheat sprint. Read CLAUDE.md for sprint context and claims.json for existing research claims.
|
|
4
|
+
|
|
5
|
+
## Process
|
|
6
|
+
|
|
7
|
+
1. **Determine what to prototype**: Based on the user's argument and existing research claims. If no argument given, look at the research and suggest the most promising option to test.
|
|
8
|
+
|
|
9
|
+
2. **Build it**: Create a working prototype in `prototypes/<name>/`. This should be:
|
|
10
|
+
- Minimal — just enough to test the hypothesis
|
|
11
|
+
- Runnable — include a README or run script
|
|
12
|
+
- Measurable — produce output that can be evaluated
|
|
13
|
+
|
|
14
|
+
3. **Also generate a demo artifact**: Create `prototypes/<name>/demo.html` — a self-contained HTML page that shows what the prototype does, with screenshots, code snippets, or interactive elements. Non-technical stakeholders should be able to understand the prototype from this page alone.
|
|
15
|
+
|
|
16
|
+
## Claim updates
|
|
17
|
+
|
|
18
|
+
Every prototype finding becomes a claim with evidence tier `tested`:
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"id": "p001",
|
|
23
|
+
"type": "factual",
|
|
24
|
+
"topic": "<what was tested>",
|
|
25
|
+
"content": "<what we found — be specific with numbers>",
|
|
26
|
+
"source": {
|
|
27
|
+
"origin": "prototype",
|
|
28
|
+
"artifact": "prototypes/<name>/",
|
|
29
|
+
"connector": null
|
|
30
|
+
},
|
|
31
|
+
"evidence": "tested",
|
|
32
|
+
"status": "active",
|
|
33
|
+
"phase_added": "prototype",
|
|
34
|
+
"timestamp": "<ISO timestamp>",
|
|
35
|
+
"conflicts_with": [],
|
|
36
|
+
"resolved_by": null,
|
|
37
|
+
"tags": []
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Critical**: Check if any existing research claims (evidence: "web") are contradicted by prototype results. If so:
|
|
42
|
+
- Set `conflicts_with` on both claims
|
|
43
|
+
- The compiler will auto-resolve in favor of `tested` over `web`
|
|
44
|
+
|
|
45
|
+
Update `meta.phase` to "prototype" in claims.json if this is the first prototype.
|
|
46
|
+
|
|
47
|
+
## Run the compiler
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npx @grainulation/wheat compile --summary
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Report evidence upgrades (research claims superseded by prototype findings).
|
|
54
|
+
|
|
55
|
+
## Git commit
|
|
56
|
+
|
|
57
|
+
Stage claims.json and all new/changed files.
|
|
58
|
+
|
|
59
|
+
Commit: `wheat: /prototype "<name>" — added <claim IDs>`
|
|
60
|
+
|
|
61
|
+
## Tell the user
|
|
62
|
+
|
|
63
|
+
- Point them to the demo.html and the actual prototype code
|
|
64
|
+
- Summarize what was tested and what was found
|
|
65
|
+
- Highlight any research claims that were confirmed or contradicted
|
|
66
|
+
- Suggest: more `/prototype` for other options, `/evaluate` to compare, or `/status` to see progress
|
|
67
|
+
|
|
68
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# /replay — Time-Travel Through Sprint Evolution
|
|
2
|
+
|
|
3
|
+
You are reconstructing the historical evolution of this sprint by recompiling every version of claims.json from git history.
|
|
4
|
+
|
|
5
|
+
## Process
|
|
6
|
+
|
|
7
|
+
1. **Get the git history of claims.json**:
|
|
8
|
+
```bash
|
|
9
|
+
git log --oneline claims.json
|
|
10
|
+
```
|
|
11
|
+
This gives every commit that touched claims.json — the sprint event log.
|
|
12
|
+
|
|
13
|
+
2. **Extract each historical version**: For each commit hash:
|
|
14
|
+
```bash
|
|
15
|
+
git show <hash>:claims.json > /tmp/wheat-replay-<N>.json
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
3. **Recompile each version** with the current compiler:
|
|
19
|
+
```bash
|
|
20
|
+
npx @grainulation/wheat compile --input /tmp/wheat-replay-<N>.json --output /tmp/wheat-comp-<N>.json
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
4. **Compute deltas** between consecutive compilations:
|
|
24
|
+
```bash
|
|
25
|
+
npx @grainulation/wheat compile --diff /tmp/wheat-comp-<N-1>.json /tmp/wheat-comp-<N>.json
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
5. **Identify interesting moments** in each delta:
|
|
29
|
+
- Phase transitions (define -> research -> prototype -> evaluate)
|
|
30
|
+
- First time compilation went "ready"
|
|
31
|
+
- Peak conflict count
|
|
32
|
+
- Evidence tier jumps (topic going web -> tested)
|
|
33
|
+
- Claims added then superseded (the sprint changed its mind)
|
|
34
|
+
|
|
35
|
+
6. **Generate replay HTML**: Create `output/replay.html` — a self-contained timeline visualization using a dark scroll-snap template. Include:
|
|
36
|
+
- Frame-by-frame scrubbing (each commit = one frame)
|
|
37
|
+
- Highlighted pivotal moments
|
|
38
|
+
- Coverage evolution chart
|
|
39
|
+
- Summary statistics per frame
|
|
40
|
+
|
|
41
|
+
7. **Print a text summary** to the terminal with the key narrative moments.
|
|
42
|
+
|
|
43
|
+
## Git commit
|
|
44
|
+
|
|
45
|
+
Commit: `wheat: /replay — generated sprint timeline (N frames)`
|
|
46
|
+
|
|
47
|
+
## Tell the user
|
|
48
|
+
|
|
49
|
+
- How many frames (commits) were found
|
|
50
|
+
- The most interesting moments
|
|
51
|
+
- Point them to `output/replay.html` for the full interactive timeline
|
|
52
|
+
- Suggest: `/handoff` to package this narrative for a successor
|
|
53
|
+
|
|
54
|
+
## Cleanup
|
|
55
|
+
|
|
56
|
+
Remove temporary files from /tmp after generating the output:
|
|
57
|
+
```bash
|
|
58
|
+
rm -f /tmp/wheat-replay-*.json /tmp/wheat-comp-*.json
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# /research — Deep dive on a topic
|
|
2
|
+
|
|
3
|
+
You are researching a topic for the current Wheat sprint. Read CLAUDE.md for sprint context and claims.json for existing claims.
|
|
4
|
+
|
|
5
|
+
## Process
|
|
6
|
+
|
|
7
|
+
1. **Understand the request**: The user's argument tells you what to research. Could be a technology, a comparison, a question, a process.
|
|
8
|
+
|
|
9
|
+
2. **Research deeply**: Use web search, read documentation, check connected repos (see Connectors in CLAUDE.md). Be thorough — this is the foundation for later decisions.
|
|
10
|
+
|
|
11
|
+
3. **Extract claims**: Every finding becomes a typed claim. Be specific and verifiable. Bad: "Auth0 is popular." Good: "Auth0 serves 15,000+ customers as of 2025."
|
|
12
|
+
|
|
13
|
+
4. **Detect conflicts with existing claims**: Check claims.json. If your new findings contradict existing claims, set `conflicts_with` on both the new and existing claim.
|
|
14
|
+
|
|
15
|
+
## Adding claims
|
|
16
|
+
|
|
17
|
+
Append claims to claims.json with IDs continuing the `r###` sequence (check existing claims for the next number). Each claim:
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"id": "r001",
|
|
22
|
+
"type": "factual|estimate|risk|recommendation",
|
|
23
|
+
"topic": "<topic category>",
|
|
24
|
+
"content": "<specific, verifiable finding>",
|
|
25
|
+
"source": {
|
|
26
|
+
"origin": "research",
|
|
27
|
+
"artifact": "research/<topic-slug>.md",
|
|
28
|
+
"connector": null
|
|
29
|
+
},
|
|
30
|
+
"evidence": "web",
|
|
31
|
+
"status": "active",
|
|
32
|
+
"phase_added": "research",
|
|
33
|
+
"timestamp": "<ISO timestamp>",
|
|
34
|
+
"conflicts_with": [],
|
|
35
|
+
"resolved_by": null,
|
|
36
|
+
"tags": ["<relevant tags>"]
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
If the finding came from a connector (GitHub repo, Jira, etc.), set evidence to "documented" and fill in the connector field.
|
|
41
|
+
|
|
42
|
+
## Run the compiler
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npx @grainulation/wheat compile --summary
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Check for new conflicts introduced. Report them to the user.
|
|
49
|
+
|
|
50
|
+
## Generate HTML explainer
|
|
51
|
+
|
|
52
|
+
Create `research/<topic-slug>.html` — a self-contained HTML explainer using the dark scroll-snap template style. This should be:
|
|
53
|
+
- Beautiful and presentable (stakeholders will see this)
|
|
54
|
+
- Organized into logical sections (scroll-snap slides)
|
|
55
|
+
- Include key findings, comparisons, tradeoffs
|
|
56
|
+
- Reference claim IDs so findings are traceable
|
|
57
|
+
|
|
58
|
+
Also create `research/<topic-slug>.md` as the structured markdown source.
|
|
59
|
+
|
|
60
|
+
## Git commit
|
|
61
|
+
|
|
62
|
+
Stage claims.json and all new files.
|
|
63
|
+
|
|
64
|
+
Commit: `wheat: /research "<topic>" — added <claim IDs>`
|
|
65
|
+
|
|
66
|
+
## Tell the user
|
|
67
|
+
|
|
68
|
+
- Point them to the HTML file to open in browser
|
|
69
|
+
- Summarize key findings (3-5 bullets)
|
|
70
|
+
- Flag any conflicts with existing claims
|
|
71
|
+
- Suggest next steps: more `/research`, `/prototype`, or `/evaluate`
|
|
72
|
+
|
|
73
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# /resolve — Manually adjudicate a conflict
|
|
2
|
+
|
|
3
|
+
You are manually resolving a conflict between claims that the compiler couldn't auto-resolve (same evidence tier).
|
|
4
|
+
|
|
5
|
+
## Process
|
|
6
|
+
|
|
7
|
+
1. **Run the compiler** to see current conflicts:
|
|
8
|
+
```bash
|
|
9
|
+
npx @grainulation/wheat compile --summary
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
2. **If the user specified claim IDs** (e.g., `/resolve r012 e003`), focus on that conflict. Otherwise, show all unresolved conflicts and ask which to resolve.
|
|
13
|
+
|
|
14
|
+
3. **Present both sides**: Show the conflicting claims with full context — content, evidence tier, source, when they were added.
|
|
15
|
+
|
|
16
|
+
4. **Ask the user to decide** (or decide based on additional research if the user asks you to investigate).
|
|
17
|
+
|
|
18
|
+
5. **Update claims.json**:
|
|
19
|
+
- Set the winning claim's status to `active`
|
|
20
|
+
- Set the losing claim's status to `superseded` and `resolved_by` to the winner's ID
|
|
21
|
+
- Remove the conflict references from `conflicts_with`
|
|
22
|
+
|
|
23
|
+
6. **Run the compiler again**:
|
|
24
|
+
```bash
|
|
25
|
+
npx @grainulation/wheat compile --summary
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Verify the conflict is resolved.
|
|
29
|
+
|
|
30
|
+
## Git commit
|
|
31
|
+
|
|
32
|
+
Stage claims.json.
|
|
33
|
+
|
|
34
|
+
Commit: `wheat: /resolve <winner> over <loser> — "<reason>"`
|
|
35
|
+
|
|
36
|
+
## Tell the user
|
|
37
|
+
|
|
38
|
+
- Confirm which claim won and why
|
|
39
|
+
- Show updated compilation status
|
|
40
|
+
- If all conflicts resolved, suggest `/brief` or `/present`
|
|
41
|
+
|
|
42
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# /status — Render the sprint dashboard
|
|
2
|
+
|
|
3
|
+
You are generating the current status dashboard for this Wheat sprint.
|
|
4
|
+
|
|
5
|
+
## Process
|
|
6
|
+
|
|
7
|
+
1. **Run the compiler**:
|
|
8
|
+
```bash
|
|
9
|
+
npx @grainulation/wheat compile --summary
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
2. **Read compilation.json** for all dashboard data.
|
|
13
|
+
|
|
14
|
+
3. **Read git log** for recent activity:
|
|
15
|
+
```bash
|
|
16
|
+
git log --oneline -20 claims.json
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
4. **Generate dashboard HTML**: Create/update `output/dashboard.html` — a self-contained dashboard page. The dashboard must show:
|
|
20
|
+
|
|
21
|
+
**Header**: Sprint question, current phase, compilation status (ready/blocked), days since initiation
|
|
22
|
+
|
|
23
|
+
**Phase Progress**: Visual progress through define -> research -> prototype -> evaluate -> compile. Show which phases have claims.
|
|
24
|
+
|
|
25
|
+
**Evidence Strength by Topic**: For each topic in coverage, show:
|
|
26
|
+
- Topic name
|
|
27
|
+
- Number of claims
|
|
28
|
+
- Highest evidence tier (with color coding: green=tested/production, amber=documented, red=web/stated)
|
|
29
|
+
- Visual bar representing depth
|
|
30
|
+
|
|
31
|
+
**Conflict Status**:
|
|
32
|
+
- Resolved conflicts with winner/loser and reason
|
|
33
|
+
- Unresolved conflicts highlighted as blockers
|
|
34
|
+
- "Compilation readiness" indicator
|
|
35
|
+
|
|
36
|
+
**Connected Sources**: List any connectors from meta
|
|
37
|
+
|
|
38
|
+
**Recent Activity**: From git log — the sprint timeline
|
|
39
|
+
|
|
40
|
+
**Claim Inventory**: Grouped by topic, showing type, evidence tier, and status for each claim
|
|
41
|
+
|
|
42
|
+
5. **Also print a text summary to the terminal** so the user gets immediate feedback without opening a file.
|
|
43
|
+
|
|
44
|
+
## Git commit
|
|
45
|
+
|
|
46
|
+
Only commit if the dashboard changed meaningfully. Don't commit for a status-only check.
|
|
47
|
+
|
|
48
|
+
Commit: `wheat: /status — updated dashboard`
|
|
49
|
+
|
|
50
|
+
## Tell the user
|
|
51
|
+
|
|
52
|
+
- Print the text summary (phase, claim counts, conflicts, readiness)
|
|
53
|
+
- Point them to `output/dashboard.html` for the full visual dashboard
|
|
54
|
+
- Suggest next actions based on what's needed (resolve conflicts, fill coverage gaps, etc.)
|
|
55
|
+
|
|
56
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# /witness — Targeted External Corroboration
|
|
2
|
+
|
|
3
|
+
You are corroborating (or contradicting) a specific claim using an external source. Read CLAUDE.md for sprint context and claims.json for existing claims.
|
|
4
|
+
|
|
5
|
+
## Process
|
|
6
|
+
|
|
7
|
+
1. **Parse arguments**: The user provides a claim ID and an external URL.
|
|
8
|
+
- Example: `/witness p001 https://nodejs.org/api/http.html`
|
|
9
|
+
- If only a claim ID is given, ask for the URL
|
|
10
|
+
- If only a URL is given, ask which claim to witness
|
|
11
|
+
|
|
12
|
+
2. **Read the target claim** from claims.json. Understand what it asserts.
|
|
13
|
+
|
|
14
|
+
3. **Fetch the external source**: Use web fetch to read the URL. If it's documentation, source code, or an article, extract the relevant content.
|
|
15
|
+
|
|
16
|
+
4. **Classify the relationship** between the external evidence and the claim:
|
|
17
|
+
- **Full support** -> external source confirms the claim completely
|
|
18
|
+
- **Partial support** -> confirms some assertions but adds caveats
|
|
19
|
+
- **Partial contradiction** -> external source challenges some assertions
|
|
20
|
+
- **Full contradiction** -> external source directly contradicts the claim
|
|
21
|
+
|
|
22
|
+
5. **Determine evidence tier** based on source type:
|
|
23
|
+
- Official docs (*.nodejs.org, docs.*, RFC) -> `documented`
|
|
24
|
+
- Blog posts, Stack Overflow, tutorials -> `web`
|
|
25
|
+
- GitHub source code, changelogs -> `documented`
|
|
26
|
+
- Production metrics, dashboards -> `production`
|
|
27
|
+
|
|
28
|
+
6. **Create a witness claim**:
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"id": "w001",
|
|
33
|
+
"type": "factual",
|
|
34
|
+
"topic": "<same topic as witnessed claim>",
|
|
35
|
+
"content": "<what the external source says, in relation to the witnessed claim>",
|
|
36
|
+
"source": {
|
|
37
|
+
"origin": "witness",
|
|
38
|
+
"witnessed_claim": "<target claim ID>",
|
|
39
|
+
"external_url": "<the URL>",
|
|
40
|
+
"relationship": "full_support|partial_support|partial_contradiction|full_contradiction",
|
|
41
|
+
"artifact": null,
|
|
42
|
+
"connector": null
|
|
43
|
+
},
|
|
44
|
+
"evidence": "<tier based on source type>",
|
|
45
|
+
"status": "active",
|
|
46
|
+
"phase_added": "<current phase>",
|
|
47
|
+
"timestamp": "<ISO timestamp>",
|
|
48
|
+
"conflicts_with": [],
|
|
49
|
+
"resolved_by": null,
|
|
50
|
+
"tags": ["witness", "<relevant tags>"]
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Important relationship -> action mapping:**
|
|
55
|
+
- Full/partial support: No `conflicts_with`. The witness corroborates.
|
|
56
|
+
- Partial contradiction: Set `conflicts_with: ["<target claim ID>"]`. Explain the contradiction clearly in content.
|
|
57
|
+
- Full contradiction: Set `conflicts_with: ["<target claim ID>"]`. This becomes a challenge claim effectively.
|
|
58
|
+
|
|
59
|
+
7. **Run the compiler**:
|
|
60
|
+
```bash
|
|
61
|
+
npx @grainulation/wheat compile --summary
|
|
62
|
+
```
|
|
63
|
+
Report corroboration count changes and any new conflicts.
|
|
64
|
+
|
|
65
|
+
## Git commit
|
|
66
|
+
|
|
67
|
+
Stage claims.json.
|
|
68
|
+
|
|
69
|
+
Commit: `wheat: /witness <target claim ID> — added <witness claim IDs> (<relationship>)`
|
|
70
|
+
|
|
71
|
+
## Tell the user
|
|
72
|
+
|
|
73
|
+
- What the external source says about the claim
|
|
74
|
+
- How you classified the relationship (and why, if ambiguous)
|
|
75
|
+
- Whether the witness introduced any conflicts
|
|
76
|
+
- The corroboration count for the witnessed claim
|
|
77
|
+
- Suggest: `/witness` for other uncorroborated claims, `/challenge` if partial contradiction warrants deeper investigation
|
|
78
|
+
|
|
79
|
+
$ARGUMENTS
|