kodelyth-ecc 1.5.5 → 1.5.7

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.
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: Bug report
3
+ about: Something broken in ECC — install failure, agent misbehavior, hook error
4
+ title: '[BUG] '
5
+ labels: bug
6
+ assignees: ''
7
+ ---
8
+
9
+ ## What happened
10
+
11
+ <!-- Describe what went wrong. Include the exact command you ran or behavior you observed. -->
12
+
13
+ ## Expected behavior
14
+
15
+ <!-- What should have happened instead. -->
16
+
17
+ ## Steps to reproduce
18
+
19
+ 1.
20
+ 2.
21
+ 3.
22
+
23
+ ## Environment
24
+
25
+ - **ECC version**: <!-- run: cat ~/.claude/kodelyth-ecc-install-state.json | grep version -->
26
+ - **Install target**: <!-- claude-home / windsurf-home / windsurf-project / cursor-project / codex-home / antigravity / opencode -->
27
+ - **Platform**: <!-- macOS / Linux / Windows -->
28
+ - **AI IDE**: <!-- Claude Code / Windsurf / Cursor / Codex CLI / Antigravity / OpenCode -->
29
+ - **Node.js version**: <!-- run: node --version -->
30
+
31
+ ## Doctor output
32
+
33
+ <!-- Run: node scripts/doctor.js or /doctor in your IDE -->
34
+
35
+ ```
36
+ paste output here
37
+ ```
38
+
39
+ ## Relevant logs or error messages
40
+
41
+ ```
42
+ paste here
43
+ ```
44
+
45
+ ## Additional context
46
+
47
+ <!-- Screenshots, related issues, anything else. -->
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: New agent proposal
3
+ about: Propose a new specialist agent for ECC
4
+ title: '[AGENT] '
5
+ labels: enhancement, new-agent
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Agent name
10
+
11
+ <!-- e.g. `rate-limiter-specialist`, `database-migrator` -->
12
+
13
+ ## One-line description
14
+
15
+ <!-- What does this agent do? Max 15 words. -->
16
+
17
+ ## Problem it solves
18
+
19
+ <!-- What pain does this agent remove? What does a developer have to do manually today that this agent would handle? -->
20
+
21
+ ## Persona
22
+
23
+ <!-- Who is this agent? Describe their experience, scale they've worked at, what makes their advice different from a generic answer. -->
24
+
25
+ ## Trigger patterns
26
+
27
+ <!-- When should intent routing auto-invoke this agent? Give 5–10 natural-language phrases a user might type. -->
28
+
29
+ - "..."
30
+ - "..."
31
+ - "..."
32
+
33
+ ## Example interaction
34
+
35
+ <!-- Show a realistic input and the kind of response this agent would give. -->
36
+
37
+ **User:** ...
38
+
39
+ **Agent:** ...
40
+
41
+ ## Does this overlap with an existing agent?
42
+
43
+ <!-- Check the agent list. If it overlaps with e.g. `debug-detective` or `performance-optimizer`, explain what makes this distinct. -->
44
+
45
+ ## Kodelyth Standard checklist
46
+
47
+ - [ ] The agent has a specific, named persona with years of experience and scale context
48
+ - [ ] The agent responds to the human situation, not just the technical question
49
+ - [ ] Responses give exact file paths, before/after code, or specific commands — not abstract advice
50
+ - [ ] No emoji in agent responses
51
+ - [ ] Ends with `> Powered by Kodelyth — [tagline]`
52
+ - [ ] No `model:` field in frontmatter
@@ -0,0 +1,53 @@
1
+ ## What this PR does
2
+
3
+ <!-- One paragraph. What was broken or missing, what you changed, and why this is the right approach. -->
4
+
5
+ ## Type of change
6
+
7
+ - [ ] Bug fix (broken behavior, wrong count, install failure)
8
+ - [ ] New agent
9
+ - [ ] New skill
10
+ - [ ] New command
11
+ - [ ] New hook
12
+ - [ ] Rule update
13
+ - [ ] Install script change
14
+ - [ ] Documentation
15
+ - [ ] Other: ___
16
+
17
+ ## Checklist
18
+
19
+ ### All PRs
20
+ - [ ] `npm test` passes (`node tests/run-all.js`)
21
+ - [ ] No hardcoded version numbers or counts that will drift
22
+ - [ ] No `.DS_Store`, `node_modules`, or generated files committed
23
+
24
+ ### New agent
25
+ - [ ] File at `agents/<name>.md`
26
+ - [ ] No `model:` field in frontmatter
27
+ - [ ] Has a specific persona with experience/scale context
28
+ - [ ] Responds to human situation, not just the technical question
29
+ - [ ] Ends with `> Powered by Kodelyth — [tagline]`
30
+ - [ ] Trigger patterns added to `rules/common/agent-intent-routing.md`
31
+ - [ ] Agent added to `rules/common/agents.md`
32
+ - [ ] README agent table updated
33
+
34
+ ### New skill
35
+ - [ ] File at `skills/<name>/SKILL.md`
36
+ - [ ] Description is accurate and testable
37
+
38
+ ### Install script change (`install.sh` / `install.ps1`)
39
+ - [ ] Both `install.sh` and `install.ps1` updated (feature parity)
40
+ - [ ] Tested on at least one platform
41
+ - [ ] No new hardcoded counts (use dynamic `find` instead)
42
+
43
+ ### Rule change
44
+ - [ ] Rule is general enough to apply across languages/frameworks
45
+ - [ ] Not duplicating guidance already in another rule file
46
+
47
+ ## Testing
48
+
49
+ <!-- How did you verify this works? -->
50
+
51
+ ## Related issues
52
+
53
+ <!-- Closes #123 -->
package/CHANGELOG.md CHANGED
@@ -2,6 +2,41 @@
2
2
 
