kodelyth-ecc 1.5.9 โ†’ 1.7.0

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 (123) hide show
  1. package/.github/workflows/publish.yml +19 -0
  2. package/AGENTS.md +1 -1
  3. package/CHANGELOG.md +455 -0
  4. package/CLAUDE.md +48 -16
  5. package/README.md +265 -81
  6. package/VERSION +1 -1
  7. package/actions/ecc-review/README.md +243 -0
  8. package/actions/ecc-review/action.yml +158 -0
  9. package/actions/ecc-review/post-comment.js +171 -0
  10. package/actions/ecc-review/run-review.js +285 -0
  11. package/agents/backdoor-hunter.md +260 -0
  12. package/agents/chaos-engineer.md +251 -0
  13. package/agents/code-stealer-detector.md +228 -0
  14. package/agents/jailbreak-tester.md +222 -0
  15. package/agents/license-violation-finder.md +212 -0
  16. package/agents/prompt-injection-hunter.md +126 -0
  17. package/agents/secret-hunter.md +209 -0
  18. package/agents/supply-chain-auditor.md +195 -0
  19. package/bin/kodelyth-ecc.js +875 -1
  20. package/bundles/enterprise.md +172 -0
  21. package/bundles/indie-hacker.md +106 -0
  22. package/bundles/red-team.md +138 -0
  23. package/cat +0 -0
  24. package/commands/dashboard.md +67 -0
  25. package/commands/devil-mode.md +121 -0
  26. package/commands/memory-evolve.md +71 -0
  27. package/commands/replay.md +61 -0
  28. package/commands/route-model.md +48 -0
  29. package/commands/swarm.md +68 -0
  30. package/commands/verify-supply-chain.md +59 -0
  31. package/docs/dashboard.md +211 -0
  32. package/docs/evolve.md +303 -0
  33. package/docs/mcp-clients.md +167 -0
  34. package/docs/mcp.md +178 -0
  35. package/docs/replay.md +244 -0
  36. package/docs/supply-chain.md +207 -0
  37. package/docs/swarm.md +243 -0
  38. package/hooks/hooks.json +52 -0
  39. package/hooks/memory/auto-recall.js +29 -1
  40. package/hooks/safety/README.md +124 -0
  41. package/hooks/safety/lib/patterns.js +179 -0
  42. package/hooks/safety/prompt-injection-guard.js +179 -0
  43. package/hooks/safety/token-budget.js +229 -0
  44. package/install.ps1 +199 -2
  45. package/install.sh +286 -4
  46. package/package.json +30 -4
  47. package/rules/common/agent-intent-routing.md +182 -0
  48. package/rules/common/cost-aware-model-routing.md +152 -0
  49. package/scripts/dashboard/data.js +353 -0
  50. package/scripts/dashboard/server.js +324 -0
  51. package/scripts/dashboard/static/index.html +645 -0
  52. package/scripts/evolve/analyze.js +303 -0
  53. package/scripts/evolve/proposals.js +162 -0
  54. package/scripts/evolve/stats.js +219 -0
  55. package/scripts/mcp/catalog.js +244 -0
  56. package/scripts/mcp/client.js +181 -0
  57. package/scripts/mcp/prompts.js +133 -0
  58. package/scripts/mcp/resources.js +94 -0
  59. package/scripts/mcp/server.js +153 -0
  60. package/scripts/mcp/tools.js +465 -0
  61. package/scripts/replay/bundle.js +191 -0
  62. package/scripts/replay/replay.js +107 -0
  63. package/scripts/router/classify.js +232 -0
  64. package/scripts/supply-chain/manifest.js +154 -0
  65. package/scripts/supply-chain/sbom.js +202 -0
  66. package/scripts/supply-chain/verify.js +102 -0
  67. package/scripts/swarm/build-plan.js +193 -0
  68. package/skills/cost-aware-model-routing/SKILL.md +153 -0
  69. package/skills/kodelyth-quickstart/SKILL.md +7 -0
  70. package/skills/observability-dashboard/SKILL.md +119 -0
  71. package/skills/self-evolving-memory/SKILL.md +175 -0
  72. package/skills/session-replay/SKILL.md +199 -0
  73. package/skills/supply-chain-verification/SKILL.md +201 -0
  74. package/skills/swarm-orchestrator/SKILL.md +177 -0
  75. package/social/card-install.svg +1 -1
  76. package/social/facebook-group/POST.md +121 -0
  77. package/social/facebook-group/fb-1-3am-debug.png +0 -0
  78. package/social/facebook-group/fb-1-3am-debug.svg +97 -0
  79. package/social/facebook-group/fb-2-cpu-upgrade.png +0 -0
  80. package/social/facebook-group/fb-2-cpu-upgrade.svg +132 -0
  81. package/social/facebook-group/fb-3-before-after.png +0 -0
  82. package/social/facebook-group/fb-3-before-after.svg +94 -0
  83. package/social/facebook-v150.svg +5 -5
  84. package/social/github-social-preview.svg +119 -100
  85. package/social/readme-hero.svg +11 -11
  86. package/social/section-agents.svg +57 -0
  87. package/social/section-author.svg +54 -0
  88. package/social/section-dashboard.svg +59 -0
  89. package/social/section-devil.svg +54 -0
  90. package/social/section-hooks.svg +51 -0
  91. package/social/section-install.svg +42 -0
  92. package/social/section-learning.svg +52 -0
  93. package/social/section-mcp.svg +46 -0
  94. package/social/section-memory.svg +57 -0
  95. package/social/section-parallel.svg +72 -0
  96. package/social/section-routing.svg +51 -0
  97. package/social/x-card-agents-grid.svg +6 -6
  98. package/tests/dashboard/data.test.js +235 -0
  99. package/tests/dashboard/server.test.js +240 -0
  100. package/tests/evolve/analyze.test.js +169 -0
  101. package/tests/evolve/proposals.test.js +173 -0
  102. package/tests/evolve/stats.test.js +159 -0
  103. package/tests/mcp/catalog.test.js +98 -0
  104. package/tests/mcp/client.test.js +109 -0
  105. package/tests/mcp/resources-prompts.test.js +70 -0
  106. package/tests/mcp/tools.test.js +159 -0
  107. package/tests/replay/bundle.test.js +181 -0
  108. package/tests/replay/replay.test.js +131 -0
  109. package/tests/router/classify.test.js +164 -0
  110. package/tests/safety/patterns.test.js +94 -0
  111. package/tests/safety/prompt-injection-guard.test.js +111 -0
  112. package/tests/safety/token-budget.test.js +119 -0
  113. package/tests/supply-chain/manifest.test.js +147 -0
  114. package/tests/supply-chain/sbom.test.js +170 -0
  115. package/tests/supply-chain/verify.test.js +146 -0
  116. package/tests/swarm/build-plan.test.js +188 -0
  117. package/wiki/Agent-Reference.md +58 -7
  118. package/wiki/FAQ.md +204 -7
  119. package/wiki/Home.md +104 -28
  120. package/wiki/Hook-Reference.md +1 -1
  121. package/wiki/Installation-Guide.md +109 -6
  122. package/wiki/Platform-Support.md +239 -25
  123. package/wiki/Skill-Reference.md +101 -6
