From be4663cc6cbff9c5b5c9cd010658c32a017c7a57 Mon Sep 17 00:00:00 2001 From: Tony Park Date: Fri, 20 Mar 2026 02:09:32 +0900 Subject: [PATCH 1/3] fix(install): prefix language-specific rules to prevent overwriting common rules The configure-ecc skill's Step 3 flat-copies language-specific rule files (e.g., rules/python/*) into the same $TARGET/rules/ directory as common rules. Since both directories contain identically-named files (coding-style.md, security.md, testing.md, hooks.md, patterns.md), the last language installed silently overwrites common rules. Fix by prefixing language-specific files during copy (e.g., python-coding-style.md, golang-testing.md). This matches the approach already used by the Antigravity install target adapter. Also updates the Japanese and Chinese translations of the skill, and adds a troubleshooting note about the prefixed naming convention. Closes #432 Co-Authored-By: Claude Opus 4.6 (1M context) --- docs/ja-JP/skills/configure-ecc/SKILL.md | 9 +++++---- docs/zh-CN/skills/configure-ecc/SKILL.md | 9 +++++---- skills/configure-ecc/SKILL.md | 10 ++++++---- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/docs/ja-JP/skills/configure-ecc/SKILL.md b/docs/ja-JP/skills/configure-ecc/SKILL.md index 0a9ba790b..f722898c5 100644 --- a/docs/ja-JP/skills/configure-ecc/SKILL.md +++ b/docs/ja-JP/skills/configure-ecc/SKILL.md @@ -157,10 +157,11 @@ Options: # 共通ルール(rules/ にフラットコピー) cp -r $ECC_ROOT/rules/common/* $TARGET/rules/ -# 言語固有のルール(rules/ にフラットコピー) -cp -r $ECC_ROOT/rules/typescript/* $TARGET/rules/ # 選択された場合 -cp -r $ECC_ROOT/rules/python/* $TARGET/rules/ # 選択された場合 -cp -r $ECC_ROOT/rules/golang/* $TARGET/rules/ # 選択された場合 +# 言語固有のルール(共通ルールの上書きを防ぐためプレフィックス付き) +# coding-style.md は typescript-coding-style.md のようになります +for f in $ECC_ROOT/rules/typescript/*; do cp "$f" "$TARGET/rules/typescript-$(basename "$f")"; done # 選択された場合 +for f in $ECC_ROOT/rules/python/*; do cp "$f" "$TARGET/rules/python-$(basename "$f")"; done # 選択された場合 +for f in $ECC_ROOT/rules/golang/*; do cp "$f" "$TARGET/rules/golang-$(basename "$f")"; done # 選択された場合 ``` **重要**: ユーザーが言語固有のルールを選択したが、共通ルールを選択しなかった場合、警告します: diff --git a/docs/zh-CN/skills/configure-ecc/SKILL.md b/docs/zh-CN/skills/configure-ecc/SKILL.md index e45d8f851..965f5b302 100644 --- a/docs/zh-CN/skills/configure-ecc/SKILL.md +++ b/docs/zh-CN/skills/configure-ecc/SKILL.md @@ -224,10 +224,11 @@ Options: # Common rules (flat copy into rules/) cp -r $ECC_ROOT/rules/common/* $TARGET/rules/ -# Language-specific rules (flat copy into rules/) -cp -r $ECC_ROOT/rules/typescript/* $TARGET/rules/ # if selected -cp -r $ECC_ROOT/rules/python/* $TARGET/rules/ # if selected -cp -r $ECC_ROOT/rules/golang/* $TARGET/rules/ # if selected +# Language-specific rules (prefixed to avoid overwriting common rules) +# Files like coding-style.md become typescript-coding-style.md, etc. +for f in $ECC_ROOT/rules/typescript/*; do cp "$f" "$TARGET/rules/typescript-$(basename "$f")"; done # if selected +for f in $ECC_ROOT/rules/python/*; do cp "$f" "$TARGET/rules/python-$(basename "$f")"; done # if selected +for f in $ECC_ROOT/rules/golang/*; do cp "$f" "$TARGET/rules/golang-$(basename "$f")"; done # if selected ``` **重要**:如果用户选择了任何特定语言的规则但**没有**选择通用规则,警告他们: diff --git a/skills/configure-ecc/SKILL.md b/skills/configure-ecc/SKILL.md index 07109a30e..228e3327d 100644 --- a/skills/configure-ecc/SKILL.md +++ b/skills/configure-ecc/SKILL.md @@ -221,10 +221,11 @@ Execute installation: # Common rules (flat copy into rules/) cp -r $ECC_ROOT/rules/common/* $TARGET/rules/ -# Language-specific rules (flat copy into rules/) -cp -r $ECC_ROOT/rules/typescript/* $TARGET/rules/ # if selected -cp -r $ECC_ROOT/rules/python/* $TARGET/rules/ # if selected -cp -r $ECC_ROOT/rules/golang/* $TARGET/rules/ # if selected +# Language-specific rules (prefixed to avoid overwriting common rules) +# Files like coding-style.md become typescript-coding-style.md, etc. +for f in $ECC_ROOT/rules/typescript/*; do cp "$f" "$TARGET/rules/typescript-$(basename "$f")"; done # if selected +for f in $ECC_ROOT/rules/python/*; do cp "$f" "$TARGET/rules/python-$(basename "$f")"; done # if selected +for f in $ECC_ROOT/rules/golang/*; do cp "$f" "$TARGET/rules/golang-$(basename "$f")"; done # if selected ``` **Important**: If the user selects any language-specific rules but NOT common rules, warn them: @@ -360,6 +361,7 @@ Then print a summary report: ### "Rules not working" - Rules are flat files, not in subdirectories: `$TARGET/rules/coding-style.md` (correct) vs `$TARGET/rules/common/coding-style.md` (incorrect for flat install) +- Language-specific rules are prefixed: `$TARGET/rules/python-coding-style.md` (correct) vs `$TARGET/rules/coding-style.md` (incorrect — overwrites the common rule) - Restart Claude Code after installing rules ### "Path reference errors after project-level install" From 2e24c6c90d885b2539cb2434e949a285336ef04a Mon Sep 17 00:00:00 2001 From: Tony Park Date: Fri, 20 Mar 2026 02:23:22 +0900 Subject: [PATCH 2/3] fix: add -r flag, quote $ECC_ROOT, and guard empty globs in copy commands Address review feedback: - Add `-r` flag to `cp` to handle potential subdirectories - Quote `$ECC_ROOT` in glob to prevent word-splitting on paths with spaces - Add `[ -e "$f" ]` guard to skip when glob doesn't match anything Applied consistently across EN, JA, and ZH skill docs. Co-Authored-By: Claude Opus 4.6 (1M context) --- docs/ja-JP/skills/configure-ecc/SKILL.md | 6 +++--- docs/zh-CN/skills/configure-ecc/SKILL.md | 6 +++--- skills/configure-ecc/SKILL.md | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/ja-JP/skills/configure-ecc/SKILL.md b/docs/ja-JP/skills/configure-ecc/SKILL.md index f722898c5..6c4a5edd2 100644 --- a/docs/ja-JP/skills/configure-ecc/SKILL.md +++ b/docs/ja-JP/skills/configure-ecc/SKILL.md @@ -159,9 +159,9 @@ cp -r $ECC_ROOT/rules/common/* $TARGET/rules/ # 言語固有のルール(共通ルールの上書きを防ぐためプレフィックス付き) # coding-style.md は typescript-coding-style.md のようになります -for f in $ECC_ROOT/rules/typescript/*; do cp "$f" "$TARGET/rules/typescript-$(basename "$f")"; done # 選択された場合 -for f in $ECC_ROOT/rules/python/*; do cp "$f" "$TARGET/rules/python-$(basename "$f")"; done # 選択された場合 -for f in $ECC_ROOT/rules/golang/*; do cp "$f" "$TARGET/rules/golang-$(basename "$f")"; done # 選択された場合 +for f in "$ECC_ROOT"/rules/typescript/*; do [ -e "$f" ] && cp -r "$f" "$TARGET/rules/typescript-$(basename "$f")"; done # 選択された場合 +for f in "$ECC_ROOT"/rules/python/*; do [ -e "$f" ] && cp -r "$f" "$TARGET/rules/python-$(basename "$f")"; done # 選択された場合 +for f in "$ECC_ROOT"/rules/golang/*; do [ -e "$f" ] && cp -r "$f" "$TARGET/rules/golang-$(basename "$f")"; done # 選択された場合 ``` **重要**: ユーザーが言語固有のルールを選択したが、共通ルールを選択しなかった場合、警告します: diff --git a/docs/zh-CN/skills/configure-ecc/SKILL.md b/docs/zh-CN/skills/configure-ecc/SKILL.md index 965f5b302..caf6f4a5f 100644 --- a/docs/zh-CN/skills/configure-ecc/SKILL.md +++ b/docs/zh-CN/skills/configure-ecc/SKILL.md @@ -226,9 +226,9 @@ cp -r $ECC_ROOT/rules/common/* $TARGET/rules/ # Language-specific rules (prefixed to avoid overwriting common rules) # Files like coding-style.md become typescript-coding-style.md, etc. -for f in $ECC_ROOT/rules/typescript/*; do cp "$f" "$TARGET/rules/typescript-$(basename "$f")"; done # if selected -for f in $ECC_ROOT/rules/python/*; do cp "$f" "$TARGET/rules/python-$(basename "$f")"; done # if selected -for f in $ECC_ROOT/rules/golang/*; do cp "$f" "$TARGET/rules/golang-$(basename "$f")"; done # if selected +for f in "$ECC_ROOT"/rules/typescript/*; do [ -e "$f" ] && cp -r "$f" "$TARGET/rules/typescript-$(basename "$f")"; done # if selected +for f in "$ECC_ROOT"/rules/python/*; do [ -e "$f" ] && cp -r "$f" "$TARGET/rules/python-$(basename "$f")"; done # if selected +for f in "$ECC_ROOT"/rules/golang/*; do [ -e "$f" ] && cp -r "$f" "$TARGET/rules/golang-$(basename "$f")"; done # if selected ``` **重要**:如果用户选择了任何特定语言的规则但**没有**选择通用规则,警告他们: diff --git a/skills/configure-ecc/SKILL.md b/skills/configure-ecc/SKILL.md index 228e3327d..c11445ef4 100644 --- a/skills/configure-ecc/SKILL.md +++ b/skills/configure-ecc/SKILL.md @@ -223,9 +223,9 @@ cp -r $ECC_ROOT/rules/common/* $TARGET/rules/ # Language-specific rules (prefixed to avoid overwriting common rules) # Files like coding-style.md become typescript-coding-style.md, etc. -for f in $ECC_ROOT/rules/typescript/*; do cp "$f" "$TARGET/rules/typescript-$(basename "$f")"; done # if selected -for f in $ECC_ROOT/rules/python/*; do cp "$f" "$TARGET/rules/python-$(basename "$f")"; done # if selected -for f in $ECC_ROOT/rules/golang/*; do cp "$f" "$TARGET/rules/golang-$(basename "$f")"; done # if selected +for f in "$ECC_ROOT"/rules/typescript/*; do [ -e "$f" ] && cp -r "$f" "$TARGET/rules/typescript-$(basename "$f")"; done # if selected +for f in "$ECC_ROOT"/rules/python/*; do [ -e "$f" ] && cp -r "$f" "$TARGET/rules/python-$(basename "$f")"; done # if selected +for f in "$ECC_ROOT"/rules/golang/*; do [ -e "$f" ] && cp -r "$f" "$TARGET/rules/golang-$(basename "$f")"; done # if selected ``` **Important**: If the user selects any language-specific rules but NOT common rules, warn them: From 6a76c1efa34999703234947d923ba5ef4feb63b0 Mon Sep 17 00:00:00 2001 From: Affaan Mustafa Date: Fri, 20 Mar 2026 01:09:03 -0700 Subject: [PATCH 3/3] fix: sync catalog counts (27 agents, 113 skills, 58 commands) --- AGENTS.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 0039c62fa..1cbac6ff3 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,6 +1,6 @@ # Everything Claude Code (ECC) — Agent Instructions -This is a **production-ready AI coding plugin** providing 27 specialized agents, 114 skills, 59 commands, and automated hook workflows for software development. +This is a **production-ready AI coding plugin** providing 27 specialized agents, 113 skills, 58 commands, and automated hook workflows for software development. **Version:** 1.9.0 @@ -142,8 +142,8 @@ Troubleshoot failures: check test isolation → verify mocks → fix implementat ``` agents/ — 27 specialized subagents -skills/ — 114 workflow skills and domain knowledge -commands/ — 59 slash commands +skills/ — 109 workflow skills and domain knowledge +commands/ — 58 slash commands hooks/ — Trigger-based automations rules/ — Always-follow guidelines (common + per-language) scripts/ — Cross-platform Node.js utilities