@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,122 @@
|
|
|
1
|
+
# Wheat — Research Sprint
|
|
2
|
+
|
|
3
|
+
> This file configures Claude Code for Wheat research sprints. It is auto-maintained by `wheat init`. Edit with care.
|
|
4
|
+
|
|
5
|
+
## Sprint
|
|
6
|
+
|
|
7
|
+
**Question:** {{QUESTION}}
|
|
8
|
+
|
|
9
|
+
**Audience:** {{AUDIENCE}}
|
|
10
|
+
|
|
11
|
+
**Constraints:**
|
|
12
|
+
{{CONSTRAINTS}}
|
|
13
|
+
|
|
14
|
+
**Done looks like:** {{DONE_CRITERIA}}
|
|
15
|
+
|
|
16
|
+
## Connectors
|
|
17
|
+
|
|
18
|
+
_No connectors configured. Use `/connect` to link org tools._
|
|
19
|
+
|
|
20
|
+
## Intent Router
|
|
21
|
+
|
|
22
|
+
When the user sends a plain message (no slash command), assess whether a Wheat command applies. If it does, announce which command you're running and execute it. If no command fits, respond normally.
|
|
23
|
+
|
|
24
|
+
**Route by intent:**
|
|
25
|
+
|
|
26
|
+
| User says something like... | Route to | Why |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| "look into X", "what about X", "explore X", "how does X work" | `/research X` | Information gathering |
|
|
29
|
+
| "build X", "try X", "make a quick X", "test whether X" | `/prototype` | Hands-on validation |
|
|
30
|
+
| "is p001 really true?", "I doubt X", "what if X is wrong" | `/challenge <id>` | Adversarial testing |
|
|
31
|
+
| "check this: <url>", "does <url> support X", "verify X against <url>" | `/witness <id> <url>` | External corroboration |
|
|
32
|
+
| "what are we missing", "any gaps?", "what haven't we considered" | `/blind-spot` | Structural gap analysis |
|
|
33
|
+
| "where are we", "what's the status", "show me the dashboard" | `/status` | Sprint snapshot |
|
|
34
|
+
| "write it up", "give me the recommendation", "summarize for the team" | `/brief` | Decision document |
|
|
35
|
+
| "make slides", "prepare for the meeting" | `/present` | Stakeholder presentation |
|
|
36
|
+
| "someone else is taking over", "hand this off", "document for successor" | `/handoff` | Knowledge transfer |
|
|
37
|
+
| "combine with the other sprint", "merge these" | `/merge <path>` | Cross-sprint merge |
|
|
38
|
+
| "how did we get here", "show the history", "what changed over time" | `/replay` | Sprint archaeology |
|
|
39
|
+
| "we shipped, here's what happened", "actual results were X" | `/calibrate --outcome "X"` | Prediction scoring |
|
|
40
|
+
| "the stakeholder said X", "new constraint: X", "change of direction" | `/feedback` | Stakeholder input |
|
|
41
|
+
| "resolve the conflict", "pick between X and Y" | `/resolve` | Conflict adjudication |
|
|
42
|
+
| "connect to <repo/jira/docs>" | `/connect <type> <target>` | External source linking |
|
|
43
|
+
|
|
44
|
+
**When NOT to route:** Questions about the framework itself ("how does the compiler work?"), code edits to wheat files, general conversation, ambiguous intent. When in doubt, ask: "That sounds like it could be a `/research` -- want me to run it as a full research pass, or just answer the question?"
|
|
45
|
+
|
|
46
|
+
**Announce the routing:** Always tell the user what you're doing:
|
|
47
|
+
> Running as `/research "SSE scalability"` -- this will create claims and compile. Say "just answer" if you wanted a quick response instead.
|
|
48
|
+
|
|
49
|
+
This gives the user a chance to redirect before the full pipeline runs.
|
|
50
|
+
|
|
51
|
+
### Claims System (Bran IR)
|
|
52
|
+
- All findings are tracked as typed claims in `claims.json`
|
|
53
|
+
- Every slash command that produces findings MUST append claims
|
|
54
|
+
- Every slash command that produces output artifacts MUST run `wheat compile` first
|
|
55
|
+
- Output artifacts consume `compilation.json`, never `claims.json` directly
|
|
56
|
+
- The compiler is the enforcement layer -- if it says blocked, no artifact gets produced
|
|
57
|
+
|
|
58
|
+
### Claim Types
|
|
59
|
+
- `constraint` -- hard requirements, non-negotiable boundaries
|
|
60
|
+
- `factual` -- verifiable statements about the world
|
|
61
|
+
- `estimate` -- projections, approximations, ranges
|
|
62
|
+
- `risk` -- potential failure modes, concerns
|
|
63
|
+
- `recommendation` -- proposed courses of action
|
|
64
|
+
- `feedback` -- stakeholder input, opinions, direction changes
|
|
65
|
+
|
|
66
|
+
### Evidence Tiers (lowest to highest)
|
|
67
|
+
1. `stated` -- stakeholder said it, no verification
|
|
68
|
+
2. `web` -- found online, not independently verified
|
|
69
|
+
3. `documented` -- in source code, official docs, or ADRs
|
|
70
|
+
4. `tested` -- verified via prototype or benchmark
|
|
71
|
+
5. `production` -- measured from live production systems
|
|
72
|
+
|
|
73
|
+
### Claim ID Prefixes
|
|
74
|
+
- `d###` -- define phase (from /init)
|
|
75
|
+
- `r###` -- research phase (from /research)
|
|
76
|
+
- `p###` -- prototype phase (from /prototype)
|
|
77
|
+
- `e###` -- evaluate phase (from /evaluate)
|
|
78
|
+
- `f###` -- feedback phase (from /feedback)
|
|
79
|
+
- `x###` -- challenge claims (from /challenge)
|
|
80
|
+
- `w###` -- witness claims (from /witness)
|
|
81
|
+
- `burn-###` -- synthetic claims (from /control-burn, always reverted)
|
|
82
|
+
- `cal###` -- calibration claims (from /calibrate)
|
|
83
|
+
- `<sprint-slug>-<prefix>###` -- merged claims keep original prefix with sprint slug (from /merge)
|
|
84
|
+
|
|
85
|
+
### Next Command Hints
|
|
86
|
+
Every slash command MUST end its output with a "Next steps" section suggesting 2-4 concrete commands the user could run next, based on the current sprint state. Use this decision tree:
|
|
87
|
+
|
|
88
|
+
- Unresolved conflicts exist -> suggest `/resolve`
|
|
89
|
+
- Claim has no corroboration -> suggest `/witness <id> <relevant-url>`
|
|
90
|
+
- Topic has weak evidence -> suggest `/research <topic>` or `/prototype`
|
|
91
|
+
- Topic has type monoculture -> suggest `/challenge <id>` or `/research <topic>`
|
|
92
|
+
- Sprint is late-phase with gaps -> suggest `/blind-spot`
|
|
93
|
+
- Claims untested against reality -> suggest `/calibrate`
|
|
94
|
+
- Sprint ready for output -> suggest `/brief`, `/present`, or `/handoff`
|
|
95
|
+
- Multiple sprints exist -> suggest `/merge`
|
|
96
|
+
- Want to understand history -> suggest `/replay`
|
|
97
|
+
|
|
98
|
+
Format:
|
|
99
|
+
```
|
|
100
|
+
Next steps:
|
|
101
|
+
/challenge p001 -- stress-test the zero-deps claim
|
|
102
|
+
/witness r002 <url> -- corroborate fs.watch reliability
|
|
103
|
+
/blind-spot -- check for structural gaps
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Git Discipline
|
|
107
|
+
- Every slash command that modifies claims.json auto-commits
|
|
108
|
+
- Commit format: `wheat: /<command> <summary> -- added/updated <claim IDs>`
|
|
109
|
+
- `git log --oneline claims.json` = the sprint event log
|
|
110
|
+
- Compilation certificate references the claims hash for reproducibility
|
|
111
|
+
|
|
112
|
+
### Output Artifacts
|
|
113
|
+
- HTML files are self-contained (inline CSS/JS, no external deps)
|
|
114
|
+
- Use the dark scroll-snap template for explainers and presentations
|
|
115
|
+
- Use the dashboard template for status and comparisons
|
|
116
|
+
- PDFs generated via `node build-pdf.js <file.md>`
|
|
117
|
+
|
|
118
|
+
### Directory Structure
|
|
119
|
+
- `research/` -- topic explainers (HTML + MD)
|
|
120
|
+
- `prototypes/` -- working proof-of-concepts
|
|
121
|
+
- `evidence/` -- evaluation results and comparison dashboards
|
|
122
|
+
- `output/` -- compiled artifacts (briefs, presentations, dashboards)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# /blind-spot — Analyze What's NOT Being Claimed
|
|
2
|
+
|
|
3
|
+
You are scanning the claim set for structural gaps — not what's wrong, but what's *missing*. Read CLAUDE.md for sprint context, claims.json for existing claims, and compilation.json for coverage data.
|
|
4
|
+
|
|
5
|
+
## Process
|
|
6
|
+
|
|
7
|
+
1. **Run the compiler** to get fresh data:
|
|
8
|
+
```bash
|
|
9
|
+
npx @grainulation/wheat compile --summary
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
2. **Read compilation.json** for coverage analysis, including source diversity, type diversity, and corroboration data.
|
|
13
|
+
|
|
14
|
+
3. **Analyze four categories of blind spots**:
|
|
15
|
+
|
|
16
|
+
### (a) Dependency gaps
|
|
17
|
+
Scan claim content for topic-like nouns that are NOT in the current topic set. If claims reference concepts like "latency," "compliance," "security," "cost," or "performance" but no topic covers those, they're implicit dependencies never addressed.
|
|
18
|
+
|
|
19
|
+
### (b) Type monoculture
|
|
20
|
+
Check `type_diversity` in coverage for each topic. Flag topics with < 2 distinct claim types. A topic with 5 factual claims but no risks is suspicious — where's the downside analysis?
|
|
21
|
+
|
|
22
|
+
### (c) Echo chambers
|
|
23
|
+
Check `source_origins` and `source_count` in coverage for each topic. Flag topics where:
|
|
24
|
+
- All claims come from a single source origin (e.g., all "research" with no external feedback)
|
|
25
|
+
- Claims >= 3 but source_count == 1
|
|
26
|
+
|
|
27
|
+
### (d) Evidence ceiling
|
|
28
|
+
Check `max_evidence` relative to the current sprint phase. If the sprint phase is `prototype` but a key topic is still at `stated` or `web` tier, that's a gap.
|
|
29
|
+
|
|
30
|
+
Phase expectations:
|
|
31
|
+
- `define`: `stated` is fine everywhere
|
|
32
|
+
- `research`: key topics should be at least `web`
|
|
33
|
+
- `prototype`: key topics should be at least `tested`
|
|
34
|
+
- `evaluate`: everything should be `documented` or above
|
|
35
|
+
|
|
36
|
+
4. **Check dismissed blind spots**: Look for a `dismissed_blind_spots` field in claims.json meta. Don't re-flag items the user has already dismissed.
|
|
37
|
+
|
|
38
|
+
5. **Print the analysis** to the terminal. This command does NOT modify claims.json — it only reads and reports.
|
|
39
|
+
|
|
40
|
+
## Tell the user
|
|
41
|
+
|
|
42
|
+
- Present the blind spot analysis clearly
|
|
43
|
+
- For each gap, suggest a specific action (which command to run)
|
|
44
|
+
- Remind them they can dismiss false-positive blind spots by adding to `meta.dismissed_blind_spots`
|
|
45
|
+
- If no blind spots found, say so — a clean bill of health is valuable information
|
|
46
|
+
|
|
47
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# /brief — Compile the decision document
|
|
2
|
+
|
|
3
|
+
You are compiling the final decision brief for this Wheat sprint. This is the Bran compilation step — deterministic output from resolved claims.
|
|
4
|
+
|
|
5
|
+
## Process
|
|
6
|
+
|
|
7
|
+
1. **Run the compiler with check**:
|
|
8
|
+
```bash
|
|
9
|
+
npx @grainulation/wheat compile --check
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
**If the compiler returns an error (exit code 1), STOP.** Do not generate a brief. Instead:
|
|
13
|
+
- Show the user the compilation errors
|
|
14
|
+
- Explain what needs to be resolved
|
|
15
|
+
- Suggest specific commands to fix each blocker
|
|
16
|
+
- Do NOT proceed until compilation passes
|
|
17
|
+
|
|
18
|
+
2. **Read compilation.json** — use ONLY `resolved_claims` as your source material. Never read claims.json directly for the brief.
|
|
19
|
+
|
|
20
|
+
3. **Generate the brief as markdown**: Create `output/brief.md` with this structure:
|
|
21
|
+
|
|
22
|
+
```markdown
|
|
23
|
+
# Decision Brief: [Sprint Question]
|
|
24
|
+
|
|
25
|
+
**Date**: [date] | **Audience**: [audience] | **Phase**: Compiled
|
|
26
|
+
|
|
27
|
+
## Executive Summary
|
|
28
|
+
[2-3 sentences: the recommendation and why]
|
|
29
|
+
|
|
30
|
+
## Recommendation
|
|
31
|
+
[The recommended course of action, with specific next steps]
|
|
32
|
+
|
|
33
|
+
## Evidence Summary
|
|
34
|
+
[For each topic: key findings, evidence tier, source]
|
|
35
|
+
[Every statement must cite a claim ID]
|
|
36
|
+
|
|
37
|
+
## Tradeoffs and Risks
|
|
38
|
+
[Risks identified, with evidence tier for each]
|
|
39
|
+
|
|
40
|
+
## Resolved Conflicts
|
|
41
|
+
[What disagreed, how it was resolved, what evidence won]
|
|
42
|
+
|
|
43
|
+
## Appendix: Claim Inventory
|
|
44
|
+
[Table of all resolved claims: ID, type, content, evidence, source]
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
Compilation certificate: [hash] | Compiler: wheat v[version] | Claims: [count] | Compiled: [timestamp]
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
4. **Also generate brief as HTML**: Create `output/brief.html` — a clean, print-friendly HTML version for browser viewing.
|
|
51
|
+
|
|
52
|
+
## Key rules
|
|
53
|
+
|
|
54
|
+
- **Every statement in the brief must trace to a claim ID**. No uncited assertions.
|
|
55
|
+
- **Use only resolved_claims from compilation.json**. Superseded claims are excluded.
|
|
56
|
+
- **Include the compilation certificate** — this is the Bran determinism invariant. Same claims = same brief.
|
|
57
|
+
- **The brief is deterministic**: given the same compilation.json, the structure and content should be reproducible.
|
|
58
|
+
|
|
59
|
+
## Git commit
|
|
60
|
+
|
|
61
|
+
Stage all output files.
|
|
62
|
+
|
|
63
|
+
Commit: `wheat: /brief compiled — [total] claims, [conflicts resolved] conflicts resolved, certificate [hash]`
|
|
64
|
+
|
|
65
|
+
## Tell the user
|
|
66
|
+
|
|
67
|
+
- The brief is ready at `output/brief.md` and `output/brief.html`
|
|
68
|
+
- Show the compilation certificate
|
|
69
|
+
- Remind them they can share these with stakeholders
|
|
70
|
+
- Mention `/present` if they need a presentation version
|
|
71
|
+
- Mention `/feedback` for incorporating stakeholder responses
|
|
72
|
+
|
|
73
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# /calibrate — Score Past Predictions Against Reality
|
|
2
|
+
|
|
3
|
+
You are checking what actually happened after a sprint's recommendations were implemented. This closes the feedback loop by comparing predictions to outcomes.
|
|
4
|
+
|
|
5
|
+
## Process
|
|
6
|
+
|
|
7
|
+
1. **Parse the outcome**: The user provides outcome data, either as:
|
|
8
|
+
- Free text: `/calibrate --outcome "Shipped Auth0. Took 3 weeks not 2. Costs $18K/year not $15K."`
|
|
9
|
+
- Claim-specific: `/calibrate e003 "actual: 3 weeks, $18K/year"`
|
|
10
|
+
|
|
11
|
+
2. **Read the sprint data** and match outcomes to original predictions.
|
|
12
|
+
|
|
13
|
+
3. **Create calibration claims** (`cal###` prefix, evidence: `production`).
|
|
14
|
+
|
|
15
|
+
4. **Compute accuracy scorecard** by evidence tier, source origin, and claim type.
|
|
16
|
+
|
|
17
|
+
5. **Write/update calibration.json** and add claims to claims.json:
|
|
18
|
+
```bash
|
|
19
|
+
npx @grainulation/wheat compile --summary
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
6. **Print the scorecard** to the terminal.
|
|
23
|
+
|
|
24
|
+
## The meta-insight
|
|
25
|
+
|
|
26
|
+
This is the only command that validates the framework itself. If `tested` claims are right 95% of the time and `web` 65%, the tier system works.
|
|
27
|
+
|
|
28
|
+
## Git commit
|
|
29
|
+
|
|
30
|
+
Commit: `wheat: /calibrate — scored <N> predictions against outcomes`
|
|
31
|
+
|
|
32
|
+
## Tell the user
|
|
33
|
+
|
|
34
|
+
- The accuracy scorecard
|
|
35
|
+
- Which predictions were wrong and by how much
|
|
36
|
+
- Whether the evidence tier hierarchy is predictive
|
|
37
|
+
- Suggest: future sprints should weight evidence tiers based on this data
|
|
38
|
+
|
|
39
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# /challenge — Structured Devil's Advocacy
|
|
2
|
+
|
|
3
|
+
You are stress-testing a specific claim by researching the **strongest possible counter-argument** with real evidence. Read CLAUDE.md for sprint context and claims.json for existing claims.
|
|
4
|
+
|
|
5
|
+
## Process
|
|
6
|
+
|
|
7
|
+
1. **Identify the target claim**: The user's argument is a claim ID (e.g., `p001`). Read that claim from claims.json. If no ID provided, ask the user which claim to challenge.
|
|
8
|
+
|
|
9
|
+
2. **Understand what's being claimed**: Break down the claim into its core assertions.
|
|
10
|
+
|
|
11
|
+
3. **Research AGAINST the claim**: Use web search to find the strongest counter-evidence. Search for problems, limitations, failure modes, alternatives, and contradictions. Be adversarial — your job is to find what's wrong, not confirm what's right.
|
|
12
|
+
|
|
13
|
+
Guidelines for research:
|
|
14
|
+
- Focus on factual counter-evidence, not opinion
|
|
15
|
+
- Only challenge claims at `web` tier or above (challenging `stated` is pointless — they're already known-weak)
|
|
16
|
+
- Distinguish "contradicts the claim" from "adds a related concern"
|
|
17
|
+
- Look for: documented bugs, breaking changes, scalability limits, maintenance costs, better alternatives
|
|
18
|
+
|
|
19
|
+
4. **Create challenge claims**: For each substantive counter-argument found, create a claim with:
|
|
20
|
+
- ID: `x###` prefix (continue sequence from existing x-prefixed claims)
|
|
21
|
+
- `"source.origin": "challenge"`
|
|
22
|
+
- `"source.challenged_claim": "<target claim ID>"`
|
|
23
|
+
- Evidence tier based on what you found (web, documented, etc.)
|
|
24
|
+
- Set `conflicts_with` ONLY if the challenge directly contradicts the target claim's factual assertions.
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"id": "x001",
|
|
29
|
+
"type": "risk|factual",
|
|
30
|
+
"topic": "<same topic as challenged claim>",
|
|
31
|
+
"content": "<specific counter-argument with evidence>",
|
|
32
|
+
"source": {
|
|
33
|
+
"origin": "challenge",
|
|
34
|
+
"challenged_claim": "<target claim ID>",
|
|
35
|
+
"artifact": null,
|
|
36
|
+
"connector": null
|
|
37
|
+
},
|
|
38
|
+
"evidence": "web|documented",
|
|
39
|
+
"status": "active",
|
|
40
|
+
"phase_added": "<current phase>",
|
|
41
|
+
"timestamp": "<ISO timestamp>",
|
|
42
|
+
"conflicts_with": [],
|
|
43
|
+
"resolved_by": null,
|
|
44
|
+
"tags": ["challenge", "<relevant tags>"]
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
5. **Run the compiler**:
|
|
49
|
+
```bash
|
|
50
|
+
npx @grainulation/wheat compile --summary
|
|
51
|
+
```
|
|
52
|
+
Report whether challenges created new conflicts and whether the compiler auto-resolved any.
|
|
53
|
+
|
|
54
|
+
6. **Assess the outcome**:
|
|
55
|
+
- If the challenge finds `tested` or `documented` evidence contradicting a `web`-tier claim -> compiler may auto-resolve
|
|
56
|
+
- If same tier -> unresolved conflict -> needs `/resolve`
|
|
57
|
+
- If challenge only raises concerns without contradiction -> no conflict, just enriched claim set
|
|
58
|
+
|
|
59
|
+
## Git commit
|
|
60
|
+
|
|
61
|
+
Stage claims.json and any new files.
|
|
62
|
+
|
|
63
|
+
Commit: `wheat: /challenge <claim ID> — added <challenge claim IDs>`
|
|
64
|
+
|
|
65
|
+
## Tell the user
|
|
66
|
+
|
|
67
|
+
- Summarize what you challenged and what you found
|
|
68
|
+
- Flag which challenges contradict vs. add concerns
|
|
69
|
+
- Report compiler status (new conflicts? auto-resolved?)
|
|
70
|
+
- Suggest: `/resolve` if unresolved conflicts, `/witness` to corroborate survivors, more `/challenge` for other claims
|
|
71
|
+
|
|
72
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# /connect — Link an external data source
|
|
2
|
+
|
|
3
|
+
You are connecting an external tool or data source to this Wheat sprint. Connected sources provide higher-quality evidence than web research alone.
|
|
4
|
+
|
|
5
|
+
## Connector Types
|
|
6
|
+
|
|
7
|
+
### GitHub Repository
|
|
8
|
+
```
|
|
9
|
+
/connect github <org/repo>
|
|
10
|
+
```
|
|
11
|
+
- Read the repo's README, key source files, architecture
|
|
12
|
+
- Extract claims about existing infrastructure, patterns, dependencies
|
|
13
|
+
- Evidence tier: `documented`
|
|
14
|
+
- Track as connector in claims.json source field
|
|
15
|
+
|
|
16
|
+
### Atlas File
|
|
17
|
+
```
|
|
18
|
+
/connect atlas <path-to-atlas.yaml>
|
|
19
|
+
```
|
|
20
|
+
- Read a RepoAtlas-style YAML file for multi-repo routing intelligence
|
|
21
|
+
- Extract claims about repo ownership, dependencies, infrastructure
|
|
22
|
+
- Evidence tier: `documented`
|
|
23
|
+
|
|
24
|
+
### Jira / Linear (via MCP)
|
|
25
|
+
```
|
|
26
|
+
/connect jira <project-key>
|
|
27
|
+
```
|
|
28
|
+
- Read relevant tickets, priorities, blockers
|
|
29
|
+
- Extract constraint and risk claims
|
|
30
|
+
- Evidence tier: `stated` (tickets are stakeholder input)
|
|
31
|
+
|
|
32
|
+
### Monitoring (Datadog, Grafana, etc.)
|
|
33
|
+
```
|
|
34
|
+
/connect monitoring <dashboard-name>
|
|
35
|
+
```
|
|
36
|
+
- Pull current metrics if accessible
|
|
37
|
+
- Evidence tier: `production` (highest tier)
|
|
38
|
+
|
|
39
|
+
### Confluence / Notion (via MCP)
|
|
40
|
+
```
|
|
41
|
+
/connect docs <space/page>
|
|
42
|
+
```
|
|
43
|
+
- Read existing documentation, ADRs, decision records
|
|
44
|
+
- Evidence tier: `documented`
|
|
45
|
+
|
|
46
|
+
## Process
|
|
47
|
+
|
|
48
|
+
1. **Parse the argument** to determine connector type and target.
|
|
49
|
+
|
|
50
|
+
2. **Attempt to access the source**: Use available MCP tools, file system access, or web fetch as appropriate. If the source isn't accessible, tell the user what's needed (MCP server config, file path, etc.)
|
|
51
|
+
|
|
52
|
+
3. **Extract initial claims**: Pull relevant information and create claims:
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"id": "r0XX",
|
|
57
|
+
"type": "factual|constraint",
|
|
58
|
+
"topic": "<relevant topic>",
|
|
59
|
+
"content": "<extracted finding>",
|
|
60
|
+
"source": {
|
|
61
|
+
"origin": "connector",
|
|
62
|
+
"artifact": null,
|
|
63
|
+
"connector": {
|
|
64
|
+
"type": "<github|atlas|jira|monitoring|docs>",
|
|
65
|
+
"target": "<org/repo or project-key or path>",
|
|
66
|
+
"ref": "<specific file/ticket/page if applicable>",
|
|
67
|
+
"fetched": "<ISO timestamp>"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"evidence": "documented",
|
|
71
|
+
"status": "active",
|
|
72
|
+
"phase_added": "research",
|
|
73
|
+
"timestamp": "<ISO timestamp>",
|
|
74
|
+
"conflicts_with": [],
|
|
75
|
+
"resolved_by": null,
|
|
76
|
+
"tags": ["connector", "<type>"]
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
4. **Register the connector** in claims.json `meta.connectors`:
|
|
81
|
+
```json
|
|
82
|
+
{ "type": "github", "target": "org/repo", "connected": "<ISO timestamp>" }
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
5. **Update CLAUDE.md** Connectors section with the new connection.
|
|
86
|
+
|
|
87
|
+
6. **Run the compiler**:
|
|
88
|
+
```bash
|
|
89
|
+
npx @grainulation/wheat compile --summary
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Git commit
|
|
93
|
+
|
|
94
|
+
Stage claims.json, CLAUDE.md, and any new files.
|
|
95
|
+
|
|
96
|
+
Commit: `wheat: /connect <type> <target> — added <claim IDs>`
|
|
97
|
+
|
|
98
|
+
## Tell the user
|
|
99
|
+
|
|
100
|
+
- Confirm what was connected and what was found
|
|
101
|
+
- List the claims extracted
|
|
102
|
+
- Suggest `/research` to dig deeper into findings, or `/status` to see the updated dashboard
|
|
103
|
+
|
|
104
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# /evaluate — Test claims against reality, resolve conflicts
|
|
2
|
+
|
|
3
|
+
You are running the evaluation phase of the current Wheat sprint. This is the honesty phase — where claims meet data.
|
|
4
|
+
|
|
5
|
+
Read CLAUDE.md for sprint context and claims.json for all existing claims.
|
|
6
|
+
|
|
7
|
+
## Process
|
|
8
|
+
|
|
9
|
+
1. **Run the compiler first**:
|
|
10
|
+
```bash
|
|
11
|
+
npx @grainulation/wheat compile --summary
|
|
12
|
+
```
|
|
13
|
+
Identify conflicts, weak evidence areas, and coverage gaps.
|
|
14
|
+
|
|
15
|
+
2. **Evaluate systematically**: For each topic with weak or conflicting evidence:
|
|
16
|
+
- Run benchmarks, cost calculations, feature comparisons
|
|
17
|
+
- Test prototypes against real conditions
|
|
18
|
+
- Pull production metrics from connected tools if available
|
|
19
|
+
- Cross-reference claims against each other
|
|
20
|
+
|
|
21
|
+
3. **Resolve conflicts**: When evaluation produces a clear answer:
|
|
22
|
+
- Update the winning claim's evidence tier
|
|
23
|
+
- Mark the losing claim as `superseded` with `resolved_by`
|
|
24
|
+
- Add new evaluation claims (evidence: "tested") if needed
|
|
25
|
+
|
|
26
|
+
4. **Generate comparison dashboard**: Create `evidence/<topic-or-sprint-slug>.html` — a dashboard-style HTML page showing:
|
|
27
|
+
- Side-by-side comparisons with real numbers
|
|
28
|
+
- Conflict resolutions with evidence
|
|
29
|
+
- Data tables, charts (CSS-only), metrics
|
|
30
|
+
|
|
31
|
+
## Claim updates
|
|
32
|
+
|
|
33
|
+
Evaluation claims use evidence tier `tested` or `production`:
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"id": "e001",
|
|
38
|
+
"type": "factual",
|
|
39
|
+
"topic": "<what was evaluated>",
|
|
40
|
+
"content": "<measured result — always include numbers>",
|
|
41
|
+
"source": {
|
|
42
|
+
"origin": "evaluation",
|
|
43
|
+
"artifact": "evidence/<slug>.html",
|
|
44
|
+
"connector": null
|
|
45
|
+
},
|
|
46
|
+
"evidence": "tested",
|
|
47
|
+
"status": "active",
|
|
48
|
+
"phase_added": "evaluate",
|
|
49
|
+
"timestamp": "<ISO timestamp>",
|
|
50
|
+
"conflicts_with": [],
|
|
51
|
+
"resolved_by": null,
|
|
52
|
+
"tags": []
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Update `meta.phase` to "evaluate" in claims.json.
|
|
57
|
+
|
|
58
|
+
## Run the compiler again
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npx @grainulation/wheat compile --summary
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Verify that conflicts are resolved. If the compiler still shows blockers, tell the user what remains.
|
|
65
|
+
|
|
66
|
+
## Git commit
|
|
67
|
+
|
|
68
|
+
Stage claims.json and all new/changed files.
|
|
69
|
+
|
|
70
|
+
Commit: `wheat: /evaluate — resolved <conflict details>, added <claim IDs>`
|
|
71
|
+
|
|
72
|
+
## Tell the user
|
|
73
|
+
|
|
74
|
+
- Show the compilation status (ready or still blocked)
|
|
75
|
+
- Summarize what was evaluated and key findings
|
|
76
|
+
- Point them to the comparison dashboard HTML
|
|
77
|
+
- If ready: suggest `/brief` to compile the decision document
|
|
78
|
+
- If blocked: explain what conflicts remain and how to resolve them
|
|
79
|
+
|
|
80
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# /feedback — Incorporate stakeholder input
|
|
2
|
+
|
|
3
|
+
You are processing feedback from stakeholders for this Wheat sprint. Feedback introduces new claims (usually constraints or direction changes) that may trigger re-evaluation.
|
|
4
|
+
|
|
5
|
+
Read CLAUDE.md and claims.json for context.
|
|
6
|
+
|
|
7
|
+
## Process
|
|
8
|
+
|
|
9
|
+
1. **Parse the feedback**: The user's argument contains stakeholder input. This could be:
|
|
10
|
+
- A new constraint ("CTO says prioritize speed over cost")
|
|
11
|
+
- A correction ("the compliance team says we need SOC2 Type II, not Type I")
|
|
12
|
+
- A direction change ("skip the custom build option, focus on Auth0 vs Clerk")
|
|
13
|
+
- A question ("what about latency in EU regions?")
|
|
14
|
+
|
|
15
|
+
2. **Create claims**: Each piece of feedback becomes a claim:
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"id": "f001",
|
|
20
|
+
"type": "constraint|feedback",
|
|
21
|
+
"topic": "<relevant topic>",
|
|
22
|
+
"content": "<the feedback, attributed>",
|
|
23
|
+
"source": {
|
|
24
|
+
"origin": "stakeholder",
|
|
25
|
+
"artifact": null,
|
|
26
|
+
"connector": null
|
|
27
|
+
},
|
|
28
|
+
"evidence": "stated",
|
|
29
|
+
"status": "active",
|
|
30
|
+
"phase_added": "feedback",
|
|
31
|
+
"timestamp": "<ISO timestamp>",
|
|
32
|
+
"conflicts_with": [],
|
|
33
|
+
"resolved_by": null,
|
|
34
|
+
"tags": ["<stakeholder name or role>"]
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
3. **Check for conflicts**: Does this feedback contradict existing claims? If a stakeholder says "budget is $10K max" but existing research shows a solution costing $15K, that's a conflict. Mark it.
|
|
39
|
+
|
|
40
|
+
4. **Run the compiler**:
|
|
41
|
+
```bash
|
|
42
|
+
npx @grainulation/wheat compile --summary
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
5. **Update CLAUDE.md** if the feedback changes constraints or audience.
|
|
46
|
+
|
|
47
|
+
## Git commit
|
|
48
|
+
|
|
49
|
+
Stage claims.json, CLAUDE.md, and any changed files.
|
|
50
|
+
|
|
51
|
+
Commit: `wheat: /feedback "<summary>" — added <claim IDs>`
|
|
52
|
+
|
|
53
|
+
## Tell the user
|
|
54
|
+
|
|
55
|
+
- Confirm what feedback was captured as claims
|
|
56
|
+
- Show any new conflicts introduced
|
|
57
|
+
- If compilation is now blocked, explain what needs re-evaluation
|
|
58
|
+
- Suggest next steps: `/research` for new questions, `/evaluate` to re-test, `/brief` to recompile
|
|
59
|
+
|
|
60
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# /handoff — Package Sprint for Transfer
|
|
2
|
+
|
|
3
|
+
You are generating a self-contained briefing optimized for a **successor** — someone who needs to continue this sprint, not a stakeholder making a decision. Read CLAUDE.md, claims.json, and compilation.json.
|
|
4
|
+
|
|
5
|
+
## Key distinction from other output commands
|
|
6
|
+
|
|
7
|
+
| Command | Audience | Optimized for |
|
|
8
|
+
|---------|----------|---------------|
|
|
9
|
+
| `/brief` | Decision-makers | "What should we do?" |
|
|
10
|
+
| `/present` | External audiences | Persuasion |
|
|
11
|
+
| `/status` | Current researcher | Snapshot |
|
|
12
|
+
| `/handoff` | Successor | "What do I need to know to continue?" |
|
|
13
|
+
|
|
14
|
+
## Process
|
|
15
|
+
|
|
16
|
+
1. **Run the compiler**:
|
|
17
|
+
```bash
|
|
18
|
+
npx @grainulation/wheat compile --summary
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
2. **Read all data sources**:
|
|
22
|
+
- `compilation.json` — current state
|
|
23
|
+
- `claims.json` — all claims including superseded ones (the full history)
|
|
24
|
+
- `git log --oneline claims.json` — the event log
|
|
25
|
+
- `CLAUDE.md` — sprint context and conventions
|
|
26
|
+
|
|
27
|
+
3. **Build the reasoning chain**: For each topic, reconstruct the narrative:
|
|
28
|
+
- What constraint or question initiated work on this topic?
|
|
29
|
+
- What did research find?
|
|
30
|
+
- Did prototyping confirm or contradict research?
|
|
31
|
+
- Were there conflicts? How were they resolved?
|
|
32
|
+
|
|
33
|
+
4. **Identify open questions**: From compilation.json:
|
|
34
|
+
- Unresolved conflicts
|
|
35
|
+
- Coverage gaps
|
|
36
|
+
- Unmitigated risks
|
|
37
|
+
- Dismissed blind spots
|
|
38
|
+
|
|
39
|
+
5. **Generate the handoff document**: Create `output/handoff.md` and `output/handoff.html`.
|
|
40
|
+
|
|
41
|
+
6. **Print a summary** to the terminal.
|
|
42
|
+
|
|
43
|
+
## Git commit
|
|
44
|
+
|
|
45
|
+
Commit: `wheat: /handoff — generated sprint handoff document`
|
|
46
|
+
|
|
47
|
+
## Tell the user
|
|
48
|
+
|
|
49
|
+
- Point them to `output/handoff.md` and `output/handoff.html`
|
|
50
|
+
- Highlight the most important open questions
|
|
51
|
+
- Suggest: `/replay` for detailed timeline, `/blind-spot` for gap analysis
|
|
52
|
+
|
|
53
|
+
$ARGUMENTS
|