Community研究與資料分析github.com

Avishai-Tsabari/mercury-skills

可重複使用的代理技能,用於 Mercury/pi 助手——基於 schema 的註冊表(現有內容)與追蹤器(流動的工作),零依賴的 Python 引擎

mercury-skills 是什麼?

這組技能「Avishai-Tsabari/mercury-skills」為 AI 代理(如 Mercury 或 pi 助手)提供了結構化的資料管理能力,核心包括兩個模式:**註冊表**(registry)和**追蹤器**(tracker)。註冊表適用於靜態、唯讀的清單,例如已知的 API 端點或伺服器列表。追蹤器則專門處理那些具有狀態變化、擁有者、截止日期和層級結構的動態工作項目,例如軟體錯誤、任務或發票。其 Python 引擎位於 `engine/tracker.py`,僅使用 Python 3.9+ 內建的 sqlite3 模組,無需任何外部依賴。用戶可以透過自然的語言報告進度,代理會自動將其轉換為對應的命令。此外,系統支援預設的 schema 範本(如任務、錯誤、發票、功能),並允許在工作區層級覆蓋自訂的預設設定。鐵律包括:追蹤器為唯一真相來源、`blocked` 狀態必須附註原因、刪除需經使用者明確確認,以及所有更動都會記錄在 `item_history` 中。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add Avishai-Tsabari/mercury-skills

Installed? Explore more 研究與資料分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

追蹤器 —— 追蹤流動的工作

何時適合使用此技能

關鍵提問: 「……的狀態是什麼?」 或 「誰擁有這個?」

追蹤器 = 在不同狀態間移動的項目,具有擁有者和時間軸,且值得保留歷史記錄。

路由測試

你需要至少滿足兩項條件,才夠資格使用追蹤器:

  • 隨時間變化的狀態(不是屬性 —— 而是移動)
  • 人的指派對象
  • 截止日期
  • 層級結構:群組 → 子群組 → 項目

少於兩項?→ registry。⚠️ 預設總是使用註冊表。

建構方式

一個引擎,多種 schema。

<tracker-dir>/
  schema.json    狀態、優先級、層級標籤、額外欄位
  tracker.db     SQLite:項目 + 群組 + item_history

引擎:engine/tracker.py(與此 SKILL.md 相鄰)· Python 3.9+ · 零依賴(內建 sqlite3)。

層級結構: group → subgroup → item。標籤會根據領域改變 —— 對任務來說是專案 → 模組 → 任務,對錯誤來說是產品 → 元件 → 錯誤,對發票來說是客戶 → 訂閱 → 發票。

與用戶協作

  1. 執行路由測試。 扁平列表 → registry。
  2. 提出 schema: 有哪些狀態、什麼算「已關閉」、有哪些優先級、層級結構為何、有哪些額外欄位。呈現給用戶並請求核准。
  3. 檢查presets/中是否有預設集。
  4. 使用 init 建立,新增群組,然後在工作區層級的 registries.json 索引中註冊該追蹤器。
  5. 說明更新可以用自然語言回報 —— 代理會將其轉換為指令。

指令

路徑相對於工作區根目錄。請根據此技能安裝的位置調整 SKILL_DIR(例如 .pi/skills/tracker)。

T=<SKILL_DIR>/engine/tracker.py
D=trackers/bugs

python3 $T --dir $D init --preset bugs
python3 $T --dir $D group add webapp --name "Web App"
python3 $T --dir $D group add checkout --name "Checkout" --parent webapp
python3 $T --dir $D add "Double booking in calendar" --group webapp --subgroup checkout \
        --assignee dana --priority sev2 --client acme --due 2026-08-05
python3 $T --dir $D update 3 --status in-progress --notes "reproduced"
python3 $T --dir $D list --assignee dana --group-by status
python3 $T --dir $D list --status blocked
python3 $T --dir $D show 3
python3 $T --dir $D history 3
python3 $T --dir $D report          # 摘要:按狀態、按指派人、逾期、被封鎖
python3 $T --dir $D delete 3 --yes  # ⚠️ 永久刪除

不帶篩選條件的 list 會自動隱藏已關閉的項目。使用 --all 則顯示全部。

可用的預設集

tasks 任務 · bugs 錯誤和客戶問題 · invoices 發票和催收 · features 功能管線

預設集解析順序

init --preset <name> 會按此順序解析 <name>.json —— 第一個匹配的勝出:

  1. <workspace>/trackers/presets/<name>.json — 工作區本地的預設集,相對於引擎執行時的工作目錄
  2. <SKILL_DIR>/presets/<name>.json — 上述列出的內建預設集

與內建預設集同名的本地預設集會覆蓋它。若找不到預設集,則會列出兩個位置中所有可用的名稱,並分別標記 [space] / [built-in]。

建立工作區本地預設集: 將一個 schema JSON(格式與 schema.json 相同,請參考內建預設集的範例)放入 trackers/presets/ 目錄。該目錄僅在明確使用 --preset <name> 時才會被讀取 —— 其他檔案會被忽略。

鐵則

  • 📊 追蹤器是唯一真相來源 —— 絕不將狀態保留在代理的記憶體中。一律查詢。
  • ⛔ blocked 狀態必須在備註中說明原因 —— 否則封鎖毫無價值。
  • 🗑️ 刪除需要 --yes 和明確的使用者確認。 預設沒有「已取消」狀態 —— 如果需要,請將其加入 schema 而非刪除。
  • 📜 每次更動都會記錄在 item_history 中 —— 絕不手動編輯資料庫。
  • 🔁 三個或更少的狀態,沒有指派對象且沒有截止日期 = 這本該是一個註冊表。

相關技能