ECC یک ریپازیتوری با ۲۶۸٬۳۳۹ ستاره است که کلاد کد را از یک دستیار خط فرمان به یک هارنس مهندسی تبدیل می‌کند: ۶۸ ایجنت، ۲۹۲ اسکیل و ۱۲۲ فایل قاعده در مخزن [1]. اینجا چهار پروفایلش را نصب کردم و اندازه گرفتم. پروفایل minimal و core بایت‌به‌بایت یکسان‌اند و ۲٬۳۶۲٬۵۷۴ بایت وزن دارند، پروفایل full با ضریب ۲٫۱۷ می‌آید، و کوتاه‌کردن دستی پوشه‌ی rules بعداً doctor را خراب می‌کند. لحظه‌ی خواندن داده: ۲۷ سپتامبر ۲۰۲۶.

نسخه‌ای که README پین کرده، روی رجیستری نیست

نخستین مانع خود README است. هر نمونه‌ی نصب در صفحه‌ی اصلی روی نسخه‌ی 2.2.2 پین شده، اما آخرین نسخه‌ای که npm منتشر کرده 2.2.1 است و همان دستور با خطای ETARGET می‌میرد [2][6]. فایل VERSION در شاخه‌ی main همان 2.2.2 را نشان می‌دهد [4] و چانگ‌لاگ هم آن را با تاریخ ۱۵ سپتامبر ۲۰۲۶ ثبت کرده است [3].

هشدار دوم README هم به همان اندازه واقعی بود. ecc-install یک باینری داخل بسته‌ی ecc-universal است، نه یک بسته‌ی مستقل؛ اجرای npx روی نام بسته خطای 404 می‌دهد [2].

# اول ببینیم روی رجیستری واقعا چه نسخه‌ای هست
$ npm view ecc-universal versions --json | tail -5
  "2.0.0",
  "2.1.0",
  "2.2.0",
  "2.2.1"
]

# همان دستوری که در README آمده، با خطا رد می‌شود
$ npx --yes ecc-universal@2.2.2 --help
npm error code ETARGET
npm error notarget No matching version found for ecc-universal@2.2.2.

# بسته‌ای که README هشدار داده، روی رجیستری وجود ندارد
$ npx --yes ecc-install --version
npm error 404 Not Found - GET https://registry.npmjs.org/ecc-install - Not found

نیازمندی‌ها هم در همان صفحه آمده‌اند: Node.js 18 یا بالاتر، و برای مسیر پلاگینی خود کلاد کد نسخه‌ی 2.1 به بالا به‌همراه git روی PATH [2]. مسیر هدایت‌شده‌ی چند هارنسی روی این ماشین اجرا نشد، چون claude روی PATH نبود و ابزار خطا داد که کلاد کد نصب نیست.

دروازه‌ی هوک: جایی که نصب عمدا متوقف می‌شود

پروفایل core یک سؤال اجباری می‌پرسد و تا جواب نگیرد هیچ فایلی نمی‌نویسد. متن خطا شش توانایی را نام می‌برد که رانتایم هوک به دست می‌آورد؛ مهم‌ترین‌شان این است که می‌تواند متن گفت‌وگوی استخراج‌شده از ترنسکریپت را به یک مدل بیرونی بفرستد. در یک پوشه‌ی خالی، پس از این خطا شمار فایل‌ها صفر ماند.

# بدون یک تصمیم صریح درباره‌ی هوک، نصب هیچ چیز نمی‌نویسد
$ npx --yes ecc-universal@2.2.1 install --profile core --target claude
Error: This install would enable ECC's automatic hook runtime, which can:
  1. Automatically format or otherwise modify project source files.
  2. Rewrite requested commands and start, replace, or terminate processes.
  3. Send transcript-derived conversation text to an external LLM.
  4. Probe MCP endpoints and launch, reconnect, or terminate MCP processes.
  5. Automatically deny or alter Edit, Write, Bash, and configuration operations.
  6. Persist session, observation, governance, notification, and cost records.
Confirm with --enable-hooks to install it, or --no-hooks to install everything else
without the hook runtime.

با --enable-hooks تعداد عملیات از ۴۸۹ به ۶۸۹ می‌رسد و فایل settings.json از ۳۵ بایت به ۴۴٬۴۰۴ بایت می‌رسد، چون یک قلاب PreToolUse روی Bash در آن نوشته می‌شود. فرمان همان قلاب مسیر مطلق نصب را به‌صورت base64 در خودش نگه می‌دارد؛ وقتی رمزگشایی کردم، همان ریشه‌ی نصب بیرون آمد. یعنی جابه‌جا کردن پوشه‌ی خانگی، همان قلاب را از کار می‌اندازد.

این انتخاب برای کسی که تازه کلاد کد را نصب کرده روشن‌تر است: با --no-hooks شروع کنید تا ببینید مهاجرت پروفایل‌ها و اسکیل‌ها به چه چیزی نیاز دارد، و هوک را بعد از آن جداگانه فعال کنید.

