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.
- package/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +41 -0
- package/.github/ISSUE_TEMPLATE/good_first_issue.md +36 -0
- package/CHANGELOG.md +43 -0
- package/GITHUB_SETUP.md +553 -0
- package/README.md +55 -6
- package/VERSION +1 -1
- package/actions/ecc-review/README.md +7 -7
- package/brand/concepts.svg +109 -0
- package/brand/convert.js +161 -0
- package/brand/favicon.svg +7 -0
- package/brand/fb-cover.svg +34 -0
- package/brand/fb-profile.svg +21 -0
- package/brand/kodelyth-dark.svg +24 -0
- package/brand/kodelyth-light.svg +24 -0
- package/brand/kodelyth-mark.svg +20 -0
- package/brand/package.json +12 -0
- package/bundles/enterprise.md +1 -1
- package/bundles/indie-hacker.md +1 -1
- package/bundles/red-team.md +1 -1
- package/docs/supply-chain.md +1 -1
- package/package.json +4 -1
- package/rules/common/memory-protocol.md +35 -4
- package/scripts/dashboard/data.js +261 -4
- package/scripts/dashboard/server.js +28 -3
- package/scripts/dashboard/static/index.html +63 -3
- package/social/card-agents.svg +12 -0
- package/social/card-install.svg +13 -1
- package/social/card-main.svg +14 -2
- package/social/facebook-v150.svg +17 -4
- package/social/github-social-preview.svg +51 -138
- package/social/hype-compound-learning.svg +129 -0
- package/social/hype-devil-mode.svg +240 -0
- package/social/hype-mcp-server.svg +148 -0
- package/social/hype-parallel-agents.svg +162 -0
- package/social/hype-stats-hero.svg +138 -0
- package/social/og-image.svg +65 -0
- package/social/readme-agents.svg +14 -2
- package/social/readme-hero.svg +17 -4
- package/social/section-agents.svg +12 -0
- package/social/section-author.svg +12 -0
- package/social/section-dashboard.svg +12 -0
- package/social/section-devil.svg +12 -0
- package/social/section-hooks.svg +12 -0
- package/social/section-install.svg +12 -0
- package/social/section-learning.svg +12 -0
- package/social/section-mcp.svg +13 -1
- package/social/section-memory.svg +12 -0
- package/social/section-parallel.svg +12 -0
- package/social/section-routing.svg +12 -0
- package/social/twitter-threads.md +621 -0
- package/social/x-card-agents-grid.svg +14 -2
- package/social/x-card-free.svg +14 -2
- package/social/x-card-hook.svg +17 -5
- package/tests/dashboard/data.test.js +156 -0
- package/tests/dashboard/server.test.js +17 -0
- package/wiki/FAQ.md +1 -1
- package/wiki/Home.md +5 -3
- package/wiki/Installation-Guide.md +2 -2
- package/MARKETING_PLAN.md +0 -893
- package/cat +0 -0
- package/social/facebook-group/POST.md +0 -121
- package/social/facebook-group/fb-1-3am-debug.png +0 -0
- package/social/facebook-group/fb-1-3am-debug.svg +0 -97
- package/social/facebook-group/fb-2-cpu-upgrade.png +0 -0
- package/social/facebook-group/fb-2-cpu-upgrade.svg +0 -132
- package/social/facebook-group/fb-3-before-after.png +0 -0
- package/social/facebook-group/fb-3-before-after.svg +0 -94
- package/videos/README.md +0 -88
- package/videos/video-01-install-and-routing.md +0 -258
- package/videos/video-02-compound-memory.md +0 -301
- package/videos/video-03-devil-mode.md +0 -294
- 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
|
+
[](https://www.npmjs.com/package/kodelyth-ecc)
|
|
6
|
+
[](https://www.npmjs.com/package/kodelyth-ecc)
|
|
7
|
+
[](https://github.com/sifxprime/kodelyth-ecc/stargazers)
|
|
5
8
|
[](LICENSE)
|
|
9
|
+

|
|
6
10
|

|
|
7
11
|

|
|
8
12
|

|
|
9
13
|

|
|
10
14
|

|
|
11
|
-

|
|
12
15
|

|
|
13
16
|

|
|
14
17
|

|
|
@@ -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 | ✅
|
|
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** |
|
|
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.
|
|
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,
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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>
|
package/brand/convert.js
ADDED
|
@@ -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>
|
package/bundles/enterprise.md
CHANGED
package/bundles/indie-hacker.md
CHANGED
package/bundles/red-team.md
CHANGED
package/docs/supply-chain.md
CHANGED
|
@@ -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.
|
|
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
|
+
"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",
|