
解析軟體開發新領域:GitSkills 資料集揭開 AI 代理技能的神秘面紗
現代軟體開發中,AI 代理(Agent)的角色越來越吃重。為了讓這些代理精準處理特定任務,Anthropic 在 2025 年 10 月發布了一項開放規格,允許開發者以「技能」(Skill)的形式為代理編寫指令。在沒有統一註冊機制的環境下,這些指令究竟是如何被撰寫與重用的?
近期發布的 GitSkills 資料集,對 GitHub 上高達 3,797,117 個 SKILL.md 檔案進行了系統性調查,試圖回答 AI 協作開發中的實證問題。這份資料集不僅是軟體工程(SE)研究社群的首創,也為理解人機協同開發開啟了全新的實證維度。
什麼是代理技能?
代理技能(Agent Skill) 就像是一套數位操作手冊。通常是一個包含 SKILL.md 核心檔案的資料夾,其中可能附帶執行腳本、配置範本或參考文件。當 AI 代理執行任務時,會根據當前任務需求,在運行時決定是否載入對應技能。Anthropic 在 2025 年 10 月發布了其目錄結構、YAML 前言(front-matter)限制以及階段式載入模型(staged loading model)的開放規格。其中,Claude Code 是其官方的參考實現(Reference Implementation),其預設將技能存放在 .claude/skills/ 目錄中。
這種做法與傳統程式碼或設定檔最大的不同在於其**「機率性(Probabilistic)」**:
- 無靜態驗證:模型是在執行過程中基於語意匹配自主判斷是否載入,缺乏編譯器或型別檢查(Type Checker)來確保正確性。
- 語意模糊風險:如果技能的描述(Description)過於模糊,模型可能無法正確選中該技能;若指令說明不清,則可能導致任務執行不完整或錯誤,且不會拋出明確的系統編譯報錯。
- 無套件管理器:目前此生態系缺乏中央註冊表(Central Registry)或套件管理器。因此,技能的擴散主要依賴於開發者手動在專案儲存庫之間「複製整套資料夾(Copying Folders)」。
GitSkills 的資料洞察
由 Giuseppe Destefanis(倫敦大學學院)、Daniel Graziotin 與 Matteo Vaccargiu(霍恩海姆大學)以及 Marco Ortu(卡利亞里大學)組成的研究團隊,在 2026 年 7 月 採集了來自 282,200 個公開 GitHub 儲存庫(由 195,841 個開發者帳戶所持有)的資料,推出了 GitSkills 資料集。
研究人員將採集到的 3,797,117 個 SKILL.md 檔案,透過內容雜湊值(Content Hash)進行精確的去重分組,發現它們可歸納為 1,877,981 個獨立的內容組(Distinct Contents)。
核心研究議題
- 採用與語言演化:分析這些主要以自然語言編寫的指令結構,是否在不同月份的採用佇列(Cohorts)中逐漸收斂成特定的「範本格式」(Formulaic Templates),或是其語意多樣性是否因機器生成(Machine Authorship)而降低。
- 非正式重用機制:研究顯示,高達 50.5% 的技能檔案是完全相同的「一字不差複製品(Verbatim Copies)」。這引發了關於技能如何在專案間遷移,以及是否會遵循類似程式碼克隆(Code Clone)的變更傳播模式等有趣問題。
- 維護與安全信任:許多技能內建了可執行腳本,且在沒有中央包管理器審查的情況下被拷貝。一旦上游更新但本地技能過時,或惡意修改的技能被複製,恐將引入未授權的命令執行或外部網路存取,成為類似供應鏈攻擊的溫床。
資料庫內部架構
GitSkills 提供了一個單一且自給自足的 SQLite 檔案(存放在 Zenodo 上),以及在 Hugging Face 上以 Parquet 格式鏡像分發。資料庫中包含以下四大核心資料表,極具結構化與分析價值:
| 資料表名稱 | 記錄數量 (Rows) | 核心包含內容 |
|---|---|---|
artifacts | 3,797,117 | 核心發現表。每行代表一個發現的 SKILL.md 檔案,包含其儲存庫、路徑、精確檔名、位置分類與內容雜湊值。對於代表性檔案,還額外富化了完整文本、解析後的 YAML 前言(名稱與描述)及正文大小。 |
repos | 282,200 | 儲存庫元數據,包括擁有者、星數(Stars)、主要程式語言、是否為 Fork、建立日期及最後推播(Push)日期。 |
artifact_siblings | 7,264,865 | 儲存於代表性技能資料夾內部的「同級檔案或目錄」(Siblings),如配套的執行腳本、配置或參考文件(並包含特定大小限制底下的文字內容)。 |
mining_runs | 7 | 記錄挖掘任務的元數據日誌,包含每次 Collection Run 的搜尋查詢、起始與結束時間戳記及結果計數。 |
歷史提交追蹤:對於存放在標準位置的技能以及其餘樣本中按大小分層抽樣(Size-stratified Sample)的檔案,共計 458,548 個檔案 額外收錄了其 提交歷史(Commit History),包括首次與最後一次提交日期、去識別化後的作者帳戶、以及累計提交次數。
資料收集與分析管線
由於 GitHub Code Search API 的單次查詢結果限制在 1,000 筆以內,且其內建的 total_count 估算極不準確(例如針對 SKILL.md 的檔名查詢,API 僅估計約有 349,000 筆,而實際最終挖掘出了超過 380 萬個檔案)。
為此,研究團隊設計了一套唯讀式挖掘管線(Pipeline),其運作分為三個精細階段:
- 探索(Discovery):採用**「按檔案大小分割(Partition by file size)」**的遞歸拆分策略遍歷搜尋空間。只要某個大小區間內返回的結果超過 1,000 筆,就繼續細分該區間,直到每個範圍都能完整檢索。
- 去重(Deduplication):利用內容的 SHA 雜湊值進行全域分組。每一組僅選擇一個「代表檔案(Representative)」進行深度富化(優先選擇位於
.claude/skills/標準路徑下的檔案),但保留所有 Copies 的儲存庫與路徑關聯,以利追蹤傳播拓撲。 - 富集(Enrichment):針對代表檔案,下載完整的
SKILL.md、解析 YAML 前言、紀錄同級目錄結構與檔案,並收集儲存庫與匿名化的歷史提交資訊。
常見問答
Q:GitSkills 資料集包含個人隱私嗎? A:研究團隊實施了嚴格的隱私保護與匿名化。提交紀錄中的電子郵件地址與個人姓名已被 redact(用固定遮罩掩蓋)。作者帳戶已透過「單向密鑰雜湊函數(Keyed One-way Function)」轉換為唯一編碼,在不洩露個人身分的前提下,仍能精確追蹤同一帳戶的跨專案貢獻行為。此外,機器人(Bot)帳戶的 Login 則予以保留。
Q:這個資料集涵蓋了所有 AI 代理技能嗎? A:這僅涵蓋公開 GitHub 儲存庫的預設分支。考慮到 GitHub Code Search 的局限性(例如僅索引預設分支、檔案大小限制在 384 KB 以下、活躍儲存庫文件少於 500,000 個,以及 Fork 項目僅在星數多於父項目時才被索引),該資料集應被視為實體技能總量的一個**「保守下限(Lower Bound)」**。
Q:為什麼要特別建立同級檔案表 artifact_siblings?
A:因為代理技能的威力往往來自於其配套的程式碼或範本。例如在實際採集到的資料中,技能資料夾常隨附 Bash 腳本(如 .sh)、CSV 範本(assets/csv_template.csv)、法規合規指南(compliance.md)、或是 Python 解析工具(build_csv.py)。將這些「同級資產」納入分析,能更全面地評估技能的執行意圖與安全邊界。
資源與應用連結
該資料集已發表於 MSR 2027 Mining Challenge 研討會中。研究人員可以透過以下官方渠道獲取:
- 資料庫下載 (Zenodo):Zenodo DOI: 10.5281/zenodo.21875637 —— 提供單一自給自足的 SQLite 格式。
- Hugging Face 資料集:mvaccargiu/gitskills · Datasets at Hugging Face —— 提供按表分割好的 Parquet 格式鏡像。
- 官方代碼與範例專案 (GitHub):giuseppedestefanis/gitskills-sample —— 提供可用於快速上手的範例與工具。