چهار پروفایل، چهار اندازه

هر پروفایل یک مانیفست ماژول است و تعداد عملیات‌ها را خودش اعلام می‌کند. ستون «بارِ مفید» مجموع بایت فایل‌هاست منهای پوشه‌ی ecc/ که فقط state نگه می‌دارد. اندازه‌ها روی نصب واقعی در پوشه‌ی خانگی اندازه‌گیری شده‌اند.

پروفایلعملیاتفایل روی دیسکبارِ مفید (بایت)اسکیلنسبت به minimal
minimal --no-hooks4894922362574481.00
core --no-hooks4894922362574481.00
core --enable-hooks6896914030838481.71
developer --no-hooks61862135155441251.49
full --no-hooks85786051208522862.17

دو پروفایل minimal و core با وجود نام متفاوت، دقیقا یک محتوا تولید می‌کنند. اختلاف ۹۷۷ بایتی فقط در خود فایل install-state.json است که نام پروفایل را نگه می‌دارد: ۲۸۴٬۳۹۲ بایت در برابر ۲۸۵٬۳۶۹ بایت. پس اگر می‌خواهید کم‌ترین نصب ممکن را داشته باشید، تفاوتی میان این دو نیست.

سه فایل روی دیسک می‌مانند که در فهرست عملیات نصب نیامده‌اند. install-state.json با ۲۸۴٬۳۹۲ بایت و state.db با ۳۷۲٬۷۳۶ بایت، روی هم ۶۵۷٬۱۲۸ بایت که ۲۱٫۸ درصد کل نصب کوچک است. با جمع کردن بارِ مفید و این پوشه به ۳٬۰۱۹٬۷۰۲ بایت می‌رسیم که همان عددی است که ابزار حجم روی دیسک گزارش می‌کند. فایل سوم settings.json است که در حالت بدون هوک فقط یک کلید دارد: includeCoAuthoredBy برابر false.

پروفایل full هم کاتالوگ کامل نیست. ۲۸۶ اسکیل نصب می‌کند در حالی که مخزن ۲۹۲ اسکیل دارد، و هفت اسکیل مخزن در هیچ پروفایلی نصب نمی‌شوند؛ از جمله rails-patterns و taste-application [1]. تعداد ایجنت‌ها و دستورها در همه‌ی پروفایل‌ها ثابت است: ۶۸ ایجنت و ۹۴ دستور.

آنچه در هر نشست وارد کانتکست می‌شود

در نشست، آنچه دائم بارگذاری می‌شود توضیح اسکیل‌هاست و نه بدنه‌ی آن‌ها؛ بدنه فقط وقتی خوانده می‌شود که اسکیل واقعا اجرا شود [9]. در هزینه‌ی پنهان هر اسکیل در هر نشست همین تفکیک را از زاویه‌ی اسکیل‌های دستی نشان داده بود. اینجا همان اندازه‌گیری روی ۲۸۶ اسکیل نصب‌شده تکرار می‌شود.

مجموع بخش جلویی فایل‌های اسکیل در پروفایل minimal برابر ۱۷٬۴۹۶ بایت است و در پروفایل full به ۱۰۲٬۱۲۵ بایت می‌رسد. با تخمین چهار بایت برای هر توکن، این یعنی حدود ۴٬۳۷۴ توکن در برابر ۲۵٬۵۳۱ توکن. این تخمین تقریبی است و عدد واقعی را باید از /context خواند، همان‌طور که در بودجه‌ی کانتکست ایجنت توضیح داده شد.

توضیح ۶۸ ایجنت با هم ۱۴٬۱۶۹ بایت است، یعنی حدود ۳٬۵۴۲ توکن. کلاد کد وقتی مجموع توضیح ایجنت‌های کاربر از ۱۵٬۰۰۰ توکن بگذرد هشدار می‌دهد [10]. پس ۶۸ ایجنت ECC از این آستان دور است، ولی ۲۸۶ اسکیل در همان نشست به همان مرز نزدیک می‌شود، و آن درست همان جایی است که پیش از افزودن دستی یک اسکیل دیگر باید به آن فکر کنید.

پوشه‌ی rules/ecc با ۲۸۵٬۸۵۳ بایت در ۱۲۲ فایل بزرگ‌ترین بخش متنی نصب است. کلاد کد قواعد را از .claude/rules/ می‌خواند و دامنه‌شان را به مسیر فایل گره می‌زند [11]، پس هر ۱۲۲ فایل هم‌زمان وارد کانتکست نمی‌شود. خود مخزن توصیه می‌کند از بسته‌ی common شروع کنید [5]؛ همان بسته ۱۷٬۷۵۲ بایت در ۱۰ فایل است.

