kodelyth-ecc 1.8.0 → 1.8.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.
Files changed (91) hide show
  1. package/CLAUDE.md +1 -1
  2. package/VERSION +1 -1
  3. package/bin/kodelyth-ecc.js +54 -5
  4. package/install.ps1 +30 -13
  5. package/install.sh +11 -4
  6. package/package.json +1 -1
  7. package/rules/common/agent-intent-routing.md +96 -195
  8. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -47
  9. package/.github/ISSUE_TEMPLATE/config.yml +0 -8
  10. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -41
  11. package/.github/ISSUE_TEMPLATE/good_first_issue.md +0 -36
  12. package/.github/ISSUE_TEMPLATE/new_agent.md +0 -52
  13. package/.github/PULL_REQUEST_TEMPLATE.md +0 -53
  14. package/.github/workflows/ci.yml +0 -45
  15. package/.github/workflows/publish.yml +0 -60
  16. package/brand/concepts.svg +0 -109
  17. package/brand/convert.js +0 -161
  18. package/brand/favicon.svg +0 -7
  19. package/brand/fb-cover.svg +0 -34
  20. package/brand/fb-profile.svg +0 -21
  21. package/brand/kodelyth-dark.svg +0 -24
  22. package/brand/kodelyth-light.svg +0 -24
  23. package/brand/kodelyth-mark.svg +0 -20
  24. package/brand/package.json +0 -12
  25. package/docs/dashboard.md +0 -211
  26. package/docs/evolve.md +0 -303
  27. package/docs/mcp-clients.md +0 -167
  28. package/docs/mcp.md +0 -178
  29. package/docs/replay.md +0 -244
  30. package/docs/supply-chain.md +0 -207
  31. package/docs/swarm.md +0 -243
  32. package/skills/skill-comply/tests/test_grader.py +0 -137
  33. package/skills/skill-comply/tests/test_parser.py +0 -90
  34. package/social/card-agents.svg +0 -104
  35. package/social/card-install.svg +0 -58
  36. package/social/card-main.svg +0 -54
  37. package/social/facebook-v150.svg +0 -110
  38. package/social/fb-ad-main.svg +0 -128
  39. package/social/fb-post-features.svg +0 -118
  40. package/social/fb-post-launch.svg +0 -144
  41. package/social/fb-post-platforms.svg +0 -135
  42. package/social/github-social-preview.svg +0 -151
  43. package/social/hype-compound-learning.svg +0 -129
  44. package/social/hype-devil-mode.svg +0 -240
  45. package/social/hype-mcp-server.svg +0 -148
  46. package/social/hype-parallel-agents.svg +0 -162
  47. package/social/hype-stats-hero.svg +0 -138
  48. package/social/og-image.svg +0 -151
  49. package/social/readme-agents.svg +0 -138
  50. package/social/readme-hero.svg +0 -102
  51. package/social/section-agents.svg +0 -69
  52. package/social/section-author.svg +0 -66
  53. package/social/section-dashboard.svg +0 -71
  54. package/social/section-devil.svg +0 -66
  55. package/social/section-hooks.svg +0 -63
  56. package/social/section-install.svg +0 -54
  57. package/social/section-learning.svg +0 -64
  58. package/social/section-mcp.svg +0 -58
  59. package/social/section-memory.svg +0 -69
  60. package/social/section-parallel.svg +0 -84
  61. package/social/section-routing.svg +0 -63
  62. package/social/twitter-threads.md +0 -621
  63. package/social/x-card-agents-grid.svg +0 -120
  64. package/social/x-card-free.svg +0 -71
  65. package/social/x-card-hook.svg +0 -94
  66. package/tests/dashboard/data.test.js +0 -391
  67. package/tests/dashboard/server.test.js +0 -257
  68. package/tests/evolve/analyze.test.js +0 -169
  69. package/tests/evolve/proposals.test.js +0 -173
  70. package/tests/evolve/stats.test.js +0 -167
  71. package/tests/hooks/branch-name-check.test.js +0 -184
  72. package/tests/hooks/smart-suggest.test.js +0 -149
  73. package/tests/hooks/test-reminder.test.js +0 -181
  74. package/tests/mcp/catalog.test.js +0 -98
  75. package/tests/mcp/client.test.js +0 -113
  76. package/tests/mcp/resources-prompts.test.js +0 -70
  77. package/tests/mcp/tools.test.js +0 -159
  78. package/tests/memory/auto-recall.test.js +0 -132
  79. package/tests/memory/instincts.test.js +0 -258
  80. package/tests/memory/store.test.js +0 -203
  81. package/tests/replay/bundle.test.js +0 -181
  82. package/tests/replay/replay.test.js +0 -131
  83. package/tests/router/classify.test.js +0 -164
  84. package/tests/run-all.js +0 -55
  85. package/tests/safety/patterns.test.js +0 -94
  86. package/tests/safety/prompt-injection-guard.test.js +0 -111
  87. package/tests/safety/token-budget.test.js +0 -119
  88. package/tests/supply-chain/manifest.test.js +0 -147
  89. package/tests/supply-chain/sbom.test.js +0 -170
  90. package/tests/supply-chain/verify.test.js +0 -146
  91. package/tests/swarm/build-plan.test.js +0 -188