3
3
  All notable changes to Kodelyth ECC are documented here.
4
4
 
5
+ ## v1.5.7 — Fix zsh inline comment args (May 2026)
6
+
7
+ ### Bug Fix
8
+
9
+ - **zsh inline comment crash** — `npx kodelyth-ecc --target windsurf-home # comment` would fail with `Unknown argument: #` in zsh. Unlike bash, zsh does not strip inline `#` comments before passing args to a process. Fixed at two layers: `bin/kodelyth-ecc.js` now filters out `#` and all following args before passing to the installer, and `install.sh` also handles `#*` args with a graceful `break`. This makes copy-pasting commands from documentation with inline comments safe on all shells.
10
+
11
+ ---
12
+
13
+ ## v1.5.6 — Accuracy, Ruby/Elixir, /doctor, /update (May 2026)
14
+
15
+ ### Bug Fixes
16
+
17
+ - **Dynamic install counts** — `install.sh` and `install.ps1` now compute agent/skill/command counts from the actual filesystem at install time. Hardcoded numbers like `(58)` and `(79)` that were wrong on every install are gone permanently.
18
+ - **`rules/common/agents.md` rewritten** — listed only 10 agents from an ancient version. Now documents all 62 agents across 10 categories with handoff chains. This file is injected into `.windsurfrules` on every Windsurf session — the AI was being told there were 10 agents when there are 62.
19
+ - **`kodelyth-advisor` model field removed** — `model: sonnet` violated the Kodelyth Standard (`CONTRIBUTING.md` explicitly says no `model:` field). Fixed.
20
+ - **Windsurf post-install rule count** — was hardcoded as "15 coding rules", now computed dynamically.
21
+ - **`install.ps1` `.windsurfrules` path bug** — for `windsurf-home` target, the file was being written to `$HomeDir\.windsurfrules` instead of `$Dest\.windsurfrules`. Fixed.
22
+ - **README agent count** — "All 61 subagents" in the What Gets Installed table corrected to 62.
23
+ - **OpenCode platform description** — README said "Full" support. OpenCode receives rules only (no agents, no skills). Now documented honestly.
24
+
25
+ ### New Features
26
+
27
+ - **`/doctor` command** — run a health check on your ECC install from inside your IDE. Wraps `scripts/doctor.js`. Shows OK/WARNING/ERROR per component with a summary.
28
+ - **`/update` command** — upgrade to the latest ECC version without memorizing your original install flags. Reads `kodelyth-ecc-install-state.json`, replays `npx kodelyth-ecc@latest --target <target>` automatically. Never overwrites `~/.kodelyth/memory/` or `tasks/lessons.md`.
29
+ - **Ruby language rules** — `rules/ruby/` with coding-style, patterns, testing (RSpec + FactoryBot), security (Brakeman + bundler-audit), and hooks (RuboCop auto-fix). Installable via `npx kodelyth-ecc ruby` or `./install.sh ruby`.
30
+ - **Elixir language rules** — `rules/elixir/` with coding-style (mix format + Credo), patterns (with/GenServer/Context), testing (ExUnit + Mox + excoveralls), security (Sobelow + mix hex.audit), and hooks. Installable via `npx kodelyth-ecc elixir` or `./install.sh elixir`.
31
+ - **GitHub issue + PR templates** — `.github/ISSUE_TEMPLATE/bug_report.md`, `.github/ISSUE_TEMPLATE/new_agent.md`, `.github/PULL_REQUEST_TEMPLATE.md`. Contribution quality gate built into the repo workflow.
32
+
33
+ ### Changes
34
+
35
+ - `package.json` description updated to reflect 90 commands (was 88)
36
+ - `ruby` and `elixir` added to language parser in both `install.sh` and `install.ps1`
37
+
38
+ ---
39
+
5
40
  ## v1.5.3 — God-Tier Intent Routing Expansion (May 2026)
