tokengolf 0.4.1 → 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 +844 -375
- 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
|
@@ -4,7 +4,7 @@
|
|
|
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
|
|
7
|
+
<title>TokenGolf: Every token matters.</title>
|
|
8
8
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
9
9
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
10
10
|
<link
|
|
@@ -19,13 +19,13 @@
|
|
|
19
19
|
<!-- Open Graph -->
|
|
20
20
|
<meta property="og:type" content="website" />
|
|
21
21
|
<meta property="og:url" content="https://josheche.github.io/tokengolf/" />
|
|
22
|
-
<meta property="og:title" content="TokenGolf
|
|
22
|
+
<meta property="og:title" content="TokenGolf: Every token matters." />
|
|
23
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." />
|
|
24
24
|
<meta property="og:image" content="https://josheche.github.io/tokengolf/assets/tokengolf-bg-min.jpg" />
|
|
25
25
|
|
|
26
26
|
<!-- Twitter Card -->
|
|
27
27
|
<meta name="twitter:card" content="summary_large_image" />
|
|
28
|
-
<meta name="twitter:title" content="TokenGolf
|
|
28
|
+
<meta name="twitter:title" content="TokenGolf: Every token matters." />
|
|
29
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." />
|
|
30
30
|
<meta name="twitter:image" content="https://josheche.github.io/tokengolf/assets/tokengolf-bg-min.jpg" />
|
|
31
31
|
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"url": "https://josheche.github.io/tokengolf/",
|
|
39
39
|
"applicationCategory": "DeveloperApplication",
|
|
40
40
|
"operatingSystem": "macOS, Linux",
|
|
41
|
-
"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.",
|
|
42
42
|
"offers": {
|
|
43
43
|
"@type": "Offer",
|
|
44
44
|
"price": "0",
|
|
@@ -98,6 +98,49 @@
|
|
|
98
98
|
"SF Mono", "Cascadia Mono", "Fira Code", "Consolas", monospace;
|
|
99
99
|
}
|
|
100
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
|
+
|
|
101
144
|
/* ── Hero ── */
|
|
102
145
|
.hero {
|
|
103
146
|
position: relative;
|
|
@@ -269,6 +312,11 @@
|
|
|
269
312
|
letter-spacing: -0.02em;
|
|
270
313
|
}
|
|
271
314
|
|
|
315
|
+
/* Tighten h2 when followed by a subtitle */
|
|
316
|
+
section h2:has(+ .section-sub) {
|
|
317
|
+
margin-bottom: 0.5rem;
|
|
318
|
+
}
|
|
319
|
+
|
|
272
320
|
section h2 span {
|
|
273
321
|
margin-right: 0.5rem;
|
|
274
322
|
}
|
|
@@ -277,7 +325,7 @@
|
|
|
277
325
|
.modes-grid {
|
|
278
326
|
display: grid;
|
|
279
327
|
grid-template-columns: 1fr 1fr;
|
|
280
|
-
gap: 1.
|
|
328
|
+
gap: 1.25rem;
|
|
281
329
|
}
|
|
282
330
|
|
|
283
331
|
@media (max-width: 600px) {
|
|
@@ -287,8 +335,6 @@
|
|
|
287
335
|
}
|
|
288
336
|
|
|
289
337
|
.mode-card {
|
|
290
|
-
background: var(--card);
|
|
291
|
-
border: 1px solid var(--border);
|
|
292
338
|
border-radius: 12px;
|
|
293
339
|
padding: 1.75rem;
|
|
294
340
|
}
|
|
@@ -318,13 +364,11 @@
|
|
|
318
364
|
|
|
319
365
|
.mode-badge {
|
|
320
366
|
display: inline-block;
|
|
321
|
-
font-size: 0.75rem;
|
|
322
|
-
font-weight: 600;
|
|
323
|
-
letter-spacing: 0.06em;
|
|
324
|
-
text-transform: uppercase;
|
|
325
367
|
padding: 0.2rem 0.6rem;
|
|
326
368
|
border-radius: 4px;
|
|
327
369
|
margin-bottom: 0.75rem;
|
|
370
|
+
font-size: 0.75rem;
|
|
371
|
+
font-weight: 600;
|
|
328
372
|
}
|
|
329
373
|
|
|
330
374
|
.badge-flow {
|
|
@@ -401,13 +445,10 @@
|
|
|
401
445
|
.achievements-grid {
|
|
402
446
|
display: grid;
|
|
403
447
|
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
|
|
404
|
-
gap:
|
|
448
|
+
gap: 1.25rem;
|
|
405
449
|
}
|
|
406
450
|
|
|
407
451
|
.achievement-card {
|
|
408
|
-
background: var(--card);
|
|
409
|
-
border: 1px solid var(--border);
|
|
410
|
-
border-radius: 10px;
|
|
411
452
|
padding: 1.1rem 1.25rem;
|
|
412
453
|
display: flex;
|
|
413
454
|
align-items: flex-start;
|
|
@@ -434,9 +475,6 @@
|
|
|
434
475
|
|
|
435
476
|
/* ── CLI Commands ── */
|
|
436
477
|
.cli-block {
|
|
437
|
-
background: var(--card);
|
|
438
|
-
border: 1px solid var(--border);
|
|
439
|
-
border-radius: 10px;
|
|
440
478
|
overflow: hidden;
|
|
441
479
|
}
|
|
442
480
|
|
|
@@ -483,13 +521,10 @@
|
|
|
483
521
|
.tiers-grid {
|
|
484
522
|
display: grid;
|
|
485
523
|
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
|
|
486
|
-
gap:
|
|
524
|
+
gap: 1.25rem;
|
|
487
525
|
}
|
|
488
526
|
|
|
489
527
|
.tier-card {
|
|
490
|
-
background: var(--card);
|
|
491
|
-
border: 1px solid var(--border);
|
|
492
|
-
border-radius: 10px;
|
|
493
528
|
padding: 1.25rem 1rem;
|
|
494
529
|
text-align: center;
|
|
495
530
|
}
|
|
@@ -510,64 +545,247 @@
|
|
|
510
545
|
font-family: monospace;
|
|
511
546
|
}
|
|
512
547
|
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
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;
|
|
523
564
|
margin-top: 0.5rem;
|
|
565
|
+
grid-column: 1 / -1;
|
|
524
566
|
}
|
|
525
|
-
|
|
526
|
-
|
|
567
|
+
|
|
568
|
+
.ach-sub:first-child {
|
|
527
569
|
padding-top: 0;
|
|
528
570
|
margin-top: 0;
|
|
529
571
|
}
|
|
530
|
-
|
|
531
|
-
|
|
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);
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
.tab-panel {
|
|
621
|
+
display: none;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
.tab-panel.active {
|
|
625
|
+
display: block;
|
|
626
|
+
animation: panelIn 0.3s ease both;
|
|
532
627
|
}
|
|
533
628
|
|
|
534
|
-
|
|
535
|
-
|
|
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 {
|
|
536
636
|
display: grid;
|
|
537
637
|
grid-template-columns: 1fr 1fr;
|
|
538
638
|
gap: 2rem;
|
|
539
639
|
align-items: start;
|
|
540
640
|
}
|
|
541
641
|
|
|
542
|
-
@media (max-width:
|
|
543
|
-
.
|
|
544
|
-
grid-template-columns: 1fr;
|
|
545
|
-
}
|
|
642
|
+
@media (max-width: 900px) {
|
|
643
|
+
.demos-grid { grid-template-columns: 1fr; }
|
|
546
644
|
}
|
|
547
645
|
|
|
548
|
-
.
|
|
646
|
+
.demo-item {
|
|
549
647
|
display: flex;
|
|
550
648
|
flex-direction: column;
|
|
551
|
-
gap: 0.
|
|
649
|
+
gap: 0.85rem;
|
|
650
|
+
min-width: 0;
|
|
552
651
|
}
|
|
553
652
|
|
|
554
|
-
.
|
|
555
|
-
|
|
556
|
-
border-radius: 10px;
|
|
557
|
-
border: 1px solid var(--border);
|
|
558
|
-
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
|
|
653
|
+
.demo-item.full-width {
|
|
654
|
+
grid-column: 1 / -1;
|
|
559
655
|
}
|
|
560
656
|
|
|
561
|
-
.
|
|
657
|
+
.demo-label {
|
|
562
658
|
font-size: 0.85rem;
|
|
563
659
|
color: var(--muted);
|
|
564
|
-
line-height: 1.
|
|
660
|
+
line-height: 1.55;
|
|
661
|
+
padding-left: 0.15rem;
|
|
565
662
|
}
|
|
566
663
|
|
|
567
|
-
.
|
|
664
|
+
.demo-label strong {
|
|
568
665
|
color: var(--text);
|
|
569
666
|
}
|
|
570
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;
|
|
753
|
+
}
|
|
754
|
+
|
|
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;
|
|
764
|
+
color: var(--text);
|
|
765
|
+
}
|
|
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
|
+
|
|
571
789
|
/* ── Footer ── */
|
|
572
790
|
footer {
|
|
573
791
|
border-top: 1px solid var(--border);
|
|
@@ -631,22 +849,22 @@
|
|
|
631
849
|
</div>
|
|
632
850
|
|
|
633
851
|
<!-- ── Why TokenGolf ── -->
|
|
634
|
-
<section>
|
|
852
|
+
<section id="why">
|
|
635
853
|
<h2><span>⛳</span>Why "TokenGolf"?</h2>
|
|
636
|
-
<p
|
|
637
|
-
<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.
|
|
638
856
|
</p>
|
|
639
|
-
<p
|
|
640
|
-
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>
|
|
641
859
|
</p>
|
|
642
860
|
</section>
|
|
643
861
|
|
|
644
862
|
<!-- ── Two Modes ── -->
|
|
645
|
-
<section>
|
|
863
|
+
<section id="modes">
|
|
646
864
|
<h2><span>🎮</span>Two Modes</h2>
|
|
647
865
|
<div class="modes-grid">
|
|
648
|
-
<div class="mode-card">
|
|
649
|
-
<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>
|
|
650
868
|
<h3>Passive tracking, zero friction</h3>
|
|
651
869
|
<p>
|
|
652
870
|
Just work normally. TokenGolf runs in the background via Claude Code
|
|
@@ -659,8 +877,8 @@
|
|
|
659
877
|
<li>Perfect when you're in a flow state</li>
|
|
660
878
|
</ul>
|
|
661
879
|
</div>
|
|
662
|
-
<div class="mode-card">
|
|
663
|
-
<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>
|
|
664
882
|
<h3>Pre-commit. Stakes. Permadeath.</h3>
|
|
665
883
|
<p>
|
|
666
884
|
Declare your quest, pick a budget, choose your class. Bust the
|
|
@@ -676,27 +894,8 @@
|
|
|
676
894
|
</div>
|
|
677
895
|
</section>
|
|
678
896
|
|
|
679
|
-
<!-- ── Screenshots ── -->
|
|
680
|
-
<section>
|
|
681
|
-
<h2><span>📸</span>In Action</h2>
|
|
682
|
-
<div class="screenshots-grid">
|
|
683
|
-
<div class="screenshot-item">
|
|
684
|
-
<img src="assets/demo-hud.png" alt="TokenGolf HUD — all game states" />
|
|
685
|
-
<div class="screenshot-label">
|
|
686
|
-
<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.
|
|
687
|
-
</div>
|
|
688
|
-
</div>
|
|
689
|
-
<div class="screenshot-item">
|
|
690
|
-
<img src="assets/scorecard.png" alt="TokenGolf scorecard — session complete" />
|
|
691
|
-
<div class="screenshot-label">
|
|
692
|
-
<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.
|
|
693
|
-
</div>
|
|
694
|
-
</div>
|
|
695
|
-
</div>
|
|
696
|
-
</section>
|
|
697
|
-
|
|
698
897
|
<!-- ── Character Classes ── -->
|
|
699
|
-
<section>
|
|
898
|
+
<section id="classes">
|
|
700
899
|
<h2><span>⚔️</span>Character Classes</h2>
|
|
701
900
|
<div class="classes-table-wrap">
|
|
702
901
|
<table class="classes-table">
|
|
@@ -744,56 +943,270 @@
|
|
|
744
943
|
</div>
|
|
745
944
|
</section>
|
|
746
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
|
+
|
|
747
1160
|
<!-- ── Effort & Fast Mode ── -->
|
|
748
|
-
<section>
|
|
1161
|
+
<section id="effort">
|
|
749
1162
|
<h2><span>🔥</span>Effort Levels & Fast Mode</h2>
|
|
750
1163
|
<div class="modes-grid">
|
|
751
|
-
<div class="mode-card">
|
|
1164
|
+
<div class="card mode-card">
|
|
752
1165
|
<h3>Effort Levels</h3>
|
|
753
1166
|
<p>Set effort in the roguelike wizard. Higher effort = more thinking = more spend. Tracked in achievements.</p>
|
|
754
1167
|
<ul>
|
|
755
|
-
<li>🪶 <strong>Low</strong>
|
|
756
|
-
<li>⚖️ <strong>Medium</strong>
|
|
757
|
-
<li>🔥 <strong>High</strong>
|
|
758
|
-
<li>💥 <strong>Max</strong>
|
|
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>
|
|
759
1172
|
</ul>
|
|
760
1173
|
</div>
|
|
761
|
-
<div class="mode-card">
|
|
1174
|
+
<div class="card mode-card">
|
|
762
1175
|
<h3>Fast Mode</h3>
|
|
763
1176
|
<p>Opus fast mode is auto-detected from your Claude Code settings. Unlocks unique achievements:</p>
|
|
764
1177
|
<ul>
|
|
765
|
-
<li>⛈️ <strong>Lightning Run</strong>
|
|
766
|
-
<li>🎰 <strong>Daredevil</strong>
|
|
1178
|
+
<li>⛈️ <strong>Lightning Run</strong> · Opus fast mode, under budget</li>
|
|
1179
|
+
<li>🎰 <strong>Daredevil</strong> · Opus fast mode, LEGENDARY efficiency</li>
|
|
767
1180
|
</ul>
|
|
768
1181
|
</div>
|
|
769
1182
|
</div>
|
|
770
1183
|
</section>
|
|
771
1184
|
|
|
772
1185
|
<!-- ── Budget Tiers ── -->
|
|
773
|
-
<section>
|
|
1186
|
+
<section id="budget">
|
|
774
1187
|
<h2><span>💰</span>Budget Tiers</h2>
|
|
775
1188
|
<div class="tiers-grid">
|
|
776
|
-
<div class="tier-card">
|
|
1189
|
+
<div class="card tier-card">
|
|
777
1190
|
<span class="tier-emoji">💎</span>
|
|
778
1191
|
<div class="tier-name">Diamond</div>
|
|
779
1192
|
<div class="tier-amount">under $0.10</div>
|
|
780
1193
|
</div>
|
|
781
|
-
<div class="tier-card">
|
|
1194
|
+
<div class="card tier-card">
|
|
782
1195
|
<span class="tier-emoji">🥇</span>
|
|
783
1196
|
<div class="tier-name">Gold</div>
|
|
784
1197
|
<div class="tier-amount">under $0.30</div>
|
|
785
1198
|
</div>
|
|
786
|
-
<div class="tier-card">
|
|
1199
|
+
<div class="card tier-card">
|
|
787
1200
|
<span class="tier-emoji">🥈</span>
|
|
788
1201
|
<div class="tier-name">Silver</div>
|
|
789
1202
|
<div class="tier-amount">under $1.00</div>
|
|
790
1203
|
</div>
|
|
791
|
-
<div class="tier-card">
|
|
1204
|
+
<div class="card tier-card">
|
|
792
1205
|
<span class="tier-emoji">🥉</span>
|
|
793
1206
|
<div class="tier-name">Bronze</div>
|
|
794
1207
|
<div class="tier-amount">under $3.00</div>
|
|
795
1208
|
</div>
|
|
796
|
-
<div class="tier-card">
|
|
1209
|
+
<div class="card tier-card">
|
|
797
1210
|
<span class="tier-emoji">💸</span>
|
|
798
1211
|
<div class="tier-name">Reckless</div>
|
|
799
1212
|
<div class="tier-amount">over $3.00</div>
|
|
@@ -802,336 +1215,370 @@
|
|
|
802
1215
|
</section>
|
|
803
1216
|
|
|
804
1217
|
<!-- ── Meta Loop ── -->
|
|
805
|
-
<section>
|
|
1218
|
+
<section id="meta">
|
|
806
1219
|
<h2><span>🔄</span>The Meta Loop</h2>
|
|
807
|
-
<p
|
|
808
|
-
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.
|
|
809
1222
|
</p>
|
|
810
1223
|
<div class="modes-grid" style="grid-template-columns:repeat(auto-fill,minmax(280px,1fr));">
|
|
811
|
-
<div class="mode-card">
|
|
1224
|
+
<div class="card mode-card">
|
|
812
1225
|
<h3>📦 Overencumbered</h3>
|
|
813
1226
|
<p>Context bloat slowing you down. The model is carrying too much history to reason cleanly.</p>
|
|
814
1227
|
</div>
|
|
815
|
-
<div class="mode-card">
|
|
1228
|
+
<div class="card mode-card">
|
|
816
1229
|
<h3>🏕️ Made Camp</h3>
|
|
817
1230
|
<p>Hit usage limits mid-run. Came back next session and kept going.</p>
|
|
818
1231
|
</div>
|
|
819
|
-
<div class="mode-card">
|
|
1232
|
+
<div class="card mode-card">
|
|
820
1233
|
<h3>🥷 Ghost Run</h3>
|
|
821
1234
|
<p>Surgical context management. You compacted at 30% and still had plenty of room for the boss.</p>
|
|
822
1235
|
</div>
|
|
823
|
-
<div class="mode-card">
|
|
1236
|
+
<div class="card mode-card">
|
|
824
1237
|
<h3>🤦 Hubris</h3>
|
|
825
1238
|
<p>Reached for ultrathink on a tight budget and paid for it. The spell didn't save you.</p>
|
|
826
1239
|
</div>
|
|
827
|
-
<div class="mode-card">
|
|
1240
|
+
<div class="card mode-card">
|
|
828
1241
|
<h3>🤫 Silent Run</h3>
|
|
829
1242
|
<p>Solved it with pure prompting discipline. No extended thinking needed.</p>
|
|
830
1243
|
</div>
|
|
831
|
-
<div class="mode-card">
|
|
1244
|
+
<div class="card mode-card">
|
|
832
1245
|
<h3>🐺 Lone Wolf</h3>
|
|
833
1246
|
<p>No subagents. You held the whole problem in one context and saw it through.</p>
|
|
834
1247
|
</div>
|
|
835
1248
|
</div>
|
|
836
|
-
<p style="
|
|
837
|
-
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>
|
|
838
1251
|
</p>
|
|
839
1252
|
</section>
|
|
840
1253
|
|
|
841
1254
|
<!-- ── Achievements ── -->
|
|
842
|
-
<section>
|
|
1255
|
+
<section id="achievements">
|
|
843
1256
|
<h2><span>🏆</span>Achievements</h2>
|
|
844
|
-
<
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
</
|
|
850
|
-
<
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
</div>
|
|
854
|
-
<div class="achievement-card">
|
|
855
|
-
<div class="achievement-emoji">🥈</div>
|
|
856
|
-
<div class="achievement-info"><h4>Silver</h4><p>Completed with Sonnet</p></div>
|
|
857
|
-
</div>
|
|
858
|
-
<div class="achievement-card">
|
|
859
|
-
<div class="achievement-emoji">🥉</div>
|
|
860
|
-
<div class="achievement-info"><h4>Bronze</h4><p>Completed with Opus</p></div>
|
|
861
|
-
</div>
|
|
862
|
-
<div class="achievement-card">
|
|
863
|
-
<div class="achievement-emoji">⚜️</div>
|
|
864
|
-
<div class="achievement-info"><h4>Paladin</h4><p>Completed as Paladin (Opus plan mode)</p></div>
|
|
865
|
-
</div>
|
|
866
|
-
<div class="achievement-card">
|
|
867
|
-
<div class="achievement-emoji">♟️</div>
|
|
868
|
-
<div class="achievement-info"><h4>Grand Strategist</h4><p>LEGENDARY efficiency as Paladin</p></div>
|
|
869
|
-
</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>
|
|
870
1266
|
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
<div class="
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
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>
|
|
892
1295
|
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
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>
|
|
906
1309
|
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
<div class="achievement-card">
|
|
917
|
-
<div class="achievement-emoji">🤐</div>
|
|
918
|
-
<div class="achievement-info"><h4>Terse</h4><p>≤3 prompts, ≥10 tool calls</p></div>
|
|
919
|
-
</div>
|
|
920
|
-
<div class="achievement-card">
|
|
921
|
-
<div class="achievement-emoji">🪑</div>
|
|
922
|
-
<div class="achievement-info"><h4>Backseat Driver</h4><p>15+ prompts, less than 1 tool call per prompt</p></div>
|
|
923
|
-
</div>
|
|
924
|
-
<div class="achievement-card">
|
|
925
|
-
<div class="achievement-emoji">🏗️</div>
|
|
926
|
-
<div class="achievement-info"><h4>High Leverage</h4><p>5+ tool calls per prompt (≥2 prompts)</p></div>
|
|
927
|
-
</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>
|
|
928
1319
|
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
<div class="achievement-card">
|
|
943
|
-
<div class="achievement-emoji">🔍</div>
|
|
944
|
-
<div class="achievement-info"><h4>Scout</h4><p>≥60% of tool calls were Reads (≥5 total)</p></div>
|
|
945
|
-
</div>
|
|
946
|
-
<div class="achievement-card">
|
|
947
|
-
<div class="achievement-emoji">🔪</div>
|
|
948
|
-
<div class="achievement-info"><h4>Surgeon</h4><p>1–3 Edit calls, completed under budget</p></div>
|
|
949
|
-
</div>
|
|
950
|
-
<div class="achievement-card">
|
|
951
|
-
<div class="achievement-emoji">🧰</div>
|
|
952
|
-
<div class="achievement-info"><h4>Toolbox</h4><p>5+ distinct tools used in one run</p></div>
|
|
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>
|
|
953
1333
|
</div>
|
|
1334
|
+
</div>
|
|
954
1335
|
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
<div class="
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
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>
|
|
968
1360
|
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
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>
|
|
986
1386
|
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
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>
|
|
996
1396
|
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
<div class="achievement-card">
|
|
1007
|
-
<div class="achievement-emoji">⚖️</div>
|
|
1008
|
-
<div class="achievement-info"><h4>Equilibrium</h4><p>Opus/Sonnet balanced at 40–60%</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>
|
|
1009
1406
|
</div>
|
|
1407
|
+
</div>
|
|
1010
1408
|
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
<div class="
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
</div>
|
|
1028
|
-
<div class="achievement-card">
|
|
1029
|
-
<div class="achievement-emoji">⚠️</div>
|
|
1030
|
-
<div class="achievement-info"><h4>Class Defection</h4><p>Declared one class but cost skewed to another</p></div>
|
|
1031
|
-
</div>
|
|
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>
|
|
1032
1425
|
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
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>
|
|
1046
1439
|
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
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>
|
|
1063
1457
|
</div>
|
|
1458
|
+
</div>
|
|
1064
1459
|
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
<div class="
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
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>
|
|
1074
1480
|
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
<div class="achievement-card">
|
|
1085
|
-
<div class="achievement-emoji">🪖</div>
|
|
1086
|
-
<div class="achievement-info"><h4>Army of One</h4><p>10+ subagents spawned, under 50% budget used</p></div>
|
|
1087
|
-
</div>
|
|
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>
|
|
1088
1490
|
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
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>
|
|
1098
1504
|
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
<div class="
|
|
1122
|
-
<div class="achievement-
|
|
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>
|
|
1123
1540
|
</div>
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
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>
|
|
1127
1574
|
</div>
|
|
1128
1575
|
</div>
|
|
1129
1576
|
</section>
|
|
1130
1577
|
|
|
1131
1578
|
<!-- ── CLI Commands ── -->
|
|
1132
|
-
<section>
|
|
1579
|
+
<section id="cli">
|
|
1133
1580
|
<h2><span>⌨️</span>CLI Commands</h2>
|
|
1134
|
-
<div class="cli-block">
|
|
1581
|
+
<div class="card cli-block">
|
|
1135
1582
|
<div class="cli-block-header">terminal</div>
|
|
1136
1583
|
<pre>
|
|
1137
1584
|
<span class="comment"># Install</span>
|
|
@@ -1167,6 +1614,28 @@
|
|
|
1167
1614
|
</footer>
|
|
1168
1615
|
|
|
1169
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
|
+
|
|
1170
1639
|
function copyInstall() {
|
|
1171
1640
|
const cmd = document.getElementById("install-cmd").value;
|
|
1172
1641
|
const btn = document.getElementById("copy-btn");
|