github-skill-forge
npx skills add https://github.com/yujunzhixue/github-skill-forge --skill github-skill-forge
Agent 安装分布
Skill 文档
GitHub æè½é»é å
ä¸ä¸ª”å¶é æè½çæè½”ãè¿ä¸ªå·¥å ·èªå¨åäºå° GitHub ä»åºè½¬æ¢ä¸ºæ åå Trae æè½çè¿ç¨ã
æ ¸å¿åè½
1. èªå¨åèææ¶
- ä¸é®å é GitHub ä»åº
- èªå¨å建æ åæè½ç®å½ç»æ
- èªå¨çæä¸ä¸æèåæä»¶
2. Lite-RAG ä¸ä¸æèå
- èªå¨æåé¡¹ç®æä»¶æ ç»æ
- èªå¨è§£æ README åææ¡£
- èªå¨æ¶éä¾èµé¡¹ä¿¡æ¯ï¼requirements.txt, package.json, pyproject.tomlï¼
- çæåä¸ä¸ä¸ææä»¶ä¾ Agent å¿«éçè§£
3. æºè½é误å¤ç
- ä»£çæ¨¡å¼èªå¨åæ¢
- ç®å½å卿§æ£æµ
- Git å é失败èªå¨éè¯
4. æ ååè¾åº
- èªå¨çæç¬¦åè§èçæè½ç»æ
- ç»ä¸çç®å½å¸å±ï¼scripts/, references/, context_bundle.mdï¼
- é¢ç½® SKILL.md 模æ¿
å¿«éå¼å§
å®è£ è¦æ±
# åºç¡ä¾èµ
Python 3.7+
Git
åºæ¬ä½¿ç¨
# è¯æ³: python scripts/forge.py <URL> [SKILL_NAME]
python3 .trae/skills/github-skill-forge/scripts/forge.py "https://github.com/username/repo"
使ç¨åºæ¯
- å½ä½ æ³ä½¿ç¨å¨ GitHub 䏿¾å°çå·¥å ·æ¶
- å½ç¨æ·åé GitHub 龿¥å¹¶è¯´”ææ³ç¨è¿ä¸ª”æ¶
- é覔å®è£
”æ°åè½å°
.trae/skillsåºæ¶ - éè¦å¿«ééæå¼æºå·¥å ·å°å·¥ä½æµæ¶
- éè¦æ ååå¢éå·¥å ·ä½¿ç¨è§èæ¶
工使µç¨
æ¥éª¤ 1ï¼é»é æ¡æ¶
è¿è¡èææ¶èæ¬æ¥å éä»åºãåå»ºç»æå¹¶çæä¸ä¸æå ã
# åºç¡ç¨æ³
python3 .trae/skills/github-skill-forge/scripts/forge.py "https://github.com/username/repo"
# æå®æè½åç§°
python3 .trae/skills/github-skill-forge/scripts/forge.py "https://github.com/username/repo" "my-custom-skill"
æ¥éª¤ 2ï¼åæä¸å®ç¨¿ï¼AI ä»»å¡ï¼
èæ¬ä¼å¨æ°çæè½æä»¶å¤¹ä¸çæ context_bundle.mdãä½ ï¼ä½ä¸º Agentï¼å¿
é¡»ï¼
-
读åä¸ä¸æå ï¼æ¥ç
context_bundle.md- è¿ä¸ªæä»¶å 嫿件æ ãREADME åä¾èµé¡¹
- ä¸éè¦æå¨æç´¢æä»¶
- 建议éå¶è¯»åå 500 è¡å¼å§
-
æ´æ° SKILL.mdï¼éåæ°æè½ç®å½ä¸çè稿
- æè¿°ï¼æ»ç»å·¥å ·çåè½
- å
峿¡ä»¶ï¼ååºå®è£
å½ä»¤ï¼å¦
pip install -r src/requirements.txtï¼ - ç¨æ³ï¼æä¾ä½¿ç¨
src/...è¿è¡å·¥å ·çæ¸ æ°ç¤ºä¾
-
å建å è£ èæ¬ï¼å¯éï¼ï¼
- 妿工å
·éè¦å¤æåæ°ï¼å¨
.trae/skills/<new_skill>/scripts/ä¸ç¼åç®åç Python/Shell èæ¬
- 妿工å
·éè¦å¤æåæ°ï¼å¨
æ¥éª¤ 3ï¼éªè¯
è¿è¡å·¥å ·ç帮å©å½ä»¤ä»¥ç¡®ä¿å ¶æ£å¸¸å·¥ä½ã
python3 .trae/skills/<new_skill>/src/<main_script>.py --help
使ç¨ç¤ºä¾
ç¤ºä¾ 1ï¼åºç¡ä½¿ç¨
ç¨æ·ï¼”å®è£ è¿ä¸ªä»åºï¼https://github.com/sqlmapproject/sqlmap“
Agent æä½ï¼
- è¿è¡é»é èæ¬
python3 .trae/skills/github-skill-forge/scripts/forge.py https://github.com/sqlmapproject/sqlmap - Agent 读åä¸ä¸æå
read .trae/skills/sqlmap/context_bundle.md - Agent ç¼è¾ SKILL.md
edit .trae/skills/sqlmap/SKILL.md - Agent è¿è¡éªè¯
python3 .trae/skills/sqlmap/src/sqlmap.py --help
ç¤ºä¾ 2ï¼æå®æè½åç§°
python3 .trae/skills/github-skill-forge/scripts/forge.py "https://github.com/requests/requests" "http-requests-lib"
è¿å°å建ä¸ä¸ªå为 http-requests-lib çæè½ç®å½ã
ç¤ºä¾ 3ï¼å¤æé¡¹ç®
ç¨æ·ï¼”ææ³ç¨è¿ä¸ªå·¥å ·åæ°æ®å¯è§åï¼https://github.com/mwaskom/seaborn“
Agent æä½ï¼
- è¿è¡é»é èæ¬
- 读å
context_bundle.mdäºè§£ seaborn ç API - è¯å«ä¾èµé¡¹ï¼numpy, pandas, matplotlibï¼
- ç¼åç®åç使ç¨èæ¬å°
scripts/ç®å½ - æ´æ° SKILL.md æ·»å 使ç¨ç¤ºä¾
ç¤ºä¾ 4ï¼CLI å·¥å ·å®è£
ç¨æ·ï¼”ææ³ç¨ fzf è¿æ ·çæ¨¡ç³æ¥æ¾å·¥å ·ï¼https://github.com/junegunn/fzf“
Agent æä½ï¼
-
è¿è¡é»é èæ¬
-
åæ fzf çåè½ï¼
- 读å context_bundle.md äºè§£æ ¸å¿åè½
- è¯å«ä¾èµï¼Go ç¯å¢ï¼
- äºè§£å®è£ æ¹å¼ï¼å¤å¹³å°æ¯æï¼
-
å建ç®åç使ç¨èæ¬ï¼
scripts/fuzzy-search.py– ç®åæä»¶æç´¢scripts/history-search.py– å½ä»¤åå²æç´¢
-
æ´æ° SKILL.mdï¼
## ä½¿ç¨æ¹æ³ ### åºæ¬æä»¶æç´¢ ```bash python3 scripts/fuzzy-search.pyå½ä»¤åå²æç´¢
python3 scripts/history-search.pyä¾èµé¡¹
- Go 1.22+ï¼ä»æºç ç¼è¯ï¼
- æä½¿ç¨é¢ç¼è¯äºè¿å¶æä»¶
å®è£ å½ä»¤
# macOS brew install fzf # Linux sudo apt install fzf # Windows choco install fzf
ç¤ºä¾ 5ï¼æ°æ®å¤çå·¥å ·
ç¨æ·ï¼”å®è£ jq è¿æ ·ç JSON å¤çå·¥å ·ï¼https://github.com/jqlang/jq“
Agent æä½ï¼
-
è¿è¡é»é èæ¬
-
读å context_bundle.md
-
å建ç®åçå è£ èæ¬ï¼
scripts/json-format.py– JSON æ ¼å¼åscripts/json-query.py– JSON æ¥è¯¢å·¥å ·
-
æ´æ° SKILL.mdï¼
## 使ç¨ç¤ºä¾ ### æ ¼å¼å JSON ```bash cat data.json | python3 scripts/json-format.pyæ¥è¯¢ JSON è·¯å¾
python3 scripts/json-query.py "data.json" ".users[0].name"
é«çº§ç¨æ³
æå¨å建ä¸ä¸æå
妿éè¦éæ°çæä¸ä¸æå ï¼
from forge import create_context_bundle
create_context_bundle("./src", "./context_bundle.md")
èªå®ä¹æä»¶æ éå¶
ä¿®æ¹ forge.py ä¸ç limit åæ°ï¼
def get_file_tree(start_path, limit=100): # å¢å éå¶å° 100 个æä»¶
...
æ¹éå®è£ å¤ä¸ªæè½
# å建ä¸ä¸ªæ¹éå®è£
èæ¬
for url in "https://github.com/fzf" "https://github.com/jqlang/jq" "https://github.com/sharkdp/bat"; do
python3 .trae/skills/github-skill-forge/scripts/forge.py "$url"
done
èªå®ä¹æ¨¡æ¿
ä½ å¯ä»¥éè¿ç¯å¢åéå®å¶çæçå 容ï¼
# èªå®ä¹é»è®¤æè½å
export SKILL_FORCE_NAME="custom-skill"
# èªå®ä¹æä»¶éå¶
export SKILL_FILE_LIMIT=100
# èªå®ä¹ææ¡£æªæå¤§å°
export SKILL_DOC_TRUNCATE=20000
æ éæé¤
é®é¢ 1ï¼å é失败
çç¶ï¼
â Git clone failed: fatal: Could not read from remote repository.
è§£å³æ¹æ¡ï¼
- æ£æ¥ URL æ¯å¦æ£ç¡®
- ç¡®ä¿ç½ç»è¿æ¥æ£å¸¸
- å°è¯ä½¿ç¨ä»£ç模å¼ï¼èæ¬èªå¨å¤çï¼
- éªè¯ Git 认è¯ï¼å¦æéè¦ï¼
git config --global credential.helper store
é®é¢ 2ï¼ç®å½å·²åå¨
çç¶ï¼
â ï¸ Warning: Skill directory 'xxx' already exists.
â Aborting: Directory exists.
è§£å³æ¹æ¡ï¼
- 使ç¨ä¸åçæè½åç§°
python3 forge.py <URL> new_skill_name - ææå¨å é¤å·²åå¨çç®å½åéè¯
rm -rf .trae/skills/xxx
é®é¢ 3ï¼ä¾èµé¡¹ç¼ºå¤±
çç¶ï¼
ModuleNotFoundError: No module named 'xxx'
è§£å³æ¹æ¡ï¼
- å¨ SKILL.md ä¸æç¡®ååºä¾èµé¡¹
- æä¾å®è£ å½ä»¤
- å建 requirements.txtï¼å¦æåé¡¹ç®æ²¡æï¼
- æ£æ¥ Python çæ¬å ¼å®¹æ§
é®é¢ 4ï¼ä¸ä¸æå è¿å¤§
çç¶ï¼
çæç context_bundle.md è¶
è¿é¢æå¤§å°
è§£å³æ¹æ¡ï¼ èæ¬å·²èªå¨æªæè¶ è¿ 10KB çææ¡£ï¼å¦éæ´è¯¦ç»çä¸ä¸æå¯æå¨æ¥çæºæä»¶ã
é®é¢ 5ï¼æéé误
çç¶ï¼
Permission denied: '.trae/skills/xxx'
è§£å³æ¹æ¡ï¼
- æ£æ¥ç®å½æé
ls -la .trae/skills/ - ä¿®å¤æé
chmod -R 755 .trae/skills/
é®é¢ 6ï¼Git LFS æä»¶
çç¶ï¼
Git LFS: (1 of 1 files) 0 B / 100.00 MB
è§£å³æ¹æ¡ï¼
- å®è£
Git LFS
git lfs install - æå¨æå LFS æä»¶
git lfs pull
æä½³å®è·µ
1. æè½å½åè§è
- 使ç¨å°å忝åè¿å符
- é¿åº¦æ§å¶å¨ 3-50 个å符
- é¿å 使ç¨ä¿çå
2. SKILL.md ç¼åè§è
- ä¿æç®æ´ï¼åªå å«å¿ è¦ä¿¡æ¯
- 详ç»å
容æ¾å¨
context_bundle.md - 使ç¨ä¸ææ é¢ï¼è±æå½ä»¤
- æä¾å¯æ§è¡ç示ä¾ä»£ç
3. å è£ èæ¬å建
- ç®å夿å½ä»¤è¡æ¥å£
- æä¾é»è®¤åæ°
- æ·»å é误å¤ç
- æ¯æ
-h/--helpåæ°
4. ä¾èµé¡¹ç®¡ç
- æç¡®ååºææä¾èµ
- æå®çæ¬èå´
- æä¾å¤å¹³å°å®è£ æ¹å¼
5. éªè¯æµè¯
- å¨åå¸åè¿è¡ææç¤ºä¾
- æµè¯ä¸åæä½ç³»ç»
- éªè¯ä¾èµå®è£ æ£ç¡®æ§
æè½ç»æè§è
æ åç®å½ç»æ
.trae/skills/
âââ <skill-name>/
âââ SKILL.md # æè½è¯´æææ¡£
âââ context_bundle.md # ä¸ä¸æèåï¼èªå¨çæï¼
âââ requirements.txt # ä¾èµé¡¹ï¼å¯éï¼
âââ src/ # æºä»£ç
â âââ <main-script>
âââ scripts/ # å
è£
èæ¬ï¼å¯éï¼
â âââ <helper-scripts>
âââ references/ # åèææ¡£ï¼å¯éï¼
âââ <documentation>
SKILL.md 模æ¿
---
name: <skill-name>
description: <ç®çæè¿°>
---
# <æè½åç§°>
## åè½ç¹æ§
- <ç¹æ§1>
- <ç¹æ§2>
## 使ç¨è¦æ±
- <ä¾èµé¡¹1>
- <ä¾èµé¡¹2>
## å®è£
æ¹æ³
```bash
<å®è£
å½ä»¤>
ä½¿ç¨æ¹æ³
åºæ¬ç¨æ³
<åºæ¬å½ä»¤>
é«çº§ç¨æ³
<é«çº§åè½>
<é«çº§å½ä»¤>
æ éæé¤
é®é¢
<è§£å³æ¹æ¡>
æ´æ°æ¥å¿
- <çæ¬>ï¼<æ´æ°å 容>
## æ§è½ä¼å
### 1. åå°å
éæ·±åº¦
```bash
# ä½¿ç¨æµ
å
é
git clone --depth 1 <url>
2. è·³è¿ä¸å¿ è¦çæä»¶
# å¨ forge.py 䏿·»å
SKIP_DIRS = ['.git', '.github', 'docs', 'test']
SKIP_FILES = ['*.md', '*.txt']
3. å¹¶è¡å¤ç
# 使ç¨å¤çº¿ç¨å¤çå¤ä¸ªä»»å¡
import concurrent.futures
with concurrent.futures.ThreadPoolExecutor() as executor:
executor.submit(process_file, file1)
executor.submit(process_file, file2)
å®å ¨æ§èè
1. éªè¯ä»åºæ¥æº
- æ£æ¥ä»åºç stars å forks æ°é
- æ¥çæè¿çæäº¤è®°å½
- æ£æ¥ç»´æ¤è çæ´»è·åº¦
2. ä¾èµé¡¹å®å ¨
- æ£æ¥å·²ç¥æ¼æ´
- 使ç¨ä¾èµæ«æå·¥å ·
- å®ææ´æ°ä¾èµ
3. ä»£ç æ§è¡å®å ¨
- å¨é离ç¯å¢ä¸æµè¯
- éå¶æä»¶ç³»ç»è®¿é®
- è®°å½æææä½æ¥å¿
éæå»ºè®®
1. CI/CD éæ
# .github/workflows/skill-test.yml
name: Test Skills
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: pip install -r requirements.txt
- name: Test skill
run: python3 src/main.py --help
2. èªå¨åæ´æ°
# å®ææ´æ°æè½èæ¬
0 0 * * 0 cd /path/to/skills && python3 github-skill-forge/scripts/forge.py <url>
ç¸å ³èµæº
注æäºé¡¹
- èæ¬ä¼å é¤å
éä»åºä¸ç
.gitæä»¶å¤¹ä»¥åå°ä½ç§¯ - ä»£çæ¨¡å¼ä½¿ç¨ gitclone.com ä½ä¸ºä»£çæå¡
- 建议å¨è¿è¡å确认 URL çæ£ç¡®æ§
- 大åä»åºå¯è½éè¦è¾é¿æ¶é´å é
- å»ºè®®å®ææ´æ° github-skill-forge æ¬èº«
- å¨ç产ç¯å¢ä½¿ç¨åå è¿è¡æµè¯