skill-provenance
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSkill: skill-provenance
Skill: skill-provenance
Sổ nguồn gốc + toàn vẹn cho từng skill. quét vuln/secret trong NỘI DUNG;
skill này trả lời hai câu hỏi khác của chuỗi cung ứng (supply-chain): skill từ đâu tới
và có bị sửa lén sau khi cài không. Store là (nguồn +
ngày ghi + sha256 mọi file trong ). Verify bằng cách tính lại checksum và
so với sổ — lệch = MODIFIED, có skill trên đĩa mà chưa ghi sổ = UNTRACKED.
orca-sec-scansfdk/skills.provenance.jsonskills/<name>/用于记录每个 skill 的来源与完整性的账本。 会扫描内容中的 vuln/secret;本 skill 回答 supply-chain 中另外两个问题:skill 从哪里来,以及安装后是否被暗中修改。存储文件为 (来源 + 记录日期 + 中每个文件的 sha256)。校验方式是重新计算 checksum 并与账本比较——不一致 = MODIFIED,磁盘上存在但未记入账本的 skill = UNTRACKED。
orca-sec-scansfdk/skills.provenance.jsonskills/<name>/WHAT
WHAT
Purpose và context
目的与上下文
- Purpose: trả lời hai câu hỏi supply-chain cho từng skill — từ đâu tới và có bị sửa lén sau khi cài không — bằng sổ (nguồn + ngày ghi + sha256 mọi file) và lệnh verify tính lại checksum.
fdk/skills.provenance.json - Trigger (when to use):
- Vừa cài / chưng cất một skill từ nguồn ngoài (marketplace, repo khác, distill trong phiên dự án khác) → để chốt nguồn + checksum.
record - Nghi ngờ / muốn kiểm skill có bị sửa ngoài luồng không → .
check - Hỏi "skill này từ đâu ra", "audit nguồn skill", "checksum skill", "supply-chain skill".
- CI muốn chặn skill lạ hoặc skill bị sửa mà chưa cập nhật sổ.
- Vừa cài / chưng cất một skill từ nguồn ngoài (marketplace, repo khác, distill trong phiên dự án khác) →
- Non-goals: không quét vuln/secret trong nội dung skill (việc của ); không tự đoán nguồn skill.
orca-sec-scans
- 目的: 通过 账本(来源 + 记录日期 + 每个文件的 sha256)以及重新计算 checksum 的 verify 命令,回答每个 skill 的两个 supply-chain 问题——从哪里来以及安装后是否被暗中修改。
fdk/skills.provenance.json - 触发条件(何时使用):
- 刚安装/存放来自外部来源的 skill(marketplace、其他 repo、在其他项目会话中 distill)→ 使用 固定来源 + checksum。
record - 怀疑或需要检查 skill 是否被意外修改 → 。
check - 询问“这个 skill 从哪里来”、“审计 skill 来源”、“skill checksum”、“skill supply-chain”。
- CI 需要阻止未知 skill 或已修改但尚未更新账本的 skill。
- 刚安装/存放来自外部来源的 skill(marketplace、其他 repo、在其他项目会话中 distill)→ 使用
- 非目标: 不扫描 skill 内容中的 vuln/secret(这是 的职责);不自行推测 skill 的来源。
orca-sec-scans
Mental model
心智模型
skills/<name>/ (file trên đĩa) → sha256 mỗi file → so với sổ fdk/skills.provenance.json → OK | MODIFIED (lệch) | UNTRACKED (trên đĩa chưa ghi sổ) | MISSING (trong sổ, không còn trên đĩa)recordcheckskills/<name>/fdk/skills.provenance.jsonrecordcheckInput và output contract
输入与输出约定
| Field | Required? | Ý nghĩa | |
|---|---|---|---|
| In | | có với | skill cần ghi sổ |
| In | | có với | URL, |
| In | | không | |
| Out | mục sổ trong | sau | nguồn + ngày ghi + sha256 |
| Out | trạng thái từng skill | sau | OK / MODIFIED / UNTRACKED / MISSING + exit code |
| 字段 | 是否必填 | 含义 | |
|---|---|---|---|
| 输入 | | | 需要记入账本的 skill |
| 输入 | | | URL、真实的 |
| 输入 | | 否 | |
| 输出 | | | 来源 + 记录日期 + sha256 |
| 输出 | 每个 skill 的状态 | | OK / MODIFIED / UNTRACKED / MISSING + exit code |
Rules và capabilities
规则与能力
- RULE-01 (MUST): Không tự bịa nguồn. phải là URL/ref thật hoặc
--source; provenance sai còn tệ hơn không có.local-authored - RULE-02 (MUST): record sau MỌI lần cài/sửa hợp lệ — sổ là nguồn chân lý; skill sửa mà không re-record sẽ bị CI chặn như sửa đổi lạ (đúng ý đồ).
- RULE-03 (MUST): Không thay — skill này lo provenance/toàn vẹn, không quét vuln/secret nội dung; dùng cả hai.
orca-sec-scans - RULE-04 (MUST): coi MISSING (skill đã gỡ) là không-phải-lỗi; chỉ MODIFIED/UNTRACKED mới chặn.
check --ci - RULE-05 (MUST): Store là file curated — commit cùng thay đổi skill, đừng để drift.
fdk/skills.provenance.json - Capabilities: đọc file skill + tính hash; ghi sổ provenance cục bộ. Không mạng.
- RULE-01(必须):不得自行编造来源。 必须是真实的 URL/ref 或
--source;错误的 provenance 比没有 provenance 更糟。local-authored - RULE-02(必须):每次合法安装/修改后都必须执行 ——账本是事实来源;修改 skill 后若未 re-record,CI 会将其作为可疑修改拦截(符合预期)。
record - RULE-03(必须):不得替代 ——本 skill 负责 provenance/完整性,不扫描内容中的 vuln/secret;两者应结合使用。
orca-sec-scans - RULE-04(必须):必须将 MISSING(已卸载的 skill)视为非错误;只有 MODIFIED/UNTRACKED 才触发拦截。
check --ci - RULE-05(必须):Store 是 curated(人工维护)文件——应与 skill 变更一同 commit,避免 drift(漂移)。
fdk/skills.provenance.json - 能力:读取 skill 文件并计算 hash;写入本地 provenance 账本。不访问网络。
Failure boundaries
失败边界
- Không biết nguồn thật của skill → clarify với user, không ghi đoán.
--source - thấy MODIFIED/UNTRACKED → failed (exit 1); sửa có chủ đích → re-record, sửa lạ → điều tra.
check --ci - MISSING → báo, không chặn.
- 不知道 skill 的真实来源 → 向用户澄清(clarify),不要猜测 。
--source - 检测到 MODIFIED/UNTRACKED → failed(exit 1);有意修改 → re-record;可疑修改 → 调查。
check --ci - MISSING → 报告但不拦截。
HOW
HOW
Main workflow
主要工作流
| Step | Type | Inputs | Action | Outputs/exit | Failure/next |
|---|---|---|---|---|---|
| W01 | effect | sổ trống | Backfill một lần | sổ đầy đủ | sổ đã có → skip |
| W02 | effect | skill mới + nguồn thật | | mục sổ | nguồn không rõ → clarify |
| W03 | deterministic | sổ + đĩa | | OK/MODIFIED/UNTRACKED/MISSING | — |
| W04 | deterministic | sổ + đĩa | Gate CI | exit 0/1 | MODIFIED/UNTRACKED → exit 1 |
| W05 | effect | skill đã cố ý sửa | re-record với nguồn cũ | checksum mới | không re-record → W04 đỏ |
Chi tiết từng bước (nguồn chân lý cho W01–W05):
- Backfill một lần (nếu sổ trống) — ghi mọi skill hiện có là tự viết:
bash
python3 fdk/tools/skill-provenance.py record --all --source local-authored - Khi cài / thêm skill mới — ghi nguồn thật (URL, , hoặc
repo#ref):local-authoredbashpython3 fdk/tools/skill-provenance.py record <name> --source "https://github.com/<owner>/<repo>#<ref>" - Kiểm toàn vẹn bất cứ lúc nào (in OK / MODIFIED / UNTRACKED / MISSING):
bash
python3 fdk/tools/skill-provenance.py check # xem tất cả python3 fdk/tools/skill-provenance.py check <name> # một skill - Gate CI — exit 1 nếu có MODIFIED hoặc UNTRACKED (đã gắn trong ):
.github/workflows/skills-sync.ymlbashpython3 fdk/tools/skill-provenance.py check --ci - Sau khi cố ý sửa một skill, chạy lại để cập nhật checksum — nếu không,
record <name> --source <nguồn cũ>sẽ báo MODIFIED (đúng: mọi thay đổi phải qua sổ).check --ci
| 步骤 | 类型 | 输入 | 操作 | 输出/退出码 | 失败/下一步 |
|---|---|---|---|---|---|
| W01 | effect | 账本为空 | 一次性 Backfill: | 完整账本 | 账本已存在 → 跳过 |
| W02 | effect | 新 skill + 真实来源 | | 账本条目 | 来源不明确 → clarify |
| W03 | deterministic | 账本 + 磁盘 | | OK/MODIFIED/UNTRACKED/MISSING | — |
| W04 | deterministic | 账本 + 磁盘 | CI Gate: | exit 0/1 | MODIFIED/UNTRACKED → exit 1 |
| W05 | effect | 已有意修改的 skill | 使用原来源 re-record | 新 checksum | 未 re-record → W04 失败 |
各步骤详情(W01–W05 的事实来源):
- 一次性回填(如果账本为空)——将所有现有 skill 记录为自行编写:
bash
python3 fdk/tools/skill-provenance.py record --all --source local-authored - 安装/添加新 skill 时——记录真实来源(URL、或
repo#ref):local-authoredbashpython3 fdk/tools/skill-provenance.py record <name> --source "https://github.com/<owner>/<repo>#<ref>" - 随时校验完整性(输出 OK / MODIFIED / UNTRACKED / MISSING):
bash
python3 fdk/tools/skill-provenance.py check # xem tất cả python3 fdk/tools/skill-provenance.py check <name> # một skill - CI Gate——如出现 MODIFIED 或 UNTRACKED,则 exit 1(已挂载到 ):
.github/workflows/skills-sync.ymlbashpython3 fdk/tools/skill-provenance.py check --ci - 在有意修改某个 skill 后,使用原来源再次运行 更新 checksum——否则
record <name> --source <旧来源>会报告 MODIFIED(这是正确行为:所有修改都必须经过账本)。check --ci
Branches
分支
| ID | Kind | Guard | Hành vi | Skip / failure | Rejoin |
|---|---|---|---|---|---|
| B01 | conditional_required | sổ trống | backfill W01 | sổ đã có → skip | W03 |
| B02 | recovery | | sửa có chủ đích → W05 re-record; không rõ ai sửa → điều tra như sửa lạ | — | W03 |
| B03 | recovery | | skill mới hợp lệ → W02 record với nguồn thật | nguồn không rõ → clarify | W03 |
| ID | 类型 | 条件 | 行为 | 跳过/失败 | 汇合 |
|---|---|---|---|---|---|
| B01 | conditional_required | 账本为空 | 回填 W01 | 账本已存在 → 跳过 | W03 |
| B02 | recovery | | 有意修改 → W05 re-record;无法确定修改者 → 按可疑修改调查 | — | W03 |
| B03 | recovery | | 合法的新 skill → W02,使用真实来源 record | 来源不明确 → clarify | W03 |
Validation và stopping
校验与停止条件
Hoàn toàn tất định: checksum + exit code của . Phần cần người: nguồn có thật không. Dừng khi in toàn OK (MISSING chấp nhận).
skill-provenance.py--sourcecheck完全确定性:依赖 的 checksum + exit code。需要人工判断的部分: 是否真实。 输出全部 OK 时停止(MISSING 可接受)。
skill-provenance.py--sourcecheckExamples
示例
- Positive: vừa kéo skill từ →
https://github.com/acme/skills#v1.2→python3 fdk/tools/skill-provenance.py record foo --source "https://github.com/acme/skills#v1.2"in OK.check foo - Boundary/failure: sửa mà không re-record →
skills/foo/SKILL.mdin MODIFIED foo, exit 1; user hỏi "foo từ đâu" nhưng không ai biết → không ghicheck --ciđoán, hỏi lại.--source
- 正向示例: 刚从 拉取 skill →
https://github.com/acme/skills#v1.2→python3 fdk/tools/skill-provenance.py record foo --source "https://github.com/acme/skills#v1.2"输出 OK。check foo - 边界/失败: 修改 后未 re-record →
skills/foo/SKILL.md输出 MODIFIED foo,exit 1;用户询问“foo 从哪里来”,但无人知道 → 不写入猜测的check --ci,再次询问。--source