# اندازه‌گیری روی همان نصبی که در بخش‌های قبل ساخته شد
$ find $HOME/.claude -type f | wc -l
492
$ ls $HOME/.claude/skills | wc -l
48
$ python3 - <<'PY'
import pathlib
root = pathlib.Path.home() / ".claude"
for rel in ("rules/ecc", "rules/ecc/common", "skills", "agents", "commands"):
    files = [f for f in (root / rel).rglob("*") if f.is_file()]
    size = sum(f.stat().st_size for f in files)
    print(f"{rel:18} {len(files):4d} files {size:9d} B")
PY
rules/ecc           122 files    285853 B
rules/ecc/common     10 files     17752 B
skills              103 files    816948 B
agents               68 files    441685 B
commands             94 files    378669 B

چرا کوتاه‌کردن دستی قواعد، نصب را خراب می‌کند

وسوسه‌انگیز است: ۱۷ زبان در پوشه‌ی قواعد هست و شاید فقط دو بسته را لازم داشته باشید. من همین کار را کردم و فقط common و typescript را نگه داشتم. ۱۰۶ فایل حذف شد، یعنی ۲۵۵٬۶۱۶ بایت که ۸۹٫۴ درصد کل حجم قاعده‌ها بود. بعد از آن، doctor وضعیت نصب را ERROR گزارش کرد.

# کوتاه‌کردن دستی: حجم قاعده‌ها از ۲۸۵٬۸۵۳ به ۳۰٬۲۳۷ بایت می‌افتد
rules/ecc before trim: 122 files 285853 B
rules/ecc after  trim:  16 files  30237 B
removed 106 files, 255616 B, 89.4%

# اما ابزار خودش این حذف را یک خطا می‌بیند
$ npx --yes ecc-universal@2.2.1 doctor
Doctor report:

- claude-home
  Status: ERROR
  Install-state: .../.claude/ecc/install-state.json
  - [error] missing-managed-files: 106 managed file(s) are missing

Summary: checked=1, ok=0, warnings=0, errors=1

این خطا یک اشکال نیست، یک قرارداد است. هر نصب یک دفترچه‌ی عملیات می‌نویسد که فهرست ۴۸۹ فایل مدیریت‌شده را نگه می‌دارد، و doctor همان فهرست را با دیسک می‌سنجد. به همین دلیل واحد حذف، پروفایل است و نه پوشه: کم‌آوردن از پروفایل کم‌تر شروع می‌شود، و اگر واقعا به بسته‌ای بیرون از پروفایل نیاز دارید، نصب اجازه می‌دهد چند هارنس را با یک پروفایل مشخص و یک تصمیم صریح نصب کنید [2].

یک نکته‌ی امنیتی هم اینجا می‌ماند: نسخه‌ی منتشرشده‌ی 2.2.1 بسته‌ی js-yaml نسخه‌ی 4.3.1 را می‌آورد، در حالی که تذکر امنیتی GHSA-2883-xcg3-v3hh بازه‌ی >= 4.0.0, < 4.3.2 را آسیب‌پذیر و 4.3.2 را اصلاح‌شده اعلام می‌کند [8]. چانگ‌لاگ نسخه‌ی 2.2.2 همین به‌روزرسانی را ثبت کرده است [3]، یعنی همان نسخه‌ای که هنوز به رجیستری نرسیده. اگر ECC را روی ورودی ناشناس از YAML اجرا می‌کنید، این را در نظر بگیرید.

برای شروع، کم‌ترین مسیر واقعی این است: نسخه‌ی موجود روی رجیستری را با --no-hooks نصب کنید، doctor را بزنید تا مطمئن شوید پاک است، و بعد سراغ پروفایل بزرگ‌تر بروید. آمار نصب هفتگی بسته‌ی ecc-universal در بازه‌ی ۲۰ تا ۲۶ سپتامبر ۲۰۲۶ برابر ۱۱٬۶۳۵ بود [7].

منابع

  1. ریپازیتوری affaan-m/ECC
  2. README مخزن: مسیرهای نصب، پروفایل‌ها و هشدارها
  3. چانگ‌لاگ ECC، نسخه‌ی 2.2.2 با تاریخ ۱۵ سپتامبر ۲۰۲۶
  4. فایل VERSION در شاخه‌ی main
  5. راهنمای پوشه‌ی rules و توصیه‌ی شروع از بسته‌ی common
  6. فراداده‌ی بسته‌ی ecc-universal در رجیستری npm
  7. آمار دانلود هفتگی ecc-universal، ۲۰ تا ۲۶ سپتامبر ۲۰۲۶
  8. GHSA-2883-xcg3-v3hh برای js-yaml
  9. مستندات کلاد کد: اسکیل‌ها و زمان بارگذاری
  10. مستندات کلاد کد: ایجنت‌های سفارشی و آستانه‌ی ۱۵٬۰۰۰ توکن
  11. مستندات کلاد کد: حافظه و قاعده‌های مسیرمحور
  12. مرجع پوشه‌ی .claude
  13. مرجع پلاگین‌های کلاد کد
  14. وب‌سایت پروژه‌ی ECC