Communitygithub.com

m1nga/skills

25 個實用的 AI 代理技能,適用於 Codex、Claude Code 和 Cursor:規劃產品、恢復專案、測試提示、保留語音以及驗證 AI 工作。

skills 是什麼?

這個技能包提供了 25 個針對 Codex、Claude Code 和 Cursor 等 AI 代理工具優化的實用技能。技能範圍涵蓋產品規劃、專案恢復、提示測試、語音保留以及 AI 工作的驗證。每個技能都附帶詳細的 SKILL.md 文件,說明其用法、配置和最佳實踐。該技能包旨在幫助開發者和 AI 代理使用者提高工作效率,減少錯誤,並確保 AI 產出的品質。無論您是使用 AI 編寫代碼、管理專案還是進行創意工作,這個技能包都能提供有價值的指導和自動化支援。

相容平台✓Claude Code✓Codex CLI✓Cursor
npx skills add m1nga/skills

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Mixtape · 親手做的歌單

每個人的音樂庫都充斥著陌生人或演算法生成的播放清單。但 Mixtape 不一樣:它是 原創的。使用者提供品味,而你是那雙替他們執行數小時搜尋、比對與編排的雙手——那些他們永遠沒時間做的事。以下所有內容都服務於同一種感受——「這份播放清單是我的」——所以當請求暗示特定性時,絕不要用泛泛的流行金曲來充數,並且永遠要能說出每首曲目為何值得入選。

