kodelyth-ecc 1.7.3 → 1.7.5

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 (73) hide show
  1. package/.github/ISSUE_TEMPLATE/config.yml +8 -0
  2. package/.github/ISSUE_TEMPLATE/feature_request.md +41 -0
  3. package/.github/ISSUE_TEMPLATE/good_first_issue.md +36 -0
  4. package/CHANGELOG.md +43 -0
  5. package/GITHUB_SETUP.md +553 -0
  6. package/README.md +55 -6
  7. package/VERSION +1 -1
  8. package/actions/ecc-review/README.md +7 -7
  9. package/brand/concepts.svg +109 -0
  10. package/brand/convert.js +161 -0
  11. package/brand/favicon.svg +7 -0
  12. package/brand/fb-cover.svg +34 -0
  13. package/brand/fb-profile.svg +21 -0
  14. package/brand/kodelyth-dark.svg +24 -0
  15. package/brand/kodelyth-light.svg +24 -0
  16. package/brand/kodelyth-mark.svg +20 -0
  17. package/brand/package.json +12 -0
  18. package/bundles/enterprise.md +1 -1
  19. package/bundles/indie-hacker.md +1 -1
  20. package/bundles/red-team.md +1 -1
  21. package/docs/supply-chain.md +1 -1
  22. package/package.json +4 -1
  23. package/rules/common/memory-protocol.md +35 -4
  24. package/scripts/dashboard/data.js +261 -4
  25. package/scripts/dashboard/server.js +28 -3
  26. package/scripts/dashboard/static/index.html +63 -3
  27. package/social/card-agents.svg +12 -0
  28. package/social/card-install.svg +13 -1
  29. package/social/card-main.svg +14 -2
  30. package/social/facebook-v150.svg +17 -4
  31. package/social/github-social-preview.svg +51 -138
  32. package/social/hype-compound-learning.svg +129 -0
  33. package/social/hype-devil-mode.svg +240 -0
  34. package/social/hype-mcp-server.svg +148 -0
  35. package/social/hype-parallel-agents.svg +162 -0
  36. package/social/hype-stats-hero.svg +138 -0
  37. package/social/og-image.svg +65 -0
  38. package/social/readme-agents.svg +14 -2
  39. package/social/readme-hero.svg +17 -4
  40. package/social/section-agents.svg +12 -0
  41. package/social/section-author.svg +12 -0
  42. package/social/section-dashboard.svg +12 -0
  43. package/social/section-devil.svg +12 -0
  44. package/social/section-hooks.svg +12 -0
  45. package/social/section-install.svg +12 -0
  46. package/social/section-learning.svg +12 -0
  47. package/social/section-mcp.svg +13 -1
  48. package/social/section-memory.svg +12 -0
  49. package/social/section-parallel.svg +12 -0
  50. package/social/section-routing.svg +12 -0
  51. package/social/twitter-threads.md +621 -0
  52. package/social/x-card-agents-grid.svg +14 -2
  53. package/social/x-card-free.svg +14 -2
  54. package/social/x-card-hook.svg +17 -5
  55. package/tests/dashboard/data.test.js +156 -0
  56. package/tests/dashboard/server.test.js +17 -0
  57. package/wiki/FAQ.md +1 -1
  58. package/wiki/Home.md +5 -3
  59. package/wiki/Installation-Guide.md +2 -2
  60. package/MARKETING_PLAN.md +0 -893
  61. package/cat +0 -0
  62. package/social/facebook-group/POST.md +0 -121
  63. package/social/facebook-group/fb-1-3am-debug.png +0 -0
  64. package/social/facebook-group/fb-1-3am-debug.svg +0 -97
  65. package/social/facebook-group/fb-2-cpu-upgrade.png +0 -0
  66. package/social/facebook-group/fb-2-cpu-upgrade.svg +0 -132
  67. package/social/facebook-group/fb-3-before-after.png +0 -0
  68. package/social/facebook-group/fb-3-before-after.svg +0 -94
  69. package/videos/README.md +0 -88
  70. package/videos/video-01-install-and-routing.md +0 -258
  71. package/videos/video-02-compound-memory.md +0 -301
  72. package/videos/video-03-devil-mode.md +0 -294
  73. package/videos/video-04-mcp-server.md +0 -391
package/README.md CHANGED
@@ -2,13 +2,16 @@
2
2
 
3
3
  <img src="social/readme-hero.svg" alt="Kodelyth ECC — AI Agent Toolkit" width="900"/>
4
4
 
