MCP HubMCP Hub
스킬 목록으로 돌아가기

refactor-skill-structure

pjt222
업데이트됨 Yesterday
1 조회
17
2
17
GitHub에서 보기
메타general

정보

이 스킬은 지나치게 길거나 구조가 불분명한 SKILL.md 파일을 리팩토링합니다. 코드 예제를 별도의 참조 파일로 추출하고 복잡한 단계를 더 간단한 단계로 분할하는 방식으로 작동합니다. 500줄 CI 제한을 초과하는 스킬이나 대규모 코드 블록으로 과도하게 구성된 스킬을 위해 설계되었습니다. 이 리팩토링은 점진적 정보 공개를 가능하게 하며 스킬의 기능을 유지하면서 크기를 줄여줍니다.

빠른 설치

Claude Code

추천
기본
npx skills add pjt222/agent-almanac -a claude-code
플러그인 명령대체
/plugin add https://github.com/pjt222/agent-almanac
Git 클론대체
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/refactor-skill-structure

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서

重构技能结构

对超过 500 行限制或出现结构性问题的 SKILL.md 进行重构。此技能将扩展代码示例提取到 references/EXAMPLES.md,将复合步骤拆分为聚焦的子步骤,添加渐进式披露的交叉引用,并在重构后验证技能是否仍然完整有效。

适用场景

  • 技能超过 CI 强制执行的 500 行限制
  • 单个步骤包含多个不相关的操作,应该拆分为独立步骤
  • 超过 15 行的代码块主导了 SKILL.md 且可以提取
  • 技能积累了打破标准六章节结构的临时章节
  • 内容更新将技能推过行数限制后
  • 技能评审发现了超出内容质量的结构性问题

输入

  • 必填:要重构的 SKILL.md 文件路径
  • 可选:目标行数(默认:目标为 500 行限制的 80%,即约 400 行)
  • 可选:是否创建 references/EXAMPLES.md(默认:是,若存在可提取内容)
  • 可选:是否拆分为多个技能(默认:否,优先提取)

步骤

第 1 步:测量当前行数并识别臃肿来源

阅读技能并创建逐章节的行数预算,以识别臃肿所在。

# 总行数
wc -l < skills/<skill-name>/SKILL.md

# 每章节行数(近似)
grep -n "^## \|^### " skills/<skill-name>/SKILL.md

对臃肿来源分类:

  • 可提取:超过 15 行的代码块、完整配置示例、多变体示例
  • 可拆分:执行 2+ 个不相关操作的复合步骤
  • 可精简:冗余解释、过于冗长的上下文句子
  • 结构性:不在标准六章节结构中的临时章节

预期结果: 行数预算显示哪些章节过大以及适用的臃肿类别。最大的章节是主要重构目标。

失败处理: 若技能在 500 行以下且无明显结构性问题,此技能可能不需要。在继续之前验证重构请求是否合理。

第 2 步:将代码块提取到 references/EXAMPLES.md