@@ -1,120 +0,0 @@
1
- <svg width="1200" height="675" viewBox="0 0 1200 675" xmlns="http://www.w3.org/2000/svg" font-family="'Segoe UI', system-ui, -apple-system, sans-serif">
2
- <defs>
3
- <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
- <stop offset="0%" style="stop-color:#050811"/>
5
- <stop offset="100%" style="stop-color:#0d1117"/>
6
- </linearGradient>
7
- <linearGradient id="mem" x1="0%" y1="0%" x2="0%" y2="100%">
8
- <stop offset="0%" style="stop-color:#059669"/>
9
- <stop offset="100%" style="stop-color:#065f46"/>
10
- </linearGradient>
11
- <linearGradient id="card" x1="0%" y1="0%" x2="100%" y2="100%">
12
- <stop offset="0%" style="stop-color:#161b22"/>
13
- <stop offset="100%" style="stop-color:#0d1117"/>
14
- </linearGradient>
15
- </defs>
16
-
17
- <rect width="1200" height="675" fill="url(#bg)"/>
18
- <circle cx="1100" cy="600" r="300" fill="#059669" opacity="0.04"/>
19
- <circle cx="100" cy="100" r="200" fill="#a78bfa" opacity="0.03"/>
20
-
21
- <!-- Header -->
22
- <text x="80" y="72" font-size="48" font-weight="900" letter-spacing="-2" fill="#ffffff">70 agents. One install.</text>
23
- <text x="80" y="110" font-size="18" fill="#6e7681">Semantic routing picks the right one — you never need to know their names.</text>
24
-
25
- <!-- Left column — agent cards -->
26
- <!-- Card 1 -->
27
- <rect x="80" y="140" width="360" height="120" rx="8" fill="url(#card)" stroke="#21262d" stroke-width="1"/>
28
- <rect x="80" y="140" width="4" height="120" rx="2" fill="#a78bfa"/>
29
- <text x="100" y="166" font-size="13" font-weight="700" fill="#ffffff">kodelyth-advisor</text>
30
- <text x="100" y="185" font-size="12" fill="#8b949e">"I'm stuck, no idea where to start"</text>
31
- <text x="100" y="201" font-size="12" fill="#8b949e">"I'm overwhelmed, any advice?"</text>
32
- <text x="100" y="220" font-size="11" fill="#484f58">→ strategic direction + right specialist</text>
33
- <text x="100" y="237" font-size="11" fill="#484f58">→ priority 1 — fires on confusion/emotion</text>
34
-
35
- <!-- Card 2 -->
36
- <rect x="80" y="280" width="360" height="120" rx="8" fill="#161b22" stroke="#21262d" stroke-width="1"/>
37
- <rect x="80" y="280" width="4" height="120" rx="2" fill="#f59e0b"/>
38
- <text x="100" y="306" font-size="13" font-weight="700" fill="#ffffff">debug-detective</text>
39
- <text x="100" y="325" font-size="12" fill="#8b949e">"nothing works, driving me crazy"</text>
40
- <text x="100" y="341" font-size="12" fill="#8b949e">[paste stack trace with no text]</text>
41
- <text x="100" y="360" font-size="11" fill="#484f58">→ root cause, never guesses</text>
42
- <text x="100" y="377" font-size="11" fill="#484f58">→ auto-detects naked paste</text>
43
-
44
- <!-- Card 3 — memory / ECC exclusive -->
45
- <rect x="80" y="420" width="360" height="120" rx="8" fill="#0d2b1d" stroke="#059669" stroke-opacity="0.4" stroke-width="1"/>
46
- <rect x="80" y="420" width="4" height="120" rx="2" fill="url(#mem)"/>
47
- <rect x="246" y="426" width="46" height="18" rx="9" fill="#059669" fill-opacity="0.3" stroke="#059669" stroke-opacity="0.5" stroke-width="1"/>
48
- <text x="269" y="439" font-size="9" fill="#10b981" text-anchor="middle" font-weight="700">ECC only</text>
49
- <text x="100" y="448" font-size="13" font-weight="700" fill="#ffffff">kodelyth-memory</text>
50
- <text x="100" y="467" font-size="12" fill="#8b949e">BM25 local memory — past solutions</text>
51
- <text x="100" y="483" font-size="12" fill="#8b949e">injected before you ask</text>
52
- <text x="100" y="502" font-size="11" fill="#484f58">→ capture-correction · read-lessons</text>
53
- <text x="100" y="519" font-size="11" fill="#484f58">→ ~/.kodelyth/memory/ — zero cloud</text>
54
-
55
- <!-- Middle separator -->
56
- <line x1="460" y1="130" x2="460" y2="560" stroke="#21262d" stroke-width="1"/>
57
-
58
- <!-- Right column — more agents -->
59
- <!-- Card 4 -->
60
- <rect x="480" y="140" width="360" height="120" rx="8" fill="url(#card)" stroke="#21262d" stroke-width="1"/>
61
- <rect x="480" y="140" width="4" height="120" rx="2" fill="#22d3ee"/>
62
- <text x="500" y="166" font-size="13" font-weight="700" fill="#ffffff">code-reviewer</text>
63
- <text x="500" y="185" font-size="12" fill="#8b949e">"take a look at this"</text>
64
- <text x="500" y="201" font-size="12" fill="#8b949e">[paste code with no text]</text>
65
- <text x="500" y="220" font-size="11" fill="#484f58">→ auto-detects naked code paste</text>
66
- <text x="500" y="237" font-size="11" fill="#484f58">→ 12 language-specific variants</text>
67
-
68
- <!-- Card 5 -->
69
- <rect x="480" y="280" width="360" height="120" rx="8" fill="#0d2b1d" stroke="#059669" stroke-opacity="0.4" stroke-width="1"/>
70
- <rect x="480" y="280" width="4" height="120" rx="2" fill="url(#mem)"/>
71
- <rect x="646" y="286" width="78" height="18" rx="9" fill="#059669" fill-opacity="0.25" stroke="#059669" stroke-opacity="0.5" stroke-width="1"/>
72
- <text x="685" y="299" font-size="9" fill="#10b981" text-anchor="middle" font-weight="700">v1.8.0</text>
73
- <text x="500" y="306" font-size="13" font-weight="700" fill="#ffffff">image-architect</text>
74
- <text x="500" y="325" font-size="12" fill="#8b949e">"my site looks plain / boring"</text>
75
- <text x="500" y="341" font-size="12" fill="#8b949e">"I need an OG image / social card"</text>
76
- <text x="500" y="360" font-size="11" fill="#484f58">→ Gemini Imagen 3 / DALL-E 3 / SVG</text>
77
- <text x="500" y="377" font-size="11" fill="#484f58">→ platform-aware, always free via SVG</text>
78
-
79
- <!-- Card 6 -->
80
- <rect x="480" y="420" width="360" height="120" rx="8" fill="url(#card)" stroke="#21262d" stroke-width="1"/>
81
- <rect x="480" y="420" width="4" height="120" rx="2" fill="#38bdf8"/>
82
- <text x="500" y="448" font-size="13" font-weight="700" fill="#ffffff">more agents</text>
83
- <text x="500" y="467" font-size="12" fill="#8b949e">security-reviewer · ux-reviewer</text>
84
- <text x="500" y="483" font-size="12" fill="#8b949e">incident-commander · load-tester</text>
85
- <text x="500" y="502" font-size="11" fill="#484f58">performance-optimizer · migration-guide</text>
86
- <text x="500" y="519" font-size="11" fill="#484f58">tdd-guide · git-rescue · release-captain</text>
87
-
88
- <!-- Install bar -->
89
- <rect x="80" y="568" width="760" height="52" rx="8" fill="#0d1117" stroke="#21262d" stroke-width="1"/>
90
- <text x="460" y="590" font-size="13" fill="#10b981" text-anchor="middle" font-weight="700">$ npx kodelyth-ecc</text>
91
- <text x="460" y="608" font-size="12" fill="#484f58" text-anchor="middle">Works with Claude Code · Windsurf · Cursor · Codex · Antigravity · OpenCode</text>
92
-
93
- <!-- Stats -->
94
- <text x="920" y="200" font-size="72" font-weight="900" fill="#ffffff" text-anchor="middle">70</text>
95
- <text x="920" y="228" font-size="10" fill="#484f58" text-anchor="middle" letter-spacing="3">AGENTS</text>
96
- <line x1="860" y1="248" x2="980" y2="248" stroke="#21262d" stroke-width="1"/>
97
- <text x="920" y="280" font-size="32" font-weight="800" fill="#ffffff" text-anchor="middle">194</text>
98
- <text x="920" y="302" font-size="10" fill="#484f58" text-anchor="middle" letter-spacing="2">SKILLS</text>
99
- <line x1="860" y1="320" x2="980" y2="320" stroke="#21262d" stroke-width="1"/>
100
- <text x="920" y="352" font-size="32" font-weight="800" fill="#ffffff" text-anchor="middle">22+</text>
101
- <text x="920" y="374" font-size="10" fill="#484f58" text-anchor="middle" letter-spacing="2">HOOKS</text>
102
- <line x1="860" y1="392" x2="980" y2="392" stroke="#21262d" stroke-width="1"/>
103
- <text x="920" y="424" font-size="32" font-weight="800" fill="#ffffff" text-anchor="middle">12</text>
104
- <text x="920" y="446" font-size="10" fill="#484f58" text-anchor="middle" letter-spacing="2">PLATFORMS</text>
105
- <line x1="860" y1="464" x2="980" y2="464" stroke="#21262d" stroke-width="1"/>
106
- <text x="920" y="496" font-size="20" font-weight="800" fill="#ffffff" text-anchor="middle">v1.8.0</text>
107
- <text x="920" y="516" font-size="10" fill="#484f58" text-anchor="middle" letter-spacing="2">LATEST</text>
108
-
109
- <!-- Ghost Depth Mark — brand stamp (scale 0.55×) -->
110
- <g transform="translate(1044, 282) scale(0.55)" opacity="0.16">
111
- <polyline points="-44,4 12,100 -44,196"
112
- stroke="#ffffff" stroke-width="10"
113
- stroke-linecap="round" stroke-linejoin="round"
114
- fill="none"/>
115
- <polyline points="0,0 88,100 0,200"
116
- stroke="#ffffff" stroke-width="32"
117
- stroke-linecap="round" stroke-linejoin="round"
118
- fill="none"/>
119
- </g>
120
- </svg>
@@ -1,71 +0,0 @@
1
- <svg width="1200" height="675" viewBox="0 0 1200 675" xmlns="http://www.w3.org/2000/svg" font-family="'Segoe UI', system-ui, -apple-system, sans-serif">
2
- <defs>
3
- <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
- <stop offset="0%" style="stop-color:#050811"/>
5
- <stop offset="100%" style="stop-color:#0d1117"/>
6
- </linearGradient>
7
- <linearGradient id="accent" x1="0%" y1="0%" x2="100%" y2="0%">
8
- <stop offset="0%" style="stop-color:#a78bfa"/>
9
- <stop offset="100%" style="stop-color:#38bdf8"/>
10
- </linearGradient>
11
- </defs>
12
-
13
- <rect width="1200" height="675" fill="url(#bg)"/>
14
- <circle cx="1100" cy="580" r="320" fill="#059669" opacity="0.04"/>
15
- <circle cx="100" cy="120" r="200" fill="#a78bfa" opacity="0.03"/>
16
-
17
- <!-- Main headline -->
18
- <text x="80" y="120" font-size="72" font-weight="900" letter-spacing="-3" fill="#ffffff">100% free.</text>
19
- <text x="80" y="200" font-size="72" font-weight="900" letter-spacing="-3" fill="url(#accent)">100% local.</text>
20
- <text x="80" y="272" font-size="24" fill="#6e7681" font-weight="400">No dashboard. No telemetry. No cloud. No account.</text>
21
- <text x="80" y="306" font-size="24" fill="#6e7681">Just files on your disk that make your AI smarter.</text>
22
-
23
- <line x1="80" y1="340" x2="1120" y2="340" stroke="#21262d" stroke-width="1"/>
24
-
25
- <!-- Three pillars -->
26
- <!-- Pillar 1 -->
27
- <rect x="80" y="364" width="320" height="180" rx="10" fill="#161b22" stroke="#21262d" stroke-width="1"/>
28
- <rect x="80" y="364" width="4" height="180" rx="2" fill="#a78bfa"/>
29
- <text x="100" y="396" font-size="32" font-weight="900" fill="#ffffff">Zero cost</text>
30
- <text x="100" y="426" font-size="14" fill="#8b949e">No API keys. No subscriptions.</text>
31
- <text x="100" y="446" font-size="14" fill="#8b949e">No usage limits. No vendor lock-in.</text>
32
- <text x="100" y="476" font-size="12" fill="#484f58">Install once. Works forever.</text>
33
- <text x="100" y="494" font-size="12" fill="#484f58">Fork it, edit it, own it.</text>
34
- <text x="100" y="528" font-size="11" fill="#30363d">npx kodelyth-ecc</text>
35
-
36
- <!-- Pillar 2 -->
37
- <rect x="430" y="364" width="320" height="180" rx="10" fill="#161b22" stroke="#21262d" stroke-width="1"/>
38
- <rect x="430" y="364" width="4" height="180" rx="2" fill="#059669"/>
39
- <text x="450" y="396" font-size="32" font-weight="900" fill="#ffffff">Zero cloud</text>
40
- <text x="450" y="426" font-size="14" fill="#8b949e">Memory at ~/.kodelyth/memory/</text>
41
- <text x="450" y="446" font-size="14" fill="#8b949e">Lessons at tasks/lessons.md</text>
42
- <text x="450" y="476" font-size="12" fill="#484f58">Your data never leaves your machine.</text>
43
- <text x="450" y="494" font-size="12" fill="#484f58">BM25 search — no embeddings needed.</text>
44
- <text x="450" y="528" font-size="11" fill="#30363d">ls ~/.kodelyth/memory/</text>
45
-
46
- <!-- Pillar 3 -->
47
- <rect x="780" y="364" width="340" height="180" rx="10" fill="#161b22" stroke="#21262d" stroke-width="1"/>
48
- <rect x="780" y="364" width="4" height="180" rx="2" fill="#38bdf8"/>
49
- <text x="800" y="396" font-size="32" font-weight="900" fill="#ffffff">Gets smarter</text>
50
- <text x="800" y="426" font-size="14" fill="#8b949e">Every correction → lessons.md</text>
51
- <text x="800" y="446" font-size="14" fill="#8b949e">Every session → better context</text>
52
- <text x="800" y="476" font-size="12" fill="#484f58">Month 1: knows your style.</text>
53
- <text x="800" y="494" font-size="12" fill="#484f58">Month 3: works like it's been here years.</text>
54
- <text x="800" y="528" font-size="11" fill="#30363d">Compound learning — v1.8.0</text>
55
-
56
- <!-- Footer CTA -->
57
- <text x="80" y="606" font-size="20" fill="#484f58">$ npx kodelyth-ecc</text>
58
- <text x="1120" y="606" font-size="16" fill="#484f58" text-anchor="end">v1.8.0 · github.com/sifxprime/kodelyth-ecc</text>
59
-
60
- <!-- Ghost Depth Mark — brand stamp (scale 0.55×) -->
61
- <g transform="translate(1044, 282) scale(0.55)" opacity="0.16">
62
- <polyline points="-44,4 12,100 -44,196"
63
- stroke="#ffffff" stroke-width="10"
64
- stroke-linecap="round" stroke-linejoin="round"
65
- fill="none"/>
66
- <polyline points="0,0 88,100 0,200"
67
- stroke="#ffffff" stroke-width="32"
68
- stroke-linecap="round" stroke-linejoin="round"
69
- fill="none"/>
70
- </g>
71
- </svg>
@@ -1,94 +0,0 @@
1
- <svg width="1200" height="675" viewBox="0 0 1200 675" xmlns="http://www.w3.org/2000/svg" font-family="'Segoe UI', system-ui, -apple-system, sans-serif">
2
- <defs>
3
- <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
- <stop offset="0%" style="stop-color:#050811"/>
5
- <stop offset="100%" style="stop-color:#020a05"/>
6
- </linearGradient>
7
- <linearGradient id="mem" x1="0%" y1="0%" x2="0%" y2="100%">
8
- <stop offset="0%" style="stop-color:#059669"/>
9
- <stop offset="100%" style="stop-color:#065f46"/>
10
- </linearGradient>
11
- <linearGradient id="termGrad" x1="0%" y1="0%" x2="0%" y2="100%">
12
- <stop offset="0%" style="stop-color:#0d1a0d"/>
13
- <stop offset="100%" style="stop-color:#050811"/>
14
- </linearGradient>
15
- </defs>
16
-
17
- <rect width="1200" height="675" fill="url(#bg)"/>
18
- <circle cx="1100" cy="560" r="300" fill="#059669" opacity="0.05"/>
19
- <circle cx="100" cy="120" r="180" fill="#059669" opacity="0.04"/>
20
-
21
- <!-- Header -->
22
- <text x="80" y="96" font-size="56" font-weight="900" letter-spacing="-2" fill="#ffffff">20+ hooks.</text>
23
- <text x="80" y="158" font-size="56" font-weight="900" letter-spacing="-2" fill="#10b981">Always running.</text>
24
- <text x="80" y="204" font-size="20" fill="#6e7681">Quality gates that fire automatically — zero configuration after install.</text>
25
-
26
- <line x1="80" y1="232" x2="1120" y2="232" stroke="#1a3a1a" stroke-width="1"/>
27
-
28
- <!-- Hook cards — left column -->
29
- <rect x="80" y="252" width="490" height="68" rx="8" fill="#0d1a0d" stroke="#059669" stroke-opacity="0.3" stroke-width="1"/>
30
- <rect x="80" y="252" width="3" height="68" rx="1" fill="url(#mem)"/>
31
- <text x="96" y="276" font-size="11" font-weight="700" fill="#10b981" letter-spacing="1">SESSION START — read-lessons.js</text>
32
- <text x="96" y="296" font-size="13" fill="#8b949e">Reads tasks/lessons.md → injects hard rules + project DNA</text>
33
- <text x="96" y="311" font-size="11" fill="#484f58">before your first message · fires first · v1.8.0</text>
34
-
35
- <rect x="80" y="336" width="490" height="68" rx="8" fill="#0d1a0d" stroke="#059669" stroke-opacity="0.3" stroke-width="1"/>
36
- <rect x="80" y="336" width="3" height="68" rx="1" fill="url(#mem)"/>
37
- <text x="96" y="360" font-size="11" font-weight="700" fill="#10b981" letter-spacing="1">STOP — capture-correction.js</text>
38
- <text x="96" y="380" font-size="13" fill="#8b949e">Scans session JSONL for corrections → writes to lessons.md</text>
39
- <text x="96" y="395" font-size="11" fill="#484f58">12 signal patterns · async · zero latency · v1.8.0</text>
40
-
41
- <rect x="80" y="420" width="490" height="68" rx="8" fill="#161b22" stroke="#21262d" stroke-width="1"/>
42
- <rect x="80" y="420" width="3" height="68" rx="1" fill="#a78bfa"/>
43
- <text x="96" y="444" font-size="11" font-weight="700" fill="#a78bfa" letter-spacing="1">SESSION START — memory inject</text>
44
- <text x="96" y="464" font-size="13" fill="#8b949e">BM25 recall from ~/.kodelyth/memory/ → past solutions</text>
45
- <text x="96" y="479" font-size="11" fill="#484f58">cache-friendly prefix · auto-fires · v1.8.0</text>
46
-
47
- <rect x="80" y="504" width="490" height="68" rx="8" fill="#161b22" stroke="#21262d" stroke-width="1"/>
48
- <rect x="80" y="504" width="3" height="68" rx="1" fill="#a78bfa"/>
49
- <text x="96" y="528" font-size="11" font-weight="700" fill="#a78bfa" letter-spacing="1">USER PROMPT — auto chat recall</text>
50
- <text x="96" y="548" font-size="13" fill="#8b949e">Watches every prompt → injects relevant memories before AI responds</text>
51
- <text x="96" y="563" font-size="11" fill="#484f58">per-session dedup · skips trivial prompts · v1.8.0</text>
52
-
53
- <!-- Right column — quality hooks -->
54
- <rect x="606" y="252" width="514" height="68" rx="8" fill="#161b22" stroke="#21262d" stroke-width="1"/>
55
- <rect x="606" y="252" width="3" height="68" rx="1" fill="#ef4444"/>
56
- <text x="622" y="276" font-size="11" font-weight="700" fill="#ef4444" letter-spacing="1">PRE-COMMIT — secret scanner</text>
57
- <text x="622" y="296" font-size="13" fill="#8b949e">Catches API keys, passwords, tokens before they ship</text>
58
- <text x="622" y="311" font-size="11" fill="#484f58">blocks commit · reports exact line · always-on</text>
59
-
60
- <rect x="606" y="336" width="514" height="68" rx="8" fill="#161b22" stroke="#21262d" stroke-width="1"/>
61
- <rect x="606" y="336" width="3" height="68" rx="1" fill="#f59e0b"/>
62
- <text x="622" y="360" font-size="11" font-weight="700" fill="#f59e0b" letter-spacing="1">POST EDIT — quality gate</text>
63
- <text x="622" y="380" font-size="13" fill="#8b949e">Runs type check + format after every file write</text>
64
- <text x="622" y="395" font-size="11" fill="#484f58">async · under 5s · configurable per project</text>
65
-
66
- <rect x="606" y="420" width="514" height="68" rx="8" fill="#161b22" stroke="#21262d" stroke-width="1"/>
67
- <rect x="606" y="420" width="3" height="68" rx="1" fill="#22d3ee"/>
68
- <text x="622" y="444" font-size="11" font-weight="700" fill="#22d3ee" letter-spacing="1">PRE-PUSH — branch + commit guard</text>
69
- <text x="622" y="464" font-size="13" fill="#8b949e">Validates branch name + commit message format</text>
70
- <text x="622" y="479" font-size="11" fill="#484f58">conventional commits · prompts review before push</text>
71
-
72
- <rect x="606" y="504" width="514" height="68" rx="8" fill="#161b22" stroke="#21262d" stroke-width="1"/>
73
- <rect x="606" y="504" width="3" height="68" rx="1" fill="#38bdf8"/>
74
- <text x="622" y="528" font-size="11" font-weight="700" fill="#38bdf8" letter-spacing="1">STOP — desktop notify + cost tracker</text>
75
- <text x="622" y="548" font-size="13" fill="#8b949e">macOS notification when long task finishes · logs token usage</text>
76
- <text x="622" y="563" font-size="11" fill="#484f58">~/.claude/logs/token-usage.jsonl · session cost tracking</text>
77
-
78
- <!-- Footer -->
79
- <text x="80" y="618" font-size="16" fill="#484f58">All hooks fire automatically after</text>
80
- <text x="340" y="618" font-size="16" fill="#10b981" font-weight="600"> npx kodelyth-ecc</text>
81
- <text x="1120" y="618" font-size="14" fill="#484f58" text-anchor="end">v1.8.0</text>
82
-
83
- <!-- Ghost Depth Mark — brand stamp (scale 0.55×) -->
84
- <g transform="translate(1044, 282) scale(0.55)" opacity="0.16">
85
- <polyline points="-44,4 12,100 -44,196"
86
- stroke="#ffffff" stroke-width="10"
87
- stroke-linecap="round" stroke-linejoin="round"
88
- fill="none"/>
89
- <polyline points="0,0 88,100 0,200"
90
- stroke="#ffffff" stroke-width="32"
91
- stroke-linecap="round" stroke-linejoin="round"
92
- fill="none"/>
93
- </g>
94
- </svg>