5
+ [![npm version](https://img.shields.io/npm/v/kodelyth-ecc.svg)](https://www.npmjs.com/package/kodelyth-ecc)
6
+ [![npm downloads](https://img.shields.io/npm/dm/kodelyth-ecc.svg)](https://www.npmjs.com/package/kodelyth-ecc)
7
+ [![GitHub Stars](https://img.shields.io/github/stars/sifxprime/kodelyth-ecc?style=social)](https://github.com/sifxprime/kodelyth-ecc/stargazers)
5
8
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
9
+ ![Tests](https://img.shields.io/badge/tests-336%20passing-brightgreen)
6
10
  ![Claude Code](https://img.shields.io/badge/Claude%20Code-Ready-8A2BE2)
7
11
  ![Windsurf](https://img.shields.io/badge/Windsurf-Ready-06b6d4)
8
12
  ![Antigravity](https://img.shields.io/badge/Antigravity-Ready-00ADD8)
9
13
  ![Cursor](https://img.shields.io/badge/Cursor-Ready-3b82f6)
10
14
  ![Codex](https://img.shields.io/badge/Codex-Ready-10b981)
11
- ![Version](https://img.shields.io/badge/version-1.7.0-orange)
12
15
  ![Agents](https://img.shields.io/badge/Agents-70-brightgreen)
13
16
  ![Devil Mode](https://img.shields.io/badge/Devil%20Mode-new-red)
14
17
  ![Skills](https://img.shields.io/badge/Skills-194-brightgreen)
@@ -74,7 +77,7 @@ You never typed `use debug-detective`. You didn't have to. The toolkit read the
74
77
  | Quality hooks | ✅ 22+ | Some | ❌ | ❌ |
75
78
  | IDE platforms | **11** (Claude Code, Windsurf, Cursor, Codex, Antigravity, OpenCode, Cline, Roo Code, Aider, Kimi, Gemini CLI) | 1-2 | 1 | Varies |
76
79
  | Telemetry | ❌ none | Varies | ❌ | Varies |
77
- | Test coverage | ✅ 336 tests | ❌ | ❌ | ❌ |
80
+ | Test coverage | ✅ 348 tests | ❌ | ❌ | ❌ |
78
81
  | Distributed via | `npx`, curl, clone | Manual | Manual | Manual |
79
82
 
80
83
  ---
@@ -125,6 +128,30 @@ Feature depth varies by platform — hooks are a Claude Code native format, and
125
128
 
126
129
  Hooks use Claude Code's JSON settings format — no equivalent exists on other platforms. Cursor reads rules and skills from `.cursor/`; its agent system uses a different format not yet compatible with ECC agents.
127
130
 
131
+ ### Memory & dashboard reality per IDE
132
+
133
+ Memory storage is a single shared file at `~/.kodelyth/memory/memories.jsonl` — every IDE on the same machine reads and writes the **same** memories. The only thing that varies is *how* memories surface:
134
+
135
+ | Platform | Auto-recall on every prompt | Auto-capture on success | Manual recall via MCP tool | Dashboard "Live IDE activity" |
136
+ |---|---|---|---|---|
137
+ | **Claude Code** | ✓ (hook) | ✓ (hook) | ✓ | ✓ Claude session files |
138
+ | **Windsurf** | — | — | ✓ `recall_memory` | ✓ Windsurf + Windsurf-Next state |
139
+ | **Cursor** | — | — | ✓ `recall_memory` | ✓ workspace storage dirs |
140
+ | **Codex CLI** | — | — | ✓ `recall_memory` | — |
141
+ | **Antigravity** | — | — | ✓ `recall_memory` | ✓ `.agent/` in cwd |
142
+ | **Roo Code / Aider / Kimi / Cline / Gemini CLI / OpenCode** | — | — | ✓ if MCP-capable | — |
143
+
144
+ What this means in practice:
145
+ - A memory captured in **Claude Code** is recall-able from every other IDE the same day — the file is shared.
146
+ - In **Windsurf / Cursor / Codex / Antigravity**, the AI does NOT auto-fire memory recall; the `rules/common/memory-protocol.md` rule (installed automatically) tells the AI to call the `recall_memory` MCP tool proactively at the start of substantive prompts.
147
+ - The dashboard's **Sessions → Live IDE activity** tab surfaces session files for Claude Code, Windsurf, Windsurf-Next, Cursor, and Antigravity. Add custom paths via the `KODELYTH_EXTRA_IDE_WATCH` env var (comma-separated).
148
+
149
+ ```bash
150
+ # Watch additional paths in the dashboard
151
+ export KODELYTH_EXTRA_IDE_WATCH="$HOME/my-agent-logs,$HOME/other-tool/state"
152
+ npx kodelyth-ecc dashboard
153
+ ```
154
+
128
155
  ### Option 2 — npx from GitHub (always latest commit)
129
156
 
130
157
  ```bash
@@ -352,7 +379,13 @@ What's inside:
352
379
  | **Memory** | Browse, search, and manage your local BM25 memory store |
353
380
  | **Evolve** | Self-improving memory — review AI-proposed refinements |
354
381
  | **Catalog** | Full searchable index of all 70 agents, 194 skills, 97 commands |
355
- | **Sessions** | Browse past session excerpts and exported bundles |
382
+ | **Sessions** | **Live IDE activity** (Claude Code, Windsurf, Windsurf-Next, Cursor, Antigravity) + orchestration/swarm sessions |
383
+
384
+ Real-time:
385
+ - SSE push every 3 seconds, only when at least one browser tab is connected (zero CPU otherwise)
386
+ - Watches memory writes, evolve signals, token-budget changes, and IDE session files
387
+ - "Last activity" auto-updates without a page refresh
388
+ - Set `KODELYTH_EXTRA_IDE_WATCH=path1,path2` to watch additional paths
356
389
 
357
390
  Security design:
358
391
  - **GET-only** — no write endpoints accessible from the UI
@@ -512,6 +545,10 @@ Project: **my-app**
512
545
  <img src="social/section-agents.svg" alt="70 specialist agents — one for every situation" width="900"/>
513
546
  </div>
514
547
 
548
+ <div align="center">
549
+ <img src="social/readme-agents.svg" alt="70 specialist agents — agent grid preview" width="900"/>
550
+ </div>
551
+
515
552
  ### Kodelyth Exclusives — The 16 Agents That Make ECC
516
553
 
517
554
  | Agent | One-line job |
@@ -752,12 +789,24 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for templates, checklists, and the full K
752
789
 
753
790
  ## Changelog
754
791
 
755
- See [CHANGELOG.md](CHANGELOG.md). v1.7.0 highlights:
792
+ See [CHANGELOG.md](CHANGELOG.md). v1.7.5 highlights:
793
+
794
+ - **Real-time IDE-aware dashboard** — Sessions tab now surfaces live Claude Code / Windsurf / Windsurf-Next / Cursor / Antigravity activity; SSE poll 10 s → 3 s; new `/api/ide-sessions` endpoint
795
+ - **Cross-IDE memory protocol** — `rules/common/memory-protocol.md` now explicitly instructs non-Claude IDEs (Windsurf, Cursor, Codex, Antigravity) to call the `recall_memory` and `capture_memory` MCP tools proactively
796
+ - **`KODELYTH_EXTRA_IDE_WATCH` env var** — add custom watch paths to the dashboard (comma/semicolon/colon-separated)
797
+ - **Watch-path fixes** — broken `proposals.jsonl`-only watch now also watches `routing-misses.jsonl` and the `token-budget/` directory
798
+ - **+12 dashboard tests** for IDE platform coverage and cross-platform path resolution
799
+
800
+ v1.7.3 highlights:
801
+
802
+ - **Social hype pack** — 5 X/Twitter SVG cards + 5 thread scripts, full SVG version sync, GitHub issue templates, repo polish
803
+
804
+ v1.7.0 highlights:
756
805
 
757
- - **MCP Server** — 16 tools, 6 prompts, 365 resources; stdio JSON-RPC; zero telemetry; works with Claude Desktop, LangGraph, AutoGen, CrewAI, OpenAI Agents SDK
806
+ - **MCP Server** — 16 tools, 6 prompts, 377 resources; stdio JSON-RPC; zero telemetry; works with Claude Desktop, LangGraph, AutoGen, CrewAI, OpenAI Agents SDK
758
807
  - **Dashboard hardening** — DNS rebinding protection, shell injection fix (`execFileSync`), CSP on all responses, SSE client cap (max 10), TOCTOU fixes
759
808
  - **Devil Mode** — 8 adversarial agents, `--pre-public` / `--pre-launch` / `--all` flags, real bash-grep patterns and remediation playbooks
760
- - **336 tests** passing across 24 test files
809
+ - **336 tests** passing across 24 test files (now 348 at v1.7.5)
761
810
 
762
811
  v1.5.8 highlights:
763
812
 
package/VERSION CHANGED
@@ -1 +1 @@
1
- 1.7.3
1
+ 1.7.5
@@ -29,7 +29,7 @@ jobs:
29
29
  with:
30
30
  fetch-depth: 0
31
31
 
32
- - uses: sifxprime/kodelyth-ecc/actions/ecc-review@v1.6.0
32
+ - uses: sifxprime/kodelyth-ecc/actions/ecc-review@v1.7.3
33
33
  with:
34
34
  bundle: red-team
35
35
  fail-on: critical
@@ -75,7 +75,7 @@ That's it. Every PR now gets reviewed by ECC's adversarial crew and the findings
75
75
  To run a custom set, use `agents:` instead:
76
76
 
77
77
  ```yaml
78
- - uses: sifxprime/kodelyth-ecc/actions/ecc-review@v1.6.0
78
+ - uses: sifxprime/kodelyth-ecc/actions/ecc-review@v1.7.3
79
79
  with:
80
80
  agents: secret-hunter,license-violation-finder,jailbreak-tester
81
81
  ```
@@ -87,7 +87,7 @@ To run a custom set, use `agents:` instead:
87
87
  ### 1. Indie Hacker — fast feedback, never block
88
88
 
89
89
  ```yaml
90
- - uses: sifxprime/kodelyth-ecc/actions/ecc-review@v1.6.0
90
+ - uses: sifxprime/kodelyth-ecc/actions/ecc-review@v1.7.3
91
91
  with:
92
92
  bundle: indie-hacker
93
93
  fail-on: none
@@ -99,7 +99,7 @@ PR gets a comment, but CI never fails. You decide what to address.
99
99
  ### 2. Red Team — full adversarial sweep, block on critical
100
100
 
101
101
  ```yaml
102
- - uses: sifxprime/kodelyth-ecc/actions/ecc-review@v1.6.0
102
+ - uses: sifxprime/kodelyth-ecc/actions/ecc-review@v1.7.3
103
103
  with:
104
104
  bundle: red-team
105
105
  fail-on: critical
@@ -111,7 +111,7 @@ Default. Recommended for any user-facing product.
111
111
  ### 3. Enterprise — strict, block on high
112
112
 
113
113
  ```yaml
114
- - uses: sifxprime/kodelyth-ecc/actions/ecc-review@v1.6.0
114
+ - uses: sifxprime/kodelyth-ecc/actions/ecc-review@v1.7.3
115
115
  with:
116
116
  bundle: enterprise
117
117
  fail-on: high
@@ -121,7 +121,7 @@ Default. Recommended for any user-facing product.
121
121
  ### 4. Pre-public-release — secret + license + AI safety only
122
122
 
123
123
  ```yaml
124
- - uses: sifxprime/kodelyth-ecc/actions/ecc-review@v1.6.0
124
+ - uses: sifxprime/kodelyth-ecc/actions/ecc-review@v1.7.3
125
125
  with:
126
126
  agents: secret-hunter,license-violation-finder,prompt-injection-hunter
127
127
  fail-on: critical
@@ -236,7 +236,7 @@ Reduce findings by tightening `agents:` or `max-files:`. The action caps to firs
236
236
 
237
237
  - [Kodelyth ECC repo](https://github.com/sifxprime/kodelyth-ecc) — the toolkit this action runs
238
238
  - [`/devil-mode` command](../../commands/devil-mode.md) — same agents, run locally
239
- - [Devil Roadmap](../../) — the broader v1.6.0 → v2.0.0 plan
239
+ - [Devil Roadmap](../../) — the broader v1.7.3 → v2.0.0 plan
240
240
 
241
241
  ---
242
242
 
@@ -0,0 +1,109 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 920 400" width="920" height="400"
2
+ font-family="'Space Grotesk','Inter',system-ui,-apple-system,sans-serif">
3
+
4
+ <rect width="920" height="400" fill="#ffffff"/>
5
+
6
+ <!-- grid lines -->
7
+ <line x1="230" y1="0" x2="230" y2="400" stroke="#f1f5f9" stroke-width="1"/>
8
+ <line x1="460" y1="0" x2="460" y2="400" stroke="#f1f5f9" stroke-width="1"/>
9
+ <line x1="690" y1="0" x2="690" y2="400" stroke="#f1f5f9" stroke-width="1"/>
10
+ <line x1="0" y1="195" x2="920" y2="195" stroke="#f1f5f9" stroke-width="1"/>
11
+
12
+
13
+ <!-- ═══ ROW 1 ═══════════════════════════════════════════════════════════ -->
14
+
15
+ <!-- 01 · Stroke chevron — the baseline -->
16
+ <text x="115" y="26" font-size="9" font-weight="600" fill="#cbd5e1" text-anchor="middle" letter-spacing="3">01</text>
17
+ <g transform="translate(115,95)">
18
+ <polyline points="-16,-28 16,0 -16,28"
19
+ stroke="#0f172a" stroke-width="7.5"
20
+ stroke-linecap="round" stroke-linejoin="round" fill="none"/>
21
+ </g>
22
+ <text x="115" y="158" font-size="13" font-weight="700" fill="#0f172a" text-anchor="middle" letter-spacing="1.5">KODELYTH</text>
23
+ <text x="115" y="175" font-size="8.5" fill="#94a3b8" text-anchor="middle" letter-spacing="2.5">STROKE</text>
24
+
25
+
26
+ <!-- 02 · Filled chevron (open back) -->
27
+ <text x="345" y="26" font-size="9" font-weight="600" fill="#cbd5e1" text-anchor="middle" letter-spacing="3">02</text>
28
+ <g transform="translate(345,95)">
29
+ <polygon points="-14,-29 18,0 -14,29 -3,29 11,0 -3,-29" fill="#0f172a"/>
30
+ </g>
31
+ <text x="345" y="158" font-size="13" font-weight="700" fill="#0f172a" text-anchor="middle" letter-spacing="1.5">KODELYTH</text>
32
+ <text x="345" y="175" font-size="8.5" fill="#94a3b8" text-anchor="middle" letter-spacing="2.5">FILLED OPEN</text>
33
+
34
+
35
+ <!-- 03 · Filled triangle (closed back — most Vercel) -->
36
+ <text x="575" y="26" font-size="9" font-weight="600" fill="#cbd5e1" text-anchor="middle" letter-spacing="3">03</text>
37
+ <g transform="translate(575,95)">
38
+ <polygon points="-18,-28 20,0 -18,28" fill="#0f172a"/>
39
+ </g>
40
+ <text x="575" y="158" font-size="13" font-weight="700" fill="#0f172a" text-anchor="middle" letter-spacing="1.5">KODELYTH</text>
41
+ <text x="575" y="175" font-size="8.5" fill="#94a3b8" text-anchor="middle" letter-spacing="2.5">SOLID WEDGE</text>
42
+
43
+
44
+ <!-- 04 · Double chevron >> -->
45
+ <text x="805" y="26" font-size="9" font-weight="600" fill="#cbd5e1" text-anchor="middle" letter-spacing="3">04</text>
46
+ <g transform="translate(805,95)">
47
+ <polyline points="-22,-26 -2,0 -22,26"
48
+ stroke="#0f172a" stroke-width="5.5"
49
+ stroke-linecap="round" stroke-linejoin="round" fill="none"/>
50
+ <polyline points="-4,-26 16,0 -4,26"
51
+ stroke="#0f172a" stroke-width="5.5"
52
+ stroke-linecap="round" stroke-linejoin="round" fill="none"/>
53
+ </g>
54
+ <text x="805" y="158" font-size="13" font-weight="700" fill="#0f172a" text-anchor="middle" letter-spacing="1.5">KODELYTH</text>
55
+ <text x="805" y="175" font-size="8.5" fill="#94a3b8" text-anchor="middle" letter-spacing="2.5">DOUBLE</text>
56
+
57
+
58
+ <!-- ═══ ROW 2 ═══════════════════════════════════════════════════════════ -->
59
+
60
+ <!-- 05 · Chevron + apex dot -->
61
+ <text x="115" y="216" font-size="9" font-weight="600" fill="#cbd5e1" text-anchor="middle" letter-spacing="3">05</text>
62
+ <g transform="translate(115,285)">
63
+ <polyline points="-18,-27 10,0 -18,27"
64
+ stroke="#0f172a" stroke-width="6.5"
65
+ stroke-linecap="round" stroke-linejoin="round" fill="none"/>
66
+ <circle cx="20" cy="0" r="6" fill="#0f172a"/>
67
+ </g>
68
+ <text x="115" y="348" font-size="13" font-weight="700" fill="#0f172a" text-anchor="middle" letter-spacing="1.5">KODELYTH</text>
69
+ <text x="115" y="365" font-size="8.5" fill="#94a3b8" text-anchor="middle" letter-spacing="2.5">CHEVRON + NODE</text>
70
+
71
+
72
+ <!-- 06 · Bracket form — chevron with horizontal arms -->
73
+ <text x="345" y="216" font-size="9" font-weight="600" fill="#cbd5e1" text-anchor="middle" letter-spacing="3">06</text>
74
+ <g transform="translate(345,285)">
75
+ <line x1="-20" y1="-26" x2="0" y2="-26" stroke="#0f172a" stroke-width="5.5" stroke-linecap="round"/>
76
+ <polyline points="0,-26 18,0 0,26"
77
+ stroke="#0f172a" stroke-width="5.5"
78
+ stroke-linecap="round" stroke-linejoin="round" fill="none"/>
79
+ <line x1="0" y1="26" x2="-20" y2="26" stroke="#0f172a" stroke-width="5.5" stroke-linecap="round"/>
80
+ </g>
81
+ <text x="345" y="348" font-size="13" font-weight="700" fill="#0f172a" text-anchor="middle" letter-spacing="1.5">KODELYTH</text>
82
+ <text x="345" y="365" font-size="8.5" fill="#94a3b8" text-anchor="middle" letter-spacing="2.5">BRACKET</text>
83
+
84
+
85
+ <!-- 07 · Upward caret ^ (Vercel-adjacent, growth direction) -->
86
+ <text x="575" y="216" font-size="9" font-weight="600" fill="#cbd5e1" text-anchor="middle" letter-spacing="3">07</text>
87
+ <g transform="translate(575,285)">
88
+ <polyline points="-26,20 0,-22 26,20"
89
+ stroke="#0f172a" stroke-width="7.5"
90
+ stroke-linecap="round" stroke-linejoin="round" fill="none"/>
91
+ </g>
92
+ <text x="575" y="348" font-size="13" font-weight="700" fill="#0f172a" text-anchor="middle" letter-spacing="1.5">KODELYTH</text>
93
+ <text x="575" y="365" font-size="8.5" fill="#94a3b8" text-anchor="middle" letter-spacing="2.5">CARET UP</text>
94
+
95
+
96
+ <!-- 08 · Ghost depth — bold front + faint back -->
97
+ <text x="805" y="216" font-size="9" font-weight="600" fill="#cbd5e1" text-anchor="middle" letter-spacing="3">08</text>
98
+ <g transform="translate(805,285)">
99
+ <polyline points="-26,-26 -6,0 -26,26"
100
+ stroke="#0f172a" stroke-width="4" opacity="0.2"
101
+ stroke-linecap="round" stroke-linejoin="round" fill="none"/>
102
+ <polyline points="-12,-27 14,0 -12,27"
103
+ stroke="#0f172a" stroke-width="7.5"
104
+ stroke-linecap="round" stroke-linejoin="round" fill="none"/>
105
+ </g>
106
+ <text x="805" y="348" font-size="13" font-weight="700" fill="#0f172a" text-anchor="middle" letter-spacing="1.5">KODELYTH</text>
107
+ <text x="805" y="365" font-size="8.5" fill="#94a3b8" text-anchor="middle" letter-spacing="2.5">DEPTH</text>
108
+
109
+ </svg>
@@ -0,0 +1,161 @@
1
+ /**
2
+ * brand/convert.js
3
+ * Converts all Kodelyth SVG brand assets to high-quality PNG
4
+ * Uses Chrome (puppeteer-core) for pixel-perfect font + geometry rendering
5
+ *
6
+ * Usage: node brand/convert.js
7
+ */
8
+
9
+ const puppeteer = require('puppeteer-core');
10
+ const path = require('path');
11
+ const fs = require('fs');
12
+
13
+ const CHROME = '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome';
14
+ const BRAND_DIR = __dirname;
15
+
16
+ const ASSETS = [
17
+ // Facebook social assets — 2× for retina sharpness
18
+ {
19
+ input: 'fb-profile.svg',
20
+ output: 'fb-profile.png',
21
+ width: 800,
22
+ height: 800,
23
+ label: 'Facebook profile picture (800×800 @2x)',
24
+ },
25
+ {
26
+ input: 'fb-cover.svg',
27
+ output: 'fb-cover.png',
28
+ width: 1640,
29
+ height: 624,
30
+ label: 'Facebook cover photo (1640×624 @2x)',
31
+ },
32
+
33
+ // Standalone mark — 3× for print + high-res usage
34
+ {
35
+ input: 'kodelyth-mark.svg',
36
+ output: 'kodelyth-mark.png',
37
+ width: 1200,
38
+ height: 1200,
39
+ label: 'Kodelyth mark (1200×1200 @3x)',
40
+ },
41
+
42
+ // Horizontal lockups — 3×
43
+ {
44
+ input: 'kodelyth-dark.svg',
45
+ output: 'kodelyth-dark.png',
46
+ width: 1380,
47
+ height: 360,
48
+ label: 'Lockup dark (1380×360 @3x)',
49
+ },
50
+ {
51
+ input: 'kodelyth-light.svg',
52
+ output: 'kodelyth-light.png',
53
+ width: 1380,
54
+ height: 360,
55
+ label: 'Lockup light (1380×360 @3x)',
56
+ },
57
+
58
+ // Favicon — all required sizes
59
+ {
60
+ input: 'favicon.svg',
61
+ output: 'favicon-16.png',
62
+ width: 16,
63
+ height: 16,
64
+ label: 'Favicon 16×16',
65
+ },
66
+ {
67
+ input: 'favicon.svg',
68
+ output: 'favicon-32.png',
69
+ width: 32,
70
+ height: 32,
71
+ label: 'Favicon 32×32',
72
+ },
73
+ {
74
+ input: 'favicon.svg',
75
+ output: 'favicon-180.png',
76
+ width: 180,
77
+ height: 180,
78
+ label: 'Apple Touch Icon 180×180',
79
+ },
80
+ ];
81
+
82
+ async function convertAsset(page, asset) {
83
+ const inputPath = path.join(BRAND_DIR, asset.input);
84
+ const outputPath = path.join(BRAND_DIR, asset.output);
85
+
86
+ if (!fs.existsSync(inputPath)) {
87
+ console.error(` SKIP ${asset.input} — file not found`);
88
+ return;
89
+ }
90
+
91
+ const svgContent = fs.readFileSync(inputPath, 'utf8');
92
+
93
+ await page.setViewport({
94
+ width: asset.width,
95
+ height: asset.height,
96
+ deviceScaleFactor: 2, // render at 2× internal resolution for anti-aliasing
97
+ });
98
+
99
+ // Wrap SVG in a minimal HTML page — more reliable than opening SVG directly
100
+ const html = `<!DOCTYPE html>
101
+ <html>
102
+ <head>
103
+ <meta charset="utf-8">
104
+ <style>
105
+ * { margin: 0; padding: 0; box-sizing: border-box; }
106
+ html, body { width: ${asset.width}px; height: ${asset.height}px; overflow: hidden; background: transparent; }
107
+ svg { display: block; width: ${asset.width}px !important; height: ${asset.height}px !important; }
108
+ </style>
109
+ </head>
110
+ <body>${svgContent}</body>
111
+ </html>`;
112
+
113
+ await page.setContent(html, { waitUntil: 'domcontentloaded', timeout: 10000 });
114
+
115
+ await page.screenshot({
116
+ path: outputPath,
117
+ type: 'png',
118
+ clip: { x: 0, y: 0, width: asset.width, height: asset.height },
119
+ omitBackground: false,
120
+ });
121
+
122
+ const kb = Math.round(fs.statSync(outputPath).size / 1024);
123
+ console.log(` [DONE] ${asset.output.padEnd(28)} ${asset.label} (${kb} KB)`);
124
+ }
125
+
126
+ async function main() {
127
+ console.log('\nKodelyth Brand — SVG → PNG Converter');
128
+ console.log('--------------------------------------');
129
+
130
+ const browser = await puppeteer.launch({
131
+ executablePath: CHROME,
132
+ headless: 'new',
133
+ args: [
134
+ '--no-sandbox',
135
+ '--disable-setuid-sandbox',
136
+ '--disable-web-security', // allow file:// access
137
+ '--force-device-scale-factor=1',
138
+ ],
139
+ });
140
+
141
+ const page = await browser.newPage();
142
+
143
+ // Disable all animations so screenshots are clean
144
+ await page.addStyleTag({
145
+ content: '*, *::before, *::after { animation: none !important; transition: none !important; }',
146
+ });
147
+
148
+ for (const asset of ASSETS) {
149
+ await convertAsset(page, asset);
150
+ }
151
+
152
+ await browser.close();
153
+
154
+ console.log('\nAll PNGs written to brand/');
155
+ console.log('--------------------------------------\n');
156
+ }
157
+
158
+ main().catch(err => {
159
+ console.error('Conversion failed:', err.message);
160
+ process.exit(1);
161
+ });
@@ -0,0 +1,7 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32">
2
+ <rect width="32" height="32" fill="#0a0a0a"/>
3
+ <polyline points="7,5 23,16 7,27"
4
+ stroke="#ffffff" stroke-width="5"
5
+ stroke-linecap="round" stroke-linejoin="round"
6
+ fill="none"/>
7
+ </svg>
@@ -0,0 +1,34 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 820 312" width="820" height="312"
2
+ font-family="'Space Grotesk','Inter',system-ui,-apple-system,sans-serif">
3
+
4
+ <!-- Facebook Page Cover Photo — 820×312px -->
5
+ <!-- Safe zone for mobile: center 640×312 — all content within 90px left/right margins -->
6
+
7
+ <rect width="820" height="312" fill="#0a0a0a"/>
8
+
9
+ <!-- Ghost Depth mark — centered, optically balanced in 312px height -->
10
+ <g stroke-linecap="round" stroke-linejoin="round" fill="none" stroke="#ffffff">
11
+
12
+ <!-- ghost — trails left, recedes behind -->
13
+ <polyline points="370,67 401,120 370,173"
14
+ stroke-width="5.5" stroke-opacity="0.22"/>
15
+
16
+ <!-- solid — primary mark -->
17
+ <polyline points="395,65 443,120 395,175"
18
+ stroke-width="18"/>
19
+
20
+ </g>
21
+
22
+ <!-- Wordmark -->
23
+ <text x="410" y="232"
24
+ text-anchor="middle"
25
+ font-size="44" font-weight="700" fill="#ffffff"
26
+ letter-spacing="3.5">KODELYTH</text>
27
+
28
+ <!-- Tagline -->
29
+ <text x="410" y="257"
30
+ text-anchor="middle"
31
+ font-size="18" font-weight="400" fill="#ffffff" fill-opacity="0.58"
32
+ letter-spacing="3">Build everything.</text>
33
+
34
+ </svg>
@@ -0,0 +1,21 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" width="400" height="400">
2
+
3
+ <!-- Facebook Page Profile Picture — 400×400 -->
4
+ <!-- Facebook crops to circle — mark centered within circular safe zone -->
5
+
6
+ <rect width="400" height="400" fill="#0a0a0a"/>
7
+
8
+ <!-- Kodelyth Mark — Ghost Depth (white on dark) -->
9
+ <g stroke-linecap="round" stroke-linejoin="round" fill="none" stroke="#ffffff">
10
+
11
+ <!-- ghost — trails left, recedes behind solid -->
12
+ <polyline points="128,104 184,200 128,296"
13
+ stroke-width="10" stroke-opacity="0.22"/>
14
+
15
+ <!-- solid — primary mark -->
16
+ <polyline points="172,100 260,200 172,300"
17
+ stroke-width="32"/>
18
+
19
+ </g>
20
+
21
+ </svg>
@@ -0,0 +1,24 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 460 120" width="460" height="120"
2
+ font-family="'Space Grotesk','Inter',system-ui,-apple-system,sans-serif">
3
+
4
+ <rect width="460" height="120" fill="#0a0a0a"/>
5
+
6
+ <!-- Kodelyth Mark — Ghost Depth (white on dark) -->
7
+ <g stroke-linecap="round" stroke-linejoin="round" fill="none" stroke="#ffffff">
8
+
9
+ <!-- ghost — reduced arm span, tighter stroke, optical depth layer -->
10
+ <polyline points="49,38 68,60 49,82"
11
+ stroke-width="3.5" stroke-opacity="0.2"/>
12
+
13
+ <!-- solid — reduced arm to balance mark:cap ratio 2.4:1 -->
14
+ <polyline points="64,35 95,60 64,85"
15
+ stroke-width="11"/>
16
+
17
+ </g>
18
+
19
+ <!-- Wordmark — baseline lifted to optically align with mark center y=60 -->
20
+ <text x="125" y="73"
21
+ font-size="36" font-weight="700" fill="#ffffff"
22
+ letter-spacing="3">KODELYTH</text>
23
+
24
+ </svg>
@@ -0,0 +1,24 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 460 120" width="460" height="120"
2
+ font-family="'Space Grotesk','Inter',system-ui,-apple-system,sans-serif">
3
+
4
+ <rect width="460" height="120" fill="#ffffff"/>
5
+
6
+ <!-- Kodelyth Mark — Ghost Depth (dark on light) -->
7
+ <g stroke-linecap="round" stroke-linejoin="round" fill="none" stroke="#0f172a">
8
+
9
+ <!-- ghost — reduced arm span, tighter stroke, optical depth layer -->
10
+ <polyline points="49,38 68,60 49,82"
11
+ stroke-width="3.5" stroke-opacity="0.15"/>
12
+
13
+ <!-- solid — reduced arm to balance mark:cap ratio 2.4:1 -->
14
+ <polyline points="64,35 95,60 64,85"
15
+ stroke-width="11"/>
16
+
17
+ </g>
18
+
19
+ <!-- Wordmark — baseline lifted to optically align with mark center y=60 -->
20
+ <text x="125" y="73"
21
+ font-size="36" font-weight="700" fill="#0f172a"
22
+ letter-spacing="3">KODELYTH</text>
23
+
24
+ </svg>
@@ -0,0 +1,20 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" width="400" height="400">
2
+
3
+ <rect width="400" height="400" fill="#ffffff"/>
4
+
5
+ <!-- Kodelyth Mark — Ghost Depth -->
6
+ <!-- Ghost trails LEFT of the solid — peeks out from behind the left arms -->
7
+ <!-- Solid is the dominant forward-facing mark -->
8
+ <g stroke-linecap="round" stroke-linejoin="round" fill="none" stroke="#0f172a">
9
+
10
+ <!-- ghost — left of solid, lighter stroke, recedes behind -->
11
+ <polyline points="128,104 184,200 128,296"
12
+ stroke-width="10" stroke-opacity="0.15"/>
13
+
14
+ <!-- solid — primary mark, full weight, forward -->
15
+ <polyline points="172,100 260,200 172,300"
16
+ stroke-width="32"/>
17
+
18
+ </g>
19
+
20
+ </svg>
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "kodelyth-brand",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "description": "Brand asset conversion tools for Kodelyth",
6
+ "scripts": {
7
+ "convert": "node convert.js"
8
+ },
9
+ "dependencies": {
10
+ "puppeteer-core": "^24.43.1"
11
+ }
12
+ }
@@ -169,4 +169,4 @@ These provide additional audit playbooks on top of the enterprise baseline.
169
169
 
170
170
  ---
171
171
 
172
- **Powered by Kodelyth ECC v1.6.0+ · Enterprise bundle**
172
+ **Powered by Kodelyth ECC v1.7.5 · Enterprise bundle**
@@ -103,4 +103,4 @@ Run `/devil-mode --all` or `use <agent-name>` any time to access the full crew.
103
103
 
104
104
  ---
105
105
 
106
- **Powered by Kodelyth ECC v1.6.0+ · Indie Hacker bundle**
106
+ **Powered by Kodelyth ECC v1.7.5 · Indie Hacker bundle**
@@ -135,4 +135,4 @@ Each ~300 lines of real audit logic, not theatrical persona.
135
135
 
136
136
  ---
137
137
 
138
- **Powered by Kodelyth ECC v1.6.0+ · Red Team bundle**
138
+ **Powered by Kodelyth ECC v1.7.5 · Red Team bundle**
@@ -102,7 +102,7 @@ Exits `0` on `ok=true`, `1` otherwise. With `--json`, prints the full report:
102
102
 
103
103
  ```bash
104
104
  # 1) Download the manifest from the GitHub release that matches your installed version.
105
- gh release download v1.7.0 -p kodelyth-ecc-manifest.json -O /tmp/manifest.json
105
+ gh release download v1.7.3 -p kodelyth-ecc-manifest.json -O /tmp/manifest.json
106
106
 
107
107
  # 2) Run verify against your installed copy.
108
108
  npx kodelyth-ecc verify --root "$(npm root -g)/kodelyth-ecc" --manifest /tmp/manifest.json
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kodelyth-ecc",
3
- "version": "1.7.3",
3
+ "version": "1.7.5",
4
4
  "description": "Production-grade AI coding toolkit — 70 agents (incl. devil-mode adversarial crew), 194 skills, 97 commands, parallel multi-agent commands, semantic intent routing, self-learning memory, and a built-in MCP server (16 tools / 6 prompts / 377 resources) that bridges to Claude Desktop, LangGraph, AutoGen, CrewAI, and OpenAI Agents SDK. Works with Claude Code, Windsurf, Cursor, Codex, Antigravity, OpenCode, Cline, RooCode, Aider, Kimi, and Gemini CLI.",
5
5
  "author": "Kodelyth <github.com/sifxprime>",
6
6
  "license": "MIT",
@@ -9,6 +9,9 @@
9
9
  "url": "https://github.com/sifxprime/kodelyth-ecc.git"
10
10
  },
11
11
  "homepage": "https://github.com/sifxprime/kodelyth-ecc",
12
+ "bugs": {
13
+ "url": "https://github.com/sifxprime/kodelyth-ecc/issues"
14
+ },
12
15
  "keywords": [
13
16
  "claude-code",
14
17
  "windsurf",