iT邦幫忙

2026 iThome 鐵人賽

DAY 20
0
Vibe Coding

重新認識Github Copilot (續)系列 第 20 篇

Day20 - GitHub Copilot Skill 實作:把常用 Prompt 封裝成 Agent 的可使用重複技能

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20261005/20103333knuPSjs2r3.png
今天是 Day 20,筆者要來介紹 GitHub Copilot 裡面的 Skill。簡單講,就是把平常一直重複貼上的 Prompt,整理成一個可重複使用的技能,讓 Agent 在適合的情境自己拿來用,不用每次都重新跟 AI 交代一長串規則。

🤖 什麼是 GitHub Copilot Skill?

https://ithelp.ithome.com.tw/upload/images/20261005/201033331sfAagZI8p.jpg

先把 Skill 想成一個「Prompt 的封裝盒」。平常我們可能會寫一段很長的指令,要求 Copilot 進行重構、保留原本行為、執行檢查、整理修改前後差異,最後再產生一份報告。這些規則如果每次都重新貼,手會痠、眼睛會花,Skill 的目的,就是把這些固定方法整理成一個可重複使用的能力。

📁 Skill 放在哪裡?資料夾位置很重要
在 GitHub Copilot 專案裡建立 Skill 時,筆者會看到它產生在類似以下的結構中:

.github/
└── skills/
└── refactor/
└── SKILL.md

refactor 是 Skill 的名稱,而真正描述技能內容的檔案就是 SKILL.md。未來 Agent 要判斷是否使用這個技能,就會依照這個名稱與檔案內容來處理。除了專案內的 .github/skills,也可以使用其他支援的 Skill 位置,例如 Agent 相關的目錄,或個人使用的 ~/.copilot/skills/。

🗂️ 筆者的放置建議
團隊共用:放在 Repository 裡,例如 .github/skills//SKILL.md。
個人習慣:可以放在個人 Copilot Skill 目錄,避免污染每一個專案。
跨工具協作:優先採用大家比較容易辨識的 Agent / Skills 慣例這樣Codex或是Claude Code 可以呼叫.agent/skills//SKILL.md。

⚖️ Slash Command 和 Skill,到底差在哪裡?
這裡是筆者覺得最容易搞混的地方。Slash Command 和 Skill 都可以把一段固定 Prompt 重複使用,但觸發方式不同。

https://ithelp.ithome.com.tw/upload/images/20261005/201033332jTgtFD7QC.jpg

🔵 Slash Command:使用者主動下令
Slash Command 比較像傳統的手動操作,使用者輸入特定命令,要求 Copilot 執行一件事,例如:
它適合「我現在就要你做這件事」的情境,觸發明確、控制感比較強。

🟣 Skill:Agent 可以依情境使用
Skill 則比較像一個可重複使用的專業能力。Agent 讀到任務內容後,如果判斷符合 Skill 的使用條件,就可能把這個 Skill 納入工作流程。

例如我們把「不改變行為的安全重構」整理成 refactor Skill,之後 Agent 處理相關需求時,就可以依照 Skill 中的規則來執行,而不是臨時憑感覺亂改。

隨著 Skill 逐漸變成大家共同採用的通則,很多原本只為了重複 Prompt 而建立的 Slash Command,可能會被 Skill 取代。不是說 Slash Command 馬上消失,而是如果現在要重新設計一套可重複流程,筆者會優先考慮 Skill。

🛠️ 實作:建立一個 Refactor Skill
接著進入實作。筆者沒有手動從零開始建立資料夾,而是先請 GitHub Copilot 協助建立 Skill,指定要做一個和 Refactor 有關的技能。

Copilot 會建立 Skill 的資料夾與 SKILL.md。檔案產生後,在 Skill 裡補上一段要求,讓它完成工作後:

產生一份 Refactor Report。
摘要這次做了哪些修改。
列出修改前與修改後的差異。
將報告存成指定的 Markdown 檔案,Report_Refactor.md。
為什麼要多做這一步?因為這份報告不只是給人看的,也是筆者用來驗證 Skill 是否真的被呼叫的「證據」。

https://ithelp.ithome.com.tw/upload/images/20261005/20103333UQNVInRaKL.jpg

🔍 不要只聽 AI 說有做,要留下證據
這裡是筆者特別想提醒大家的坑。當筆者要求 Copilot 執行 Refactor 時,如果只說「請使用 refactor Skill」,模型有可能直接自己完成一份重構,卻沒有真正讀取我們建立的 SKILL.md。

這種狀況最麻煩的是,結果可能看起來還不錯,聊天視窗也可能回覆「已完成 Skill」,但實際上它只是自己做了一套 ad-hoc refactor。表面上有像,內裡不一樣,這就是 AI 版的魚目混珠 😅

https://ithelp.ithome.com.tw/upload/images/20261005/20103333msbE4dfYWk.jpg

✅ 筆者用來驗證 Skill 的方法
在 SKILL.md 裡加入一個明確且可驗證的輸出要求。
例如要求建立 Report_Refactor.md。
在任務描述裡明確要求「完成後請呼叫 refactor Skill」。
執行後確認報告是否真的產生,以及內容是否符合 Skill 的規範。
檢查修改內容、檔案差異與驗證結果,不要只看 Copilot 的摘要。
這個方法實務上非常實用。凡走過必留下痕跡,Skill 也一樣;沒有輸出、沒有 log、沒有可檢查的結果,就很難證明它到底有沒有走過那條流程。

🚧 實作踩坑:模型沒有真的呼叫 Skill
筆者第一次測試時,使用的模型似乎沒有正確呼叫到指定的 Skill。當下的感覺就是:「嗯?怎麼跟預期不太一樣?」原本以為 Prompt 已經寫得很清楚,結果模型還是用自己的方式處理。

第二次測試時,筆者改用另一個模型與模式重新執行,這次就比較接近預期。Copilot 會依照 Skill 裡面的規則處理,並且產生指定的修改結果與報告。

https://ithelp.ithome.com.tw/upload/images/20261005/20103333thPXRahfmq.jpg

更多實作細節,請參考完整版影片囉

📝 本日結論
這次 Day 20 的重點,不只是建立一個 SKILL.md,而是理解 Skill 的定位:它不是單純的快捷鍵,而是可以被 Agent 使用的可重複能力。如果只是偶爾手動下命令,Slash Command 已經很好用;但如果是團隊長期會重複執行的工作流程,Skill 會更適合。

筆者這次也再次體會到,AI 工具最怕的不是它不會做,而是它看起來會做、實際上卻偷偷換了一套做法。所以該加驗證一定要加/images/emoticon/emoticon10.gif


上一篇
Day19 - Vibe Coding Part3 : Github Copilot用 YouTube API,加入影片自動發文功能
系列文
重新認識Github Copilot (續) 共 20 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言