新版 Claude Code 里,斜杠指令和 Skill 已经合并成同一种机制,区别只在 Agent 会不会自己判断场景去加载它。
ECC 正好完整经历了这次合并。它有 95 条斜杠指令,但 README 对它们的称呼是 legacy command shims:旧指令
这一节看两件事:302 个 Skill 是怎么组织的,以及 95 条指令为什么正在退场。
一、302 个 Skill 怎么不把上下文撑爆

先看几个数字:
| 指标 | 数值 |
|---|---|
| Skill 数量 | 302 个 |
| 所有 SKILL.md 加起来 | 约 7.9 万行 |
| 最长的一个 | 950 行(laravel-security) |
| description 长度中位数 | 约 300 个字符 |
7.9 万行显然不可能同时进上下文。靠的就是渐进式加载:会话启动时只加载每个 Skill 的 name + description,正文等用到了才加载。
但要注意:第一层也不是零成本。 ECC 的 description 普遍写得很长,中位数 300 个字符左右。302 个加起来,光这份「目录」就有八九万字符,每次会话都在。
所以 ECC 提供了分档安装(manifests/install-profiles.json):
| 档位 | 装什么 |
|---|---|
minimal |
规则、子代理、指令,不带 Hook |
core |
再加上 Hook 运行时 |
developer |
推荐给大多数人,再加上语言框架、数据库、编排相关的内容 |
security / research |
偏安全 / 偏调研写作 |
full |
全部 |
分档安装是走
install.sh手动安装的方式。插件方式会装上全部 Skill,用不上的要自己在/plugin里管理。
按需加载解决的是正文太长的问题,但目录本身也要控制数量。
二、一个 Skill 的样子:tdd-workflow

skills/tdd-workflow/SKILL.md 的头部:
---
name: tdd-workflow
description: "Test-driven development workflow: write a failing test first, watch it
fail, implement the smallest change to green, then refactor with 80%+ coverage
across unit, integration, and E2E tests. Use when writing a new feature, fixing a
bug, refactoring, or when told to write failing tests first."
argument-hint: <path/to/*.plan.md>
metadata:
origin: ECC
---
---
name: tdd-workflow
description: "测试驱动开发工作流:先编写一个失败的测试,观察它失败,再做最小改动使其变绿(通过),
然后在单元测试、集成测试和端到端测试中保持 80% 以上覆盖率的前提下进行重构。
适用于编写新功能、修复缺陷、重构代码,或被要求先编写失败测试的场景。"
argument-hint: <path/to/*.plan.md>
metadata:
origin: ECC
---
description 的结构完全符合:做什么 + 什么时候用(Use when...)+ 用户可能说的关键词。
argument-hint 是参数提示,告诉你可以传一个计划文件进来。