better-grill 0.3.2 → 0.4.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/.claude-plugin/plugin.json +1 -1
- package/README.md +5 -2
- package/package.json +2 -1
- package/skills/better-grill-base/SKILL.md +12 -3
- package/skills/better-grill-base/dist/cli.js +46 -19
- package/skills/better-grill-base/dist/server.js +32 -32
- package/skills/better-grill-base/dist/web/assets/fonts-CJmUTqBe.js +2 -0
- package/skills/better-grill-base/dist/web/assets/index-B5A56OtT.css +2 -0
- package/skills/better-grill-base/dist/web/assets/index-DQsP0Vpp.js +86 -0
- package/skills/better-grill-base/dist/web/index.html +2 -2
- package/skills/better-grill-base/visualize.md +112 -0
- package/skills/better-grill-base/dist/web/assets/index-404t474v.js +0 -39
- package/skills/better-grill-base/dist/web/assets/index-BRvWCEEd.css +0 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "better-grill",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Run grill sessions in a local browser UI instead of the terminal: rounds of questions with options and a recommendation, a discussion thread per question, driven by your open Claude Code session.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Jakub Stastny",
|
package/README.md
CHANGED
|
@@ -67,13 +67,16 @@ You also need [Node.js](https://nodejs.org) 20+ and the [`grilling`](https://git
|
|
|
67
67
|
<table>
|
|
68
68
|
<tr>
|
|
69
69
|
<td width="33%" valign="top"><b>One question at a time</b><br>Rounds step through their questions, with Claude's context, trade-offs and tables.</td>
|
|
70
|
-
<td width="33%" valign="top"><b>Claude's pick on each</b><br>Take it, choose another option, write your own answer, or
|
|
70
|
+
<td width="33%" valign="top"><b>Claude's pick on each</b><br>Take it, choose another option, write your own answer, add a note, or paste a screenshot.</td>
|
|
71
71
|
<td width="33%" valign="top"><b>A thread per question</b><br>Push back on one question; Claude rewords, resolves, drops or adds questions.</td>
|
|
72
72
|
</tr>
|
|
73
73
|
<tr>
|
|
74
74
|
<td width="33%" valign="top"><b>Lock in, then send</b><br>Answer in any order, change your mind, send the round when it's settled.</td>
|
|
75
75
|
<td width="33%" valign="top"><b>A summary at the end</b><br>Every decision in one place. Confirm it, or keep grilling.</td>
|
|
76
|
-
<td width="33%" valign="top"><b>Keyboard first</b><br><kbd>↑</kbd> <kbd>↓</kbd> walk the options, <kbd>Enter</kbd> locks in, <kbd>D</kbd> opens the discussion, <kbd>[</kbd> folds the sidebar.</td>
|
|
76
|
+
<td width="33%" valign="top"><b>Keyboard first</b><br><kbd>↑</kbd> <kbd>↓</kbd> walk the options, <kbd>Enter</kbd> locks in, <kbd>D</kbd> opens the discussion, <kbd>V</kbd> shows the visualization, <kbd>[</kbd> folds the sidebar.</td>
|
|
77
|
+
</tr>
|
|
78
|
+
<tr>
|
|
79
|
+
<td colspan="3" valign="top"><b>Visualize any question</b><br>Press Visualize and Claude turns the question into an interactive page, right in the app, so it's easier to understand. Keep answering while it works.</td>
|
|
77
80
|
</tr>
|
|
78
81
|
</table>
|
|
79
82
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "better-grill",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Grill sessions for Claude Code, in your browser instead of the terminal.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
"skills/better-grill/SKILL.md",
|
|
34
34
|
"skills/better-grill-docs/SKILL.md",
|
|
35
35
|
"skills/better-grill-base/SKILL.md",
|
|
36
|
+
"skills/better-grill-base/visualize.md",
|
|
36
37
|
"skills/better-grill-base/dist"
|
|
37
38
|
],
|
|
38
39
|
"scripts": {
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
name: better-grill-base
|
|
3
3
|
description: Internal. Shared instructions loaded by the better-grill and better-grill-docs skills. Do not invoke directly.
|
|
4
4
|
user-invocable: false
|
|
5
|
-
allowed-tools:
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Bash(node "${CLAUDE_SKILL_DIR}/dist/cli.js" *)
|
|
7
|
+
- Read(~/.better-grill/images/**)
|
|
6
8
|
---
|
|
7
9
|
|
|
8
10
|
# Better Grill
|
|
@@ -90,13 +92,15 @@ Output:
|
|
|
90
92
|
{
|
|
91
93
|
"events": [
|
|
92
94
|
{ "type": "answer", "questionId": "Q2", "title": "…", "choices": ["Label"], "text": "note or own answer", "revised": false, "by": "user" },
|
|
93
|
-
{ "type": "chat", "questionId": "Q3", "title": "…", "text": "
|
|
95
|
+
{ "type": "chat", "questionId": "Q3", "title": "…", "text": "on [Image 1] the header is too big", "images": ["/Users/…/.better-grill/images/62950-a1b2c3/img1.png"] }
|
|
94
96
|
],
|
|
95
97
|
"open": [{ "id": "Q3", "title": "…" }]
|
|
96
98
|
}
|
|
97
99
|
```
|
|
98
100
|
|
|
99
|
-
`open` lists questions still unanswered after these events. A wait that returns only `chat` events means the round is still in progress: handle
|
|
101
|
+
`open` lists questions still unanswered after these events. A wait that returns only `chat` or `visualize` events means the round is still in progress: handle them, then wait again.
|
|
102
|
+
|
|
103
|
+
`images` (on `answer` and `chat`, only when present) lists absolute paths of images the user pasted or dropped in: screenshots, sketches, diagrams. The user places each image inside their text, where it shows up as `[Image N]`: `[Image 1]` is `images[0]`, `[Image 2]` is `images[1]`, and so on. Read every image with the Read tool before you act on the event; they are part of what the user said, and the text around each marker tells you what it is about. When you reply about one, name it the same way ("in Image 2, …"). The files are deleted when the bridge stops.
|
|
100
104
|
|
|
101
105
|
## 5. Handle events
|
|
102
106
|
|
|
@@ -112,6 +116,11 @@ Output:
|
|
|
112
116
|
```
|
|
113
117
|
|
|
114
118
|
Keep replies conversational and short. Then act on what the talk settled (next section). Never tell the user to go lock in an answer the two of you already agreed on.
|
|
119
|
+
- **visualize** (`{ "type": "visualize", "questionId": "Q3", "title": "…", "note": "focus on the failure case" }`): the user pressed Visualize and wants the question visualized as an interactive page, shown in the UI. That takes a while, so hand it to a background sub-agent (Agent tool, `run_in_background: true`) and carry on with the grill. Give it this prompt, with the handle and id filled in:
|
|
120
|
+
|
|
121
|
+
> Run `node "${CLAUDE_SKILL_DIR}/dist/cli.js" visualize -s SESSION Q3 --brief`. It prints how to build the visualization, the question and the command that posts the page. Follow it exactly, post the page, and reply with one line.
|
|
122
|
+
|
|
123
|
+
Without sub-agents, run that brief yourself once the other events are handled. Don't reply in the thread about it: the UI shows the progress and the result. `note` is what the user wants to see; the brief includes it.
|
|
115
124
|
- **summary_confirmed / summary_rejected / ended**: see step 6.
|
|
116
125
|
|
|
117
126
|
## 5b. Shape questions from the discussion
|