技能預檢
在發布前審計提供的技能資料夾。審計腳本將該資料夾視為不受信任的數據:它絕不執行其中的檔案、呼叫模型或發起網路請求。這點很重要,因為技能可能包含會以代理權限運作的指令或程式碼。
-
取得審計器並執行。它是一個自包含檔案,無執行時期依賴,發布於 https://github.com/1arley/skill-preflight:
curl -fsSL https://raw.githubusercontent.com/1arley/skill-preflight/main/scripts/preflight.mjs -o /tmp/skill-preflight.mjs node /tmp/skill-preflight.mjs <技能資料夾> --format jsonnpx --yes github:1arley/skill-preflight <技能資料夾> --format json效果相同,並會快取 CLI。下載一次即可重複使用。下載完成後所有操作離線執行:審計器從不呼叫模型、不執行被審計技能、不傳送任何資料到任何地方。當審查的資料夾就是本技能自身時,請從技能資料夾傳遞
--ignore-file preflightignore.json。它會抑制由於本檔案與README.md中的下載 URL 所造成的兩個誤報。 -
讀取 JSON 報告,並以白話說明每個錯誤、警告及資訊性可攜性備註。
-
套用 references/rubric.md 中的定性評分表,評估啟動清晰度、範例品質及可能的啟動不足。將此判斷與確定性發現分開標示。
-
呈現一份合併報告。保留所有確定性規則 ID 與
file:line位置,然後附加評分表評估與其證據。 -
建議有針對性的修正。除非使用者明確要求您進行這些修正,否則不要編輯被審計的技能。
agensi 設定檔為啟發式,靈感來自 Agensi 公開的安全分類。它不複製其私有掃描器,也不預測 Marketplace 的決策。在解釋安全發現之前,請先閱讀 references/security.md;在轉換報告格式時,請閱讀 references/report-format.md。
範例
輸入:
node /tmp/skill-preflight.mjs ./my-skill --profile default --format json
確定性輸出片段:
{
"schemaVersion": "1.0.0",
"summary": { "errors": 0, "warnings": 1, "infos": 0 },
"findings": [{
"id": "SEC-001", "severity": "warning", "category": "security",
"message": "靜態引用到對外網路存取。",
"location": { "file": "scripts/run.mjs", "line": 12 },
"suggestion": "移除它,或記錄一個狹窄、經使用者核准的目的"
}]
}
主機代理會另外新增一個定性區段,例如:「啟動:清晰;描述中說明了任務並包含使用者措辭。證據:描述包含明確的審計與發布觸發條件。」腳本本身從不提供該判斷。