tokengolf 0.4.0 → 0.4.2
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/dist/cli.js +1360 -643
- package/docs/index.html +886 -307
- package/package.json +1 -1
- package/scripts/demo-to-html.js +104 -0
- package/src/cli.js +45 -5
- package/src/lib/demo-active.js +56 -0
- package/src/lib/demo-fixtures.js +496 -0
- package/src/lib/demo-hud.js +3 -0
- package/src/lib/demo-render.js +16 -0
- package/src/lib/demo-scorecard.js +56 -0
- package/src/lib/demo-stats.js +56 -0
package/docs/index.html
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<
|
|
6
|
+
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>⛳</text></svg>">
|
|
7
|
+
<title>TokenGolf: Every token matters.</title>
|
|
7
8
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
8
9
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
9
10
|
<link
|
|
@@ -18,13 +19,13 @@
|
|
|
18
19
|
<!-- Open Graph -->
|
|
19
20
|
<meta property="og:type" content="website" />
|
|
20
21
|
<meta property="og:url" content="https://josheche.github.io/tokengolf/" />
|
|
21
|
-
<meta property="og:title" content="TokenGolf
|
|
22
|
+
<meta property="og:title" content="TokenGolf: Every token matters." />
|
|
22
23
|
<meta property="og:description" content="TokenGolf turns Claude Code sessions into a game. Track token efficiency, earn achievements, and level up your prompting skills." />
|
|
23
24
|
<meta property="og:image" content="https://josheche.github.io/tokengolf/assets/tokengolf-bg-min.jpg" />
|
|
24
25
|
|
|
25
26
|
<!-- Twitter Card -->
|
|
26
27
|
<meta name="twitter:card" content="summary_large_image" />
|
|
27
|
-
<meta name="twitter:title" content="TokenGolf
|
|
28
|
+
<meta name="twitter:title" content="TokenGolf: Every token matters." />
|
|
28
29
|
<meta name="twitter:description" content="TokenGolf turns Claude Code sessions into a game. Track token efficiency, earn achievements, and level up your prompting skills." />
|
|
29
30
|
<meta name="twitter:image" content="https://josheche.github.io/tokengolf/assets/tokengolf-bg-min.jpg" />
|
|
30
31
|
|
|
@@ -37,7 +38,7 @@
|
|
|
37
38
|
"url": "https://josheche.github.io/tokengolf/",
|
|
38
39
|
"applicationCategory": "DeveloperApplication",
|
|
39
40
|
"operatingSystem": "macOS, Linux",
|
|
40
|
-
"description": "A CLI game that wraps Claude Code sessions with game mechanics
|
|
41
|
+
"description": "A CLI game that wraps Claude Code sessions with game mechanics. Quests, budgets, efficiency ratings, and 60+ achievements. Flow mode tracks you passively. Roguelike mode trains deliberate prompting.",
|
|
41
42
|
"offers": {
|
|
42
43
|
"@type": "Offer",
|
|
43
44
|
"price": "0",
|
|
@@ -97,6 +98,49 @@
|
|
|
97
98
|
"SF Mono", "Cascadia Mono", "Fira Code", "Consolas", monospace;
|
|
98
99
|
}
|
|
99
100
|
|
|
101
|
+
/* ── Shared design tokens ── */
|
|
102
|
+
.card {
|
|
103
|
+
background: var(--card);
|
|
104
|
+
border: 1px solid var(--border);
|
|
105
|
+
border-radius: 10px;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.section-prose {
|
|
109
|
+
color: var(--muted);
|
|
110
|
+
font-size: 1rem;
|
|
111
|
+
line-height: 1.75;
|
|
112
|
+
max-width: 680px;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.section-prose + .section-prose {
|
|
116
|
+
margin-top: 1rem;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.section-prose strong {
|
|
120
|
+
color: var(--text);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.section-sub {
|
|
124
|
+
color: var(--muted);
|
|
125
|
+
font-size: 0.95rem;
|
|
126
|
+
line-height: 1.65;
|
|
127
|
+
margin-bottom: 2rem;
|
|
128
|
+
max-width: 540px;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.section-sub code {
|
|
132
|
+
color: var(--cyan);
|
|
133
|
+
font-size: 0.88em;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.label-caps {
|
|
137
|
+
font-size: 0.7rem;
|
|
138
|
+
font-weight: 700;
|
|
139
|
+
letter-spacing: 0.08em;
|
|
140
|
+
text-transform: uppercase;
|
|
141
|
+
color: var(--muted);
|
|
142
|
+
}
|
|
143
|
+
|
|
100
144
|
/* ── Hero ── */
|
|
101
145
|
.hero {
|
|
102
146
|
position: relative;
|
|
@@ -268,6 +312,11 @@
|
|
|
268
312
|
letter-spacing: -0.02em;
|
|
269
313
|
}
|
|
270
314
|
|
|
315
|
+
/* Tighten h2 when followed by a subtitle */
|
|
316
|
+
section h2:has(+ .section-sub) {
|
|
317
|
+
margin-bottom: 0.5rem;
|
|
318
|
+
}
|
|
319
|
+
|
|
271
320
|
section h2 span {
|
|
272
321
|
margin-right: 0.5rem;
|
|
273
322
|
}
|
|
@@ -276,7 +325,7 @@
|
|
|
276
325
|
.modes-grid {
|
|
277
326
|
display: grid;
|
|
278
327
|
grid-template-columns: 1fr 1fr;
|
|
279
|
-
gap: 1.
|
|
328
|
+
gap: 1.25rem;
|
|
280
329
|
}
|
|
281
330
|
|
|
282
331
|
@media (max-width: 600px) {
|
|
@@ -286,8 +335,6 @@
|
|
|
286
335
|
}
|
|
287
336
|
|
|
288
337
|
.mode-card {
|
|
289
|
-
background: var(--card);
|
|
290
|
-
border: 1px solid var(--border);
|
|
291
338
|
border-radius: 12px;
|
|
292
339
|
padding: 1.75rem;
|
|
293
340
|
}
|
|
@@ -317,13 +364,11 @@
|
|
|
317
364
|
|
|
318
365
|
.mode-badge {
|
|
319
366
|
display: inline-block;
|
|
320
|
-
font-size: 0.75rem;
|
|
321
|
-
font-weight: 600;
|
|
322
|
-
letter-spacing: 0.06em;
|
|
323
|
-
text-transform: uppercase;
|
|
324
367
|
padding: 0.2rem 0.6rem;
|
|
325
368
|
border-radius: 4px;
|
|
326
369
|
margin-bottom: 0.75rem;
|
|
370
|
+
font-size: 0.75rem;
|
|
371
|
+
font-weight: 600;
|
|
327
372
|
}
|
|
328
373
|
|
|
329
374
|
.badge-flow {
|
|
@@ -336,10 +381,16 @@
|
|
|
336
381
|
}
|
|
337
382
|
|
|
338
383
|
/* ── Classes table ── */
|
|
384
|
+
.classes-table-wrap {
|
|
385
|
+
overflow-x: auto;
|
|
386
|
+
-webkit-overflow-scrolling: touch;
|
|
387
|
+
}
|
|
388
|
+
|
|
339
389
|
.classes-table {
|
|
340
390
|
width: 100%;
|
|
341
391
|
border-collapse: collapse;
|
|
342
392
|
font-size: 0.95rem;
|
|
393
|
+
min-width: 480px;
|
|
343
394
|
}
|
|
344
395
|
|
|
345
396
|
.classes-table th {
|
|
@@ -351,12 +402,14 @@
|
|
|
351
402
|
text-transform: uppercase;
|
|
352
403
|
padding: 0.6rem 1rem;
|
|
353
404
|
border-bottom: 1px solid var(--border);
|
|
405
|
+
white-space: nowrap;
|
|
354
406
|
}
|
|
355
407
|
|
|
356
408
|
.classes-table td {
|
|
357
409
|
padding: 1rem;
|
|
358
410
|
border-bottom: 1px solid var(--border);
|
|
359
411
|
vertical-align: middle;
|
|
412
|
+
white-space: nowrap;
|
|
360
413
|
}
|
|
361
414
|
|
|
362
415
|
.classes-table tr:last-child td {
|
|
@@ -383,18 +436,19 @@
|
|
|
383
436
|
color: var(--green);
|
|
384
437
|
font-weight: 600;
|
|
385
438
|
}
|
|
439
|
+
.difficulty-calculated {
|
|
440
|
+
color: var(--magenta);
|
|
441
|
+
font-weight: 600;
|
|
442
|
+
}
|
|
386
443
|
|
|
387
444
|
/* ── Achievements grid ── */
|
|
388
445
|
.achievements-grid {
|
|
389
446
|
display: grid;
|
|
390
447
|
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
|
|
391
|
-
gap:
|
|
448
|
+
gap: 1.25rem;
|
|
392
449
|
}
|
|
393
450
|
|
|
394
451
|
.achievement-card {
|
|
395
|
-
background: var(--card);
|
|
396
|
-
border: 1px solid var(--border);
|
|
397
|
-
border-radius: 10px;
|
|
398
452
|
padding: 1.1rem 1.25rem;
|
|
399
453
|
display: flex;
|
|
400
454
|
align-items: flex-start;
|
|
@@ -421,9 +475,6 @@
|
|
|
421
475
|
|
|
422
476
|
/* ── CLI Commands ── */
|
|
423
477
|
.cli-block {
|
|
424
|
-
background: var(--card);
|
|
425
|
-
border: 1px solid var(--border);
|
|
426
|
-
border-radius: 10px;
|
|
427
478
|
overflow: hidden;
|
|
428
479
|
}
|
|
429
480
|
|
|
@@ -470,13 +521,10 @@
|
|
|
470
521
|
.tiers-grid {
|
|
471
522
|
display: grid;
|
|
472
523
|
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
|
|
473
|
-
gap:
|
|
524
|
+
gap: 1.25rem;
|
|
474
525
|
}
|
|
475
526
|
|
|
476
527
|
.tier-card {
|
|
477
|
-
background: var(--card);
|
|
478
|
-
border: 1px solid var(--border);
|
|
479
|
-
border-radius: 10px;
|
|
480
528
|
padding: 1.25rem 1rem;
|
|
481
529
|
text-align: center;
|
|
482
530
|
}
|
|
@@ -497,64 +545,247 @@
|
|
|
497
545
|
font-family: monospace;
|
|
498
546
|
}
|
|
499
547
|
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
548
|
+
.achievement-card.death {
|
|
549
|
+
border-color: #3d1f1f;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
.tab-btn[aria-selected="true"].tab-death {
|
|
553
|
+
background: var(--red);
|
|
554
|
+
box-shadow: 0 2px 16px rgba(248, 81, 73, 0.3);
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
.tab-btn.tab-death:hover {
|
|
558
|
+
color: var(--red);
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
/* Achievement sub-category labels inside panels */
|
|
562
|
+
.ach-sub {
|
|
563
|
+
padding-top: 0.75rem;
|
|
510
564
|
margin-top: 0.5rem;
|
|
565
|
+
grid-column: 1 / -1;
|
|
511
566
|
}
|
|
512
|
-
|
|
513
|
-
|
|
567
|
+
|
|
568
|
+
.ach-sub:first-child {
|
|
514
569
|
padding-top: 0;
|
|
515
570
|
margin-top: 0;
|
|
516
571
|
}
|
|
517
|
-
|
|
518
|
-
|
|
572
|
+
|
|
573
|
+
/* ── In Action — Arcade Cabinet Gallery ── */
|
|
574
|
+
|
|
575
|
+
.in-action {
|
|
576
|
+
position: relative;
|
|
577
|
+
overflow: visible;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
/* ── Shared tab switcher ── */
|
|
582
|
+
.tab-bar {
|
|
583
|
+
display: flex;
|
|
584
|
+
gap: 0.25rem;
|
|
585
|
+
margin-bottom: 2rem;
|
|
586
|
+
background: #0a0e14;
|
|
587
|
+
border: 1px solid var(--border);
|
|
588
|
+
border-radius: 10px;
|
|
589
|
+
padding: 0.3rem;
|
|
590
|
+
width: fit-content;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
.tab-btn {
|
|
594
|
+
position: relative;
|
|
595
|
+
padding: 0.5rem 1.2rem;
|
|
596
|
+
font-size: 0.8rem;
|
|
597
|
+
font-weight: 600;
|
|
598
|
+
color: var(--muted);
|
|
599
|
+
background: transparent;
|
|
600
|
+
border: none;
|
|
601
|
+
border-radius: 7px;
|
|
602
|
+
cursor: pointer;
|
|
603
|
+
transition: color 0.2s, background 0.2s, box-shadow 0.2s;
|
|
604
|
+
font-family: "SF Mono", "Cascadia Mono", monospace;
|
|
605
|
+
white-space: nowrap;
|
|
606
|
+
letter-spacing: -0.01em;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
.tab-btn:hover {
|
|
610
|
+
color: var(--text);
|
|
611
|
+
background: rgba(48, 54, 61, 0.45);
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
.tab-btn[aria-selected="true"] {
|
|
615
|
+
color: #0d1117;
|
|
616
|
+
background: var(--cyan);
|
|
617
|
+
box-shadow: 0 2px 16px rgba(121, 192, 255, 0.3);
|
|
519
618
|
}
|
|
520
619
|
|
|
521
|
-
|
|
522
|
-
|
|
620
|
+
.tab-panel {
|
|
621
|
+
display: none;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
.tab-panel.active {
|
|
625
|
+
display: block;
|
|
626
|
+
animation: panelIn 0.3s ease both;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
@keyframes panelIn {
|
|
630
|
+
from { opacity: 0; transform: translateY(10px); }
|
|
631
|
+
to { opacity: 1; transform: translateY(0); }
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
/* ── Layout grids inside panels ── */
|
|
635
|
+
.demos-grid {
|
|
523
636
|
display: grid;
|
|
524
637
|
grid-template-columns: 1fr 1fr;
|
|
525
638
|
gap: 2rem;
|
|
526
639
|
align-items: start;
|
|
527
640
|
}
|
|
528
641
|
|
|
529
|
-
@media (max-width:
|
|
530
|
-
.
|
|
531
|
-
grid-template-columns: 1fr;
|
|
532
|
-
}
|
|
642
|
+
@media (max-width: 900px) {
|
|
643
|
+
.demos-grid { grid-template-columns: 1fr; }
|
|
533
644
|
}
|
|
534
645
|
|
|
535
|
-
.
|
|
646
|
+
.demo-item {
|
|
536
647
|
display: flex;
|
|
537
648
|
flex-direction: column;
|
|
538
|
-
gap: 0.
|
|
649
|
+
gap: 0.85rem;
|
|
650
|
+
min-width: 0;
|
|
539
651
|
}
|
|
540
652
|
|
|
541
|
-
.
|
|
542
|
-
|
|
543
|
-
border-radius: 10px;
|
|
544
|
-
border: 1px solid var(--border);
|
|
545
|
-
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
|
|
653
|
+
.demo-item.full-width {
|
|
654
|
+
grid-column: 1 / -1;
|
|
546
655
|
}
|
|
547
656
|
|
|
548
|
-
.
|
|
657
|
+
.demo-label {
|
|
549
658
|
font-size: 0.85rem;
|
|
550
659
|
color: var(--muted);
|
|
551
|
-
line-height: 1.
|
|
660
|
+
line-height: 1.55;
|
|
661
|
+
padding-left: 0.15rem;
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
.demo-label strong {
|
|
665
|
+
color: var(--text);
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
/* ── Terminal chrome ── */
|
|
669
|
+
.term {
|
|
670
|
+
position: relative;
|
|
671
|
+
background: #0c1017;
|
|
672
|
+
border: 1px solid var(--border);
|
|
673
|
+
border-radius: 10px;
|
|
674
|
+
overflow: hidden;
|
|
675
|
+
min-width: 0;
|
|
676
|
+
transition: border-color 0.4s, box-shadow 0.4s;
|
|
677
|
+
box-shadow: 0 4px 32px rgba(0, 0, 0, 0.55);
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
/* Scanline overlay */
|
|
681
|
+
.term::after {
|
|
682
|
+
content: "";
|
|
683
|
+
position: absolute;
|
|
684
|
+
inset: 0;
|
|
685
|
+
pointer-events: none;
|
|
686
|
+
background: repeating-linear-gradient(
|
|
687
|
+
0deg,
|
|
688
|
+
transparent 0px,
|
|
689
|
+
transparent 2px,
|
|
690
|
+
rgba(0, 0, 0, 0.035) 2px,
|
|
691
|
+
rgba(0, 0, 0, 0.035) 4px
|
|
692
|
+
);
|
|
693
|
+
border-radius: 10px;
|
|
694
|
+
z-index: 1;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
/* Glow variants */
|
|
698
|
+
.term[data-glow="cyan"] {
|
|
699
|
+
box-shadow: 0 4px 32px rgba(0,0,0,0.55), 0 0 48px rgba(121,192,255,0.06);
|
|
700
|
+
}
|
|
701
|
+
.term[data-glow="cyan"]:hover {
|
|
702
|
+
border-color: rgba(121,192,255,0.35);
|
|
703
|
+
box-shadow: 0 4px 40px rgba(0,0,0,0.5), 0 0 72px rgba(121,192,255,0.12);
|
|
704
|
+
}
|
|
705
|
+
.term[data-glow="yellow"] {
|
|
706
|
+
box-shadow: 0 4px 32px rgba(0,0,0,0.55), 0 0 48px rgba(227,179,65,0.06);
|
|
707
|
+
}
|
|
708
|
+
.term[data-glow="yellow"]:hover {
|
|
709
|
+
border-color: rgba(227,179,65,0.35);
|
|
710
|
+
box-shadow: 0 4px 40px rgba(0,0,0,0.5), 0 0 72px rgba(227,179,65,0.12);
|
|
711
|
+
}
|
|
712
|
+
.term[data-glow="red"] {
|
|
713
|
+
box-shadow: 0 4px 32px rgba(0,0,0,0.55), 0 0 48px rgba(248,81,73,0.06);
|
|
714
|
+
}
|
|
715
|
+
.term[data-glow="red"]:hover {
|
|
716
|
+
border-color: rgba(248,81,73,0.35);
|
|
717
|
+
box-shadow: 0 4px 40px rgba(0,0,0,0.5), 0 0 72px rgba(248,81,73,0.12);
|
|
718
|
+
}
|
|
719
|
+
.term[data-glow="green"] {
|
|
720
|
+
box-shadow: 0 4px 32px rgba(0,0,0,0.55), 0 0 48px rgba(63,185,80,0.06);
|
|
721
|
+
}
|
|
722
|
+
.term[data-glow="green"]:hover {
|
|
723
|
+
border-color: rgba(63,185,80,0.35);
|
|
724
|
+
box-shadow: 0 4px 40px rgba(0,0,0,0.5), 0 0 72px rgba(63,185,80,0.12);
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
/* Header bar */
|
|
728
|
+
.term-header {
|
|
729
|
+
background: #13181f;
|
|
730
|
+
padding: 0.6rem 0.9rem;
|
|
731
|
+
font-size: 0.75rem;
|
|
732
|
+
color: var(--muted);
|
|
733
|
+
font-family: "SF Mono", "Cascadia Mono", monospace;
|
|
734
|
+
border-bottom: 1px solid rgba(48, 54, 61, 0.6);
|
|
735
|
+
display: flex;
|
|
736
|
+
align-items: center;
|
|
737
|
+
gap: 0.65rem;
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
/* macOS traffic lights */
|
|
741
|
+
.term-header::before {
|
|
742
|
+
content: "";
|
|
743
|
+
display: block;
|
|
744
|
+
width: 46px;
|
|
745
|
+
min-width: 46px;
|
|
746
|
+
height: 12px;
|
|
747
|
+
background:
|
|
748
|
+
radial-gradient(circle 4.5px at 6px 6px, #ff5f57 4px, transparent 4.5px),
|
|
749
|
+
radial-gradient(circle 4.5px at 22px 6px, #febc2e 4px, transparent 4.5px),
|
|
750
|
+
radial-gradient(circle 4.5px at 38px 6px, #28c840 4px, transparent 4.5px);
|
|
751
|
+
opacity: 0.72;
|
|
752
|
+
flex-shrink: 0;
|
|
552
753
|
}
|
|
553
754
|
|
|
554
|
-
.
|
|
755
|
+
.term pre {
|
|
756
|
+
position: relative;
|
|
757
|
+
z-index: 0;
|
|
758
|
+
padding: 1.1rem 1.35rem;
|
|
759
|
+
overflow-x: auto;
|
|
760
|
+
-webkit-overflow-scrolling: touch;
|
|
761
|
+
font-family: "SF Mono", "Cascadia Mono", "Fira Code", "Consolas", monospace;
|
|
762
|
+
font-size: 0.78rem;
|
|
763
|
+
line-height: 1.55;
|
|
555
764
|
color: var(--text);
|
|
556
765
|
}
|
|
557
766
|
|
|
767
|
+
@media (max-width: 600px) {
|
|
768
|
+
.term pre { font-size: 0.68rem; padding: 0.75rem; }
|
|
769
|
+
.tab-bar { width: auto; overflow-x: auto; -webkit-overflow-scrolling: touch; }
|
|
770
|
+
.tab-btn { padding: 0.45rem 0.85rem; font-size: 0.72rem; }
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
/* Terminal ANSI color classes */
|
|
774
|
+
.term .t-b { font-weight: 700; }
|
|
775
|
+
.term .t-dim { opacity: 0.55; }
|
|
776
|
+
.term .t-red { color: var(--red); }
|
|
777
|
+
.term .t-green { color: var(--green); }
|
|
778
|
+
.term .t-yellow { color: var(--yellow); }
|
|
779
|
+
.term .t-cyan { color: var(--cyan); }
|
|
780
|
+
.term .t-magenta { color: var(--magenta); }
|
|
781
|
+
.term .t-white { color: var(--text); }
|
|
782
|
+
.term .t-muted { color: var(--muted); }
|
|
783
|
+
|
|
784
|
+
/* Box-drawing border colors */
|
|
785
|
+
.term .border-yellow { color: var(--yellow); }
|
|
786
|
+
.term .border-red { color: var(--red); }
|
|
787
|
+
.term .border-gray { color: var(--border); }
|
|
788
|
+
|
|
558
789
|
/* ── Footer ── */
|
|
559
790
|
footer {
|
|
560
791
|
border-top: 1px solid var(--border);
|
|
@@ -618,22 +849,22 @@
|
|
|
618
849
|
</div>
|
|
619
850
|
|
|
620
851
|
<!-- ── Why TokenGolf ── -->
|
|
621
|
-
<section>
|
|
852
|
+
<section id="why">
|
|
622
853
|
<h2><span>⛳</span>Why "TokenGolf"?</h2>
|
|
623
|
-
<p
|
|
624
|
-
<a href="https://en.wikipedia.org/wiki/Code_golf" target="_blank">Code golf</a> is the engineering practice of solving a problem in as few characters as possible. The constraint isn't the point
|
|
854
|
+
<p class="section-prose">
|
|
855
|
+
<a href="https://en.wikipedia.org/wiki/Code_golf" target="_blank">Code golf</a> is the engineering practice of solving a problem in as few characters as possible. The constraint isn't the point. <em>The discipline the constraint creates</em> is the point. Writing the shortest solution forces you to understand the problem deeply and use your tools precisely.
|
|
625
856
|
</p>
|
|
626
|
-
<p
|
|
627
|
-
Token golf is the same idea applied to AI sessions. Your budget is par. Every unnecessary prompt, every redundant context dump, every "can you also…" tacked onto a request is a stroke over par. The game doesn't literally resemble golf
|
|
857
|
+
<p class="section-prose">
|
|
858
|
+
Token golf is the same idea applied to AI sessions. Your budget is par. Every unnecessary prompt, every redundant context dump, every "can you also…" tacked onto a request is a stroke over par. The game doesn't literally resemble golf. It borrows the concept: <strong>optimize under constraint, measure your score, improve your game.</strong>
|
|
628
859
|
</p>
|
|
629
860
|
</section>
|
|
630
861
|
|
|
631
862
|
<!-- ── Two Modes ── -->
|
|
632
|
-
<section>
|
|
863
|
+
<section id="modes">
|
|
633
864
|
<h2><span>🎮</span>Two Modes</h2>
|
|
634
865
|
<div class="modes-grid">
|
|
635
|
-
<div class="mode-card">
|
|
636
|
-
<div class="mode-badge badge-flow">Flow Mode</div>
|
|
866
|
+
<div class="card mode-card">
|
|
867
|
+
<div class="mode-badge label-caps badge-flow">Flow Mode</div>
|
|
637
868
|
<h3>Passive tracking, zero friction</h3>
|
|
638
869
|
<p>
|
|
639
870
|
Just work normally. TokenGolf runs in the background via Claude Code
|
|
@@ -646,8 +877,8 @@
|
|
|
646
877
|
<li>Perfect when you're in a flow state</li>
|
|
647
878
|
</ul>
|
|
648
879
|
</div>
|
|
649
|
-
<div class="mode-card">
|
|
650
|
-
<div class="mode-badge badge-rogue">Roguelike Mode</div>
|
|
880
|
+
<div class="card mode-card">
|
|
881
|
+
<div class="mode-badge label-caps badge-rogue">Roguelike Mode</div>
|
|
651
882
|
<h3>Pre-commit. Stakes. Permadeath.</h3>
|
|
652
883
|
<p>
|
|
653
884
|
Declare your quest, pick a budget, choose your class. Bust the
|
|
@@ -663,28 +894,10 @@
|
|
|
663
894
|
</div>
|
|
664
895
|
</section>
|
|
665
896
|
|
|
666
|
-
<!-- ── Screenshots ── -->
|
|
667
|
-
<section>
|
|
668
|
-
<h2><span>📸</span>In Action</h2>
|
|
669
|
-
<div class="screenshots-grid">
|
|
670
|
-
<div class="screenshot-item">
|
|
671
|
-
<img src="assets/demo-hud.png" alt="TokenGolf HUD — all game states" />
|
|
672
|
-
<div class="screenshot-label">
|
|
673
|
-
<strong>Live HUD</strong> — appears in every Claude Code session. Shows quest, cost, efficiency rating, context pressure, and model class. Run <code>tokengolf demo</code> to preview all states.
|
|
674
|
-
</div>
|
|
675
|
-
</div>
|
|
676
|
-
<div class="screenshot-item">
|
|
677
|
-
<img src="assets/scorecard.png" alt="TokenGolf scorecard — session complete" />
|
|
678
|
-
<div class="screenshot-label">
|
|
679
|
-
<strong>Auto Scorecard</strong> — appears on <code>/exit</code>. Real scorecard from building TokenGolf itself: $40 flow session, 27 ultrathink invocations, Class Defection for declaring Sonnet but spending 89% on Opus.
|
|
680
|
-
</div>
|
|
681
|
-
</div>
|
|
682
|
-
</div>
|
|
683
|
-
</section>
|
|
684
|
-
|
|
685
897
|
<!-- ── Character Classes ── -->
|
|
686
|
-
<section>
|
|
898
|
+
<section id="classes">
|
|
687
899
|
<h2><span>⚔️</span>Character Classes</h2>
|
|
900
|
+
<div class="classes-table-wrap">
|
|
688
901
|
<table class="classes-table">
|
|
689
902
|
<thead>
|
|
690
903
|
<tr>
|
|
@@ -717,35 +930,283 @@
|
|
|
717
930
|
<td class="difficulty-easy">Easy</td>
|
|
718
931
|
<td>Powerful but expensive.</td>
|
|
719
932
|
</tr>
|
|
933
|
+
<tr>
|
|
934
|
+
<td>
|
|
935
|
+
<span class="class-emoji">⚜️</span> <strong>Paladin</strong>
|
|
936
|
+
</td>
|
|
937
|
+
<td class="mono">claude-opus-4-6 (plan mode)</td>
|
|
938
|
+
<td class="difficulty-calculated">Calculated</td>
|
|
939
|
+
<td>Strategic planner. Thinks before acting.</td>
|
|
940
|
+
</tr>
|
|
720
941
|
</tbody>
|
|
721
942
|
</table>
|
|
943
|
+
</div>
|
|
944
|
+
</section>
|
|
945
|
+
|
|
946
|
+
<!-- ── In Action ── -->
|
|
947
|
+
<section id="in-action" class="in-action">
|
|
948
|
+
<h2><span>📸</span>In Action</h2>
|
|
949
|
+
<p class="section-sub">
|
|
950
|
+
Every screen TokenGolf renders in your terminal. Pick a tab to explore, or run <code>tokengolf demo</code> to see them all live.
|
|
951
|
+
</p>
|
|
952
|
+
|
|
953
|
+
<div class="tab-bar" role="tablist">
|
|
954
|
+
<button class="tab-btn" role="tab" id="tab-hud" aria-selected="true" aria-controls="panel-hud" data-panel="panel-hud">HUD</button>
|
|
955
|
+
<button class="tab-btn" role="tab" id="tab-scorecard" aria-selected="false" aria-controls="panel-scorecard" data-panel="panel-scorecard">ScoreCard</button>
|
|
956
|
+
<button class="tab-btn" role="tab" id="tab-status" aria-selected="false" aria-controls="panel-status" data-panel="panel-status">Status</button>
|
|
957
|
+
<button class="tab-btn" role="tab" id="tab-stats" aria-selected="false" aria-controls="panel-stats" data-panel="panel-stats">Stats</button>
|
|
958
|
+
</div>
|
|
959
|
+
|
|
960
|
+
<!-- ── HUD panel ── -->
|
|
961
|
+
<div class="tab-panel active" id="panel-hud" role="tabpanel" aria-labelledby="tab-hud">
|
|
962
|
+
<div class="demo-item">
|
|
963
|
+
<div class="term" data-glow="cyan">
|
|
964
|
+
<div class="term-header">tokengolf demo hud</div>
|
|
965
|
+
<pre>
|
|
966
|
+
<span class="t-dim"> ───────────────</span>
|
|
967
|
+
<span class="t-b t-cyan">⛳</span> Flow <span class="t-dim">|</span> 💎 $0.0034 <span class="t-dim">|</span> <span class="t-cyan">⚔️ Sonnet</span>
|
|
968
|
+
<span class="t-dim"> ───────────────</span>
|
|
969
|
+
|
|
970
|
+
<span class="t-dim"> ───────────────</span>
|
|
971
|
+
<span class="t-b t-cyan">⛳</span> add pagination to /users <span class="t-dim">|</span> 🥈 $0.5400/$1.50 36% <span class="t-dim">|</span> <span class="t-cyan">EFFICIENT</span> <span class="t-dim">|</span> <span class="t-cyan">⚔️ Sonnet</span> <span class="t-dim">|</span> Floor 2/5
|
|
972
|
+
<span class="t-dim"> ───────────────</span>
|
|
973
|
+
|
|
974
|
+
<span class="t-dim"> ───────────────</span>
|
|
975
|
+
<span class="t-b t-cyan">⛳</span> implement SSO with SAML <span class="t-dim">|</span> 🥈 $0.4100/$2.00 21% <span class="t-dim">|</span> <span class="t-magenta">LEGENDARY</span> <span class="t-dim">|</span> <span class="t-cyan">⚔️ Sonnet·High</span> <span class="t-dim">|</span> Floor 1/5
|
|
976
|
+
<span class="t-dim"> ───────────────</span>
|
|
977
|
+
|
|
978
|
+
<span class="t-dim"> ───────────────</span>
|
|
979
|
+
<span class="t-b t-cyan">⛳</span> refactor auth middleware <span class="t-dim">|</span> 🥈 $0.8200/$4.00 21% <span class="t-dim">|</span> <span class="t-magenta">LEGENDARY</span> <span class="t-dim">|</span> <span class="t-green">🪶 52%</span> <span class="t-dim">|</span> <span class="t-cyan">🧙 Opus</span> <span class="t-dim">|</span> Floor 3/5
|
|
980
|
+
<span class="t-dim"> ───────────────</span>
|
|
981
|
+
|
|
982
|
+
<span class="t-dim"> ───────────────</span>
|
|
983
|
+
<span class="t-b t-cyan">⛳</span> fix N+1 query in dashboard <span class="t-dim">|</span> 🥈 $0.4600/$0.50 92% <span class="t-dim">|</span> <span class="t-yellow">CLOSE CALL</span> <span class="t-dim">|</span> <span class="t-yellow">🎒 78%</span> <span class="t-dim">|</span> <span class="t-cyan">🏹 Haiku</span> <span class="t-dim">|</span> Floor 4/5
|
|
984
|
+
<span class="t-dim"> ───────────────</span>
|
|
985
|
+
|
|
986
|
+
<span class="t-dim"> ───────────────</span>
|
|
987
|
+
<span class="t-b t-cyan">⛳</span> migrate postgres schema <span class="t-dim">|</span> 🥉 $2.4100/$2.00 121% <span class="t-dim">|</span> <span class="t-red">BUSTED</span> <span class="t-dim">|</span> <span class="t-cyan">⚔️ Sonnet</span> <span class="t-dim">|</span> Floor 2/5
|
|
988
|
+
<span class="t-dim"> ───────────────</span>
|
|
989
|
+
|
|
990
|
+
<span class="t-dim"> ───────────────</span>
|
|
991
|
+
<span class="t-b t-cyan">💤</span> write test suite for payments <span class="t-dim">|</span> 🥉 $1.2200/$3.00 41% <span class="t-dim">|</span> <span class="t-cyan">EFFICIENT</span> <span class="t-dim">|</span> <span class="t-green">🪶 67%</span> <span class="t-dim">|</span> <span class="t-cyan">⚔️ Sonnet</span> <span class="t-dim">|</span> Floor 2/5
|
|
992
|
+
<span class="t-dim"> ───────────────</span></pre>
|
|
993
|
+
</div>
|
|
994
|
+
<div class="demo-label">
|
|
995
|
+
<strong>Live HUD</strong> appears in every Claude Code session. Shows quest, cost, efficiency rating, context load, and model class at a glance.
|
|
996
|
+
</div>
|
|
997
|
+
</div>
|
|
998
|
+
</div>
|
|
999
|
+
|
|
1000
|
+
<!-- ── ScoreCard panel ── -->
|
|
1001
|
+
<div class="tab-panel" id="panel-scorecard" role="tabpanel" aria-labelledby="tab-scorecard">
|
|
1002
|
+
<div class="demos-grid">
|
|
1003
|
+
<div class="demo-item">
|
|
1004
|
+
<div class="term" data-glow="yellow">
|
|
1005
|
+
<div class="term-header">tokengolf scorecard — won</div>
|
|
1006
|
+
<pre>
|
|
1007
|
+
<span class="border-yellow">╔══════════════════════════════════════════════════════╗</span>
|
|
1008
|
+
<span class="border-yellow">║</span> <span class="border-yellow">║</span>
|
|
1009
|
+
<span class="border-yellow">║</span> <span class="t-b t-yellow">🏆 SESSION COMPLETE</span> <span class="border-yellow">║</span>
|
|
1010
|
+
<span class="border-yellow">║</span> <span class="border-yellow">║</span>
|
|
1011
|
+
<span class="border-yellow">║</span> <span class="t-b t-white">add pagination to /users endpoint</span> <span class="border-yellow">║</span>
|
|
1012
|
+
<span class="border-yellow">║</span> <span class="border-yellow">║</span>
|
|
1013
|
+
<span class="border-yellow">║</span> <span class="t-dim">SPENT</span> <span class="t-dim">BUDGET</span> <span class="t-dim">USED</span> <span class="t-dim">MODEL</span> <span class="t-dim">TIER</span> <span class="border-yellow">║</span>
|
|
1014
|
+
<span class="border-yellow">║</span> <span class="t-b t-green">$0.2300</span> $1.50 <span class="t-green">15%</span> <span class="t-cyan">⚔️ Sonnet</span> <span class="t-yellow">🥇 Gold</span> <span class="border-yellow">║</span>
|
|
1015
|
+
<span class="border-yellow">║</span> <span class="border-yellow">║</span>
|
|
1016
|
+
<span class="border-yellow">║</span> <span class="t-b t-magenta">🌟 LEGENDARY</span> <span class="border-yellow">║</span>
|
|
1017
|
+
<span class="border-yellow">║</span> <span class="border-yellow">║</span>
|
|
1018
|
+
<span class="border-yellow">║</span> <span class="t-dim">Achievements unlocked:</span> <span class="border-yellow">║</span>
|
|
1019
|
+
<span class="border-yellow">║</span> <span class="t-yellow">🎯 Sniper — Under 25% budget</span> <span class="border-yellow">║</span>
|
|
1020
|
+
<span class="border-yellow">║</span> <span class="t-yellow">🥈 Silver — Completed with Sonnet</span> <span class="border-yellow">║</span>
|
|
1021
|
+
<span class="border-yellow">║</span> <span class="t-yellow">🔥 No Rest for the Wicked — One session</span> <span class="border-yellow">║</span>
|
|
1022
|
+
<span class="border-yellow">║</span> <span class="t-yellow">✅ Clean Run — Zero failed tool calls</span> <span class="border-yellow">║</span>
|
|
1023
|
+
<span class="border-yellow">║</span> <span class="t-yellow">🧰 Toolbox — 5+ distinct tool types</span> <span class="border-yellow">║</span>
|
|
1024
|
+
<span class="border-yellow">║</span> <span class="t-yellow">🤫 Silent Run — No extended thinking</span> <span class="border-yellow">║</span>
|
|
1025
|
+
<span class="border-yellow">║</span> <span class="border-yellow">║</span>
|
|
1026
|
+
<span class="border-yellow">║</span> <span class="t-dim">Model usage:</span> <span class="t-cyan">🏹 17% Haiku</span> <span class="border-yellow">║</span>
|
|
1027
|
+
<span class="border-yellow">║</span> <span class="t-muted">Sonnet</span> <span class="t-white">83%</span> <span class="t-dim">$0.19</span> <span class="t-muted">Haiku</span> <span class="t-white">17%</span> <span class="t-dim">$0.04</span> <span class="border-yellow">║</span>
|
|
1028
|
+
<span class="border-yellow">║</span> <span class="border-yellow">║</span>
|
|
1029
|
+
<span class="border-yellow">║</span> <span class="t-dim">Tool calls:</span> <span class="border-yellow">║</span>
|
|
1030
|
+
<span class="border-yellow">║</span> <span class="t-white">Read</span> ×8 <span class="t-white">Edit</span> ×4 <span class="t-white">Bash</span> ×3 <span class="t-white">Grep</span> ×2 <span class="t-white">Glob</span> ×1 <span class="border-yellow">║</span>
|
|
1031
|
+
<span class="border-yellow">║</span> <span class="border-yellow">║</span>
|
|
1032
|
+
<span class="border-yellow">╚══════════════════════════════════════════════════════╝</span></pre>
|
|
1033
|
+
</div>
|
|
1034
|
+
<div class="demo-label">
|
|
1035
|
+
<strong>ScoreCard (Won)</strong> appears on <code>/exit</code>. Budget, tier, efficiency, achievements, model breakdown, and tool usage.
|
|
1036
|
+
</div>
|
|
1037
|
+
</div>
|
|
1038
|
+
|
|
1039
|
+
<div class="demo-item">
|
|
1040
|
+
<div class="term" data-glow="red">
|
|
1041
|
+
<div class="term-header">tokengolf scorecard — died</div>
|
|
1042
|
+
<pre>
|
|
1043
|
+
<span class="border-red">╔══════════════════════════════════════════════════════╗</span>
|
|
1044
|
+
<span class="border-red">║</span> <span class="border-red">║</span>
|
|
1045
|
+
<span class="border-red">║</span> <span class="t-b t-red">💀 BUDGET BUSTED</span> <span class="border-red">║</span>
|
|
1046
|
+
<span class="border-red">║</span> <span class="border-red">║</span>
|
|
1047
|
+
<span class="border-red">║</span> <span class="t-b t-white">migrate postgres schema to v3</span> <span class="border-red">║</span>
|
|
1048
|
+
<span class="border-red">║</span> <span class="border-red">║</span>
|
|
1049
|
+
<span class="border-red">║</span> <span class="t-dim">SPENT</span> <span class="t-dim">BUDGET</span> <span class="t-dim">USED</span> <span class="t-dim">MODEL</span> <span class="t-dim">TIER</span> <span class="border-red">║</span>
|
|
1050
|
+
<span class="border-red">║</span> <span class="t-b t-red">$3.8700</span> $1.50 <span class="t-red">258%</span> <span class="t-cyan">⚔️ Sonnet</span> 💸 Reckless <span class="border-red">║</span>
|
|
1051
|
+
<span class="border-red">║</span> <span class="border-red">║</span>
|
|
1052
|
+
<span class="border-red">║</span> <span class="t-b t-red">💀 BUSTED</span> <span class="border-red">║</span>
|
|
1053
|
+
<span class="border-red">║</span> <span class="border-red">║</span>
|
|
1054
|
+
<span class="border-red">║</span> <span class="t-dim">Achievements unlocked:</span> <span class="border-red">║</span>
|
|
1055
|
+
<span class="border-red">║</span> <span class="t-yellow">🤦 Hubris — Ultrathink, busted anyway</span> <span class="border-red">║</span>
|
|
1056
|
+
<span class="border-red">║</span> <span class="t-yellow">💥 Blowout — Spent 2× budget</span> <span class="border-red">║</span>
|
|
1057
|
+
<span class="border-red">║</span> <span class="t-yellow">🤡 Fumble — 5+ failed tool calls</span> <span class="border-red">║</span>
|
|
1058
|
+
<span class="border-red">║</span> <span class="t-yellow">🔨 Tool Happy — 30+ tool calls, died</span> <span class="border-red">║</span>
|
|
1059
|
+
<span class="border-red">║</span> <span class="t-yellow">🍷 Expensive Taste — $0.50+/prompt</span> <span class="border-red">║</span>
|
|
1060
|
+
<span class="border-red">║</span> <span class="border-red">║</span>
|
|
1061
|
+
<span class="border-red">║</span> <span class="t-dim">Extended thinking:</span> <span class="t-magenta">🔮 2× invoked</span> <span class="border-red">║</span>
|
|
1062
|
+
<span class="border-red">║</span> <span class="border-red">║</span>
|
|
1063
|
+
<span class="border-red">║</span> <span class="t-red">┌──────────────────────────────────────────────┐</span> <span class="border-red">║</span>
|
|
1064
|
+
<span class="border-red">║</span> <span class="t-red">│</span> <span class="t-b t-red">Cause of death:</span> Budget exceeded by $2.37 <span class="t-red">│</span> <span class="border-red">║</span>
|
|
1065
|
+
<span class="border-red">║</span> <span class="t-red">│</span> <span class="t-dim">Tip: Use Read with line ranges, not full.</span> <span class="t-red">│</span> <span class="border-red">║</span>
|
|
1066
|
+
<span class="border-red">║</span> <span class="t-red">└──────────────────────────────────────────────┘</span> <span class="border-red">║</span>
|
|
1067
|
+
<span class="border-red">║</span> <span class="border-red">║</span>
|
|
1068
|
+
<span class="border-red">╚══════════════════════════════════════════════════════╝</span></pre>
|
|
1069
|
+
</div>
|
|
1070
|
+
<div class="demo-label">
|
|
1071
|
+
<strong>ScoreCard (Died)</strong> is permadeath. Budget exceeded = death marks. Hubris, Blowout, Fumble. Wear them with shame.
|
|
1072
|
+
</div>
|
|
1073
|
+
</div>
|
|
1074
|
+
</div>
|
|
1075
|
+
</div>
|
|
1076
|
+
|
|
1077
|
+
<!-- ── Status panel ── -->
|
|
1078
|
+
<div class="tab-panel" id="panel-status" role="tabpanel" aria-labelledby="tab-status">
|
|
1079
|
+
<div class="demo-item" style="max-width: 640px">
|
|
1080
|
+
<div class="term" data-glow="yellow">
|
|
1081
|
+
<div class="term-header">tokengolf status</div>
|
|
1082
|
+
<pre>
|
|
1083
|
+
<span class="t-b t-yellow">⛳ TokenGolf</span> <span class="t-muted">Active Run</span> <span class="t-dim">42m 18s</span>
|
|
1084
|
+
|
|
1085
|
+
<span class="border-yellow">╭──────────────────────────────────────────────────────╮</span>
|
|
1086
|
+
<span class="border-yellow">│</span> <span class="border-yellow">│</span>
|
|
1087
|
+
<span class="border-yellow">│</span> <span class="t-b t-white">refactor database connection pooling</span> <span class="border-yellow">│</span>
|
|
1088
|
+
<span class="border-yellow">│</span> <span class="border-yellow">│</span>
|
|
1089
|
+
<span class="border-yellow">│</span> 🧙 <span class="t-cyan">Opus</span> Budget <span class="t-green">$7.50</span> Spent <span class="t-red">$6.3400</span> <span class="t-yellow">😅 CLOSE CALL</span> <span class="border-yellow">│</span>
|
|
1090
|
+
<span class="border-yellow">│</span> <span class="border-yellow">│</span>
|
|
1091
|
+
<span class="border-yellow">│</span> 💰 <span class="t-red">████████████████████░░░░</span> <span class="t-red">85%</span> <span class="border-yellow">│</span>
|
|
1092
|
+
<span class="border-yellow">│</span> <span class="border-yellow">│</span>
|
|
1093
|
+
<span class="border-yellow">│</span> <span class="t-green">✓</span> <span class="t-green">Floor 1: Write the code</span> <span class="border-yellow">│</span>
|
|
1094
|
+
<span class="border-yellow">│</span> <span class="t-green">✓</span> <span class="t-green">Floor 2: Write the tests</span> <span class="border-yellow">│</span>
|
|
1095
|
+
<span class="border-yellow">│</span> <span class="t-yellow">▶</span> <span class="t-white">Floor 3: Fix failing tests</span> <span class="border-yellow">│</span>
|
|
1096
|
+
<span class="border-yellow">│</span> <span class="t-dim">○ Floor 4: Code review pass</span> <span class="border-yellow">│</span>
|
|
1097
|
+
<span class="border-yellow">│</span> <span class="t-dim">○ Floor 5: PR merged — BOSS 🏆</span> <span class="border-yellow">│</span>
|
|
1098
|
+
<span class="border-yellow">│</span> <span class="border-yellow">│</span>
|
|
1099
|
+
<span class="border-yellow">│</span> <span class="t-muted">Prompts</span> <span class="t-white">12</span> <span class="t-muted">Tools</span> <span class="t-white">35</span> <span class="border-yellow">│</span>
|
|
1100
|
+
<span class="border-yellow">│</span> <span class="border-yellow">│</span>
|
|
1101
|
+
<span class="border-yellow">│</span> <span class="t-red">┌──────────────────────────────────────────────┐</span> <span class="border-yellow">│</span>
|
|
1102
|
+
<span class="border-yellow">│</span> <span class="t-red">│</span> <span class="t-b t-red">⚠️ BUDGET WARNING — $1.16 left</span> <span class="t-red">│</span> <span class="border-yellow">│</span>
|
|
1103
|
+
<span class="border-yellow">│</span> <span class="t-red">└──────────────────────────────────────────────┘</span> <span class="border-yellow">│</span>
|
|
1104
|
+
<span class="border-yellow">│</span> <span class="border-yellow">│</span>
|
|
1105
|
+
<span class="border-yellow">╰──────────────────────────────────────────────────────╯</span></pre>
|
|
1106
|
+
</div>
|
|
1107
|
+
<div class="demo-label">
|
|
1108
|
+
<strong>Active Run</strong> shows live status with progress bar, floor tracker, and budget warning at 80%+. Auto-refreshes every 2 seconds.
|
|
1109
|
+
</div>
|
|
1110
|
+
</div>
|
|
1111
|
+
</div>
|
|
1112
|
+
|
|
1113
|
+
<!-- ── Stats panel ── -->
|
|
1114
|
+
<div class="tab-panel" id="panel-stats" role="tabpanel" aria-labelledby="tab-stats">
|
|
1115
|
+
<div class="demo-item" style="max-width: 640px">
|
|
1116
|
+
<div class="term" data-glow="green">
|
|
1117
|
+
<div class="term-header">tokengolf stats</div>
|
|
1118
|
+
<pre>
|
|
1119
|
+
<span class="t-b t-yellow">⛳ TokenGolf</span> <span class="t-muted">Career Stats</span>
|
|
1120
|
+
|
|
1121
|
+
<span class="border-gray">┌──────────────────────────────────────────────────────┐</span>
|
|
1122
|
+
<span class="border-gray">│</span> <span class="border-gray">│</span>
|
|
1123
|
+
<span class="border-gray">│</span> <span class="t-dim">RUNS</span> <span class="t-dim">WINS</span> <span class="t-dim">DEATHS</span> <span class="t-dim">WIN RATE</span> <span class="t-dim">AVG SPEND</span> <span class="border-gray">│</span>
|
|
1124
|
+
<span class="border-gray">│</span> <span class="t-b t-white">24</span> <span class="t-b t-green">18</span> <span class="t-b t-red">6</span> <span class="t-b t-green">75%</span> <span class="t-b t-cyan">$1.4200</span> <span class="border-gray">│</span>
|
|
1125
|
+
<span class="border-gray">│</span> <span class="border-gray">│</span>
|
|
1126
|
+
<span class="border-gray">└──────────────────────────────────────────────────────┘</span>
|
|
1127
|
+
|
|
1128
|
+
<span class="t-yellow">🏆 Personal Best</span>
|
|
1129
|
+
<span class="border-yellow">╭──────────────────────────────────────────────────────╮</span>
|
|
1130
|
+
<span class="border-yellow">│</span> fix typo in README badge URL <span class="border-yellow">│</span>
|
|
1131
|
+
<span class="border-yellow">│</span> <span class="t-green">$0.0089</span> <span class="t-muted">of $0.15</span> 🏹 <span class="t-cyan">💎 Diamond</span> <span class="border-yellow">│</span>
|
|
1132
|
+
<span class="border-yellow">╰──────────────────────────────────────────────────────╯</span>
|
|
1133
|
+
|
|
1134
|
+
<span class="t-dim">Recent runs:</span>
|
|
1135
|
+
<span class="t-green">✓</span> add pagination to /users <span class="t-green">$0.23</span> <span class="t-muted">/$1.50</span> ⚔️ <span class="t-yellow">🥇</span> <span class="t-dim">15%</span>
|
|
1136
|
+
<span class="t-green">✓</span> refactor auth middleware <span class="t-green">$3.41</span> <span class="t-muted">/$7.50</span> 🧙 💸 <span class="t-dim">45%</span>
|
|
1137
|
+
<span class="t-red">✗</span> migrate postgres schema <span class="t-red">$3.87</span> <span class="t-muted">/$1.50</span> ⚔️ 💸 <span class="t-dim">258%</span>
|
|
1138
|
+
<span class="t-green">✓</span> fix N+1 query <span class="t-green">$0.08</span> <span class="t-muted">/$0.40</span> 🏹 <span class="t-cyan">💎</span> <span class="t-dim">20%</span>
|
|
1139
|
+
<span class="t-green">✓</span> Flow <span class="t-green">$0.003</span> ⚔️ <span class="t-cyan">💎</span>
|
|
1140
|
+
<span class="t-green">✓</span> webhook retry system <span class="t-green">$2.18</span> <span class="t-muted">/$4.50</span> ⚜️ <span class="t-yellow">🥉</span> <span class="t-dim">48%</span>
|
|
1141
|
+
<span class="t-red">✗</span> rewrite billing module <span class="t-red">$12.4</span> <span class="t-muted">/$7.50</span> 🧙 💸 <span class="t-dim">165%</span>
|
|
1142
|
+
<span class="t-green">✓</span> add dark mode toggle <span class="t-green">$0.41</span> <span class="t-muted">/$1.50</span> ⚔️ <span class="t-white">🥈</span> <span class="t-dim">27%</span>
|
|
1143
|
+
|
|
1144
|
+
<span class="t-dim">Recent achievements:</span>
|
|
1145
|
+
<span class="border-gray">┌───────────┐</span> <span class="border-gray">┌───────────┐</span> <span class="border-gray">┌────────────┐</span> <span class="border-gray">┌──────────────┐</span>
|
|
1146
|
+
<span class="border-gray">│</span> 🎯 Sniper <span class="border-gray">│</span> <span class="border-gray">│</span> 🥈 Silver <span class="border-gray">│</span> <span class="border-gray">│</span> 🔥 No Rest <span class="border-gray">│</span> <span class="border-gray">│</span> ✅ Clean Run <span class="border-gray">│</span>
|
|
1147
|
+
<span class="border-gray">└───────────┘</span> <span class="border-gray">└───────────┘</span> <span class="border-gray">└────────────┘</span> <span class="border-gray">└──────────────┘</span>
|
|
1148
|
+
<span class="border-gray">┌────────────┐</span> <span class="border-gray">┌─────────────┐</span> <span class="border-gray">┌──────────────────┐</span>
|
|
1149
|
+
<span class="border-gray">│</span> 💎 Diamond <span class="border-gray">│</span> <span class="border-gray">│</span> 🥊 One Shot <span class="border-gray">│</span> <span class="border-gray">│</span> 🪙 Penny Pincher <span class="border-gray">│</span>
|
|
1150
|
+
<span class="border-gray">└────────────┘</span> <span class="border-gray">└─────────────┘</span> <span class="border-gray">└──────────────────┘</span></pre>
|
|
1151
|
+
</div>
|
|
1152
|
+
<div class="demo-label">
|
|
1153
|
+
<strong>Career Stats</strong> is your lifetime dashboard. Wins, deaths, win rate, personal best, recent runs, and achievement collection.
|
|
1154
|
+
</div>
|
|
1155
|
+
</div>
|
|
1156
|
+
</div>
|
|
1157
|
+
|
|
1158
|
+
</section>
|
|
1159
|
+
|
|
1160
|
+
<!-- ── Effort & Fast Mode ── -->
|
|
1161
|
+
<section id="effort">
|
|
1162
|
+
<h2><span>🔥</span>Effort Levels & Fast Mode</h2>
|
|
1163
|
+
<div class="modes-grid">
|
|
1164
|
+
<div class="card mode-card">
|
|
1165
|
+
<h3>Effort Levels</h3>
|
|
1166
|
+
<p>Set effort in the roguelike wizard. Higher effort = more thinking = more spend. Tracked in achievements.</p>
|
|
1167
|
+
<ul>
|
|
1168
|
+
<li>🪶 <strong>Low</strong> · quick and cheap</li>
|
|
1169
|
+
<li>⚖️ <strong>Medium</strong> · the default (omitted in UI)</li>
|
|
1170
|
+
<li>🔥 <strong>High</strong> · deeper reasoning</li>
|
|
1171
|
+
<li>💥 <strong>Max</strong> · Opus only, maximum thinking</li>
|
|
1172
|
+
</ul>
|
|
1173
|
+
</div>
|
|
1174
|
+
<div class="card mode-card">
|
|
1175
|
+
<h3>Fast Mode</h3>
|
|
1176
|
+
<p>Opus fast mode is auto-detected from your Claude Code settings. Unlocks unique achievements:</p>
|
|
1177
|
+
<ul>
|
|
1178
|
+
<li>⛈️ <strong>Lightning Run</strong> · Opus fast mode, under budget</li>
|
|
1179
|
+
<li>🎰 <strong>Daredevil</strong> · Opus fast mode, LEGENDARY efficiency</li>
|
|
1180
|
+
</ul>
|
|
1181
|
+
</div>
|
|
1182
|
+
</div>
|
|
722
1183
|
</section>
|
|
723
1184
|
|
|
724
1185
|
<!-- ── Budget Tiers ── -->
|
|
725
|
-
<section>
|
|
1186
|
+
<section id="budget">
|
|
726
1187
|
<h2><span>💰</span>Budget Tiers</h2>
|
|
727
1188
|
<div class="tiers-grid">
|
|
728
|
-
<div class="tier-card">
|
|
1189
|
+
<div class="card tier-card">
|
|
729
1190
|
<span class="tier-emoji">💎</span>
|
|
730
1191
|
<div class="tier-name">Diamond</div>
|
|
731
1192
|
<div class="tier-amount">under $0.10</div>
|
|
732
1193
|
</div>
|
|
733
|
-
<div class="tier-card">
|
|
1194
|
+
<div class="card tier-card">
|
|
734
1195
|
<span class="tier-emoji">🥇</span>
|
|
735
1196
|
<div class="tier-name">Gold</div>
|
|
736
1197
|
<div class="tier-amount">under $0.30</div>
|
|
737
1198
|
</div>
|
|
738
|
-
<div class="tier-card">
|
|
1199
|
+
<div class="card tier-card">
|
|
739
1200
|
<span class="tier-emoji">🥈</span>
|
|
740
1201
|
<div class="tier-name">Silver</div>
|
|
741
1202
|
<div class="tier-amount">under $1.00</div>
|
|
742
1203
|
</div>
|
|
743
|
-
<div class="tier-card">
|
|
1204
|
+
<div class="card tier-card">
|
|
744
1205
|
<span class="tier-emoji">🥉</span>
|
|
745
1206
|
<div class="tier-name">Bronze</div>
|
|
746
1207
|
<div class="tier-amount">under $3.00</div>
|
|
747
1208
|
</div>
|
|
748
|
-
<div class="tier-card">
|
|
1209
|
+
<div class="card tier-card">
|
|
749
1210
|
<span class="tier-emoji">💸</span>
|
|
750
1211
|
<div class="tier-name">Reckless</div>
|
|
751
1212
|
<div class="tier-amount">over $3.00</div>
|
|
@@ -754,274 +1215,370 @@
|
|
|
754
1215
|
</section>
|
|
755
1216
|
|
|
756
1217
|
<!-- ── Meta Loop ── -->
|
|
757
|
-
<section>
|
|
1218
|
+
<section id="meta">
|
|
758
1219
|
<h2><span>🔄</span>The Meta Loop</h2>
|
|
759
|
-
<p
|
|
760
|
-
The dungeon crawl framing maps directly to real session behaviors.
|
|
1220
|
+
<p class="section-sub">
|
|
1221
|
+
The dungeon crawl framing maps directly to real session behaviors. Not just flavor. Patterns you already have, named so you can recognize and improve them.
|
|
761
1222
|
</p>
|
|
762
1223
|
<div class="modes-grid" style="grid-template-columns:repeat(auto-fill,minmax(280px,1fr));">
|
|
763
|
-
<div class="mode-card">
|
|
1224
|
+
<div class="card mode-card">
|
|
764
1225
|
<h3>📦 Overencumbered</h3>
|
|
765
1226
|
<p>Context bloat slowing you down. The model is carrying too much history to reason cleanly.</p>
|
|
766
1227
|
</div>
|
|
767
|
-
<div class="mode-card">
|
|
1228
|
+
<div class="card mode-card">
|
|
768
1229
|
<h3>🏕️ Made Camp</h3>
|
|
769
1230
|
<p>Hit usage limits mid-run. Came back next session and kept going.</p>
|
|
770
1231
|
</div>
|
|
771
|
-
<div class="mode-card">
|
|
1232
|
+
<div class="card mode-card">
|
|
772
1233
|
<h3>🥷 Ghost Run</h3>
|
|
773
1234
|
<p>Surgical context management. You compacted at 30% and still had plenty of room for the boss.</p>
|
|
774
1235
|
</div>
|
|
775
|
-
<div class="mode-card">
|
|
1236
|
+
<div class="card mode-card">
|
|
776
1237
|
<h3>🤦 Hubris</h3>
|
|
777
1238
|
<p>Reached for ultrathink on a tight budget and paid for it. The spell didn't save you.</p>
|
|
778
1239
|
</div>
|
|
779
|
-
<div class="mode-card">
|
|
1240
|
+
<div class="card mode-card">
|
|
780
1241
|
<h3>🤫 Silent Run</h3>
|
|
781
1242
|
<p>Solved it with pure prompting discipline. No extended thinking needed.</p>
|
|
782
1243
|
</div>
|
|
783
|
-
<div class="mode-card">
|
|
1244
|
+
<div class="card mode-card">
|
|
784
1245
|
<h3>🐺 Lone Wolf</h3>
|
|
785
1246
|
<p>No subagents. You held the whole problem in one context and saw it through.</p>
|
|
786
1247
|
</div>
|
|
787
1248
|
</div>
|
|
788
|
-
<p style="
|
|
789
|
-
Roguelike mode surfaces these patterns with stakes. Flow mode lets them compound over time. <strong
|
|
1249
|
+
<p class="section-prose" style="margin-top:1.5rem;">
|
|
1250
|
+
Roguelike mode surfaces these patterns with stakes. Flow mode lets them compound over time. <strong>Roguelike practice makes Flow sessions better. Better Flow = lower daily spend = better scores without even trying.</strong>
|
|
790
1251
|
</p>
|
|
791
1252
|
</section>
|
|
792
1253
|
|
|
793
1254
|
<!-- ── Achievements ── -->
|
|
794
|
-
<section>
|
|
1255
|
+
<section id="achievements">
|
|
795
1256
|
<h2><span>🏆</span>Achievements</h2>
|
|
796
|
-
<
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
</
|
|
802
|
-
<
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
</div>
|
|
806
|
-
<div class="achievement-card">
|
|
807
|
-
<div class="achievement-emoji">🥈</div>
|
|
808
|
-
<div class="achievement-info"><h4>Silver</h4><p>Completed with Sonnet</p></div>
|
|
809
|
-
</div>
|
|
810
|
-
<div class="achievement-card">
|
|
811
|
-
<div class="achievement-emoji">🥉</div>
|
|
812
|
-
<div class="achievement-info"><h4>Bronze</h4><p>Completed with Opus</p></div>
|
|
813
|
-
</div>
|
|
1257
|
+
<p class="section-sub">60+ achievements across 5 categories. Every session tells a story.</p>
|
|
1258
|
+
|
|
1259
|
+
<div class="tab-bar" role="tablist">
|
|
1260
|
+
<button class="tab-btn" role="tab" id="tab-ach-class" aria-selected="true" aria-controls="ach-class" data-panel="ach-class">Class & Efficiency</button>
|
|
1261
|
+
<button class="tab-btn" role="tab" id="tab-ach-combat" aria-selected="false" aria-controls="ach-combat" data-panel="ach-combat">Combat Style</button>
|
|
1262
|
+
<button class="tab-btn" role="tab" id="tab-ach-endurance" aria-selected="false" aria-controls="ach-endurance" data-panel="ach-endurance">Endurance</button>
|
|
1263
|
+
<button class="tab-btn" role="tab" id="tab-ach-arcane" aria-selected="false" aria-controls="ach-arcane" data-panel="ach-arcane">Arcane</button>
|
|
1264
|
+
<button class="tab-btn tab-death" role="tab" id="tab-ach-death" aria-selected="false" aria-controls="ach-death" data-panel="ach-death">Death Marks</button>
|
|
1265
|
+
</div>
|
|
814
1266
|
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
<div class="
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
1267
|
+
<!-- Class & Efficiency -->
|
|
1268
|
+
<div class="tab-panel active" id="ach-class" role="tabpanel" aria-labelledby="tab-ach-class">
|
|
1269
|
+
<div class="achievements-grid">
|
|
1270
|
+
<div class="ach-sub label-caps">Class Medals</div>
|
|
1271
|
+
<div class="card achievement-card">
|
|
1272
|
+
<div class="achievement-emoji">💎</div>
|
|
1273
|
+
<div class="achievement-info"><h4>Diamond</h4><p>Haiku run under $0.10</p></div>
|
|
1274
|
+
</div>
|
|
1275
|
+
<div class="card achievement-card">
|
|
1276
|
+
<div class="achievement-emoji">🥇</div>
|
|
1277
|
+
<div class="achievement-info"><h4>Gold</h4><p>Completed with Haiku</p></div>
|
|
1278
|
+
</div>
|
|
1279
|
+
<div class="card achievement-card">
|
|
1280
|
+
<div class="achievement-emoji">🥈</div>
|
|
1281
|
+
<div class="achievement-info"><h4>Silver</h4><p>Completed with Sonnet</p></div>
|
|
1282
|
+
</div>
|
|
1283
|
+
<div class="card achievement-card">
|
|
1284
|
+
<div class="achievement-emoji">🥉</div>
|
|
1285
|
+
<div class="achievement-info"><h4>Bronze</h4><p>Completed with Opus</p></div>
|
|
1286
|
+
</div>
|
|
1287
|
+
<div class="card achievement-card">
|
|
1288
|
+
<div class="achievement-emoji">⚜️</div>
|
|
1289
|
+
<div class="achievement-info"><h4>Paladin</h4><p>Completed as Paladin (Opus plan mode)</p></div>
|
|
1290
|
+
</div>
|
|
1291
|
+
<div class="card achievement-card">
|
|
1292
|
+
<div class="achievement-emoji">♟️</div>
|
|
1293
|
+
<div class="achievement-info"><h4>Grand Strategist</h4><p>LEGENDARY efficiency as Paladin</p></div>
|
|
1294
|
+
</div>
|
|
836
1295
|
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
<div class="achievement-card">
|
|
851
|
-
<div class="achievement-emoji">🪑</div>
|
|
852
|
-
<div class="achievement-info"><h4>Backseat Driver</h4><p>15+ prompts, less than 1 tool call per prompt</p></div>
|
|
853
|
-
</div>
|
|
854
|
-
<div class="achievement-card">
|
|
855
|
-
<div class="achievement-emoji">🏗️</div>
|
|
856
|
-
<div class="achievement-info"><h4>High Leverage</h4><p>5+ tool calls per prompt (≥2 prompts)</p></div>
|
|
857
|
-
</div>
|
|
1296
|
+
<div class="ach-sub label-caps">Budget Efficiency</div>
|
|
1297
|
+
<div class="card achievement-card">
|
|
1298
|
+
<div class="achievement-emoji">🎯</div>
|
|
1299
|
+
<div class="achievement-info"><h4>Sniper</h4><p>Under 25% of budget used</p></div>
|
|
1300
|
+
</div>
|
|
1301
|
+
<div class="card achievement-card">
|
|
1302
|
+
<div class="achievement-emoji">⚡</div>
|
|
1303
|
+
<div class="achievement-info"><h4>Efficient</h4><p>Under 50% of budget used</p></div>
|
|
1304
|
+
</div>
|
|
1305
|
+
<div class="card achievement-card">
|
|
1306
|
+
<div class="achievement-emoji">🪙</div>
|
|
1307
|
+
<div class="achievement-info"><h4>Penny Pincher</h4><p>Total spend under $0.10</p></div>
|
|
1308
|
+
</div>
|
|
858
1309
|
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
<div class="achievement-card">
|
|
869
|
-
<div class="achievement-emoji">🐚</div>
|
|
870
|
-
<div class="achievement-info"><h4>Bash Warrior</h4><p>10+ Bash calls comprising ≥50% of tools</p></div>
|
|
871
|
-
</div>
|
|
872
|
-
<div class="achievement-card">
|
|
873
|
-
<div class="achievement-emoji">🔍</div>
|
|
874
|
-
<div class="achievement-info"><h4>Scout</h4><p>≥60% of tool calls were Reads (≥5 total)</p></div>
|
|
875
|
-
</div>
|
|
876
|
-
<div class="achievement-card">
|
|
877
|
-
<div class="achievement-emoji">🔪</div>
|
|
878
|
-
<div class="achievement-info"><h4>Surgeon</h4><p>1–3 Edit calls, completed under budget</p></div>
|
|
879
|
-
</div>
|
|
880
|
-
<div class="achievement-card">
|
|
881
|
-
<div class="achievement-emoji">🧰</div>
|
|
882
|
-
<div class="achievement-info"><h4>Toolbox</h4><p>5+ distinct tools used in one run</p></div>
|
|
883
|
-
</div>
|
|
1310
|
+
<div class="ach-sub label-caps">Cost per Prompt</div>
|
|
1311
|
+
<div class="card achievement-card">
|
|
1312
|
+
<div class="achievement-emoji">💲</div>
|
|
1313
|
+
<div class="achievement-info"><h4>Cheap Shots</h4><p>Under $0.01 per prompt (≥3 prompts)</p></div>
|
|
1314
|
+
</div>
|
|
1315
|
+
<div class="card achievement-card">
|
|
1316
|
+
<div class="achievement-emoji">🍷</div>
|
|
1317
|
+
<div class="achievement-info"><h4>Expensive Taste</h4><p>Over $0.50 per prompt (won or died)</p></div>
|
|
1318
|
+
</div>
|
|
884
1319
|
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
1320
|
+
<div class="ach-sub label-caps">Effort-Based</div>
|
|
1321
|
+
<div class="card achievement-card">
|
|
1322
|
+
<div class="achievement-emoji">🏎️</div>
|
|
1323
|
+
<div class="achievement-info"><h4>Speedrunner</h4><p>Low effort, completed under budget</p></div>
|
|
1324
|
+
</div>
|
|
1325
|
+
<div class="card achievement-card">
|
|
1326
|
+
<div class="achievement-emoji">🏋️</div>
|
|
1327
|
+
<div class="achievement-info"><h4>Tryhard</h4><p>High/Max effort, LEGENDARY efficiency</p></div>
|
|
1328
|
+
</div>
|
|
1329
|
+
<div class="card achievement-card">
|
|
1330
|
+
<div class="achievement-emoji">👑</div>
|
|
1331
|
+
<div class="achievement-info"><h4>Archmagus</h4><p>Opus at max effort, completed</p></div>
|
|
1332
|
+
</div>
|
|
897
1333
|
</div>
|
|
1334
|
+
</div>
|
|
898
1335
|
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
<div class="
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
1336
|
+
<!-- Combat Style -->
|
|
1337
|
+
<div class="tab-panel" id="ach-combat" role="tabpanel" aria-labelledby="tab-ach-combat">
|
|
1338
|
+
<div class="achievements-grid">
|
|
1339
|
+
<div class="ach-sub label-caps">Prompting Skill</div>
|
|
1340
|
+
<div class="card achievement-card">
|
|
1341
|
+
<div class="achievement-emoji">🥊</div>
|
|
1342
|
+
<div class="achievement-info"><h4>One Shot</h4><p>Completed in a single prompt</p></div>
|
|
1343
|
+
</div>
|
|
1344
|
+
<div class="card achievement-card">
|
|
1345
|
+
<div class="achievement-emoji">💬</div>
|
|
1346
|
+
<div class="achievement-info"><h4>Conversationalist</h4><p>20+ prompts in one run</p></div>
|
|
1347
|
+
</div>
|
|
1348
|
+
<div class="card achievement-card">
|
|
1349
|
+
<div class="achievement-emoji">🤐</div>
|
|
1350
|
+
<div class="achievement-info"><h4>Terse</h4><p>≤3 prompts, ≥10 tool calls</p></div>
|
|
1351
|
+
</div>
|
|
1352
|
+
<div class="card achievement-card">
|
|
1353
|
+
<div class="achievement-emoji">🪑</div>
|
|
1354
|
+
<div class="achievement-info"><h4>Backseat Driver</h4><p>15+ prompts, less than 1 tool call per prompt</p></div>
|
|
1355
|
+
</div>
|
|
1356
|
+
<div class="card achievement-card">
|
|
1357
|
+
<div class="achievement-emoji">🏗️</div>
|
|
1358
|
+
<div class="achievement-info"><h4>High Leverage</h4><p>5+ tool calls per prompt (≥2 prompts)</p></div>
|
|
1359
|
+
</div>
|
|
916
1360
|
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
1361
|
+
<div class="ach-sub label-caps">Tool Mastery</div>
|
|
1362
|
+
<div class="card achievement-card">
|
|
1363
|
+
<div class="achievement-emoji">👁️</div>
|
|
1364
|
+
<div class="achievement-info"><h4>Read Only</h4><p>Won with no Edit or Write calls</p></div>
|
|
1365
|
+
</div>
|
|
1366
|
+
<div class="card achievement-card">
|
|
1367
|
+
<div class="achievement-emoji">✏️</div>
|
|
1368
|
+
<div class="achievement-info"><h4>Editor</h4><p>10+ Edit calls in one run</p></div>
|
|
1369
|
+
</div>
|
|
1370
|
+
<div class="card achievement-card">
|
|
1371
|
+
<div class="achievement-emoji">🐚</div>
|
|
1372
|
+
<div class="achievement-info"><h4>Bash Warrior</h4><p>10+ Bash calls comprising ≥50% of tools</p></div>
|
|
1373
|
+
</div>
|
|
1374
|
+
<div class="card achievement-card">
|
|
1375
|
+
<div class="achievement-emoji">🔍</div>
|
|
1376
|
+
<div class="achievement-info"><h4>Scout</h4><p>≥60% of tool calls were Reads (≥5 total)</p></div>
|
|
1377
|
+
</div>
|
|
1378
|
+
<div class="card achievement-card">
|
|
1379
|
+
<div class="achievement-emoji">🔪</div>
|
|
1380
|
+
<div class="achievement-info"><h4>Surgeon</h4><p>1–3 Edit calls, completed under budget</p></div>
|
|
1381
|
+
</div>
|
|
1382
|
+
<div class="card achievement-card">
|
|
1383
|
+
<div class="achievement-emoji">🧰</div>
|
|
1384
|
+
<div class="achievement-info"><h4>Toolbox</h4><p>5+ distinct tools used in one run</p></div>
|
|
1385
|
+
</div>
|
|
926
1386
|
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
<div class="achievement-card">
|
|
937
|
-
<div class="achievement-emoji">🧟</div>
|
|
938
|
-
<div class="achievement-info"><h4>Came Back</h4><p>Fainted (hit usage limits) and finished anyway</p></div>
|
|
939
|
-
</div>
|
|
1387
|
+
<div class="ach-sub label-caps">Tool Reliability</div>
|
|
1388
|
+
<div class="card achievement-card">
|
|
1389
|
+
<div class="achievement-emoji">✅</div>
|
|
1390
|
+
<div class="achievement-info"><h4>Clean Run</h4><p>Zero failed tool calls (≥5 tool calls total)</p></div>
|
|
1391
|
+
</div>
|
|
1392
|
+
<div class="card achievement-card">
|
|
1393
|
+
<div class="achievement-emoji">🐂</div>
|
|
1394
|
+
<div class="achievement-info"><h4>Stubborn</h4><p>10+ failed tool calls and still won</p></div>
|
|
1395
|
+
</div>
|
|
940
1396
|
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
<div class="achievement-card">
|
|
951
|
-
<div class="achievement-emoji">🪶</div>
|
|
952
|
-
<div class="achievement-info"><h4>Ultralight</h4><p>Manual compact at ≤40% context</p></div>
|
|
953
|
-
</div>
|
|
954
|
-
<div class="achievement-card">
|
|
955
|
-
<div class="achievement-emoji">🥷</div>
|
|
956
|
-
<div class="achievement-info"><h4>Ghost Run</h4><p>Manual compact at ≤30% context</p></div>
|
|
1397
|
+
<div class="ach-sub label-caps">Turn Discipline</div>
|
|
1398
|
+
<div class="card achievement-card">
|
|
1399
|
+
<div class="achievement-emoji">🤖</div>
|
|
1400
|
+
<div class="achievement-info"><h4>Agentic</h4><p>3+ Claude turns per user prompt</p></div>
|
|
1401
|
+
</div>
|
|
1402
|
+
<div class="card achievement-card">
|
|
1403
|
+
<div class="achievement-emoji">🐕</div>
|
|
1404
|
+
<div class="achievement-info"><h4>Obedient</h4><p>Exactly one turn per prompt (≥3 prompts)</p></div>
|
|
1405
|
+
</div>
|
|
957
1406
|
</div>
|
|
1407
|
+
</div>
|
|
958
1408
|
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
<div class="
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
1409
|
+
<!-- Endurance -->
|
|
1410
|
+
<div class="tab-panel" id="ach-endurance" role="tabpanel" aria-labelledby="tab-ach-endurance">
|
|
1411
|
+
<div class="achievements-grid">
|
|
1412
|
+
<div class="ach-sub label-caps">Time</div>
|
|
1413
|
+
<div class="card achievement-card">
|
|
1414
|
+
<div class="achievement-emoji">⏱️</div>
|
|
1415
|
+
<div class="achievement-info"><h4>Speedrun</h4><p>Completed in under 5 minutes</p></div>
|
|
1416
|
+
</div>
|
|
1417
|
+
<div class="card achievement-card">
|
|
1418
|
+
<div class="achievement-emoji">🏃</div>
|
|
1419
|
+
<div class="achievement-info"><h4>Marathon</h4><p>Session 60–180 minutes</p></div>
|
|
1420
|
+
</div>
|
|
1421
|
+
<div class="card achievement-card">
|
|
1422
|
+
<div class="achievement-emoji">🫠</div>
|
|
1423
|
+
<div class="achievement-info"><h4>Endurance</h4><p>Session over 3 hours</p></div>
|
|
1424
|
+
</div>
|
|
968
1425
|
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
1426
|
+
<div class="ach-sub label-caps">Rest & Recovery</div>
|
|
1427
|
+
<div class="card achievement-card">
|
|
1428
|
+
<div class="achievement-emoji">🔥</div>
|
|
1429
|
+
<div class="achievement-info"><h4>No Rest for the Wicked</h4><p>Completed in one session</p></div>
|
|
1430
|
+
</div>
|
|
1431
|
+
<div class="card achievement-card">
|
|
1432
|
+
<div class="achievement-emoji">🏕️</div>
|
|
1433
|
+
<div class="achievement-info"><h4>Made Camp</h4><p>Completed across multiple sessions</p></div>
|
|
1434
|
+
</div>
|
|
1435
|
+
<div class="card achievement-card">
|
|
1436
|
+
<div class="achievement-emoji">🧟</div>
|
|
1437
|
+
<div class="achievement-info"><h4>Came Back</h4><p>Fainted (hit usage limits) and finished anyway</p></div>
|
|
1438
|
+
</div>
|
|
982
1439
|
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
1440
|
+
<div class="ach-sub label-caps">Context Management</div>
|
|
1441
|
+
<div class="card achievement-card">
|
|
1442
|
+
<div class="achievement-emoji">📦</div>
|
|
1443
|
+
<div class="achievement-info"><h4>Overencumbered</h4><p>Context auto-compacted during a won run</p></div>
|
|
1444
|
+
</div>
|
|
1445
|
+
<div class="card achievement-card">
|
|
1446
|
+
<div class="achievement-emoji">🎒</div>
|
|
1447
|
+
<div class="achievement-info"><h4>Traveling Light</h4><p>Manual compact at 41–50% context</p></div>
|
|
1448
|
+
</div>
|
|
1449
|
+
<div class="card achievement-card">
|
|
1450
|
+
<div class="achievement-emoji">🪶</div>
|
|
1451
|
+
<div class="achievement-info"><h4>Ultralight</h4><p>Manual compact at 31–40% context</p></div>
|
|
1452
|
+
</div>
|
|
1453
|
+
<div class="card achievement-card">
|
|
1454
|
+
<div class="achievement-emoji">🥷</div>
|
|
1455
|
+
<div class="achievement-info"><h4>Ghost Run</h4><p>Manual compact at ≤30% context</p></div>
|
|
1456
|
+
</div>
|
|
991
1457
|
</div>
|
|
1458
|
+
</div>
|
|
992
1459
|
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
<div class="
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1460
|
+
<!-- Arcane -->
|
|
1461
|
+
<div class="tab-panel" id="ach-arcane" role="tabpanel" aria-labelledby="tab-ach-arcane">
|
|
1462
|
+
<div class="achievements-grid">
|
|
1463
|
+
<div class="ach-sub label-caps">Extended Thinking</div>
|
|
1464
|
+
<div class="card achievement-card">
|
|
1465
|
+
<div class="achievement-emoji">🔮</div>
|
|
1466
|
+
<div class="achievement-info"><h4>Spell Cast</h4><p>Used extended thinking in a won run</p></div>
|
|
1467
|
+
</div>
|
|
1468
|
+
<div class="card achievement-card">
|
|
1469
|
+
<div class="achievement-emoji">🧮</div>
|
|
1470
|
+
<div class="achievement-info"><h4>Calculated Risk</h4><p>Extended thinking + LEGENDARY efficiency</p></div>
|
|
1471
|
+
</div>
|
|
1472
|
+
<div class="card achievement-card">
|
|
1473
|
+
<div class="achievement-emoji">🌀</div>
|
|
1474
|
+
<div class="achievement-info"><h4>Deep Thinker</h4><p>3+ thinking invocations, completed under budget</p></div>
|
|
1475
|
+
</div>
|
|
1476
|
+
<div class="card achievement-card">
|
|
1477
|
+
<div class="achievement-emoji">🤫</div>
|
|
1478
|
+
<div class="achievement-info"><h4>Silent Run</h4><p>No extended thinking, SOLID or better</p></div>
|
|
1479
|
+
</div>
|
|
1480
|
+
|
|
1481
|
+
<div class="ach-sub label-caps">Multi-Model</div>
|
|
1482
|
+
<div class="card achievement-card">
|
|
1483
|
+
<div class="achievement-emoji">🏹</div>
|
|
1484
|
+
<div class="achievement-info"><h4>Frugal</h4><p>Haiku handled ≥50% of session cost</p></div>
|
|
1485
|
+
</div>
|
|
1486
|
+
<div class="card achievement-card">
|
|
1487
|
+
<div class="achievement-emoji">🎲</div>
|
|
1488
|
+
<div class="achievement-info"><h4>Rogue Run</h4><p>Haiku handled ≥75% of session cost</p></div>
|
|
1489
|
+
</div>
|
|
1490
|
+
|
|
1491
|
+
<div class="ach-sub label-caps">Paladin Planning Ratio</div>
|
|
1492
|
+
<div class="card achievement-card">
|
|
1493
|
+
<div class="achievement-emoji">🏛️</div>
|
|
1494
|
+
<div class="achievement-info"><h4>Architect</h4><p>Opus handled >60% of cost (heavy planner)</p></div>
|
|
1495
|
+
</div>
|
|
1496
|
+
<div class="card achievement-card">
|
|
1497
|
+
<div class="achievement-emoji">💨</div>
|
|
1498
|
+
<div class="achievement-info"><h4>Blitz</h4><p>Opus handled <25% of cost (light plan, fast execution)</p></div>
|
|
1499
|
+
</div>
|
|
1500
|
+
<div class="card achievement-card">
|
|
1501
|
+
<div class="achievement-emoji">⚖️</div>
|
|
1502
|
+
<div class="achievement-info"><h4>Equilibrium</h4><p>Opus/Sonnet balanced at 40–60%</p></div>
|
|
1503
|
+
</div>
|
|
1504
|
+
|
|
1505
|
+
<div class="ach-sub label-caps">Model Loyalty</div>
|
|
1506
|
+
<div class="card achievement-card">
|
|
1507
|
+
<div class="achievement-emoji">🔷</div>
|
|
1508
|
+
<div class="achievement-info"><h4>Purist</h4><p>Single model family throughout</p></div>
|
|
1509
|
+
</div>
|
|
1510
|
+
<div class="card achievement-card">
|
|
1511
|
+
<div class="achievement-emoji">🦎</div>
|
|
1512
|
+
<div class="achievement-info"><h4>Chameleon</h4><p>Multiple model families used, under budget</p></div>
|
|
1513
|
+
</div>
|
|
1514
|
+
<div class="card achievement-card">
|
|
1515
|
+
<div class="achievement-emoji">🔀</div>
|
|
1516
|
+
<div class="achievement-info"><h4>Tactical Switch</h4><p>Exactly 1 model switch, under budget</p></div>
|
|
1517
|
+
</div>
|
|
1518
|
+
<div class="card achievement-card">
|
|
1519
|
+
<div class="achievement-emoji">🔒</div>
|
|
1520
|
+
<div class="achievement-info"><h4>Committed</h4><p>No switches, one model family</p></div>
|
|
1521
|
+
</div>
|
|
1522
|
+
<div class="card achievement-card">
|
|
1523
|
+
<div class="achievement-emoji">⚠️</div>
|
|
1524
|
+
<div class="achievement-info"><h4>Class Defection</h4><p>Declared one class but cost skewed to another</p></div>
|
|
1525
|
+
</div>
|
|
1526
|
+
|
|
1527
|
+
<div class="ach-sub label-caps">Subagents</div>
|
|
1528
|
+
<div class="card achievement-card">
|
|
1529
|
+
<div class="achievement-emoji">🐺</div>
|
|
1530
|
+
<div class="achievement-info"><h4>Lone Wolf</h4><p>Completed with no subagents spawned</p></div>
|
|
1531
|
+
</div>
|
|
1532
|
+
<div class="card achievement-card">
|
|
1533
|
+
<div class="achievement-emoji">📡</div>
|
|
1534
|
+
<div class="achievement-info"><h4>Summoner</h4><p>5+ subagents spawned in one run</p></div>
|
|
1535
|
+
</div>
|
|
1536
|
+
<div class="card achievement-card">
|
|
1537
|
+
<div class="achievement-emoji">🪖</div>
|
|
1538
|
+
<div class="achievement-info"><h4>Army of One</h4><p>10+ subagents spawned, under 50% budget used</p></div>
|
|
1539
|
+
</div>
|
|
1013
1540
|
</div>
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1541
|
+
</div>
|
|
1542
|
+
|
|
1543
|
+
<!-- Death Marks -->
|
|
1544
|
+
<div class="tab-panel" id="ach-death" role="tabpanel" aria-labelledby="tab-ach-death">
|
|
1545
|
+
<div class="achievements-grid">
|
|
1546
|
+
<div class="card achievement-card death">
|
|
1547
|
+
<div class="achievement-emoji">🤦</div>
|
|
1548
|
+
<div class="achievement-info"><h4>Hubris</h4><p>Used extended thinking, busted anyway</p></div>
|
|
1549
|
+
</div>
|
|
1550
|
+
<div class="card achievement-card death">
|
|
1551
|
+
<div class="achievement-emoji">💥</div>
|
|
1552
|
+
<div class="achievement-info"><h4>Blowout</h4><p>Spent 2× your committed budget</p></div>
|
|
1553
|
+
</div>
|
|
1554
|
+
<div class="card achievement-card death">
|
|
1555
|
+
<div class="achievement-emoji">😭</div>
|
|
1556
|
+
<div class="achievement-info"><h4>So Close</h4><p>Died within 10% of budget</p></div>
|
|
1557
|
+
</div>
|
|
1558
|
+
<div class="card achievement-card death">
|
|
1559
|
+
<div class="achievement-emoji">🔨</div>
|
|
1560
|
+
<div class="achievement-info"><h4>Tool Happy</h4><p>Died with 30+ tool calls</p></div>
|
|
1561
|
+
</div>
|
|
1562
|
+
<div class="card achievement-card death">
|
|
1563
|
+
<div class="achievement-emoji">🪦</div>
|
|
1564
|
+
<div class="achievement-info"><h4>Silent Death</h4><p>Died with ≤2 prompts</p></div>
|
|
1565
|
+
</div>
|
|
1566
|
+
<div class="card achievement-card death">
|
|
1567
|
+
<div class="achievement-emoji">🤡</div>
|
|
1568
|
+
<div class="achievement-info"><h4>Fumble</h4><p>Died with 5+ failed tool calls</p></div>
|
|
1569
|
+
</div>
|
|
1570
|
+
<div class="card achievement-card death">
|
|
1571
|
+
<div class="achievement-emoji">🎲</div>
|
|
1572
|
+
<div class="achievement-info"><h4>Indecisive</h4><p>3+ model switches (won or died)</p></div>
|
|
1573
|
+
</div>
|
|
1017
1574
|
</div>
|
|
1018
1575
|
</div>
|
|
1019
1576
|
</section>
|
|
1020
1577
|
|
|
1021
1578
|
<!-- ── CLI Commands ── -->
|
|
1022
|
-
<section>
|
|
1579
|
+
<section id="cli">
|
|
1023
1580
|
<h2><span>⌨️</span>CLI Commands</h2>
|
|
1024
|
-
<div class="cli-block">
|
|
1581
|
+
<div class="card cli-block">
|
|
1025
1582
|
<div class="cli-block-header">terminal</div>
|
|
1026
1583
|
<pre>
|
|
1027
1584
|
<span class="comment"># Install</span>
|
|
@@ -1057,6 +1614,28 @@
|
|
|
1057
1614
|
</footer>
|
|
1058
1615
|
|
|
1059
1616
|
<script>
|
|
1617
|
+
/* ── Generic tab switcher (works for any .tab-bar) ── */
|
|
1618
|
+
document.querySelectorAll(".tab-bar").forEach((bar) => {
|
|
1619
|
+
const tabs = bar.querySelectorAll(".tab-btn");
|
|
1620
|
+
tabs.forEach((tab) => {
|
|
1621
|
+
tab.addEventListener("click", () => {
|
|
1622
|
+
tabs.forEach((t) => t.setAttribute("aria-selected", "false"));
|
|
1623
|
+
tab.setAttribute("aria-selected", "true");
|
|
1624
|
+
const section = bar.closest("section");
|
|
1625
|
+
section.querySelectorAll(".tab-panel").forEach((p) => {
|
|
1626
|
+
p.classList.remove("active");
|
|
1627
|
+
});
|
|
1628
|
+
const panel = document.getElementById(tab.dataset.panel);
|
|
1629
|
+
if (panel) {
|
|
1630
|
+
panel.classList.add("active");
|
|
1631
|
+
panel.style.animation = "none";
|
|
1632
|
+
panel.offsetHeight;
|
|
1633
|
+
panel.style.animation = "";
|
|
1634
|
+
}
|
|
1635
|
+
});
|
|
1636
|
+
});
|
|
1637
|
+
});
|
|
1638
|
+
|
|
1060
1639
|
function copyInstall() {
|
|
1061
1640
|
const cmd = document.getElementById("install-cmd").value;
|
|
1062
1641
|
const btn = document.getElementById("copy-btn");
|