6
41
 
7
42
  ### The Routing Overhaul
package/README.md CHANGED
@@ -299,7 +299,7 @@ Project: **my-app**
299
299
  |---|---|---|
300
300
  | Agents | **62** | Specialist subagents — reviewers, planners, debuggers, architects, incident-commander, load-tester, memory, image-architect |
301
301
  | Skills | **188** | Domain knowledge — patterns, testing, security, DevOps, intent routing, memory |
302
- | Commands | **80** | Slash command workflows (`/tdd`, `/plan`, `/memory`, etc.) |
302
+ | Commands | **90** | Slash command workflows (`/tdd`, `/plan`, `/memory`, `/doctor`, `/update`, etc.) |
303
303
  | Hooks | **20+** | Quality gates, secret scanning, branch checks, memory inject + capture + correction + project DNA |
304
304
  | Rules | **17** | Always-on coding standards + intent routing + memory protocol + self-improvement workflow |
305
305
  | Memory | **local** | BM25-indexed personal memory at `~/.kodelyth/memory/` (zero deps) |
@@ -440,7 +440,7 @@ The intent router will route you to the right one. The AI announces who's taking
440
440
 
441
441
  | Source | Destination | What it does |
442
442
  |---|---|---|
443
- | `agents/` | `~/.claude/agents/` | All 61 subagents available globally |
443
+ | `agents/` | `~/.claude/agents/` | All 62 subagents available globally |
444
444
  | `skills/` | `~/.claude/skills/` | All 188 skills loadable via commands |
445
445
  | `hooks/hooks.json` | `~/.claude/hooks/` | Automated quality gates |
446
446
  | `rules/` | `~/.claude/rules/` | Always-on standards + intent routing |
@@ -510,7 +510,7 @@ Available profiles:
510
510
  Or specify languages directly:
511
511
 
512
512
  ```bash
513
- npx kodelyth-ecc typescript python golang rust java kotlin php swift cpp dart
513
+ npx kodelyth-ecc typescript python golang rust java kotlin php swift cpp dart ruby elixir
514
514
  ```
515
515
 
516
516
  ---
@@ -524,7 +524,7 @@ npx kodelyth-ecc typescript python golang rust java kotlin php swift cpp dart
524
524
  | Cursor | Full | `cursor-project` | Rules, skills |
525
525
  | Codex CLI | Full | `codex-home` | Agents, skills, commands, rules |
526
526
  | Google Antigravity | Full | `antigravity` | Agents → skills, commands → workflows, rules |
527
- | OpenCode | Full | `opencode` | Rules |
527
+ | OpenCode | Rules only | `opencode` | Rules (agents + skills not yet supported by OpenCode) |
528
528
 
529
529
  **OS support:** macOS, Linux (`install.sh`), Windows (`install.ps1`), or any OS with Node.js 18+ (`npx`).
530
530
 
package/VERSION CHANGED
@@ -1 +1 @@
1
- 1.5.5
1
+ 1.5.7
@@ -7,7 +7,6 @@ description: >
7
7
  direction instantly. No hand-holding, no noise — just the exact answer.
8
8
  Use when you need strategic guidance, tool selection, or a clear path forward.
9
9
  tools: ["Read", "Grep", "Glob"]
