Agent-almanac audit-icon-pipeline
install
source · Clone the upstream repo
git clone https://github.com/pjt222/agent-almanac
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/wenyan-lite/skills/audit-icon-pipeline" ~/.claude/skills/pjt222-agent-almanac-audit-icon-pipeline-705606 && rm -rf "$T"
manifest:
i18n/wenyan-lite/skills/audit-icon-pipeline/SKILL.mdsource content
Audit Icon Pipeline
以註冊表校之於字形映射文件、圖標目錄、清單,察缺字形、缺圖標、陳舊清單。生結構化之缺口報告,覆 skills、agents、teams。
適用時機
- 新增 skills、agents、teams 後,查是否需圖標
- 全管線渲染前,辨所缺
- 註冊表更新後,確清單一致
- 圖標管線之定期健檢
輸入
- 選擇性:實體類型之過濾——
、skill
、agent
或team
(預設:all
)all - 選擇性:所查之調色板(預設:
——參考調色板)cyberpunk
步驟
步驟一:讀註冊表
自真源之註冊表採諸實體之識別符。
- 讀
——取所有域中之 skill IDskills/_registry.yml - 讀
——取所有 agent IDagents/_registry.yml - 讀
——取所有 team IDteams/_registry.yml - 錄其數:skills、agents、teams 之總
預期: 三實體識別符之列,其數合於
total_skills、total_agents、total_teams。
失敗時: 某註冊表文件缺失時,報其路徑而略此實體類型。
步驟二:讀字形映射
自字形映射文件採所有已映射之實體識別符。
- 讀
——取viz/R/glyphs.R
列中所有鍵SKILL_GLYPHS - 讀
——取viz/R/agent_glyphs.R
列中所有鍵AGENT_GLYPHS - 讀
——取viz/R/team_glyphs.R
列中所有鍵TEAM_GLYPHS
預期: 三已映射識別符之列。
失敗時: 某字形文件缺失時,報之並將該類實體全標為未映射。
步驟三:算缺之字形
以註冊表之識別符減已映射之識別符。
- 缺之 skill 字形:
registry_skill_ids - mapped_skill_ids - 缺之 agent 字形:
registry_agent_ids - mapped_agent_ids - 缺之 team 字形:
registry_team_ids - mapped_team_ids
預期: 存於註冊表而無字形函數映射之實體識別符之列。
失敗時: 減之算失敗時,驗註冊表與字形文件間之識別符格式是否合(如下劃線 vs 連字號)。
步驟四:查已渲之圖標
驗已映射字形有對應之已渲圖標文件。
- 每映射之 skill ID,查
viz/public/icons/<palette>/<domain>/<skillId>.webp - 每映射之 agent ID,查
viz/public/icons/<palette>/agents/<agentId>.webp - 每映射之 team ID,查
viz/public/icons/<palette>/teams/<teamId>.webp - 以同結構查
中之 HD 變體viz/public/icons-hd/
預期: 有字形而無已渲圖標之實體列(標準 / HD)。
失敗時: 若圖標目錄不存,則管線未曾運行——報全為缺。
步驟五:查清單之新鮮度
以清單之數比註冊表之數。
- 讀
——計條目viz/public/data/icon-manifest.json - 讀
——計條目viz/public/data/agent-icon-manifest.json - 讀
——計條目viz/public/data/team-icon-manifest.json - 比之於註冊表之總
預期: 清單之數合於註冊表之數。有差則示清單陳舊。
失敗時: 清單文件不存時,先須運行數據管線(
node build-data.js && node build-icon-manifest.js)。
步驟六:察孤兒圖標
走
viz/public/icons*/,標 WebP 文件之 <palette>/<domain>/<skillId> 三元組不在 icon-manifest.json 者。
- 列所有 WebP 文件:
find viz/public/icons* -name "*.webp" - 每文件,自其路徑取
<domain>/<id> - 查
於<domain>/<id>
有無條目icon-manifest.json - 收無匹之文件為孤兒——存於盤而已不被引
# Quick orphan count per palette node -e " const fs = require('fs'); const manifest = JSON.parse(fs.readFileSync('viz/public/data/icon-manifest.json')); const ids = new Set(manifest.map(e => e.domain + '/' + e.id)); const orphans = require('child_process') .execSync('find viz/public/icons -name \"*.webp\"').toString().trim().split('\n') .filter(p => { const parts = p.split('/'); const id = parts.slice(-2).join('/').replace('.webp',''); return !ids.has(id); }); console.log('Orphans:', orphans.length); orphans.forEach(p => console.log(' ', p)); "
預期: 孤兒為零。有孤兒示 skills 已遷至他域而未清(每遷 18 孤兒 = 9 調色板 × 2 尺寸)。
失敗時: 手刪孤兒——無清單條目,不再被提供。遷域事罕,手清可受。
步驟七:生缺口報告
生結構化之總。
- 格式為明表或列:
=== Icon Pipeline Audit === MISSING GLYPHS (no glyph function): Skills: 5 missing — [list] Agents: 2 missing — [list] Teams: 0 missing MISSING ICONS (glyph exists, no rendered WebP): Standard (512px): 3 skills, 1 agent HD (1024px): 8 skills, 3 agents, 1 team STALE MANIFESTS: icon-manifest.json: 320 entries vs 326 registry (stale) agent-icon-manifest.json: 66 entries vs 66 registry (OK) team-icon-manifest.json: 15 entries vs 15 registry (OK) - 依所發提下一步之建議
預期: 完整之缺口報告,附可行之下一步。
失敗時: 若諸查皆過而無缺口,報「管線已完全一致」為正果。
驗證
- 三註冊表皆讀成
- 三字形映射文件皆查
- 圖標目錄標準與 HD 皆掃
- 清單新鮮度已驗
- 孤兒圖標已查(盤路徑對清單)
- 缺口報告已生,附數與實體列
- 已提可行之下一步
常見陷阱
- 識別符格式失配:註冊表用連字號(
),字形映射或用下劃線鍵——比較時須標準化create-skill - 調色板假設:僅查 cyberpunk 調色板漏調色板專之渲染缺口
- 空目錄:域目錄存而空,globbing 時算作「圖標在」——查文件存,非目錄存
- HD 未渲:HD 圖標在分離目錄樹(
)——勿與標準混icons-hd/ - 遷域後之孤兒:skill 之域變時,
於新路徑創圖標而不刪舊路徑——遷域後務行步六孤兒之查build.sh
相關技能
- create-glyph — 創此審所辨之缺字形
- enhance-glyph — 提升既有字形之質
- render-icon-pipeline — 運行全管線以生所缺圖標