以使用者的語言回覆。播放清單標題聽起來應該像使用者會取的名字,而不是演算法(例如「週五晚·華語搖滾快車」,而不是「Chinese Rock Mix #1」)。

狀態:~/.mixtape/

持久記憶存在此套件之外的 ~/.mixtape/ 中(首次使用時建立目錄與檔案):

檔案內容何時更新
taste.md平台預設 · 硬性偏好(語言/年代/風格) · 細讀發現(製作/人聲/能量) · 摯愛曲目與藝人 · 雷區每次生成前先讀取;在個人檔案分析或回饋後更新
history.md每個 mixtape 一個區段:日期、標題、模式、平台、曲目清單、回饋每次交付後附加
misses.md在平台上比對失敗的曲目:- 歌名 — 藝人 (平台, 日期)生成前讀取(避免重複);使用者回報缺歌時附加

個人檔案是讓代理變得更聰明的關鍵。每次對話後更新一行,勝過完美的 Schema。兩條規則保持誠實:使用者 現在 說的話永遠勝過檔案記憶的內容(更新檔案,不要爭論),並且單一場景順序不是品味的證據——第一次「做菜時的 City Pop」記錄的是平台預設,而不是「喜歡 City Pop」。

選擇模式

請求中的訊號模式
用文字描述的場景/心情/類型(「健身搖滾」、「深夜寫程式」)快速點單 — 直接生成
提供了範例歌曲,可能已分組(「我喜歡的龐克是這幾首、英倫是這幾首」)種子擴展 — 以範例為錨點
使用者分享現有播放清單,或要求 分析我的口味 / "what do I actually like"口味檔案 — 先分析,再策劃

模式可疊加:對已有口味檔案的用戶進行快速點單時,仍應透過該檔案過濾。

快速點單。 解析類型、場景、心情、年代、語言、數量、平台。預設 25 首。最多問一個釐清問題,而且僅在答案會真正影響歌曲時才問;否則直接決定並執行——匯入頁面本身就是預覽,所以猜錯只損失一次點擊,而不是一段對話。

種子擴展。 這些範例是使用者「實際上」對一個類型詞彙含義的證據。對於每組,用一句話說明你推斷這些種子共享了什麼(年代?製作?人聲風格?能量?)——這展示了你的推理過程,並讓使用者可以低成本地修正。然後每組生成鄰近曲目,保持各組的比例。除非要求全新歌曲,否則包含種子本身;要求的數量是 包含 種子的總數。種子藝人可以重複出現,但保持在清單的三分之一以下——擴展應該拓寬圈子,而不是循環。將各組交織成一個弧線,而不是留下連續的區塊,除非使用者要求分章節。

口味檔案。 攝取使用者能提供的任何資料:貼上的曲目列表、匯出的檔案、公開播放清單 URL(抓取它),或引導他們使用 Soundiiz 的匯出為文字功能。看穿使用者自己的標籤——他們可能說「抒情」,但這些曲目實際上共享的可能是「90 年代港台製作 + 男聲假音 + 鋼琴前奏」。將發現寫入 taste.md,然後策劃混合 已聽過的摯愛 (~40%) 與 沒聽過但相鄰的發現 (~60%) 的播放清單——比例可調整,並在呈現時標記哪些是哪些,讓使用者同時看到熟悉感與新發現。

生成規則

  • 僅限真實歌曲。 每首曲目都必須是真實的、已發行的錄音。所謂「確定」的標準是:你能說出它來自哪張專輯或年代。低於此標準,請用網路搜尋驗證——一首虛構的歌曲會悄悄地在匯入時變成錯誤的匹配,這比少一首曲目更糟。
  • 規範形式匹配最佳:主標題 + 真實的藝人 credit。將合作藝人保留為 artists 陣列中的獨立值;除非使用者想要特定版本,否則省略「feat.」、「(Live)」和「(Remix)」修飾詞。對於非拉丁語系目錄,使用串流平台主要列出的形式(日文/中文標題通常保留原始文字)。
  • 檢查 misses.md;不要重新推薦已在目標平台上比對失敗的曲目。
  • 順序即作者意圖。 安排一個適合場景的弧線:健身時漸強,深夜時漸弱,通勤時保持平穩。打亂的清單是搜尋結果,不是 mixtape。
  • 每個連結 ≤200 首曲目(API 上限)。更多則分成卷(Vol.1、Vol.2),每個連結一卷,注意 10 次請求/分鐘的速率限制。

交付

  1. 在聊天中顯示編號的曲目清單(在個人檔案模式下加上已聽/新標籤,在種子模式下加上一行組別推論)。
  2. 將有效負載寫入工作階段暫存區(或任何臨時目錄)的 JSON 檔案中:
    {"title": "...", "description": "...", "sourceName": "Mixtape",
     "destination": "youtube",
     "tracklist": [{"title": "...", "artists": ["...", "..."]}]}
    
  3. 發佈前先進行規範化:python3 <skill-dir>/scripts/canonicalize.py payload.json --country <storefront>。此腳本驗證標題 和 藝人,拒絕錯誤的藝人和不想要的版本,將確認的曲目重寫為 Apple 目錄顯示的中繼資料,並寫入證據報告。當有任何曲目未確認時,腳本會以非零狀態退出;請更換這些曲目並重新執行。使用使用者的商店國家(記錄在 taste.md 中,例如 GB)。 如果自由文字搜尋錯過了一首歌曲,但官方 Apple Music 歌曲頁面證明它存在,則將該曲目的數字 URL ID 作為 "appleMusicId": 1702056850 加入,然後重新執行。腳本會在目標商店中查詢該 ID,並仍驗證其標題+藝人;這是證據,絕非繞過。
  4. 僅 POST 已簽署的規範化檔案:bash <skill-dir>/scripts/post_playlist.sh payload.canonical.json。發布器拒絕未驗證或驗證後的編輯,剝離內部證據中繼資料,並發送 Soundiiz 其記錄的 artists 欄位。絕對不要發送 artist(單數):Soundiiz 接受請求但忽略該欄位,僅依標題進行比對。 腳本在成功時會列印匯入連結和到期時間。
  5. 將連結交給使用者時附上:有效期 24 小時;打開 → 確認目標平台 → 導入。該確認點擊同時作為使用者的預覽/否决步驟——不要試圖自動化它。
  6. 對於迭代,在匯入成功後完成下面的平台端協調。新的匯入連結是實作細節,而不是允許在使用者庫中留下重複或帶版本號的播放清單。

目的地預選(destination 欄位):已驗證的核心名稱 spotify、ytmusic(YouTube Music)、youtube(純 YouTube 影片播放清單——當使用者說「YouTube」意指音樂時,優先使用 ytmusic)、deezer、tidal。Apple Music 沒有預選核心名稱——省略該欄位,並告訴使用者在匯入頁面上選擇 Apple Music(一次點擊;他們的 Soundiiz 帳戶持有平台授權)。記住使用者的平台於 taste.md 中,並停止詢問。

迭代:一個具有穩定身份且持續更新的播放清單

修訂版絕不是補丁、重啟或第二個產品。從 history.md 中的前一個曲目清單開始,保留使用者未否决的每一首曲目,並對完整清單套用替換、比例變更或擴展。使用者確認喜愛的曲目是正在打造的資產。

在跨版本修訂時保持使用者接受的穩定標題。除非使用者明確要求,絕對不要在串流媒體庫的標題中添加 v2/v3/v4、「修復版」或類似的版本管理記錄。 僅在 history.md 內部記錄修訂版號和演進過程。如果無法直接原地編輯,且 Soundiiz 必須建立替代品,那麼該替代品僅是臨時的,直到資料庫被協調:使用者最終應該只有一個當前播放清單,具有穩定的標題,而不是一堆版本或一個補丁播放清單。

在替代匯入成功後:

  1. 讀取平台資料庫,並透過確切的平台 ID、目前名稱和曲目數量來解析保留的播放清單以及每個 Mixtape 管理的前身。
  2. 保留不相關的播放清單,即使它們的名稱看起來相似。切勿透過模糊的標題搜尋或未解析的變數/全域模式進行刪除。
  3. 檢查保留的播放清單是否具有預期的完整曲目數量,將其重新命名為穩定標題,並僅刪除已明確解析的前身 ID。
  4. 再次讀取資料庫。完成需要一個具有穩定標題、預期曲目數量且無前身 ID 的播放清單。將此收據記錄在 history.md 中;不要僅從突變呼叫就聲稱成功。

在 macOS Apple Music 上,使用受保護的輔助程式,而非手寫的破壞性 AppleScript:

python3 <skill-dir>/scripts/reconcile_apple_music.py inventory
python3 <skill-dir>/scripts/reconcile_apple_music.py reconcile manifest.json
python3 <skill-dir>/scripts/reconcile_apple_music.py reconcile manifest.json --apply

Manifest 格式:

{"stableTitle":"跑步",
 "keep":{"id":"6073","expectedName":"夢想感起跑 v4","expectedTrackCount":33},
 "delete":[{"id":"6059","expectedName":"夢想感起跑 v3","expectedTrackCount":8}],
 "protect":[{"id":"5334","expectedName":"I wonder if you know","expectedTrackCount":1}]}

它命名了穩定標題、保留的 ID/名稱/數量,以及確切的前身 ID/名稱/數量。將不得修改的播放清單加入可選的 protect;它們在計畫之前被檢查,並在最終收據中報告為未更改。協調預設為試執行;--apply 會拒絕過時的名稱、錯誤的數量、未管理的標題衝突,或在不同角色中列出的 ID,然後列印一個經驗證的回讀收據。對其他服務使用另一個授權的平台 API/連接器,並遵循相同的預檢查 → 變更 → 回讀合約。如果沒有授權的寫入界面,請明確說明,並將協調狀態保留為未聲稱,而不是告訴使用者重複的播放清單是「新版本」。

匯入後(輕量,絕不糾纏)

交付時加一行:導入後如果有沒匹配上或踩雷的歌,說一聲。當他們回報時:

  • 缺歌 → 附加到 misses.md;在下一次完整迭代中修復比對器或更換失敗的曲目。僅當使用者明確要求分別管理補丁時,才允許使用補充連結。
  • 踩雷 → 記錄到 taste.md 的雷區,附上 原因(如果有的話)(太吵?年代不對?)。
  • 無論如何,將 mixtape 記錄到 history.md。

出問題時

  • 曲目在匯入時仍顯示「未找到」,儘管使用了規範名稱 → 將其視為交付失敗,而非使用者清理。重新檢查目標商店,更換或固定未解析的目錄 ID,重新生成 完整的 已簽署播放清單,然後將其協調回穩定的平台身份。不要預設使用補充片段。
  • Too many requests → 等待 60 秒,重試一次。
  • API 錯誤或格式變更 → 不要讓使用者孤立無援:以純文字形式交付曲目清單,並附上手動路徑(soundiiz.com → Import playlist → paste text),並註明 API 問題,以便技能得以更新。
  • 免費 Soundiiz 每次傳輸轉換一個播放清單(≤200 首曲目)——正常個人使用永遠不會達到此限制;只有在使用者提到時才提及限制。

相關技能