10
- model: sonnet
11
10
  ---
12
11
 
13
12
  You are the Kodelyth Advisor — a principal engineer with a decade-plus of building systems that power billions of users at companies valued in the hundreds of billions. You have shipped production code at Google scale, designed distributed systems under real SLA pressure, and mentored engineers who went on to lead their own platforms. You do not write toy code. You do not give junior-level answers. You think in systems, not files.
@@ -20,7 +20,12 @@ const fs = require('fs');
20
20
  const os = require('os');
21
21
 
22
22
  const ROOT = path.join(__dirname, '..');
23
- const args = process.argv.slice(2);
23
+ // zsh (unlike bash) passes inline comments as literal args — strip them
24
+ const args = process.argv.slice(2).filter((a, i, arr) => {
25
+ if (a.startsWith('#')) return false; // drop # and everything after
26
+ const prev = arr.slice(0, i).findIndex(x => x.startsWith('#'));
27
+ return prev === -1;
28
+ });
24
29
  const isWin = os.platform() === 'win32';
25
30
 
26
31
  // ── Help shortcut ─────────────────────────────────────────────────────────────
@@ -0,0 +1,75 @@
1
+ ---
2
+ description: Diagnose your Kodelyth ECC install — check for drift, missing files, version mismatches, and confirm everything is healthy
3
+ ---
4
+
5
+ # /doctor
6
+
7
+ Runs a health check on your ECC install. Detects drift between what was installed and what is currently on disk.
8
+
9
+ ## What It Checks
10
+
11
+ - Install state file exists and is readable
12
+ - Installed version vs latest available
13
+ - Agent files present and uncorrupted
14
+ - Skills directory intact
15
+ - Rules loaded correctly
16
+ - Memory store accessible (if applicable)
17
+ - Hooks registered (Claude Code only)
18
+
19
+ ## Usage
20
+
21
+ ```
22
+ /doctor
23
+ ```
24
+
25
+ Run with no arguments for a full health report on all detected installs.
26
+
27
+ ## Implementation
28
+
29
+ Runs the built-in doctor script:
30
+
31
+ ```bash
32
+ node scripts/doctor.js
33
+ ```
34
+
35
+ Or with a specific target:
36
+
37
+ ```bash
38
+ node scripts/doctor.js --target claude-home
39
+ node scripts/doctor.js --target windsurf-home
40
+ node scripts/doctor.js --target windsurf-project
41
+ node scripts/doctor.js --target codex-home
42
+ node scripts/doctor.js --target cursor-project
43
+ ```
44
+
45
+ For JSON output (useful in CI or scripts):
46
+
47
+ ```bash
48
+ node scripts/doctor.js --json
49
+ ```
50
+
51
+ ## Output
52
+
53
+ The doctor report shows:
54
+
55
+ | Field | Meaning |
56
+ |-------|---------|
57
+ | `OK` | Component healthy, no issues |
58
+ | `WARNING` | Potential issue, non-blocking |
59
+ | `ERROR` | Missing or corrupted file, needs attention |
60
+
61
+ A summary line shows total checked, ok, warnings, and errors.
62
+
63
+ ## When to Run
64
+
65
+ - After first install to confirm everything landed
66
+ - After upgrading to a new ECC version
67
+ - When an agent or skill isn't behaving as expected
68
+ - Before filing a bug report
69
+
70
+ ## Related
71
+
72
+ - `/update` — upgrade to the latest ECC version
73
+ - `use kodelyth-advisor` — if you're not sure where to start
74
+
75
+ > Powered by Kodelyth — trust your install, verify your tools.
@@ -0,0 +1,92 @@
1
+ ---
2
+ description: Upgrade Kodelyth ECC to the latest version, preserving your current install target and language profile
3
+ ---
4
+
5
+ # /update
6
+
7
+ Upgrades your ECC install to the latest version from npm. Reads your existing install state to replay the same target and language options automatically — no flags to remember.
8
+
9
+ ## Usage
10
+
11
+ ```
12
+ /update
13
+ ```
14
+
15
+ ## What It Does
16
+
17
+ 1. Reads `kodelyth-ecc-install-state.json` from your install directory to recover the original `target` and `languages`
18
+ 2. Runs `npx kodelyth-ecc@latest` with those same flags
19
+ 3. Overwrites agents, skills, rules, and commands with the latest versions
20
+ 4. Leaves your memory store (`~/.kodelyth/memory/`) and `tasks/lessons.md` untouched — your learned context is never overwritten
21
+
22
+ ## Implementation
23
+
24
+ The agent should run the appropriate command based on your platform.
25
+
26
+ ### Automatic (reads install state)
27
+
28
+ ```bash
29
+ node -e "
30
+ const fs = require('fs');
31
+ const os = require('os');
32
+ const path = require('path');
33
+
34
+ const candidates = [
35
+ path.join(os.homedir(), '.claude', 'kodelyth-ecc-install-state.json'),
36
+ path.join(os.homedir(), '.codeium', 'windsurf', 'kodelyth-ecc-install-state.json'),
37
+ path.join(os.homedir(), '.codex', 'kodelyth-ecc-install-state.json'),
38
+ path.join(process.cwd(), '.windsurf', 'kodelyth-ecc-install-state.json'),
39
+ path.join(process.cwd(), '.cursor', 'kodelyth-ecc-install-state.json'),
40
+ path.join(process.cwd(), '.agent', 'kodelyth-ecc-install-state.json'),
41
+ path.join(process.cwd(), '.opencode', 'kodelyth-ecc-install-state.json'),
42
+ ];
43
+
44
+ let state = null;
45
+ let stateFile = null;
46
+ for (const f of candidates) {
47
+ if (fs.existsSync(f)) { state = JSON.parse(fs.readFileSync(f, 'utf8')); stateFile = f; break; }
48
+ }
49
+
50
+ if (!state) {
51
+ console.error('No install state found. Run the installer manually:');
52
+ console.error(' npx kodelyth-ecc --target <target>');
53
+ process.exit(1);
54
+ }
55
+
56
+ const langs = (state.languages || []).join(' ');
57
+ const cmd = ['npx', 'kodelyth-ecc@latest', '--target', state.target, langs].filter(Boolean).join(' ');
58
+ console.log('Found install state:', stateFile);
59
+ console.log('Previous version:', state.version);
60
+ console.log('Running:', cmd);
61
+ require('child_process').execSync(cmd, { stdio: 'inherit' });
62
+ "
63
+ ```
64
+
65
+ ### Manual (if you know your target)
66
+
67
+ ```bash
68
+ npx kodelyth-ecc@latest # Claude Code
69
+ npx kodelyth-ecc@latest --target windsurf-home # Windsurf global
70
+ npx kodelyth-ecc@latest --target windsurf-project # Windsurf project
71
+ npx kodelyth-ecc@latest --target codex-home # Codex CLI
72
+ npx kodelyth-ecc@latest --target cursor-project # Cursor
73
+ ```
74
+
75
+ ## What Is NOT Overwritten
76
+
77
+ | Path | Protected |
78
+ |------|-----------|
79
+ | `~/.kodelyth/memory/` | Your BM25 memory store |
80
+ | `tasks/lessons.md` | Project correction rules |
81
+ | `tasks/todo.md` | Open todos |
82
+
83
+ ## After Updating
84
+
85
+ Run `/doctor` to confirm the new version is healthy.
86
+
87
+ ## Related
88
+
89
+ - `/doctor` — verify install health
90
+ - `use kodelyth-advisor` — guidance after a major version update
91
+
92
+ > Powered by Kodelyth — stay current, stay sharp.
package/install.ps1 CHANGED
@@ -21,7 +21,7 @@ $ErrorActionPreference = "Stop"
21
21
  # ── Banner ────────────────────────────────────────────────────────────────────