@@ -0,0 +1,201 @@
1
+ ---
2
+ name: supply-chain-verification
3
+ description: Generate CycloneDX SBOMs, content manifests, and verify installed copies of kodelyth-ecc against shipped manifests. Use when an enterprise / security team asks "where does this code come from, is it tampered, and where is the SBOM".
4
+ trigger:
5
+ - supply chain
6
+ - SBOM
7
+ - CycloneDX
8
+ - SLSA
9
+ - provenance
10
+ - manifest
11
+ - tamper
12
+ - integrity check
13
+ - verify install
14
+ ---
15
+
16
+ # Skill: supply-chain-verification
17
+
18
+ ## What this skill does
19
+
20
+ Phase 2.9 of the Devil Roadmap. Three pure-function libraries plus three CLI subcommands give every kodelyth-ecc release **enterprise-grade supply-chain credentials**:
21
+
22
+ | Capability | What it produces | Format |
23
+ |---|---|---|
24
+ | **SBOM** | CycloneDX 1.5 software bill of materials for the package + every transitive dep in the lockfile | JSON |
25
+ | **Manifest** | sha256 content manifest of every shipped asset (agents, skills, commands, rules, hooks, scripts, bin, bundles, root files) | JSON |
26
+ | **Verify** | Compares an installed copy against a manifest and reports `ok` / `modified` / `missing` / `extra` | JSON or pretty |
27
+
28
+ Plus, every release published via `.github/workflows/publish.yml` ships with **SLSA Level 3 build provenance** courtesy of `npm publish --provenance` (sigstore-backed).
29
+
30
+ ---
31
+
32
+ ## When to use this skill
33
+
34
+ Use **explicitly** by name when:
35
+
36
+ - An enterprise / SOC 2 / FedRAMP-adjacent team asks for an SBOM to ingest into Dependency-Track, Snyk, or Anchore.
37
+ - A user reports a suspicious install โ€” verify against the shipped manifest to confirm tamper or local mod.
38
+ - You're preparing an audit response and need provenance + bill-of-materials in one shot.
39
+ - You want to ship a third-party reproducibility check for a downstream consumer.
40
+
41
+ ```bash
42
+ use supply-chain-verification
43
+
44
+ # Generate a CycloneDX 1.5 SBOM
45
+ npx kodelyth-ecc sbom --out sbom.cdx.json
46
+
47
+ # Generate a content manifest
48
+ npx kodelyth-ecc manifest --out manifest.json
49
+
50
+ # Verify a downloaded / installed copy
51
+ npx kodelyth-ecc verify --manifest manifest.json
52
+ ```
53
+
54
+ Implicit triggers (the AI should route here automatically):
55
+
56
+ - "is my install of kodelyth-ecc tampered?"
57
+ - "give me an SBOM"
58
+ - "where is the SLSA provenance for this release?"
59
+ - "compliance team needs supply-chain attestation for this package"
60
+
61
+ ---
62
+
63
+ ## CLI surface
64
+
65
+ ### `kodelyth-ecc sbom`
66
+
67
+ ```
68
+ kodelyth-ecc sbom [--root DIR] [--out FILE] [--json]
69
+ ```
70
+
71
+ Produces a CycloneDX 1.5 BOM:
72
+
73
+ ```json
74
+ {
75
+ "bomFormat": "CycloneDX",
76
+ "specVersion": "1.5",
77
+ "serialNumber": "urn:uuid:...",
78
+ "metadata": {
79
+ "timestamp": "2026-05-10T17:00:00Z",
80
+ "tools": [{ "vendor": "kodelyth-ecc", "name": "kodelyth-ecc-sbom", "version": "1.7.0" }],
81
+ "component": { "type": "application", "name": "kodelyth-ecc", "version": "1.7.0", "purl": "pkg:npm/kodelyth-ecc@1.7.0" }
82
+ },
83
+ "components": [/* one per lockfile entry */],
84
+ "dependencies": [{ "ref": "kodelyth-ecc@1.7.0", "dependsOn": [/* direct deps */] }]
85
+ }
86
+ ```
87
+
88
+ Pure: no network, no exec. Reads `package.json` + `package-lock.json` only. Components carry purl, license, and SHA-512 hash from npm SRI when present.
89
+
90
+ ### `kodelyth-ecc manifest`
91
+
92
+ ```
93
+ kodelyth-ecc manifest [--root DIR] [--out FILE] [--json]
94
+ ```
95
+
96
+ Walks every shipped directory + root file. Produces:
97
+
98
+ ```json
99
+ {
100
+ "schema": "kodelyth.content-manifest/v1",
101
+ "package": "kodelyth-ecc",
102
+ "pkg_version": "1.7.0",
103
+ "generated_at": "2026-05-10T17:00:00Z",
104
+ "file_count": 730,
105
+ "digest": "<sha256 over deterministic JSON of the entries array>",
106
+ "files": [
107
+ { "path": "agents/code-reviewer.md", "size": 4521, "sha256": "โ€ฆ" },
108
+ โ€ฆ
109
+ ]
110
+ }
111
+ ```
112
+
113
+ Output is deterministic (sorted by path, stable sha256), so two runs against the same source tree produce identical files modulo `generated_at`.
114
+
115
+ ### `kodelyth-ecc verify`
116
+
117
+ ```
118
+ kodelyth-ecc verify [--root DIR] [--manifest FILE] [--json]
119
+ ```
120
+
121
+ Compares disk against manifest:
122
+
123
+ | Category | Meaning | Fails verify? |
124
+ |---|---|---|
125
+ | `ok` | sha256 matches | No |
126
+ | `modified` | file present, hash differs | **Yes** |
127
+ | `missing` | file in manifest but not on disk | **Yes** |
128
+ | `extra` | file on disk not in manifest | No (advisory) |
129
+
130
+ Exits **0** if `ok=true`, **1** otherwise. Pair with `--json` for CI gates.
131
+
132
+ ---
133
+
134
+ ## What ships with each release
135
+
136
+ The `.github/workflows/publish.yml` pipeline does **all five** of:
137
+
138
+ 1. Verify `package.json.version` matches the release tag.
139
+ 2. Run the full test suite (255 tests).
140
+ 3. `npm publish --provenance` โ†’ **SLSA Level 3** build provenance via npm + sigstore.
141
+ 4. Generate `kodelyth-ecc-sbom.cdx.json` and attach to the GitHub release.
142
+ 5. Generate `kodelyth-ecc-manifest.json` and attach to the GitHub release.
143
+
144
+ Three artifacts ship with every release:
145
+
146
+ ```
147
+ v1.X.Y/
148
+ โ”œโ”€โ”€ kodelyth-ecc-sbom.cdx.json โ† CycloneDX 1.5
149
+ โ”œโ”€โ”€ kodelyth-ecc-manifest.json โ† sha256 content manifest
150
+ โ””โ”€โ”€ (npm sigstore provenance) โ† visible on npmjs.com
151
+ ```
152
+
153
+ ---
154
+
155
+ ## Programmatic API
156
+
157
+ ```js
158
+ const { generateSBOM } = require('kodelyth-ecc/scripts/supply-chain/sbom.js');
159
+ const { generateManifest } = require('kodelyth-ecc/scripts/supply-chain/manifest.js');
160
+ const { verifyAgainstManifest } = require('kodelyth-ecc/scripts/supply-chain/verify.js');
161
+
162
+ const bom = generateSBOM({ rootDir: '/path/to/installed/kodelyth-ecc' });
163
+ const m = generateManifest({ rootDir: '/path/to/installed/kodelyth-ecc' });
164
+ const r = verifyAgainstManifest({ rootDir: '/path/to/installed/kodelyth-ecc', manifest: m });
165
+
166
+ if (!r.ok) {
167
+ console.error('Tamper detected:', r.summary);
168
+ process.exit(1);
169
+ }
170
+ ```
171
+
172
+ All three are pure functions. Safe to call from a CI step, an MCP tool, or any external automation.
173
+
174
+ ---
175
+
176
+ ## Hard rules
177
+
178
+ 1. **Never** weaken `verify`. Modified or missing files MUST exit non-zero. Extras stay advisory.
179
+ 2. SBOM `serialNumber` is derived deterministically from `name@version + timestamp`. If you need a true random UUID per build, set `timestamp` to the build timestamp.
180
+ 3. Manifest `digest` is the sha256 of the deterministic JSON of `files`. Reproducible across runs at the same source state.
181
+ 4. Don't include `node_modules/`, `.git/`, `.DS_Store`, `__pycache__/`, or `*.pyc` in the manifest. The skip list is in `scripts/supply-chain/manifest.js`.
182
+ 5. Treat the published manifest as authoritative for tamper detection of an installed copy. Don't substitute a freshly-generated one.
183
+
184
+ ---
185
+
186
+ ## Pairing with other ECC features
187
+
188
+ | Pair with | What you get |
189
+ |---|---|
190
+ | **Phase 2.10 safety hooks** | The token-budget hook + this skill cover "trust" (no PII leakage + no tampered code). |
191
+ | **MCP server (Phase 2.1)** | Expose `verify` as an MCP tool downstream agents can call to confirm their toolkit is clean. |
192
+ | **Swarm orchestrator (Phase 2.7)** | Run `verify` as a pre-flight check before spawning N parallel workers. |
193
+ | **Replay (Phase 2.8)** | Bundles can carry the manifest of the source ECC version that produced them, enabling reproducible replays. |
194
+
195
+ ---
196
+
197
+ ## See also
198
+
199
+ - `commands/verify-supply-chain.md` โ€” `/verify-supply-chain` slash command form
200
+ - `docs/supply-chain.md` โ€” full reference + downstream verification guide
201
+ - `.github/workflows/publish.yml` โ€” release pipeline that issues all three artifacts
@@ -0,0 +1,177 @@
1
+ ---
2
+ name: swarm-orchestrator
3
+ description: Run N ECC specialist agents in parallel inside isolated git worktrees coordinated by a tmux session. Generalizes /devil-mode to arbitrary task + agent combinations. Use when one agent isn't enough โ€” you want a parallel sweep across security, code quality, perf, UX, tests, architecture, and docs simultaneously.
4
+ origin: ECC
5
+ ---
6
+
7
+ # Swarm Orchestrator โ€” Parallel Agent Execution at Scale
8
+
9
+ The "team-of-specialists" pattern. Where `/devil-mode` is a fixed adversarial sweep with 4โ€“8 specific agents, swarm is the **generalized form**: pick any task, pick any agents (or let ECC pick from task signals), get N parallel worktrees + a tmux session ready to attach.
10
+
11
+ > Phase 2.7 of the [Devil Roadmap](../../README.md). Promotes the existing `tmux-worktree-orchestrator` infrastructure to a first-class CLI surface.
12
+
13
+ ---
14
+
15
+ ## When to invoke
16
+
17
+ Trigger this skill when:
18
+
19
+ - A task is too cross-cutting for one specialist (touches security AND perf AND API AND tests).
20
+ - The user asks for "parallel review", "multi-agent sweep", "parallel agents", or "team review".
21
+ - A change is high-stakes and you want defense-in-depth (security audit + UX + perf + arch in 15 min instead of 60).
22
+ - The user has 4+ cores and wants throughput.
23
+
24
+ Don't invoke when:
25
+
26
+ - The task is genuinely single-axis (just security โ†’ use `security-reviewer` directly).
27
+ - The repo is tiny enough that worktree overhead exceeds review time.
28
+ - The user is on a machine without tmux/git worktree support.
29
+
30
+ ---
31
+
32
+ ## CLI surface
33
+
34
+ ```bash
35
+ # Auto-pick agents from task signals.
36
+ npx kodelyth-ecc swarm --task "audit the new oauth flow for security regressions" --agents 4
37
+
38
+ # Explicit agent list.
39
+ npx kodelyth-ecc swarm --task "ship v2.0" \
40
+ --agents release-captain,security-reviewer,e2e-runner,code-reviewer \
41
+ --execute
42
+
43
+ # Different harness (codex / opencode / windsurf).
44
+ npx kodelyth-ecc swarm --task "refactor payment module" --agents 6 --harness codex --execute
45
+
46
+ # Power-user: hand-written plan.
47
+ npx kodelyth-ecc swarm --plan plan.json --execute
48
+ ```
49
+
50
+ Three execution modes:
51
+
52
+ | Mode | Effect |
53
+ |---|---|
54
+ | (default) dry-run | Prints the plan. Doesn't spawn anything. Safe to inspect. |
55
+ | `--write-only` | Materializes coordination files (`task.md`, `handoff.md`, `status.md`) but doesn't spawn worktrees or tmux. |
56
+ | `--execute` | Creates git worktrees, spawns tmux session, launches each agent in its own pane. |
57
+
58
+ ---
59
+
60
+ ## Smart agent picking
61
+
62
+ When you pass `--agents N` (a number), the swarm picks specialists in this priority order:
63
+
64
+ 1. **Signal-driven** โ€” task keywords match agent specialties (security โ†’ `security-reviewer`, perf โ†’ `performance-optimizer`, API โ†’ `api-guardian`, etc.). 14 signal classes.
65
+ 2. **Baseline anchors** โ€” `code-reviewer` and `pair-programmer` are added if not already picked (every task benefits from generalist eyes).
66
+ 3. **Rotation fill** โ€” fills remaining slots from a 4 / 6 / 8-agent default rotation tuned for breadth.
67
+
68
+ You can always override with `--agents code-reviewer,security-reviewer,architect`.
69
+
70
+ ---
71
+
72
+ ## Harness adapters
73
+
74
+ | `--harness` | Launcher | Notes |
75
+ |---|---|---|
76
+ | `claude` | `claude --print --dangerously-skip-permissions ...` | Default. Works with Claude Code. |
77
+ | `codex` | `bash scripts/orchestrate-codex-worker.sh ...` | Codex CLI worker with full status tracking. |
78
+ | `opencode` | `opencode run --task-file ...` | OpenCode harness. |
79
+ | `windsurf` | `windsurf-cli run --task-file ...` | Windsurf agent. |
80
+ | `echo` | trivial echo | For dry-run validation only. |
81
+
82
+ Use `--launcher-cmd "<your-template>"` to plug a custom harness. Available placeholders:
83
+
84
+ ```
85
+ {worker_name} {worker_slug} {session_name} {repo_root}
86
+ {worktree_path} {branch_name} {task_file} {handoff_file} {status_file}
87
+ ```
88
+
89
+ Add `_sh` suffix for shell-quoted variants (`{task_file_sh}`, etc.).
90
+
91
+ ---
92
+
93
+ ## Coordination protocol
94
+
95
+ Every worker gets three files in the coordination dir:
96
+
97
+ - **`task.md`** โ€” agent-shaped task with required handoff sections (Summary, Files Changed, Validation, Remaining Risks). Generated automatically.
98
+ - **`handoff.md`** โ€” where the worker writes its output. Watched by the launcher.
99
+ - **`status.md`** โ€” running / completed / failed marker for monitoring scripts and the future dashboard.
100
+
101
+ Workers run in **isolated git worktrees** branched from `--base-ref` (default: `HEAD`). Each gets a unique branch (`orchestrator-<session>-<slug>`). Cleanup is automatic on failure (rolls back worktrees, branches, and tmux session).
102
+
103
+ ---
104
+
105
+ ## Pairing with the rest of ECC
106
+
107
+ | Pairs with | How |
108
+ |---|---|
109
+ | **`/devil-mode`** | Devil-mode is a hardcoded swarm of adversarial agents. Swarm generalizes it to arbitrary specialists. |
110
+ | **Phase 2.4 cost router** | Each worker gets the same model-tier recommendation; security/incident workers force hard tier. |
111
+ | **Phase 2.10 token-budget hook** | Each worker has its own session token-budget โ€” one rogue worker can't burn the whole budget. |
112
+ | **Phase 2.5 MCP client mode** | Workers can call registered external MCP servers (github, postgres, brave). |
113
+ | **kodelyth-memory** | Capture the merged handoff bundle as a memory: `kodelyth-ecc remember "swarm 2026-05-10 oauth audit" --approach "..."`. |
114
+ | **release-captain** | After a swarm, run `release-captain` to merge the best work and ship. |
115
+
116
+ ---
117
+
118
+ ## Examples
119
+
120
+ ### Pre-launch full sweep (8 agents, parallel)
121
+
122
+ ```bash
123
+ npx kodelyth-ecc swarm \
124
+ --task "Pre-launch sweep for v2.0 โ€” security, perf, UX, API contracts, docs, tests, release readiness" \
125
+ --agents 8 \
126
+ --replace \
127
+ --execute
128
+
129
+ # Attach when ready:
130
+ tmux attach -t swarm-2026-05-10-8a
131
+ ```
132
+
133
+ ### Production incident: 3-agent parallel triage
134
+
135
+ ```bash
136
+ npx kodelyth-ecc swarm \
137
+ --task "Production is down. Auth service throwing 502s. Triage and propose fixes." \
138
+ --agents incident-commander,debug-detective,silent-failure-hunter \
139
+ --base-ref main \
140
+ --execute
141
+ ```
142
+
143
+ ### Refactor sprint with seeded files
144
+
145
+ ```bash
146
+ npx kodelyth-ecc swarm \
147
+ --task "Refactor the payments module for testability without changing behavior" \
148
+ --agents refactor-cleaner,code-simplifier,type-design-analyzer,tdd-guide \
149
+ --seed src/payments \
150
+ --seed tests/payments \
151
+ --execute
152
+ ```
153
+
154
+ ---
155
+
156
+ ## Hard rules
157
+
158
+ 1. **Never run `--execute` without inspecting the dry-run first.** Worktree creation mutates the repo; bad plans waste disk.
159
+ 2. **Don't mix incompatible agents in one swarm.** Putting `release-captain` and `migration-guide` in the same swarm produces conflicting handoffs.
160
+ 3. **Cap N at 8 for a single repo.** Worktree contention + tmux pane crowding hurts past 8.
161
+ 4. **Never share tmux sessions across swarms.** Use `--session NAME` explicitly when running multiple swarms.
162
+ 5. **Always merge handoffs through human review** โ€” don't auto-apply changes from N parallel agents without a human pass.
163
+
164
+ ---
165
+
166
+ ## Implementation
167
+
168
+ - Plan builder: `scripts/swarm/build-plan.js` (pure function, fully tested).
169
+ - Orchestrator: `scripts/lib/tmux-worktree-orchestrator.js` (the existing infrastructure).
170
+ - Worker (codex): `scripts/orchestrate-codex-worker.sh`.
171
+ - CLI: `npx kodelyth-ecc swarm`.
172
+ - Slash command: `/swarm`.
173
+ - Full reference: `docs/swarm.md`.
174
+
175
+ ---
176
+
177
+ Built into [Kodelyth ECC](../../README.md). MIT licensed.
@@ -37,7 +37,7 @@
37
37
  <text x="48" y="200" font-family="'Courier New', Courier, monospace" font-size="12" fill="#e6edf3"> npx kodelyth-ecc --target windsurf-project</text>