将超过 15 行的代码块移至 references/EXAMPLES.md 文件,在主 SKILL.md 中保留简短的内联片段(3-10 行)。

  1. 创建 references 目录:

    mkdir -p skills/<skill-name>/references/
    
  2. 对每个可提取的代码块:

    • 将完整代码块复制到 references/EXAMPLES.md 的描述性标题下
    • 在 SKILL.md 中用简短的 3-5 行片段替换代码块
    • 添加交叉引用:See [EXAMPLES.md](references/EXAMPLES.md#heading) for the complete configuration.
  3. 用清晰标题组织 references/EXAMPLES.md

    # Examples
    
    ## Example 1: Full Configuration
    
    Complete configuration file for [context]:
    
    \```yaml
    # ... full config here ...
    \```
    
    ## Example 2: Multi-Variant Setup
    
    ### Variant A: Development
    \```yaml
    # ... dev config ...
    \```
    
    ### Variant B: Production
    \```yaml
    # ... prod config ...
    \```
    

预期结果: 所有超过 15 行的代码块已提取。主 SKILL.md 保留简短内联片段以确保可读性。交叉引用链接到提取的内容。references/EXAMPLES.md 以描述性标题良好组织。

失败处理: 若提取代码块不足以减少行数(仍然超过 500),继续第 3 步进行步骤拆分。若技能几乎没有代码块(如纯自然语言技能),重点关注第 3 步和第 4 步。

第 3 步:将复合步骤拆分为聚焦步骤

识别执行多个不相关操作的步骤并拆分。

复合步骤的迹象:

  • 步骤标题包含"and"(如"Configure Database and Set Up Caching")
  • 步骤有多个预期结果/失败处理块(或应该有)
  • 步骤超过 30 行
  • 步骤的各子部分可以跳过或以不同顺序完成

对每个复合步骤:

  1. 识别步骤中的不同操作
  2. 为每个操作创建新的 ### Step N:
  3. 重新编号后续步骤
  4. 确保每个新步骤有自己的预期结果和失败处理块
  5. 在新步骤之间添加过渡性上下文

预期结果: 每个步骤只做一件事。没有步骤超过 30 行。步骤数量可能增加,但每个步骤可以独立验证。

失败处理: 若拆分步骤创建了太过细粒度的步骤(如 20+ 个总步骤),考虑将相关的微步骤归入一个带编号子步骤的单一步骤。理想范围是 5-12 个步骤。

第 4 步:从 SKILL.md 添加到提取内容的交叉引用

确保主 SKILL.md 在提取后仍保持可读性和可发现性。

对每次提取:

  1. SKILL.md 中的内联片段应该对常见情况自给自足
  2. 交叉引用应该解释有哪些额外内容可用
  3. 使用相对路径:[EXAMPLES.md](references/EXAMPLES.md#section-anchor)

交叉引用模式:

  • 在简短代码片段之后:See [EXAMPLES.md](references/EXAMPLES.md#full-configuration) for the complete configuration with all options.
  • 对于多变体示例:See [EXAMPLES.md](references/EXAMPLES.md#variants) for development, staging, and production variants.
  • 对于扩展的故障排除:See [EXAMPLES.md](references/EXAMPLES.md#troubleshooting) for additional error scenarios.

预期结果: 每次提取都有对应的交叉引用。读者可以按照主 SKILL.md 处理常见情况,并深入 references 了解细节。

失败处理: 若交叉引用使文字流动变得尴尬,将多个引用合并为步骤末尾的单个注释:For extended examples including [X], [Y], and [Z], see [EXAMPLES.md](references/EXAMPLES.md).

第 5 步:重构后验证行数

所有更改完成后重新测量 SKILL.md 行数。

# 检查主 SKILL.md
lines=$(wc -l < skills/<skill-name>/SKILL.md)
[ "$lines" -le 500 ] && echo "SKILL.md: OK ($lines lines)" || echo "SKILL.md: STILL OVER ($lines lines)"

# 若已创建,检查 references 文件
if [ -f skills/<skill-name>/references/EXAMPLES.md ]; then
  ref_lines=$(wc -l < skills/<skill-name>/references/EXAMPLES.md)
  echo "EXAMPLES.md: $ref_lines lines"
fi

# 总内容
echo "Total content: $((lines + ${ref_lines:-0})) lines"

预期结果: SKILL.md 在 500 行以下。理想情况下在 400 行以下,为未来增长留有空间。references/EXAMPLES.md 没有行数限制。

失败处理: 若提取和拆分后仍超过 500 行,考虑技能是否应该分解为两个独立的技能。涵盖范围过广的技能是范围蔓延的迹象。使用 create-skill 编写第二个技能,并更新两个技能中的相关技能交叉引用。

第 6 步:验证所有章节仍然存在

重构后,验证技能仍然具有所有必需章节且前置元数据完整。

运行 review-skill-format 清单:

  1. YAML 前置元数据正确解析
  2. 全部六个必需章节存在(When to Use、Inputs、Procedure、Validation、Common Pitfalls、Related Skills)
  3. 每个步骤都有预期结果和失败处理块
  4. 没有孤立的交叉引用(所有链接可解析)
# 快速章节检查
for section in "## When to Use" "## Inputs" "## Procedure" "## Common Pitfalls" "## Related Skills"; do
  grep -q "$section" skills/<skill-name>/SKILL.md && echo "$section: OK" || echo "$section: MISSING"
done
grep -qE "## Validation( Checklist)?" skills/<skill-name>/SKILL.md && echo "Validation: OK" || echo "Validation: MISSING"

预期结果: 所有章节存在。提取过程中没有意外删除内容。SKILL.md 中的交叉引用解析到 EXAMPLES.md 中的实际标题。

失败处理: 若章节被意外删除,从 git 历史中恢复:git diff skills/<skill-name>/SKILL.md 查看更改的内容。若交叉引用损坏,验证 EXAMPLES.md 中的标题锚点与 SKILL.md 中的链接匹配(GitHub 风格 Markdown 锚点规则:小写,空格用连字符,去除标点)。

验证清单

  • SKILL.md 行数为 500 行或更少
  • SKILL.md 中的所有代码块为 15 行或更少
  • 提取的内容在 references/EXAMPLES.md 中,有描述性标题
  • 每次提取在主 SKILL.md 中都有交叉引用
  • 没有剩余的复合步骤(每个步骤只做一件事)
  • 重构后所有六个必需章节仍然存在
  • 每个步骤都有 Expected:On failure:
  • YAML 前置元数据完整且可解析
  • 交叉引用链接解析到 EXAMPLES.md 中的实际标题
  • review-skill-format 验证在重构后的技能上通过

常见问题

  • 提取过于激进:将所有代码移到 references 会使主 SKILL.md 难以阅读。对常见情况保留 3-10 行的内联片段。只提取超过 15 行或显示多个变体的块。
  • 锚点链接损坏:GitHub 风格 Markdown 锚点在某些渲染器中区分大小写。在 EXAMPLES.md 中使用小写标题,并在交叉引用中精确匹配。用 grep -c "heading-text" references/EXAMPLES.md 测试。
  • 拆分期间丢失预期结果/失败处理:拆分复合步骤时,确保每个新步骤都有自己的预期结果和失败处理块。拆分后很容易让一个步骤缺少这些块。
  • 创建过多微小步骤:拆分应产生 5-12 个步骤。若最终有 15+ 个步骤,说明拆分过于激进。将相关的微步骤重新合并为逻辑组。
  • 忘记更新 references/EXAMPLES.md 标题:若重命名 EXAMPLES.md 中的章节,SKILL.md 中的所有交叉引用锚点都必须更新。搜索旧锚点名称以找到所有引用。

相关技能

  • review-skill-format — 重构后运行格式验证以确认技能仍然合规
  • update-skill-content — 内容更新通常是当内容将技能推过行数限制时进行结构重构的触发器
  • create-skill — 在决定如何组织提取内容时参考规范结构
  • evolve-skill — 当技能需要拆分为两个独立技能时,使用演进来创建衍生技能

GitHub 저장소

pjt222/agent-almanac
경로: i18n/zh-CN/skills/refactor-skill-structure
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

연관 스킬

content-collections

메타

이 스킬은 콘텐츠 콜렉션(Content Collections)을 위한 프로덕션 검증된 설정을 제공합니다. 콘텐츠 콜렉션은 Markdown/MDX 파일을 Zod 검증이 포함된 타입 안전한 데이터 콜렉션으로 변환해주는 TypeScript 최우선 도구입니다. 블로그, 문서 사이트 또는 콘텐츠 중심의 Vite + React 애플리케이션을 구축할 때 타입 안전성과 자동 콘텐츠 검증을 보장하기 위해 사용하세요. Vite 플러그인 구성과 MDX 컴파일부터 배포 최적화 및 스키마 검증에 이르기까지 모든 것을 다룹니다.

스킬 보기

polymarket

메타

이 스킬은 개발자들이 Polymarket 예측 시장 플랫폼을 활용한 애플리케이션을 구축할 수 있도록 지원하며, 거래 및 시장 데이터를 위한 API 통합 기능을 포함합니다. 또한 WebSocket을 통한 실시간 데이터 스트리밍을 제공하여 실시간 거래와 시장 활동을 모니터링할 수 있습니다. 이를 통해 거래 전략을 구현하거나 실시간 시장 업데이트를 처리하는 도구를 생성하는 데 활용할 수 있습니다.

스킬 보기

creating-opencode-plugins

메타

이 스킬은 개발자들이 명령어, 파일, LSP 작업 등 25개 이상의 이벤트 유형에 연결되는 OpenCode 플러그인을 만들 수 있도록 돕습니다. JavaScript/TypeScript 모듈을 위한 플러그인 구조, 이벤트 API 명세, 구현 패턴을 제공합니다. OpenCode AI 어시스턴트의 라이프사이클을 사용자 정의 이벤트 기반 로직으로 가로채거나, 모니터링하거나, 확장해야 할 때 사용하세요.

스킬 보기

sglang

메타

SGLang은 RadixAttention 프리픽스 캐싱을 활용하여 JSON, 정규식, 에이전트 워크플로우를 위한 고속 구조화 생성에 특화된 고성능 LLM 서빙 프레임워크입니다. 특히 반복되는 프리픽스가 있는 작업에서 상당히 빠른 추론 속도를 제공하여 복잡한 구조화 출력 및 다중 턴 대화에 이상적입니다. 제약 디코딩이 필요하거나 광범위한 프리픽스 공유가 있는 애플리케이션을 구축할 때는 vLLM과 같은 대안보다 SGLang을 선택하십시오.

스킬 보기