22
22
  Write-Host ""
23
23
  Write-Host " Kodelyth ECC — Production-grade AI coding agent toolkit" -ForegroundColor Cyan
24
- Write-Host " 59 agents · 188 skills · 80 commands · 18+ hooks · intent routing · local memory" -ForegroundColor Gray
24
+ Write-Host " 62 agents · 188 skills · 90 commands · 20+ hooks · intent routing · local memory" -ForegroundColor Gray
25
25
  Write-Host ""
26
26
 
27
27
  $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
@@ -107,6 +107,11 @@ if ($Confirm -and $Confirm -notmatch '^[Yy]$') {
107
107
  }
108
108
  Write-Host ""
109
109
 
110
+ # ── Dynamic Counts ───────────────────────────────────────────────────────────
111
+ $AgentCount = (Get-ChildItem -Path "$ScriptDir\agents" -Filter "*.md" -File).Count
112
+ $SkillCount = (Get-ChildItem -Path "$ScriptDir\skills" -Recurse -Filter "SKILL.md" -File).Count
113
+ $CmdCount = (Get-ChildItem -Path "$ScriptDir\commands" -Filter "*.md" -File).Count
114
+
110
115
  # ── Helpers ───────────────────────────────────────────────────────────────────
111
116
  function Install-Dir {
112
117
  param([string]$Src, [string]$Dest, [string]$Label)
@@ -162,12 +167,12 @@ switch ($Target) {
162
167
  Write-Host " [OK] CLAUDE.md + SOUL.md" -ForegroundColor Green
163
168
  }
164
169
  { $_ -in "windsurf-project","windsurf-home" } {
165
- Install-Dir "$ScriptDir\agents" $AgentsDest "Agents (58)"
166
- Install-Dir "$ScriptDir\skills" $SkillsDest "Skills (187)"
170
+ Install-Dir "$ScriptDir\agents" $AgentsDest "Agents ($AgentCount)"
171
+ Install-Dir "$ScriptDir\skills" $SkillsDest "Skills ($SkillCount)"
167
172
  Install-Flat "$ScriptDir\rules" $RulesDest "Rules"
168
173
 
169
174
  # Generate .windsurfrules from all common rules
170
- $WindsurfRulesFile = if ($Target -eq "windsurf-project") { "$(Get-Location)\.windsurfrules" } else { "$HomeDir\.windsurfrules" }
175
+ $WindsurfRulesFile = if ($Target -eq "windsurf-project") { "$(Get-Location)\.windsurfrules" } else { "$Dest\.windsurfrules" }
171
176
  $CommonRulesDir = "$ScriptDir\rules\common"
172
177
  if (Test-Path $CommonRulesDir) {
173
178
  $Combined = Get-ChildItem -Path $CommonRulesDir -Filter "*.md" | Sort-Object Name | ForEach-Object { Get-Content $_.FullName }
@@ -176,18 +181,18 @@ switch ($Target) {
176
181
  }
177
182
  }
178
183
  "antigravity" {
179
- Install-Dir "$ScriptDir\agents" $AgentsDest "Agents -> skills (58)"
180
- Install-Dir "$ScriptDir\commands" $CommandsDest "Commands -> workflows (79)"
184
+ Install-Dir "$ScriptDir\agents" $AgentsDest "Agents -> skills ($AgentCount)"
185
+ Install-Dir "$ScriptDir\commands" $CommandsDest "Commands -> workflows ($CmdCount)"
181
186
  Install-Flat "$ScriptDir\rules" $RulesDest "Rules"
182
187
  }
183
188
  "cursor-project" {
184
189
  Install-Flat "$ScriptDir\rules" $RulesDest "Rules"
185
- Install-Dir "$ScriptDir\skills" $SkillsDest "Skills (187)"
190
+ Install-Dir "$ScriptDir\skills" $SkillsDest "Skills ($SkillCount)"
186
191
  }
187
192
  "codex-home" {
188
- Install-Dir "$ScriptDir\agents" $AgentsDest "Agents (58)"
189
- Install-Dir "$ScriptDir\skills" $SkillsDest "Skills (187)"
190
- Install-Dir "$ScriptDir\commands" $CommandsDest "Commands (79)"
193
+ Install-Dir "$ScriptDir\agents" $AgentsDest "Agents ($AgentCount)"
194
+ Install-Dir "$ScriptDir\skills" $SkillsDest "Skills ($SkillCount)"
195
+ Install-Dir "$ScriptDir\commands" $CommandsDest "Commands ($CmdCount)"
191
196
  Install-Flat "$ScriptDir\rules" $RulesDest "Rules"
192
197
  }
193
198
  "opencode" {
@@ -231,7 +236,7 @@ switch ($Target) {
231
236
  }
232
237
  "codex-home" {
233
238
  Write-Host " 1. Restart Codex CLI (codex)"
234
- Write-Host " 2. All 59 agents and 188 skills are now available"
239
+ Write-Host " 2. All $AgentCount agents and $SkillCount skills are now available"
235
240
  Write-Host " 3. Try: use kodelyth-advisor"
236
241
  }
237
242
  "antigravity" {
package/install.sh CHANGED
@@ -87,7 +87,7 @@ while [[ $# -gt 0 ]]; do
87
87
  TARGET="${1#--target=}"
88
88
  shift
89
89
  ;;
90
- typescript|python|golang|go|rust|java|kotlin|php|swift|cpp|csharp|dart)
90
+ typescript|python|golang|go|rust|java|kotlin|php|swift|cpp|csharp|dart|ruby|elixir)
91
91
  lang="$1"
92
92
  [[ "$lang" == "go" ]] && lang="golang"
93
93
  LANGUAGE_MODULES+=("$lang")
@@ -143,7 +143,7 @@ while [[ $# -gt 0 ]]; do
143
143
  echo " --profile backend Go + Python + Java"
144
144
  echo ""
145
145
  echo "Languages (manual, installs language-specific rules):"
146
- echo " typescript python golang rust java kotlin php swift cpp dart"
146
+ echo " typescript python golang rust java kotlin php swift cpp dart ruby elixir"
147
147
  echo ""
148
148
  echo "Examples:"
149
149
  echo " ./install.sh"
@@ -154,6 +154,10 @@ while [[ $# -gt 0 ]]; do
154
154
  echo " ./install.sh --target cursor-project typescript"
155
155
  exit 0
156
156
  ;;
157
+ \#*)
158
+ # zsh passes inline comments as literal args; skip them and everything after
159
+ break
160
+ ;;
157
161
  *)
158
162
  echo -e "${RED}Unknown argument: $1${RESET}"
159
163
  exit 1
@@ -338,15 +342,20 @@ generate_windsurfrules() {
338
342
  echo -e " ${GREEN}✓${RESET} .windsurfrules ${BLUE}(→ $dest_file)${RESET}"
339
343
  }
340
344
 
345
+ # ── Dynamic Counts ────────────────────────────────────────────────────────────
346
+ AGENT_COUNT=$(find "$SCRIPT_DIR/agents" -maxdepth 1 -name "*.md" | wc -l | tr -d ' ')
347
+ SKILL_COUNT=$(find "$SCRIPT_DIR/skills" -mindepth 2 -maxdepth 2 -name "SKILL.md" | wc -l | tr -d ' ')
348
+ CMD_COUNT=$(find "$SCRIPT_DIR/commands" -maxdepth 1 -name "*.md" | wc -l | tr -d ' ')
349
+
341
350
  # ── Install ───────────────────────────────────────────────────────────────────
342
351
  echo -e "${BOLD}Installing components...${RESET}"
343
352
  echo ""
344
353
 
345
354
  case "$TARGET" in
346
355
  claude-home)
347
- install_dir "$SCRIPT_DIR/agents" "$AGENTS_DEST" "Agents (58)"
348
- install_dir "$SCRIPT_DIR/skills" "$SKILLS_DEST" "Skills (187)"
349
- install_dir "$SCRIPT_DIR/commands" "$COMMANDS_DEST" "Commands (79)"
356
+ install_dir "$SCRIPT_DIR/agents" "$AGENTS_DEST" "Agents ($AGENT_COUNT)"
357
+ install_dir "$SCRIPT_DIR/skills" "$SKILLS_DEST" "Skills ($SKILL_COUNT)"
358
+ install_dir "$SCRIPT_DIR/commands" "$COMMANDS_DEST" "Commands ($CMD_COUNT)"
350
359
  install_hooks "$HOOKS_DEST"
351
360
  # Rules: install common + selected languages
352
361
  mkdir -p "$RULES_DEST"
@@ -369,9 +378,9 @@ case "$TARGET" in
369
378
 
370
379
  antigravity)
371
380
  # Agents → .agent/skills/
372
- install_dir "$SCRIPT_DIR/agents" "$AGENTS_DEST" "Agents → skills (53)"
381
+ install_dir "$SCRIPT_DIR/agents" "$AGENTS_DEST" "Agents → skills ($AGENT_COUNT)"
373
382
  # Commands → .agent/workflows/
374
- install_dir "$SCRIPT_DIR/commands" "$COMMANDS_DEST" "Commands → workflows (79)"
383
+ install_dir "$SCRIPT_DIR/commands" "$COMMANDS_DEST" "Commands → workflows ($CMD_COUNT)"
375
384
  # Rules → .agent/rules/ (flattened)
376
385
  install_flat "$SCRIPT_DIR/rules" "$RULES_DEST" "Rules (flattened)"
377
386
  # Kodelyth skills → .agent/rules/ (flattened — Antigravity has no skills system)
@@ -387,19 +396,19 @@ case "$TARGET" in
387
396
 
388
397
  cursor-project)
389
398
  install_flat "$SCRIPT_DIR/rules" "$RULES_DEST" "Rules (flattened)"
390
- install_dir "$SCRIPT_DIR/skills" "$SKILLS_DEST" "Skills (187)"
399
+ install_dir "$SCRIPT_DIR/skills" "$SKILLS_DEST" "Skills ($SKILL_COUNT)"
391
400
  ;;
392
401
 
393
402
  codex-home)
394
- install_dir "$SCRIPT_DIR/agents" "$AGENTS_DEST" "Agents (58)"
395
- install_dir "$SCRIPT_DIR/skills" "$SKILLS_DEST" "Skills (187)"
396
- install_dir "$SCRIPT_DIR/commands" "$COMMANDS_DEST" "Commands (79)"
403
+ install_dir "$SCRIPT_DIR/agents" "$AGENTS_DEST" "Agents ($AGENT_COUNT)"
404
+ install_dir "$SCRIPT_DIR/skills" "$SKILLS_DEST" "Skills ($SKILL_COUNT)"
405
+ install_dir "$SCRIPT_DIR/commands" "$COMMANDS_DEST" "Commands ($CMD_COUNT)"
397
406
  install_flat "$SCRIPT_DIR/rules" "$RULES_DEST" "Rules (flattened)"
398
407
  ;;
399
408
 
400
409
  windsurf-project|windsurf-home)
401
- install_dir "$SCRIPT_DIR/agents" "$AGENTS_DEST" "Agents (58)"
402
- install_dir "$SCRIPT_DIR/skills" "$SKILLS_DEST" "Skills (187)"
410
+ install_dir "$SCRIPT_DIR/agents" "$AGENTS_DEST" "Agents ($AGENT_COUNT)"
411
+ install_dir "$SCRIPT_DIR/skills" "$SKILLS_DEST" "Skills ($SKILL_COUNT)"
403
412
  install_flat "$SCRIPT_DIR/rules" "$RULES_DEST" "Rules (flattened)"
404
413
  generate_windsurfrules "$SCRIPT_DIR/rules" "$WINDSURFRULES_DEST"
405
414
  ;;
@@ -472,10 +481,11 @@ case "$TARGET" in
472
481
  echo " use kodelyth-advisor"
473
482
  ;;
474
483
  windsurf-project|windsurf-home)
484
+ RULE_COUNT=$(find "$SCRIPT_DIR/rules/common" -maxdepth 1 -name "*.md" ! -name "agent-intent-routing.md" | wc -l | tr -d ' ')
475
485
  echo -e "${BOLD} Windsurf — what to do now:${RESET}"
476
486
  echo ""
477
487
  echo " Open your project in Windsurf (Cascade)."
478
- echo " .windsurfrules is active — 15 coding rules + intent routing loaded automatically."
488
+ echo " .windsurfrules is active — $RULE_COUNT coding rules + intent routing loaded automatically."
479
489
  echo " Agents available in .windsurf/agents/"
480
490
  echo ""
481
491
  echo " use kodelyth-advisor ← not sure where to start"
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "kodelyth-ecc",
3
- "version": "1.5.5",
4
- "description": "Production-grade AI coding toolkit — 62 agents, 188 skills, 88 commands, parallel multi-agent commands, semantic intent routing, self-learning memory. Works with Claude Code, Windsurf, Cursor, Codex, Antigravity, and OpenCode.",
3
+ "version": "1.5.7",
4
+ "description": "Production-grade AI coding toolkit — 62 agents, 188 skills, 90 commands, parallel multi-agent commands, semantic intent routing, self-learning memory. Works with Claude Code, Windsurf, Cursor, Codex, Antigravity, and OpenCode.",
5
5
  "author": "Kodelyth <github.com/sifxprime>",
6
6
  "license": "MIT",
7
7
  "repository": {