doesitfire 0.1.2__py3-none-any.whl

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.
@@ -0,0 +1,1393 @@
1
+ {
2
+ "schema": 1,
3
+ "tool": "doesitfire",
4
+ "version": "0.1.0",
5
+ "started_at": "2026-11-03T20:49:21+00:00",
6
+ "finished_at": null,
7
+ "duration_s": 5131.5,
8
+ "repeats": 3,
9
+ "max_turns": 2,
10
+ "host": {
11
+ "os": "Darwin",
12
+ "arch": "arm64",
13
+ "hardware": "Apple M4, 16 GB",
14
+ "python": "3.13.12",
15
+ "docker": "29.9.2"
16
+ },
17
+ "agents": [
18
+ {
19
+ "name": "claude-code",
20
+ "cli_version": "2.1.317",
21
+ "provider": "ollama",
22
+ "model": "qwen3:4b-16k",
23
+ "experimental": false,
24
+ "repeats": 1
25
+ },
26
+ {
27
+ "name": "opencode",
28
+ "cli_version": "1.19.5",
29
+ "provider": "mistral",
30
+ "model": "ministral-8b-latest",
31
+ "experimental": false,
32
+ "repeats": 3,
33
+ "price": {
34
+ "input": 0.15,
35
+ "output": 0.15,
36
+ "source": "https://docs.mistral.ai/models/ministral-3-8b-25-12",
37
+ "checked": "2026-11-04"
38
+ }
39
+ }
40
+ ],
41
+ "skills": [
42
+ {
43
+ "name": "commit-message",
44
+ "description": "Writes git commit messages in Conventional Commits format (type(scope): summary, body, footer). Use when the user asks to write, draft, fix or improve a git commit message."
45
+ },
46
+ {
47
+ "name": "regex-explainer",
48
+ "description": "Explains an existing regular expression token by token and lists strings it matches and does not match. Use when the user pastes a regex and asks what it does or why it fails to match."
49
+ },
50
+ {
51
+ "name": "dockerfile-review",
52
+ "description": "Reviews a Dockerfile for image size, build cache use and security (root user, pinned base images, leaked secrets). Use when the user shares a Dockerfile and asks for a review or how to make the image smaller or safer."
53
+ }
54
+ ],
55
+ "trials": [
56
+ {
57
+ "agent": "claude-code",
58
+ "skill": "commit-message",
59
+ "prompt": "Write a commit message for my change: I added a login form with email and password validation.",
60
+ "expect": "fire",
61
+ "repeat": 0,
62
+ "fired": true,
63
+ "activated": [
64
+ "commit-message"
65
+ ],
66
+ "error": null,
67
+ "duration_s": 236.96,
68
+ "input_tokens": 0,
69
+ "output_tokens": 0,
70
+ "log": "examples/recorded/logs/claude-code-commit-message-fire-r0-e409dfa5.jsonl",
71
+ "cost_usd": 0.0
72
+ },
73
+ {
74
+ "agent": "claude-code",
75
+ "skill": "commit-message",
76
+ "prompt": "Can you draft a conventional commit for a fix that stops the cart total going negative?",
77
+ "expect": "fire",
78
+ "repeat": 0,
79
+ "fired": false,
80
+ "activated": [],
81
+ "error": null,
82
+ "duration_s": 225.74,
83
+ "input_tokens": 9960,
84
+ "output_tokens": 3855,
85
+ "log": "examples/recorded/logs/claude-code-commit-message-fire-r0-f2fb5411.jsonl",
86
+ "cost_usd": 0.0
87
+ },
88
+ {
89
+ "agent": "claude-code",
90
+ "skill": "commit-message",
91
+ "prompt": "My commit message is 'stuff'. Improve it: I renamed the User model to Account everywhere.",
92
+ "expect": "fire",
93
+ "repeat": 0,
94
+ "fired": false,
95
+ "activated": [],
96
+ "error": null,
97
+ "duration_s": 251.27,
98
+ "input_tokens": 9962,
99
+ "output_tokens": 3952,
100
+ "log": "examples/recorded/logs/claude-code-commit-message-fire-r0-6d69a44f.jsonl",
101
+ "cost_usd": 0.0
102
+ },
103
+ {
104
+ "agent": "claude-code",
105
+ "skill": "commit-message",
106
+ "prompt": "I bumped React from 18 to 19 and fixed two broken tests. What should the commit say?",
107
+ "expect": "fire",
108
+ "repeat": 0,
109
+ "fired": false,
110
+ "activated": [],
111
+ "error": null,
112
+ "duration_s": 111.39,
113
+ "input_tokens": 0,
114
+ "output_tokens": 0,
115
+ "log": "examples/recorded/logs/claude-code-commit-message-fire-r0-edbcb326.jsonl",
116
+ "cost_usd": 0.0
117
+ },
118
+ {
119
+ "agent": "claude-code",
120
+ "skill": "commit-message",
121
+ "prompt": "How do I undo my last git commit but keep the changes?",
122
+ "expect": "no_fire",
123
+ "repeat": 0,
124
+ "fired": false,
125
+ "activated": [],
126
+ "error": null,
127
+ "duration_s": 239.31,
128
+ "input_tokens": 4963,
129
+ "output_tokens": 1128,
130
+ "log": "examples/recorded/logs/claude-code-commit-message-no_fire-r0-d98b2514.jsonl",
131
+ "cost_usd": 0.0
132
+ },
133
+ {
134
+ "agent": "claude-code",
135
+ "skill": "commit-message",
136
+ "prompt": "Explain the difference between git merge and git rebase.",
137
+ "expect": "no_fire",
138
+ "repeat": 0,
139
+ "fired": false,
140
+ "activated": [],
141
+ "error": null,
142
+ "duration_s": 256.07,
143
+ "input_tokens": 4963,
144
+ "output_tokens": 1230,
145
+ "log": "examples/recorded/logs/claude-code-commit-message-no_fire-r0-9080e467.jsonl",
146
+ "cost_usd": 0.0
147
+ },
148
+ {
149
+ "agent": "claude-code",
150
+ "skill": "commit-message",
151
+ "prompt": "Write a CHANGELOG entry for version 2.3.0 of my library.",
152
+ "expect": "no_fire",
153
+ "repeat": 0,
154
+ "fired": false,
155
+ "activated": [],
156
+ "error": null,
157
+ "duration_s": 237.71,
158
+ "input_tokens": 4968,
159
+ "output_tokens": 1011,
160
+ "log": "examples/recorded/logs/claude-code-commit-message-no_fire-r0-5212ab0a.jsonl",
161
+ "cost_usd": 0.0
162
+ },
163
+ {
164
+ "agent": "claude-code",
165
+ "skill": "commit-message",
166
+ "prompt": "Write a Python function that checks whether a string is a palindrome.",
167
+ "expect": "no_fire",
168
+ "repeat": 0,
169
+ "fired": false,
170
+ "activated": [],
171
+ "error": null,
172
+ "duration_s": 178.46,
173
+ "input_tokens": 4962,
174
+ "output_tokens": 881,
175
+ "log": "examples/recorded/logs/claude-code-commit-message-no_fire-r0-fa668f55.jsonl",
176
+ "cost_usd": 0.0
177
+ },
178
+ {
179
+ "agent": "claude-code",
180
+ "skill": "regex-explainer",
181
+ "prompt": "What does this regex do? ^(?:\\+34)?[6-9]\\d{8}$",
182
+ "expect": "fire",
183
+ "repeat": 0,
184
+ "fired": false,
185
+ "activated": [],
186
+ "error": null,
187
+ "duration_s": 323.96,
188
+ "input_tokens": 4973,
189
+ "output_tokens": 1928,
190
+ "log": "examples/recorded/logs/claude-code-regex-explainer-fire-r0-acdcfc02.jsonl",
191
+ "cost_usd": 0.0
192
+ },
193
+ {
194
+ "agent": "claude-code",
195
+ "skill": "regex-explainer",
196
+ "prompt": "Explain this pattern token by token: (?<=\\$)\\d+(?:\\.\\d{2})?",
197
+ "expect": "fire",
198
+ "repeat": 0,
199
+ "fired": false,
200
+ "activated": [],
201
+ "error": null,
202
+ "duration_s": 419.75,
203
+ "input_tokens": 4972,
204
+ "output_tokens": 2571,
205
+ "log": "examples/recorded/logs/claude-code-regex-explainer-fire-r0-ec2fff5e.jsonl",
206
+ "cost_usd": 0.0
207
+ },
208
+ {
209
+ "agent": "claude-code",
210
+ "skill": "regex-explainer",
211
+ "prompt": "Why does /^\\w+@\\w+\\.com$/ not match john.doe@mail.example.com?",
212
+ "expect": "fire",
213
+ "repeat": 0,
214
+ "fired": false,
215
+ "activated": [],
216
+ "error": "timeout after 900s",
217
+ "duration_s": 900.18,
218
+ "input_tokens": 0,
219
+ "output_tokens": 0,
220
+ "log": "examples/recorded/logs/claude-code-regex-explainer-fire-r0-b575a6ef.jsonl",
221
+ "cost_usd": 0.0
222
+ },
223
+ {
224
+ "agent": "claude-code",
225
+ "skill": "regex-explainer",
226
+ "prompt": "I found \\b(\\w+)\\s+\\1\\b in our codebase. What is it for?",
227
+ "expect": "fire",
228
+ "repeat": 0,
229
+ "fired": false,
230
+ "activated": [],
231
+ "error": null,
232
+ "duration_s": 732.85,
233
+ "input_tokens": 9960,
234
+ "output_tokens": 4650,
235
+ "log": "examples/recorded/logs/claude-code-regex-explainer-fire-r0-d87944e8.jsonl",
236
+ "cost_usd": 0.0
237
+ },
238
+ {
239
+ "agent": "opencode",
240
+ "skill": "commit-message",
241
+ "prompt": "Write a commit message for my change: I added a login form with email and password validation.",
242
+ "expect": "fire",
243
+ "repeat": 0,
244
+ "fired": true,
245
+ "activated": [
246
+ "commit-message"
247
+ ],
248
+ "error": null,
249
+ "duration_s": 30.43,
250
+ "input_tokens": 4983,
251
+ "output_tokens": 11,
252
+ "log": "examples/recorded/logs/opencode-commit-message-fire-r0-e409dfa5.jsonl",
253
+ "cost_usd": 0.000749
254
+ },
255
+ {
256
+ "agent": "opencode",
257
+ "skill": "commit-message",
258
+ "prompt": "Can you draft a conventional commit for a fix that stops the cart total going negative?",
259
+ "expect": "fire",
260
+ "repeat": 0,
261
+ "fired": true,
262
+ "activated": [
263
+ "commit-message"
264
+ ],
265
+ "error": null,
266
+ "duration_s": 18.0,
267
+ "input_tokens": 4980,
268
+ "output_tokens": 11,
269
+ "log": "examples/recorded/logs/opencode-commit-message-fire-r0-f2fb5411.jsonl",
270
+ "cost_usd": 0.000749
271
+ },
272
+ {
273
+ "agent": "opencode",
274
+ "skill": "commit-message",
275
+ "prompt": "My commit message is 'stuff'. Improve it: I renamed the User model to Account everywhere.",
276
+ "expect": "fire",
277
+ "repeat": 0,
278
+ "fired": true,
279
+ "activated": [
280
+ "commit-message"
281
+ ],
282
+ "error": null,
283
+ "duration_s": 16.22,
284
+ "input_tokens": 4982,
285
+ "output_tokens": 11,
286
+ "log": "examples/recorded/logs/opencode-commit-message-fire-r0-6d69a44f.jsonl",
287
+ "cost_usd": 0.000749
288
+ },
289
+ {
290
+ "agent": "opencode",
291
+ "skill": "commit-message",
292
+ "prompt": "I bumped React from 18 to 19 and fixed two broken tests. What should the commit say?",
293
+ "expect": "fire",
294
+ "repeat": 0,
295
+ "fired": true,
296
+ "activated": [
297
+ "commit-message"
298
+ ],
299
+ "error": null,
300
+ "duration_s": 17.52,
301
+ "input_tokens": 4986,
302
+ "output_tokens": 11,
303
+ "log": "examples/recorded/logs/opencode-commit-message-fire-r0-edbcb326.jsonl",
304
+ "cost_usd": 0.00075
305
+ },
306
+ {
307
+ "agent": "opencode",
308
+ "skill": "commit-message",
309
+ "prompt": "How do I undo my last git commit but keep the changes?",
310
+ "expect": "no_fire",
311
+ "repeat": 0,
312
+ "fired": false,
313
+ "activated": [],
314
+ "error": null,
315
+ "duration_s": 18.42,
316
+ "input_tokens": 4975,
317
+ "output_tokens": 8,
318
+ "log": "examples/recorded/logs/opencode-commit-message-no_fire-r0-d98b2514.jsonl",
319
+ "cost_usd": 0.000747
320
+ },
321
+ {
322
+ "agent": "opencode",
323
+ "skill": "commit-message",
324
+ "prompt": "Explain the difference between git merge and git rebase.",
325
+ "expect": "no_fire",
326
+ "repeat": 0,
327
+ "fired": false,
328
+ "activated": [],
329
+ "error": null,
330
+ "duration_s": 9.55,
331
+ "input_tokens": 4975,
332
+ "output_tokens": 131,
333
+ "log": "examples/recorded/logs/opencode-commit-message-no_fire-r0-9080e467.jsonl",
334
+ "cost_usd": 0.000766
335
+ },
336
+ {
337
+ "agent": "opencode",
338
+ "skill": "commit-message",
339
+ "prompt": "Write a CHANGELOG entry for version 2.3.0 of my library.",
340
+ "expect": "no_fire",
341
+ "repeat": 0,
342
+ "fired": true,
343
+ "activated": [
344
+ "commit-message"
345
+ ],
346
+ "error": null,
347
+ "duration_s": 12.08,
348
+ "input_tokens": 4981,
349
+ "output_tokens": 11,
350
+ "log": "examples/recorded/logs/opencode-commit-message-no_fire-r0-5212ab0a.jsonl",
351
+ "cost_usd": 0.000749
352
+ },
353
+ {
354
+ "agent": "opencode",
355
+ "skill": "commit-message",
356
+ "prompt": "Write a Python function that checks whether a string is a palindrome.",
357
+ "expect": "no_fire",
358
+ "repeat": 0,
359
+ "fired": false,
360
+ "activated": [],
361
+ "error": null,
362
+ "duration_s": 11.21,
363
+ "input_tokens": 4977,
364
+ "output_tokens": 37,
365
+ "log": "examples/recorded/logs/opencode-commit-message-no_fire-r0-fa668f55.jsonl",
366
+ "cost_usd": 0.000752
367
+ },
368
+ {
369
+ "agent": "opencode",
370
+ "skill": "regex-explainer",
371
+ "prompt": "What does this regex do? ^(?:\\+34)?[6-9]\\d{8}$",
372
+ "expect": "fire",
373
+ "repeat": 0,
374
+ "fired": true,
375
+ "activated": [
376
+ "regex-explainer"
377
+ ],
378
+ "error": null,
379
+ "duration_s": 30.26,
380
+ "input_tokens": 4990,
381
+ "output_tokens": 13,
382
+ "log": "examples/recorded/logs/opencode-regex-explainer-fire-r0-acdcfc02.jsonl",
383
+ "cost_usd": 0.00075
384
+ },
385
+ {
386
+ "agent": "opencode",
387
+ "skill": "regex-explainer",
388
+ "prompt": "Explain this pattern token by token: (?<=\\$)\\d+(?:\\.\\d{2})?",
389
+ "expect": "fire",
390
+ "repeat": 0,
391
+ "fired": true,
392
+ "activated": [
393
+ "regex-explainer"
394
+ ],
395
+ "error": null,
396
+ "duration_s": 18.05,
397
+ "input_tokens": 4990,
398
+ "output_tokens": 13,
399
+ "log": "examples/recorded/logs/opencode-regex-explainer-fire-r0-ec2fff5e.jsonl",
400
+ "cost_usd": 0.00075
401
+ },
402
+ {
403
+ "agent": "opencode",
404
+ "skill": "regex-explainer",
405
+ "prompt": "Why does /^\\w+@\\w+\\.com$/ not match john.doe@mail.example.com?",
406
+ "expect": "fire",
407
+ "repeat": 0,
408
+ "fired": false,
409
+ "activated": [],
410
+ "error": "Bad Request: Expected last role User or Tool (or Assistant with prefix True) for serving but got assistant",
411
+ "duration_s": 17.72,
412
+ "input_tokens": 4990,
413
+ "output_tokens": 16,
414
+ "log": "examples/recorded/logs/opencode-regex-explainer-fire-r0-b575a6ef.jsonl",
415
+ "cost_usd": 0.000751
416
+ },
417
+ {
418
+ "agent": "opencode",
419
+ "skill": "regex-explainer",
420
+ "prompt": "I found \\b(\\w+)\\s+\\1\\b in our codebase. What is it for?",
421
+ "expect": "fire",
422
+ "repeat": 0,
423
+ "fired": false,
424
+ "activated": [],
425
+ "error": "Bad Request: Expected last role User or Tool (or Assistant with prefix True) for serving but got assistant",
426
+ "duration_s": 15.74,
427
+ "input_tokens": 4989,
428
+ "output_tokens": 21,
429
+ "log": "examples/recorded/logs/opencode-regex-explainer-fire-r0-d87944e8.jsonl",
430
+ "cost_usd": 0.000752
431
+ },
432
+ {
433
+ "agent": "opencode",
434
+ "skill": "regex-explainer",
435
+ "prompt": "Write a regex that matches US ZIP codes.",
436
+ "expect": "no_fire",
437
+ "repeat": 0,
438
+ "fired": false,
439
+ "activated": [],
440
+ "error": null,
441
+ "duration_s": 17.18,
442
+ "input_tokens": 4976,
443
+ "output_tokens": 37,
444
+ "log": "examples/recorded/logs/opencode-regex-explainer-no_fire-r0-7071a2c0.jsonl",
445
+ "cost_usd": 0.000752
446
+ },
447
+ {
448
+ "agent": "opencode",
449
+ "skill": "regex-explainer",
450
+ "prompt": "How do I replace every tab with four spaces in VS Code?",
451
+ "expect": "no_fire",
452
+ "repeat": 0,
453
+ "fired": false,
454
+ "activated": [],
455
+ "error": null,
456
+ "duration_s": 7.42,
457
+ "input_tokens": 4979,
458
+ "output_tokens": 102,
459
+ "log": "examples/recorded/logs/opencode-regex-explainer-no_fire-r0-b75ba907.jsonl",
460
+ "cost_usd": 0.000762
461
+ },
462
+ {
463
+ "agent": "opencode",
464
+ "skill": "regex-explainer",
465
+ "prompt": "Parse this CSV line in Python: name,age,city",
466
+ "expect": "no_fire",
467
+ "repeat": 0,
468
+ "fired": false,
469
+ "activated": [],
470
+ "error": null,
471
+ "duration_s": 12.88,
472
+ "input_tokens": 4980,
473
+ "output_tokens": 60,
474
+ "log": "examples/recorded/logs/opencode-regex-explainer-no_fire-r0-be76a2dc.jsonl",
475
+ "cost_usd": 0.000756
476
+ },
477
+ {
478
+ "agent": "opencode",
479
+ "skill": "regex-explainer",
480
+ "prompt": "What is the time complexity of binary search?",
481
+ "expect": "no_fire",
482
+ "repeat": 0,
483
+ "fired": false,
484
+ "activated": [],
485
+ "error": null,
486
+ "duration_s": 4.6,
487
+ "input_tokens": 4975,
488
+ "output_tokens": 5,
489
+ "log": "examples/recorded/logs/opencode-regex-explainer-no_fire-r0-95c9e10d.jsonl",
490
+ "cost_usd": 0.000747
491
+ },
492
+ {
493
+ "agent": "opencode",
494
+ "skill": "dockerfile-review",
495
+ "prompt": "Review this Dockerfile: FROM python:latest\nCOPY . /app\nRUN pip install -r /app/requirements.txt\nCMD python /app/main.py",
496
+ "expect": "fire",
497
+ "repeat": 0,
498
+ "fired": true,
499
+ "activated": [
500
+ "dockerfile-review"
501
+ ],
502
+ "error": null,
503
+ "duration_s": 29.0,
504
+ "input_tokens": 5009,
505
+ "output_tokens": 12,
506
+ "log": "examples/recorded/logs/opencode-dockerfile-review-fire-r0-00fe9152.jsonl",
507
+ "cost_usd": 0.000753
508
+ },
509
+ {
510
+ "agent": "opencode",
511
+ "skill": "dockerfile-review",
512
+ "prompt": "My Node image is 1.4 GB. Here is the Dockerfile: FROM node:22\nCOPY . .\nRUN npm install\nCMD npm start. How do I make it smaller?",
513
+ "expect": "fire",
514
+ "repeat": 0,
515
+ "fired": true,
516
+ "activated": [
517
+ "dockerfile-review"
518
+ ],
519
+ "error": null,
520
+ "duration_s": 17.32,
521
+ "input_tokens": 5013,
522
+ "output_tokens": 12,
523
+ "log": "examples/recorded/logs/opencode-dockerfile-review-fire-r0-4420d371.jsonl",
524
+ "cost_usd": 0.000754
525
+ },
526
+ {
527
+ "agent": "opencode",
528
+ "skill": "dockerfile-review",
529
+ "prompt": "Is this Dockerfile safe for production? FROM ubuntu\nENV API_KEY=abc123\nRUN apt-get update && apt-get install -y curl\nUSER root",
530
+ "expect": "fire",
531
+ "repeat": 0,
532
+ "fired": true,
533
+ "activated": [
534
+ "dockerfile-review"
535
+ ],
536
+ "error": null,
537
+ "duration_s": 16.93,
538
+ "input_tokens": 5007,
539
+ "output_tokens": 12,
540
+ "log": "examples/recorded/logs/opencode-dockerfile-review-fire-r0-e38f97a6.jsonl",
541
+ "cost_usd": 0.000753
542
+ },
543
+ {
544
+ "agent": "opencode",
545
+ "skill": "dockerfile-review",
546
+ "prompt": "Check my Dockerfile for bad practices: FROM golang:1.23\nWORKDIR /src\nCOPY . .\nRUN go build -o app\nCMD ./app",
547
+ "expect": "fire",
548
+ "repeat": 0,
549
+ "fired": true,
550
+ "activated": [
551
+ "dockerfile-review"
552
+ ],
553
+ "error": null,
554
+ "duration_s": 15.92,
555
+ "input_tokens": 5010,
556
+ "output_tokens": 12,
557
+ "log": "examples/recorded/logs/opencode-dockerfile-review-fire-r0-39ed1761.jsonl",
558
+ "cost_usd": 0.000753
559
+ },
560
+ {
561
+ "agent": "opencode",
562
+ "skill": "dockerfile-review",
563
+ "prompt": "How do I list all running Docker containers?",
564
+ "expect": "no_fire",
565
+ "repeat": 0,
566
+ "fired": false,
567
+ "activated": [],
568
+ "error": null,
569
+ "duration_s": 17.21,
570
+ "input_tokens": 4980,
571
+ "output_tokens": 8,
572
+ "log": "examples/recorded/logs/opencode-dockerfile-review-no_fire-r0-fd36fd0d.jsonl",
573
+ "cost_usd": 0.000748
574
+ },
575
+ {
576
+ "agent": "opencode",
577
+ "skill": "dockerfile-review",
578
+ "prompt": "Write a docker-compose.yml with Postgres and Redis.",
579
+ "expect": "no_fire",
580
+ "repeat": 0,
581
+ "fired": false,
582
+ "activated": [],
583
+ "error": "Bad Request: Expected last role User or Tool (or Assistant with prefix True) for serving but got assistant",
584
+ "duration_s": 8.66,
585
+ "input_tokens": 4983,
586
+ "output_tokens": 25,
587
+ "log": "examples/recorded/logs/opencode-dockerfile-review-no_fire-r0-1f198403.jsonl",
588
+ "cost_usd": 0.000751
589
+ },
590
+ {
591
+ "agent": "opencode",
592
+ "skill": "dockerfile-review",
593
+ "prompt": "What is the difference between a Docker image and a container?",
594
+ "expect": "no_fire",
595
+ "repeat": 0,
596
+ "fired": false,
597
+ "activated": [],
598
+ "error": null,
599
+ "duration_s": 11.93,
600
+ "input_tokens": 4983,
601
+ "output_tokens": 97,
602
+ "log": "examples/recorded/logs/opencode-dockerfile-review-no_fire-r0-db1d220c.jsonl",
603
+ "cost_usd": 0.000762
604
+ },
605
+ {
606
+ "agent": "opencode",
607
+ "skill": "dockerfile-review",
608
+ "prompt": "My Kubernetes pod is stuck in CrashLoopBackOff. How do I debug it?",
609
+ "expect": "no_fire",
610
+ "repeat": 0,
611
+ "fired": false,
612
+ "activated": [],
613
+ "error": "Bad Request: Expected last role User or Tool (or Assistant with prefix True) for serving but got assistant",
614
+ "duration_s": 11.83,
615
+ "input_tokens": 4988,
616
+ "output_tokens": 15,
617
+ "log": "examples/recorded/logs/opencode-dockerfile-review-no_fire-r0-3284c6af.jsonl",
618
+ "cost_usd": 0.00075
619
+ },
620
+ {
621
+ "agent": "opencode",
622
+ "skill": "commit-message",
623
+ "prompt": "Write a commit message for my change: I added a login form with email and password validation.",
624
+ "expect": "fire",
625
+ "repeat": 1,
626
+ "fired": true,
627
+ "activated": [
628
+ "commit-message"
629
+ ],
630
+ "error": null,
631
+ "duration_s": 13.7,
632
+ "input_tokens": 4982,
633
+ "output_tokens": 11,
634
+ "log": "examples/recorded/logs/opencode-commit-message-fire-r1-e409dfa5.jsonl",
635
+ "cost_usd": 0.000749
636
+ },
637
+ {
638
+ "agent": "opencode",
639
+ "skill": "commit-message",
640
+ "prompt": "Can you draft a conventional commit for a fix that stops the cart total going negative?",
641
+ "expect": "fire",
642
+ "repeat": 1,
643
+ "fired": true,
644
+ "activated": [
645
+ "commit-message"
646
+ ],
647
+ "error": null,
648
+ "duration_s": 10.03,
649
+ "input_tokens": 4980,
650
+ "output_tokens": 11,
651
+ "log": "examples/recorded/logs/opencode-commit-message-fire-r1-f2fb5411.jsonl",
652
+ "cost_usd": 0.000749
653
+ },
654
+ {
655
+ "agent": "opencode",
656
+ "skill": "commit-message",
657
+ "prompt": "My commit message is 'stuff'. Improve it: I renamed the User model to Account everywhere.",
658
+ "expect": "fire",
659
+ "repeat": 1,
660
+ "fired": true,
661
+ "activated": [
662
+ "commit-message"
663
+ ],
664
+ "error": null,
665
+ "duration_s": 10.46,
666
+ "input_tokens": 4982,
667
+ "output_tokens": 11,
668
+ "log": "examples/recorded/logs/opencode-commit-message-fire-r1-6d69a44f.jsonl",
669
+ "cost_usd": 0.000749
670
+ },
671
+ {
672
+ "agent": "opencode",
673
+ "skill": "commit-message",
674
+ "prompt": "I bumped React from 18 to 19 and fixed two broken tests. What should the commit say?",
675
+ "expect": "fire",
676
+ "repeat": 1,
677
+ "fired": true,
678
+ "activated": [
679
+ "commit-message"
680
+ ],
681
+ "error": null,
682
+ "duration_s": 8.8,
683
+ "input_tokens": 4986,
684
+ "output_tokens": 11,
685
+ "log": "examples/recorded/logs/opencode-commit-message-fire-r1-edbcb326.jsonl",
686
+ "cost_usd": 0.00075
687
+ },
688
+ {
689
+ "agent": "opencode",
690
+ "skill": "commit-message",
691
+ "prompt": "How do I undo my last git commit but keep the changes?",
692
+ "expect": "no_fire",
693
+ "repeat": 1,
694
+ "fired": false,
695
+ "activated": [],
696
+ "error": null,
697
+ "duration_s": 10.3,
698
+ "input_tokens": 4975,
699
+ "output_tokens": 8,
700
+ "log": "examples/recorded/logs/opencode-commit-message-no_fire-r1-d98b2514.jsonl",
701
+ "cost_usd": 0.000747
702
+ },
703
+ {
704
+ "agent": "opencode",
705
+ "skill": "commit-message",
706
+ "prompt": "Explain the difference between git merge and git rebase.",
707
+ "expect": "no_fire",
708
+ "repeat": 1,
709
+ "fired": false,
710
+ "activated": [],
711
+ "error": null,
712
+ "duration_s": 24.31,
713
+ "input_tokens": 4975,
714
+ "output_tokens": 97,
715
+ "log": "examples/recorded/logs/opencode-commit-message-no_fire-r1-9080e467.jsonl",
716
+ "cost_usd": 0.000761
717
+ },
718
+ {
719
+ "agent": "opencode",
720
+ "skill": "commit-message",
721
+ "prompt": "Write a CHANGELOG entry for version 2.3.0 of my library.",
722
+ "expect": "no_fire",
723
+ "repeat": 1,
724
+ "fired": true,
725
+ "activated": [
726
+ "commit-message"
727
+ ],
728
+ "error": null,
729
+ "duration_s": 12.93,
730
+ "input_tokens": 4981,
731
+ "output_tokens": 11,
732
+ "log": "examples/recorded/logs/opencode-commit-message-no_fire-r1-5212ab0a.jsonl",
733
+ "cost_usd": 0.000749
734
+ },
735
+ {
736
+ "agent": "opencode",
737
+ "skill": "commit-message",
738
+ "prompt": "Write a Python function that checks whether a string is a palindrome.",
739
+ "expect": "no_fire",
740
+ "repeat": 1,
741
+ "fired": false,
742
+ "activated": [],
743
+ "error": null,
744
+ "duration_s": 11.34,
745
+ "input_tokens": 4977,
746
+ "output_tokens": 37,
747
+ "log": "examples/recorded/logs/opencode-commit-message-no_fire-r1-fa668f55.jsonl",
748
+ "cost_usd": 0.000752
749
+ },
750
+ {
751
+ "agent": "opencode",
752
+ "skill": "regex-explainer",
753
+ "prompt": "What does this regex do? ^(?:\\+34)?[6-9]\\d{8}$",
754
+ "expect": "fire",
755
+ "repeat": 1,
756
+ "fired": true,
757
+ "activated": [
758
+ "regex-explainer"
759
+ ],
760
+ "error": null,
761
+ "duration_s": 10.28,
762
+ "input_tokens": 4989,
763
+ "output_tokens": 13,
764
+ "log": "examples/recorded/logs/opencode-regex-explainer-fire-r1-acdcfc02.jsonl",
765
+ "cost_usd": 0.00075
766
+ },
767
+ {
768
+ "agent": "opencode",
769
+ "skill": "regex-explainer",
770
+ "prompt": "Explain this pattern token by token: (?<=\\$)\\d+(?:\\.\\d{2})?",
771
+ "expect": "fire",
772
+ "repeat": 1,
773
+ "fired": true,
774
+ "activated": [
775
+ "regex-explainer"
776
+ ],
777
+ "error": null,
778
+ "duration_s": 7.42,
779
+ "input_tokens": 4990,
780
+ "output_tokens": 13,
781
+ "log": "examples/recorded/logs/opencode-regex-explainer-fire-r1-ec2fff5e.jsonl",
782
+ "cost_usd": 0.00075
783
+ },
784
+ {
785
+ "agent": "opencode",
786
+ "skill": "regex-explainer",
787
+ "prompt": "Why does /^\\w+@\\w+\\.com$/ not match john.doe@mail.example.com?",
788
+ "expect": "fire",
789
+ "repeat": 1,
790
+ "fired": false,
791
+ "activated": [],
792
+ "error": "Bad Request: Expected last role User or Tool (or Assistant with prefix True) for serving but got assistant",
793
+ "duration_s": 7.25,
794
+ "input_tokens": 4990,
795
+ "output_tokens": 16,
796
+ "log": "examples/recorded/logs/opencode-regex-explainer-fire-r1-b575a6ef.jsonl",
797
+ "cost_usd": 0.000751
798
+ },
799
+ {
800
+ "agent": "opencode",
801
+ "skill": "regex-explainer",
802
+ "prompt": "I found \\b(\\w+)\\s+\\1\\b in our codebase. What is it for?",
803
+ "expect": "fire",
804
+ "repeat": 1,
805
+ "fired": false,
806
+ "activated": [],
807
+ "error": "Bad Request: Expected last role User or Tool (or Assistant with prefix True) for serving but got assistant",
808
+ "duration_s": 7.12,
809
+ "input_tokens": 4989,
810
+ "output_tokens": 10,
811
+ "log": "examples/recorded/logs/opencode-regex-explainer-fire-r1-d87944e8.jsonl",
812
+ "cost_usd": 0.00075
813
+ },
814
+ {
815
+ "agent": "opencode",
816
+ "skill": "regex-explainer",
817
+ "prompt": "Write a regex that matches US ZIP codes.",
818
+ "expect": "no_fire",
819
+ "repeat": 1,
820
+ "fired": false,
821
+ "activated": [],
822
+ "error": null,
823
+ "duration_s": 7.17,
824
+ "input_tokens": 4976,
825
+ "output_tokens": 33,
826
+ "log": "examples/recorded/logs/opencode-regex-explainer-no_fire-r1-7071a2c0.jsonl",
827
+ "cost_usd": 0.000751
828
+ },
829
+ {
830
+ "agent": "opencode",
831
+ "skill": "regex-explainer",
832
+ "prompt": "How do I replace every tab with four spaces in VS Code?",
833
+ "expect": "no_fire",
834
+ "repeat": 1,
835
+ "fired": false,
836
+ "activated": [],
837
+ "error": null,
838
+ "duration_s": 14.86,
839
+ "input_tokens": 4979,
840
+ "output_tokens": 102,
841
+ "log": "examples/recorded/logs/opencode-regex-explainer-no_fire-r1-b75ba907.jsonl",
842
+ "cost_usd": 0.000762
843
+ },
844
+ {
845
+ "agent": "opencode",
846
+ "skill": "regex-explainer",
847
+ "prompt": "Parse this CSV line in Python: name,age,city",
848
+ "expect": "no_fire",
849
+ "repeat": 1,
850
+ "fired": false,
851
+ "activated": [],
852
+ "error": null,
853
+ "duration_s": 5.6,
854
+ "input_tokens": 4980,
855
+ "output_tokens": 60,
856
+ "log": "examples/recorded/logs/opencode-regex-explainer-no_fire-r1-be76a2dc.jsonl",
857
+ "cost_usd": 0.000756
858
+ },
859
+ {
860
+ "agent": "opencode",
861
+ "skill": "regex-explainer",
862
+ "prompt": "What is the time complexity of binary search?",
863
+ "expect": "no_fire",
864
+ "repeat": 1,
865
+ "fired": false,
866
+ "activated": [],
867
+ "error": null,
868
+ "duration_s": 11.73,
869
+ "input_tokens": 4975,
870
+ "output_tokens": 6,
871
+ "log": "examples/recorded/logs/opencode-regex-explainer-no_fire-r1-95c9e10d.jsonl",
872
+ "cost_usd": 0.000747
873
+ },
874
+ {
875
+ "agent": "opencode",
876
+ "skill": "dockerfile-review",
877
+ "prompt": "Review this Dockerfile: FROM python:latest\nCOPY . /app\nRUN pip install -r /app/requirements.txt\nCMD python /app/main.py",
878
+ "expect": "fire",
879
+ "repeat": 1,
880
+ "fired": true,
881
+ "activated": [
882
+ "dockerfile-review"
883
+ ],
884
+ "error": null,
885
+ "duration_s": 13.81,
886
+ "input_tokens": 5008,
887
+ "output_tokens": 12,
888
+ "log": "examples/recorded/logs/opencode-dockerfile-review-fire-r1-00fe9152.jsonl",
889
+ "cost_usd": 0.000753
890
+ },
891
+ {
892
+ "agent": "opencode",
893
+ "skill": "dockerfile-review",
894
+ "prompt": "My Node image is 1.4 GB. Here is the Dockerfile: FROM node:22\nCOPY . .\nRUN npm install\nCMD npm start. How do I make it smaller?",
895
+ "expect": "fire",
896
+ "repeat": 1,
897
+ "fired": true,
898
+ "activated": [
899
+ "dockerfile-review"
900
+ ],
901
+ "error": null,
902
+ "duration_s": 9.96,
903
+ "input_tokens": 5013,
904
+ "output_tokens": 12,
905
+ "log": "examples/recorded/logs/opencode-dockerfile-review-fire-r1-4420d371.jsonl",
906
+ "cost_usd": 0.000754
907
+ },
908
+ {
909
+ "agent": "opencode",
910
+ "skill": "dockerfile-review",
911
+ "prompt": "Is this Dockerfile safe for production? FROM ubuntu\nENV API_KEY=abc123\nRUN apt-get update && apt-get install -y curl\nUSER root",
912
+ "expect": "fire",
913
+ "repeat": 1,
914
+ "fired": true,
915
+ "activated": [
916
+ "dockerfile-review"
917
+ ],
918
+ "error": null,
919
+ "duration_s": 10.51,
920
+ "input_tokens": 5007,
921
+ "output_tokens": 12,
922
+ "log": "examples/recorded/logs/opencode-dockerfile-review-fire-r1-e38f97a6.jsonl",
923
+ "cost_usd": 0.000753
924
+ },
925
+ {
926
+ "agent": "opencode",
927
+ "skill": "dockerfile-review",
928
+ "prompt": "Check my Dockerfile for bad practices: FROM golang:1.23\nWORKDIR /src\nCOPY . .\nRUN go build -o app\nCMD ./app",
929
+ "expect": "fire",
930
+ "repeat": 1,
931
+ "fired": true,
932
+ "activated": [
933
+ "dockerfile-review"
934
+ ],
935
+ "error": null,
936
+ "duration_s": 10.65,
937
+ "input_tokens": 5010,
938
+ "output_tokens": 12,
939
+ "log": "examples/recorded/logs/opencode-dockerfile-review-fire-r1-39ed1761.jsonl",
940
+ "cost_usd": 0.000753
941
+ },
942
+ {
943
+ "agent": "opencode",
944
+ "skill": "dockerfile-review",
945
+ "prompt": "How do I list all running Docker containers?",
946
+ "expect": "no_fire",
947
+ "repeat": 1,
948
+ "fired": false,
949
+ "activated": [],
950
+ "error": null,
951
+ "duration_s": 10.98,
952
+ "input_tokens": 4980,
953
+ "output_tokens": 3,
954
+ "log": "examples/recorded/logs/opencode-dockerfile-review-no_fire-r1-fd36fd0d.jsonl",
955
+ "cost_usd": 0.000747
956
+ },
957
+ {
958
+ "agent": "opencode",
959
+ "skill": "dockerfile-review",
960
+ "prompt": "Write a docker-compose.yml with Postgres and Redis.",
961
+ "expect": "no_fire",
962
+ "repeat": 1,
963
+ "fired": false,
964
+ "activated": [],
965
+ "error": "Bad Request: Expected last role User or Tool (or Assistant with prefix True) for serving but got assistant",
966
+ "duration_s": 13.31,
967
+ "input_tokens": 4983,
968
+ "output_tokens": 25,
969
+ "log": "examples/recorded/logs/opencode-dockerfile-review-no_fire-r1-1f198403.jsonl",
970
+ "cost_usd": 0.000751
971
+ },
972
+ {
973
+ "agent": "opencode",
974
+ "skill": "dockerfile-review",
975
+ "prompt": "What is the difference between a Docker image and a container?",
976
+ "expect": "no_fire",
977
+ "repeat": 1,
978
+ "fired": false,
979
+ "activated": [],
980
+ "error": null,
981
+ "duration_s": 9.81,
982
+ "input_tokens": 4983,
983
+ "output_tokens": 99,
984
+ "log": "examples/recorded/logs/opencode-dockerfile-review-no_fire-r1-db1d220c.jsonl",
985
+ "cost_usd": 0.000762
986
+ },
987
+ {
988
+ "agent": "opencode",
989
+ "skill": "dockerfile-review",
990
+ "prompt": "My Kubernetes pod is stuck in CrashLoopBackOff. How do I debug it?",
991
+ "expect": "no_fire",
992
+ "repeat": 1,
993
+ "fired": false,
994
+ "activated": [],
995
+ "error": "Bad Request: Expected last role User or Tool (or Assistant with prefix True) for serving but got assistant",
996
+ "duration_s": 12.77,
997
+ "input_tokens": 4988,
998
+ "output_tokens": 15,
999
+ "log": "examples/recorded/logs/opencode-dockerfile-review-no_fire-r1-3284c6af.jsonl",
1000
+ "cost_usd": 0.00075
1001
+ },
1002
+ {
1003
+ "agent": "opencode",
1004
+ "skill": "commit-message",
1005
+ "prompt": "Write a commit message for my change: I added a login form with email and password validation.",
1006
+ "expect": "fire",
1007
+ "repeat": 2,
1008
+ "fired": true,
1009
+ "activated": [
1010
+ "commit-message"
1011
+ ],
1012
+ "error": null,
1013
+ "duration_s": 12.23,
1014
+ "input_tokens": 4982,
1015
+ "output_tokens": 11,
1016
+ "log": "examples/recorded/logs/opencode-commit-message-fire-r2-e409dfa5.jsonl",
1017
+ "cost_usd": 0.000749
1018
+ },
1019
+ {
1020
+ "agent": "opencode",
1021
+ "skill": "commit-message",
1022
+ "prompt": "Can you draft a conventional commit for a fix that stops the cart total going negative?",
1023
+ "expect": "fire",
1024
+ "repeat": 2,
1025
+ "fired": true,
1026
+ "activated": [
1027
+ "commit-message"
1028
+ ],
1029
+ "error": null,
1030
+ "duration_s": 14.29,
1031
+ "input_tokens": 4980,
1032
+ "output_tokens": 11,
1033
+ "log": "examples/recorded/logs/opencode-commit-message-fire-r2-f2fb5411.jsonl",
1034
+ "cost_usd": 0.000749
1035
+ },
1036
+ {
1037
+ "agent": "opencode",
1038
+ "skill": "commit-message",
1039
+ "prompt": "My commit message is 'stuff'. Improve it: I renamed the User model to Account everywhere.",
1040
+ "expect": "fire",
1041
+ "repeat": 2,
1042
+ "fired": true,
1043
+ "activated": [
1044
+ "commit-message"
1045
+ ],
1046
+ "error": null,
1047
+ "duration_s": 12.41,
1048
+ "input_tokens": 4982,
1049
+ "output_tokens": 11,
1050
+ "log": "examples/recorded/logs/opencode-commit-message-fire-r2-6d69a44f.jsonl",
1051
+ "cost_usd": 0.000749
1052
+ },
1053
+ {
1054
+ "agent": "opencode",
1055
+ "skill": "commit-message",
1056
+ "prompt": "I bumped React from 18 to 19 and fixed two broken tests. What should the commit say?",
1057
+ "expect": "fire",
1058
+ "repeat": 2,
1059
+ "fired": true,
1060
+ "activated": [
1061
+ "commit-message"
1062
+ ],
1063
+ "error": null,
1064
+ "duration_s": 11.66,
1065
+ "input_tokens": 4986,
1066
+ "output_tokens": 11,
1067
+ "log": "examples/recorded/logs/opencode-commit-message-fire-r2-edbcb326.jsonl",
1068
+ "cost_usd": 0.00075
1069
+ },
1070
+ {
1071
+ "agent": "opencode",
1072
+ "skill": "commit-message",
1073
+ "prompt": "How do I undo my last git commit but keep the changes?",
1074
+ "expect": "no_fire",
1075
+ "repeat": 2,
1076
+ "fired": false,
1077
+ "activated": [],
1078
+ "error": null,
1079
+ "duration_s": 12.89,
1080
+ "input_tokens": 4975,
1081
+ "output_tokens": 13,
1082
+ "log": "examples/recorded/logs/opencode-commit-message-no_fire-r2-d98b2514.jsonl",
1083
+ "cost_usd": 0.000748
1084
+ },
1085
+ {
1086
+ "agent": "opencode",
1087
+ "skill": "commit-message",
1088
+ "prompt": "Explain the difference between git merge and git rebase.",
1089
+ "expect": "no_fire",
1090
+ "repeat": 2,
1091
+ "fired": false,
1092
+ "activated": [],
1093
+ "error": null,
1094
+ "duration_s": 11.1,
1095
+ "input_tokens": 4975,
1096
+ "output_tokens": 141,
1097
+ "log": "examples/recorded/logs/opencode-commit-message-no_fire-r2-9080e467.jsonl",
1098
+ "cost_usd": 0.000767
1099
+ },
1100
+ {
1101
+ "agent": "opencode",
1102
+ "skill": "commit-message",
1103
+ "prompt": "Write a CHANGELOG entry for version 2.3.0 of my library.",
1104
+ "expect": "no_fire",
1105
+ "repeat": 2,
1106
+ "fired": true,
1107
+ "activated": [
1108
+ "commit-message"
1109
+ ],
1110
+ "error": null,
1111
+ "duration_s": 13.99,
1112
+ "input_tokens": 4981,
1113
+ "output_tokens": 11,
1114
+ "log": "examples/recorded/logs/opencode-commit-message-no_fire-r2-5212ab0a.jsonl",
1115
+ "cost_usd": 0.000749
1116
+ },
1117
+ {
1118
+ "agent": "opencode",
1119
+ "skill": "commit-message",
1120
+ "prompt": "Write a Python function that checks whether a string is a palindrome.",
1121
+ "expect": "no_fire",
1122
+ "repeat": 2,
1123
+ "fired": false,
1124
+ "activated": [],
1125
+ "error": null,
1126
+ "duration_s": 10.79,
1127
+ "input_tokens": 4977,
1128
+ "output_tokens": 27,
1129
+ "log": "examples/recorded/logs/opencode-commit-message-no_fire-r2-fa668f55.jsonl",
1130
+ "cost_usd": 0.000751
1131
+ },
1132
+ {
1133
+ "agent": "opencode",
1134
+ "skill": "regex-explainer",
1135
+ "prompt": "What does this regex do? ^(?:\\+34)?[6-9]\\d{8}$",
1136
+ "expect": "fire",
1137
+ "repeat": 2,
1138
+ "fired": true,
1139
+ "activated": [
1140
+ "regex-explainer"
1141
+ ],
1142
+ "error": null,
1143
+ "duration_s": 9.82,
1144
+ "input_tokens": 4989,
1145
+ "output_tokens": 13,
1146
+ "log": "examples/recorded/logs/opencode-regex-explainer-fire-r2-acdcfc02.jsonl",
1147
+ "cost_usd": 0.00075
1148
+ },
1149
+ {
1150
+ "agent": "opencode",
1151
+ "skill": "regex-explainer",
1152
+ "prompt": "Explain this pattern token by token: (?<=\\$)\\d+(?:\\.\\d{2})?",
1153
+ "expect": "fire",
1154
+ "repeat": 2,
1155
+ "fired": true,
1156
+ "activated": [
1157
+ "regex-explainer"
1158
+ ],
1159
+ "error": null,
1160
+ "duration_s": 12.11,
1161
+ "input_tokens": 4990,
1162
+ "output_tokens": 13,
1163
+ "log": "examples/recorded/logs/opencode-regex-explainer-fire-r2-ec2fff5e.jsonl",
1164
+ "cost_usd": 0.00075
1165
+ },
1166
+ {
1167
+ "agent": "opencode",
1168
+ "skill": "regex-explainer",
1169
+ "prompt": "Why does /^\\w+@\\w+\\.com$/ not match john.doe@mail.example.com?",
1170
+ "expect": "fire",
1171
+ "repeat": 2,
1172
+ "fired": false,
1173
+ "activated": [],
1174
+ "error": "Bad Request: Expected last role User or Tool (or Assistant with prefix True) for serving but got assistant",
1175
+ "duration_s": 6.37,
1176
+ "input_tokens": 4990,
1177
+ "output_tokens": 16,
1178
+ "log": "examples/recorded/logs/opencode-regex-explainer-fire-r2-b575a6ef.jsonl",
1179
+ "cost_usd": 0.000751
1180
+ },
1181
+ {
1182
+ "agent": "opencode",
1183
+ "skill": "regex-explainer",
1184
+ "prompt": "I found \\b(\\w+)\\s+\\1\\b in our codebase. What is it for?",
1185
+ "expect": "fire",
1186
+ "repeat": 2,
1187
+ "fired": false,
1188
+ "activated": [],
1189
+ "error": "Bad Request: Expected last role User or Tool (or Assistant with prefix True) for serving but got assistant",
1190
+ "duration_s": 23.95,
1191
+ "input_tokens": 4989,
1192
+ "output_tokens": 82,
1193
+ "log": "examples/recorded/logs/opencode-regex-explainer-fire-r2-d87944e8.jsonl",
1194
+ "cost_usd": 0.000761
1195
+ },
1196
+ {
1197
+ "agent": "opencode",
1198
+ "skill": "regex-explainer",
1199
+ "prompt": "Write a regex that matches US ZIP codes.",
1200
+ "expect": "no_fire",
1201
+ "repeat": 2,
1202
+ "fired": false,
1203
+ "activated": [],
1204
+ "error": null,
1205
+ "duration_s": 8.07,
1206
+ "input_tokens": 4976,
1207
+ "output_tokens": 61,
1208
+ "log": "examples/recorded/logs/opencode-regex-explainer-no_fire-r2-7071a2c0.jsonl",
1209
+ "cost_usd": 0.000756
1210
+ },
1211
+ {
1212
+ "agent": "opencode",
1213
+ "skill": "regex-explainer",
1214
+ "prompt": "How do I replace every tab with four spaces in VS Code?",
1215
+ "expect": "no_fire",
1216
+ "repeat": 2,
1217
+ "fired": false,
1218
+ "activated": [],
1219
+ "error": null,
1220
+ "duration_s": 9.03,
1221
+ "input_tokens": 4979,
1222
+ "output_tokens": 148,
1223
+ "log": "examples/recorded/logs/opencode-regex-explainer-no_fire-r2-b75ba907.jsonl",
1224
+ "cost_usd": 0.000769
1225
+ },
1226
+ {
1227
+ "agent": "opencode",
1228
+ "skill": "regex-explainer",
1229
+ "prompt": "Parse this CSV line in Python: name,age,city",
1230
+ "expect": "no_fire",
1231
+ "repeat": 2,
1232
+ "fired": false,
1233
+ "activated": [],
1234
+ "error": null,
1235
+ "duration_s": 8.09,
1236
+ "input_tokens": 4980,
1237
+ "output_tokens": 60,
1238
+ "log": "examples/recorded/logs/opencode-regex-explainer-no_fire-r2-be76a2dc.jsonl",
1239
+ "cost_usd": 0.000756
1240
+ },
1241
+ {
1242
+ "agent": "opencode",
1243
+ "skill": "regex-explainer",
1244
+ "prompt": "What is the time complexity of binary search?",
1245
+ "expect": "no_fire",
1246
+ "repeat": 2,
1247
+ "fired": false,
1248
+ "activated": [],
1249
+ "error": null,
1250
+ "duration_s": 8.54,
1251
+ "input_tokens": 4975,
1252
+ "output_tokens": 5,
1253
+ "log": "examples/recorded/logs/opencode-regex-explainer-no_fire-r2-95c9e10d.jsonl",
1254
+ "cost_usd": 0.000747
1255
+ },
1256
+ {
1257
+ "agent": "opencode",
1258
+ "skill": "dockerfile-review",
1259
+ "prompt": "Review this Dockerfile: FROM python:latest\nCOPY . /app\nRUN pip install -r /app/requirements.txt\nCMD python /app/main.py",
1260
+ "expect": "fire",
1261
+ "repeat": 2,
1262
+ "fired": true,
1263
+ "activated": [
1264
+ "dockerfile-review"
1265
+ ],
1266
+ "error": null,
1267
+ "duration_s": 12.27,
1268
+ "input_tokens": 5008,
1269
+ "output_tokens": 12,
1270
+ "log": "examples/recorded/logs/opencode-dockerfile-review-fire-r2-00fe9152.jsonl",
1271
+ "cost_usd": 0.000753
1272
+ },
1273
+ {
1274
+ "agent": "opencode",
1275
+ "skill": "dockerfile-review",
1276
+ "prompt": "My Node image is 1.4 GB. Here is the Dockerfile: FROM node:22\nCOPY . .\nRUN npm install\nCMD npm start. How do I make it smaller?",
1277
+ "expect": "fire",
1278
+ "repeat": 2,
1279
+ "fired": true,
1280
+ "activated": [
1281
+ "dockerfile-review"
1282
+ ],
1283
+ "error": null,
1284
+ "duration_s": 11.96,
1285
+ "input_tokens": 5013,
1286
+ "output_tokens": 12,
1287
+ "log": "examples/recorded/logs/opencode-dockerfile-review-fire-r2-4420d371.jsonl",
1288
+ "cost_usd": 0.000754
1289
+ },
1290
+ {
1291
+ "agent": "opencode",
1292
+ "skill": "dockerfile-review",
1293
+ "prompt": "Is this Dockerfile safe for production? FROM ubuntu\nENV API_KEY=abc123\nRUN apt-get update && apt-get install -y curl\nUSER root",
1294
+ "expect": "fire",
1295
+ "repeat": 2,
1296
+ "fired": true,
1297
+ "activated": [
1298
+ "dockerfile-review"
1299
+ ],
1300
+ "error": null,
1301
+ "duration_s": 15.33,
1302
+ "input_tokens": 5007,
1303
+ "output_tokens": 12,
1304
+ "log": "examples/recorded/logs/opencode-dockerfile-review-fire-r2-e38f97a6.jsonl",
1305
+ "cost_usd": 0.000753
1306
+ },
1307
+ {
1308
+ "agent": "opencode",
1309
+ "skill": "dockerfile-review",
1310
+ "prompt": "Check my Dockerfile for bad practices: FROM golang:1.23\nWORKDIR /src\nCOPY . .\nRUN go build -o app\nCMD ./app",
1311
+ "expect": "fire",
1312
+ "repeat": 2,
1313
+ "fired": true,
1314
+ "activated": [
1315
+ "dockerfile-review"
1316
+ ],
1317
+ "error": null,
1318
+ "duration_s": 12.18,
1319
+ "input_tokens": 5010,
1320
+ "output_tokens": 12,
1321
+ "log": "examples/recorded/logs/opencode-dockerfile-review-fire-r2-39ed1761.jsonl",
1322
+ "cost_usd": 0.000753
1323
+ },
1324
+ {
1325
+ "agent": "opencode",
1326
+ "skill": "dockerfile-review",
1327
+ "prompt": "How do I list all running Docker containers?",
1328
+ "expect": "no_fire",
1329
+ "repeat": 2,
1330
+ "fired": false,
1331
+ "activated": [],
1332
+ "error": null,
1333
+ "duration_s": 11.23,
1334
+ "input_tokens": 4980,
1335
+ "output_tokens": 3,
1336
+ "log": "examples/recorded/logs/opencode-dockerfile-review-no_fire-r2-fd36fd0d.jsonl",
1337
+ "cost_usd": 0.000747
1338
+ },
1339
+ {
1340
+ "agent": "opencode",
1341
+ "skill": "dockerfile-review",
1342
+ "prompt": "Write a docker-compose.yml with Postgres and Redis.",
1343
+ "expect": "no_fire",
1344
+ "repeat": 2,
1345
+ "fired": false,
1346
+ "activated": [],
1347
+ "error": "Bad Request: Expected last role User or Tool (or Assistant with prefix True) for serving but got assistant",
1348
+ "duration_s": 11.54,
1349
+ "input_tokens": 4983,
1350
+ "output_tokens": 25,
1351
+ "log": "examples/recorded/logs/opencode-dockerfile-review-no_fire-r2-1f198403.jsonl",
1352
+ "cost_usd": 0.000751
1353
+ },
1354
+ {
1355
+ "agent": "opencode",
1356
+ "skill": "dockerfile-review",
1357
+ "prompt": "What is the difference between a Docker image and a container?",
1358
+ "expect": "no_fire",
1359
+ "repeat": 2,
1360
+ "fired": false,
1361
+ "activated": [],
1362
+ "error": null,
1363
+ "duration_s": 11.21,
1364
+ "input_tokens": 4983,
1365
+ "output_tokens": 100,
1366
+ "log": "examples/recorded/logs/opencode-dockerfile-review-no_fire-r2-db1d220c.jsonl",
1367
+ "cost_usd": 0.000762
1368
+ },
1369
+ {
1370
+ "agent": "opencode",
1371
+ "skill": "dockerfile-review",
1372
+ "prompt": "My Kubernetes pod is stuck in CrashLoopBackOff. How do I debug it?",
1373
+ "expect": "no_fire",
1374
+ "repeat": 2,
1375
+ "fired": false,
1376
+ "activated": [],
1377
+ "error": null,
1378
+ "duration_s": 35.43,
1379
+ "input_tokens": 4988,
1380
+ "output_tokens": 312,
1381
+ "log": "examples/recorded/logs/opencode-dockerfile-review-no_fire-r2-3284c6af.jsonl",
1382
+ "cost_usd": 0.000795
1383
+ }
1384
+ ],
1385
+ "cost_usd": 0.054221,
1386
+ "partial": false,
1387
+ "stop_reason": null,
1388
+ "sessions": 9,
1389
+ "recorded": true,
1390
+ "blocked_egress": [
1391
+ "deny CONNECT registry.npmjs.org:443"
1392
+ ]
1393
+ }