38
38
  <text x="48" y="216" font-family="'Courier New', Courier, monospace" font-size="11" fill="#484f58"> # or Antigravity:</text>
39
39
  <text x="48" y="232" font-family="'Courier New', Courier, monospace" font-size="12" fill="#e6edf3"> npx kodelyth-ecc --target antigravity</text>
40
- <text x="48" y="256" font-family="'Courier New', Courier, monospace" font-size="11" fill="#10b981"> Installing v1.5.3 โ€” 62 agents, 188 skills, 80 commands...</text>
40
+ <text x="48" y="256" font-family="'Courier New', Courier, monospace" font-size="11" fill="#10b981"> Installing v1.7.0 โ€” 70 agents, 194 skills, 97 commands...</text>
41
41
  <text x="48" y="292" font-family="'Courier New', Courier, monospace" font-size="11" fill="#10b981"> Done. Type /kodelyth-quickstart to begin.</text>
42
42
 
43
43
  <!-- Footer -->
@@ -0,0 +1,121 @@
1
+ # Facebook Group Posts โ€” Kodelyth ECC
2
+
3
+ Three images are in this folder, available as both SVG (source) and PNG (upload-ready). **Use the PNGs** โ€” Facebook compresses SVGs poorly and sometimes refuses them.
4
+
5
+ - **fb-1-3am-debug.png** โ€” square (1080ร—1080). The relatable "tired of debugging at 3am" angle.
6
+ - **fb-2-cpu-upgrade.png** โ€” square (1080ร—1080). Plays directly on the group's "Coffee Processing Unit" cover joke. **Best fit for Programming Jokes & MeMes specifically.**
7
+ - **fb-3-before-after.png** โ€” landscape (1200ร—1080). Classic before/after meme format. Highest comment-bait potential.
8
+
9
+ ---
10
+
11
+ ## POST OPTION A โ€” For "Programming Jokes & MeMes" (matches the group's CPU/coffee joke)
12
+
13
+ > **Use with:** `fb-2-cpu-upgrade.png`
14
+
15
+ ```
16
+ "Programmers are a Coffee Processing Unit" โ€” bro, that's the group cover and it lives rent-free in my head.
17
+
18
+ So I went ahead and built the actual upgrade for that CPU.
19
+
20
+ It's called Kodelyth ECC. Basically a power-up pack for whatever AI coding assistant you already use (Claude Code, Cursor, Windsurf, Codex, Antigravity, OpenCode โ€” pick your poison).
21
+
22
+ What it does:
23
+ ๐Ÿค– 62 specialist AI agents โ€” debug-detective, security-reviewer, code-reviewer, the whole crew
24
+ ๐Ÿง  Local memory โ€” actually remembers your codebase, your style, the bugs you already fixed
25
+ ๐ŸŽฏ Intent routing โ€” type "been stuck on this bug for 2 days" and it fires 3 debug agents in parallel automatically
26
+ ๐Ÿ“ฆ One install command. Done.
27
+
28
+ The honest part:
29
+ - 100% free
30
+ - 100% local (zero cloud, zero telemetry, your code never leaves your machine)
31
+ - Open source
32
+ - I'm not selling anything, no email signup, no "pro tier" โ€” just markdown files installed into your IDE config
33
+
34
+ Try it:
35
+ $ npx kodelyth-ecc
36
+
37
+ GitHub: github.com/sifxprime/kodelyth-ecc
38
+
39
+ If you find it useful, a star would mean a lot ๐Ÿ™
40
+
41
+ P.S. โ€” works whether you're a "vibe coder" or someone who debugs at 3am with 5 AI specialists screaming at you. Both valid.
42
+ ```
43
+
44
+ ---
45
+
46
+ ## POST OPTION B โ€” Straight & punchy (general dev groups)
47
+
48
+ > **Use with:** `fb-3-before-after.png` or `fb-1-3am-debug.png`
49
+
50
+ ```
51
+ Spent the last few months building this. Finally good enough to share.
52
+
53
+ Kodelyth ECC โ€” open-source toolkit that turns your AI coding assistant from a generic chatbot into a real engineering team.
54
+
55
+ Before:
56
+ - Re-explaining "we use pnpm here" every session
57
+ - Generic AI advice that doesn't know your codebase
58
+ - One AI doing security + reviews + debugging badly
59
+
60
+ After:
61
+ - 62 specialist agents (each one only does one thing well)
62
+ - Local memory that learns your style across sessions
63
+ - Intent routing โ€” describe your problem in plain words, right specialist auto-runs
64
+ - Parallel commands like /debug-blitz, /security-audit, /pre-release
65
+
66
+ Works with: Claude Code, Cursor, Windsurf, Codex, Antigravity, OpenCode
67
+
68
+ Install (one command):
69
+ npx kodelyth-ecc
70
+
71
+ 100% free. 100% local. Zero telemetry. Zero cloud calls. Your code never leaves your machine.
72
+
73
+ GitHub โ†’ github.com/sifxprime/kodelyth-ecc
74
+ npm โ†’ npmjs.com/package/kodelyth-ecc
75
+
76
+ Genuinely curious what you'd want me to add. Drop suggestions ๐Ÿ‘‡
77
+ ```
78
+
79
+ ---
80
+
81
+ ## POST OPTION C โ€” Short & meme-coded (for high-engagement reposts)
82
+
83
+ > **Use with:** `fb-1-3am-debug.png`
84
+
85
+ ```
86
+ Built this because I was tired of debugging alone at 3 AM.
87
+
88
+ 62 AI specialist agents. 188 skills. Local memory. Zero cloud bullshit.
89
+
90
+ $ npx kodelyth-ecc
91
+
92
+ That's it. That's the post.
93
+
94
+ github.com/sifxprime/kodelyth-ecc ๐Ÿš€
95
+ ```
96
+
97
+ ---
98
+
99
+ ## Posting tips for max engagement
100
+
101
+ 1. **Post timing** โ€” Tuesday/Thursday 8-10 PM (BD time) or 9-11 AM hits highest dev engagement.
102
+ 2. **First comment** โ€” drop a follow-up comment yourself within 1 minute with a screenshot of it actually working in your IDE. This doubles reach.
103
+ 3. **Reply to every comment in the first 30 min** โ€” Facebook's algo boosts posts with high reply velocity. Even just "thanks!" works.
104
+ 4. **Don't drop links in the post body** โ€” Facebook deprioritizes external links. Put `github.com/sifxprime/kodelyth-ecc` in the FIRST COMMENT instead, and write "link in comments" in the post.
105
+ 5. **Cross-post** โ€” same content fits these groups too:
106
+ - Programming Jokes & MeMes (1M)
107
+ - Memes we relate to
108
+ - BCUB / BNCP (BD groups โ€” friendly to indie tools)
109
+ - r/programming-style FB groups
110
+
111
+ ---
112
+
113
+ ## Recommended sequence (3-day campaign)
114
+
115
+ | Day | Group | SVG | Post Option |
116
+ |---|---|---|---|
117
+ | Day 1 | Programming Jokes & MeMes | fb-2-cpu-upgrade.png | A (matches group culture) |
118
+ | Day 3 | Other dev groups | fb-3-before-after.png | B (substance) |
119
+ | Day 5 | Repost in original group | fb-1-3am-debug.png | C (short hook) |
120
+
121
+ Don't post the same thing twice in the same group within 7 days โ€” Facebook flags it as spam.
@@ -0,0 +1,97 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1080 1080" width="1080" height="1080">
2
+ <defs>
3
+ <linearGradient id="bg1" x1="0" y1="0" x2="1" y2="1">
4
+ <stop offset="0" stop-color="#0d1117"/>
5
+ <stop offset="1" stop-color="#161b22"/>
6
+ </linearGradient>
7
+ <linearGradient id="purpleGlow" x1="0" y1="0" x2="0" y2="1">
8
+ <stop offset="0" stop-color="#a78bfa"/>
9
+ <stop offset="1" stop-color="#7c3aed"/>
10
+ </linearGradient>
11
+ <linearGradient id="greenGlow" x1="0" y1="0" x2="0" y2="1">
12
+ <stop offset="0" stop-color="#10b981"/>
13
+ <stop offset="1" stop-color="#059669"/>
14
+ </linearGradient>
15
+ <filter id="glow1" x="-50%" y="-50%" width="200%" height="200%">
16
+ <feGaussianBlur stdDeviation="6" result="coloredBlur"/>
17
+ <feMerge>
18
+ <feMergeNode in="coloredBlur"/>
19
+ <feMergeNode in="SourceGraphic"/>
20
+ </feMerge>
21
+ </filter>
22
+ </defs>
23
+
24
+ <rect width="1080" height="1080" fill="url(#bg1)"/>
25
+
26
+ <!-- Subtle code pattern background -->
27
+ <g opacity="0.06" font-family="'Courier New', Courier, monospace" font-size="14" fill="#10b981">
28
+ <text x="40" y="80">$ git commit -m "fix: probably broken"</text>
29
+ <text x="40" y="110">$ npm install --save-dev sanity</text>
30
+ <text x="40" y="140">TypeError: undefined is not a function</text>
31
+ <text x="40" y="170">at line 42, you know the one</text>
32
+ <text x="40" y="200">$ rm -rf node_modules &amp;&amp; npm install</text>
33
+ <text x="40" y="950">// TODO: refactor this on Sunday (it has been 3 years)</text>
34
+ <text x="40" y="980">// HACK: don't touch this, no one knows why it works</text>
35
+ <text x="40" y="1010">$ git push --force # I'm the only one on this branch</text>
36
+ <text x="40" y="1040">// here be dragons ๐Ÿ‰</text>
37
+ </g>
38
+
39
+ <!-- Time stamp top right -->
40
+ <g opacity="0.5">
41
+ <rect x="820" y="48" width="220" height="40" rx="20" fill="#21262d" stroke="#30363d" stroke-width="1"/>
42
+ <text x="930" y="74" font-family="'Courier New', Courier, monospace" font-size="14" fill="#8b949e" text-anchor="middle">๐ŸŒ™ 03:47 AM</text>
43
+ </g>
44
+
45
+ <!-- Top label -->
46
+ <g>
47
+ <rect x="60" y="60" width="200" height="32" rx="16" fill="#7c3aed" fill-opacity="0.2" stroke="#a78bfa" stroke-opacity="0.5" stroke-width="1"/>
48
+ <text x="160" y="82" font-family="system-ui, sans-serif" font-size="13" font-weight="700" fill="#a78bfa" text-anchor="middle" letter-spacing="1">FOR THE 3AM DEBUGGERS</text>
49
+ </g>
50
+
51
+ <!-- Hero text -->
52
+ <text x="540" y="220" font-family="system-ui, -apple-system, sans-serif" font-size="64" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-2">Tired of debugging</text>
53
+ <text x="540" y="290" font-family="system-ui, -apple-system, sans-serif" font-size="64" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-2">alone at 3 AM?</text>
54
+
55
+ <!-- Subline -->
56
+ <text x="540" y="350" font-family="system-ui, sans-serif" font-size="22" fill="#8b949e" text-anchor="middle">Same. So I built a fix.</text>
57
+
58
+ <!-- The "team" card -->
59
+ <rect x="90" y="410" width="900" height="380" rx="20" fill="#161b22" stroke="#30363d" stroke-width="2"/>
60
+
61
+ <!-- Decorative bracket -->
62
+ <text x="120" y="470" font-family="'Courier New', Courier, monospace" font-size="40" fill="url(#purpleGlow)" font-weight="700">{</text>
63
+ <text x="940" y="780" font-family="'Courier New', Courier, monospace" font-size="40" fill="url(#purpleGlow)" font-weight="700" text-anchor="end">}</text>
64
+
65
+ <text x="540" y="475" font-family="system-ui, sans-serif" font-size="20" font-weight="600" fill="#10b981" text-anchor="middle" letter-spacing="3">YOUR NEW LATE-NIGHT TEAM</text>
66
+
67
+ <!-- Stats grid -->
68
+ <g font-family="system-ui, sans-serif">
69
+ <text x="245" y="570" font-size="64" font-weight="900" fill="#ffffff" text-anchor="middle">62</text>
70
+ <text x="245" y="610" font-size="13" fill="#8b949e" text-anchor="middle" letter-spacing="2">SPECIALIST AGENTS</text>
71
+
72
+ <text x="540" y="570" font-size="64" font-weight="900" fill="#ffffff" text-anchor="middle">188</text>
73
+ <text x="540" y="610" font-size="13" fill="#8b949e" text-anchor="middle" letter-spacing="2">SKILLS</text>
74
+
75
+ <text x="835" y="570" font-size="64" font-weight="900" fill="#ffffff" text-anchor="middle">90</text>
76
+ <text x="835" y="610" font-size="13" fill="#8b949e" text-anchor="middle" letter-spacing="2">COMMANDS</text>
77
+ </g>
78
+
79
+ <line x1="160" y1="650" x2="920" y2="650" stroke="#30363d" stroke-width="1"/>
80
+
81
+ <!-- Tagline rows -->
82
+ <g font-family="system-ui, sans-serif" font-size="22" fill="#e6edf3">
83
+ <text x="540" y="695" text-anchor="middle">debug-detective fights bugs while you drink coffee.</text>
84
+ <text x="540" y="730" text-anchor="middle">security-reviewer catches what you missed.</text>
85
+ <text x="540" y="765" text-anchor="middle">62 of them. Working in parallel.</text>
86
+ </g>
87
+
88
+ <!-- Install bar -->
89
+ <rect x="180" y="850" width="720" height="80" rx="12" fill="#0d1117" stroke="#10b981" stroke-width="2" filter="url(#glow1)"/>
90
+ <text x="220" y="900" font-family="'Courier New', Courier, monospace" font-size="28" fill="#10b981" font-weight="700">$</text>
91
+ <text x="252" y="900" font-family="'Courier New', Courier, monospace" font-size="28" fill="#ffffff" font-weight="700">npx kodelyth-ecc</text>
92
+ <text x="880" y="900" font-family="system-ui, sans-serif" font-size="13" fill="#8b949e" text-anchor="end" letter-spacing="2">FREE ยท LOCAL ยท NO CLOUD</text>
93
+
94
+ <!-- Footer -->
95
+ <text x="540" y="985" font-family="system-ui, sans-serif" font-size="16" fill="#6e7681" text-anchor="middle">Works with Claude Code ยท Cursor ยท Windsurf ยท Codex ยท Antigravity</text>
96
+ <text x="540" y="1020" font-family="system-ui, sans-serif" font-size="14" fill="#484f58" text-anchor="middle" letter-spacing="1">github.com/sifxprime/kodelyth-ecc</text>
97
+ </svg>