{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "career-ops",
  "built": "2026-10-26",
  "control_level": 4,
  "control_level_label": "L4 高权限",
  "capabilities": [
    "execute_command",
    "network",
    "write_file"
  ],
  "required_controls": {
    "agent": [
      "sandbox_recommended",
      "graded_authorization"
    ],
    "admin": [
      "approval_process",
      "rollback_support",
      "full_audit"
    ]
  },
  "evidence": [
    {
      "file": "scripts/",
      "summary": "Local script or command execution: node *.mjs: 128 scripts in repo root can be run independently (scan / generate-pdf / update-system / merge-tra"
    },
    {
      "file": "网络端点",
      "summary": "External network access declaration: AI endpoints: openrouter.ai (hardcoded), api.openai.com and arbitrary OPENAI_BASE_URL, Gemini SDK (gene"
    },
    {
      "file": "本地工作目录",
      "summary": "File read/write and artifact output: data/: applications.md (tracker), pipeline.md, scan-history.tsv, scan-runs.tsv, f"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查（换角度抓第一遍的错），并与第一遍不共享结论：① 路径与形态复核——git ls-files -s 逐条核对 8 个 SKILL.md 的 git mode，readlink 验证 7 条为符号链接，推翻「多 skill 合集」的初始假设；② 元数据复核——gh api repos/career-ops-hq/career-ops 取 stars/pushed_at/license，本地 git log -1 与 VERSION（1.32.0）交叉；③ 依赖面复核——对全仓 *.mjs 做域名级与 process.env 级枚举（sed/uniq 统计），并与 provider/plugin 清单逐条对齐，所有引用端点均回到具体文件行验证；④ 安全结论找反例——专门反查 TLS 降级（rejectUnauthorized/NODE_TLS_REJECT_UNAUTHORIZED/strictSSL）、stealth 补丁（playwright-extra/puppeteer-extra/stealth）、keychain 读取（keytar/secret-tool/find-generic-password/wincred）、混淆内容（>=200 字符 base64 段扫描）四类，均零命中，故不下红档结论；⑤ 引用逐行回读——所有将写入 evidence.quote 的句子均用 sed -n '<line>p' 从工作副本原文取出比对，非 scout 转述；⑥ 数字口径复核——modes/ 文件数、provider 数、untrusted 覆盖文件数、模板/测试数均以本机命令重算，与 scout 报告不一致处已在 second_pass 记 discrepancy；⑦ 与仓库自述交叉——ARCHITECTURE.md / DATA_CONTRACT.md / SECURITY.md / LEGAL_DISCLAIMER.md 的自我描述与源码实际能力比对，未发现夸大承诺。全程只读，未运行 build/测试/格式化。",
    "second_pass": [
      {
        "item": "skill.path 定位（任务表标「待定位」）",
        "status": "ok",
        "detail": "实际主 skill 路径 = .agents/skills/career-ops/SKILL.md（真实文件，10972 字节，md5 15ddfceb6eb666cda893bc8cddab4bf0）。任务简报提示『repo 内有多个 SKILL.md，≥8 个』——经 git ls-files -s 逐条核对为误读：7 条是 git mode 120000 的符号链接（.claude/.cursor/.grok/.kimi/.opencode/.qwen/.antigravitycli），readlink 全部指向 ../../../.agents/skills/career-ops/SKILL.md。故本 repo 不是 14-skill 合集形态，而是一个 skill 多宿主清单，无需按合集记明。"
      },
      {
        "item": "skill.commit 口径",
        "status": "ok",
        "detail": "工作副本 git log -1 = 1d2cb1e125ea3034ff01b464e9a5e2628c0e315f（Tue Sep 15 13:42:54 2026 +0200，'Merge pull request #2941 from nikolaysm/feat/codex-sandbox-fencing'），与任务书表格 pin commit 1d2cb1e125ea 一致（表格为短 SHA，本字段按表格逐字填短 SHA，完整 SHA 记于此）。"
      },
      {
        "item": "official_desc 逐字性",
        "status": "ok",
        "detail": "SKILL.md frontmatter 为折叠标量（>-），展开后与 meta.official_desc 逐字一致；description 之外的 frontmatter 键（arguments/user_invocable/user-invocable/argument-hint/license）未混入。"
      },
      {
        "item": "stars / last_push / license",
        "status": "ok",
        "detail": "gh api 返回 stargazers_count 71696、pushed_at 2026-09-15T11:43:48Z、license.spdx_id MIT、archived false、created_at 2026-04-04；仓库根 LICENSE 为 MIT（Copyright (c) 2026 Santiago Fernández de Valderrama）。"
      },
      {
        "item": "「零 token 扫描」声明 vs 实际代码",
        "status": "ok",
        "detail": "scan.mjs 头部 'Zero Claude API tokens — pure HTTP + JSON.' 与实现一致：扫描路径只经 providers/_http.mjs 的 fetch，无 LLM 调用点；需要 AI 的环节在独立脚本（openai-eval / gemini-eval / openrouter-runner / scan-hn 的可选 AI 层），未混入默认扫描路径。"
      },
      {
        "item": "「绝不代提交」声明 vs 实际代码",
        "status": "ok",
        "detail": "AGENTS.md:368、modes/_shared.md NEVER#3、modes/email.md:15-16、modes/apply.md:274/280/304（提交动作全部指派给 Candidate）四处一致；插件契约 plugins/_types.js 亦要求 humanInTheLoop 为 true 且无 submit hook。未发现任何自动提交/自动发送的实现。"
      },
      {
        "item": "凭证读取清单完整性",
        "status": "ok",
        "detail": "以 process.env.<KEY|TOKEN|SECRET> 正则全仓枚举后再按文件回读，确认凭据变量共 8 类（GEMINI/OPENAI/OPENROUTER/ANTHROPIC/APIFY/NOTION/GMAIL×3/H1B）；无 keychain 读取（keytar|secret-tool|find-generic-password|wincred 零命中）；有 1 处硬编码公开 key（providers/arbeitsagentur.mjs:40 'jobboerse-jobsuche'，为对方前端公开常量）。"
      },
      {
        "item": "红档触发条件反查（TLS 降级 / stealth / 任意代码执行）",
        "status": "ok",
        "detail": "rejectUnauthorized、NODE_TLS_REJECT_UNAUTHORIZED、strictSSL、insecure 全仓零命中；无 playwright-extra/puppeteer-extra/stealth 依赖；plugins/_engine.mjs:391 'plugin egress must use HTTPS' 反而强制 HTTPS。唯一可疑项是 scan.mjs --headed-fallback 与 liveness-browser 的 headed 复检：它用真实（非伪装）浏览器重试被反爬墙挡下的页面，opt-in 且需显示器，判定为存活校验手段而非伪装绕过，已在 risks 中如实披露而不是据此升红档。"
      },
      {
        "item": "injection_surface 结论的反例搜索",
        "status": "ok",
        "detail": "尝试找漏网的外部内容摄入点：modes/intake.md（上传 CV/推荐信）、modes/reply-watch.md（招聘邮件）、modes/triage.md（抓取结果）、modes/apply.md（表单字段）均已带引用；validate-untrusted-content-coverage.mjs 以派生自源码的模式清单在 CI 拦截遗漏。未发现无防护的摄入路径。"
      },
      {
        "item": "modes/ 文件计数口径",
        "status": "discrepancy",
        "detail": "scout（SurveyModes）报 modes/ 共 175 个 .md；本机 find modes -name '*.md' | wc -l = 174，顶层 43（ls 计数一致）。差 1 的成因是 scout 无 shell、只能靠 glob 列举。本 JSON 统一采用本机复算值 174（顶层 43）。"
      },
      {
        "item": "untrusted-content 覆盖文件数",
        "status": "discrepancy",
        "detail": "scout（SurveyModes）称 modes/ 内『grep 命中 31 个文件』、摘要写『29+』；本机复算：grep -rl 'Untrusted External Content' modes/ = 23 个文件，大小写不敏感 grep -ril 'untrusted' = 24 个文件。结论采信本机值（23–24），未采用 scout 的 31——该数值不影响判定（覆盖治理成立），仅记口径差异。"
      },
      {
        "item": "报告块字母口径（A-F / A-G / A-H 混用）",
        "status": "discrepancy",
        "detail": "仓库内文档确有版本漂移：modes/_shared.md:77 写 'the report structure is A-H'、modes/oferta.md 模板为 A)–H)，但 AGENTS.md:67 仍写 'Blocks A-F'、modes/_writing.md 写 'A–F blocks'、本地化模式如 modes/da/oferta.md:1 标题仍是 'Fuld evaluering A-F'、modes/ar/_shared.md:43 写 '(A-F)'。这是文档同步滞后，非能力夸大；本 JSON 记录为仓库自身 drift，不据此下调任何结论。"
      },
      {
        "item": "providers/ 计数口径",
        "status": "ok",
        "detail": "ls providers/*.mjs | wc -l = 97，扣除 10 个 _ 前缀 helper（_config-utils/_dns-cache/_html-entities/_html-to-text/_http/_ip-guard/_profile-keywords/_registry/_safe-url/_trust-validator）= 87 个可加载 provider，与 scout 的独立计数一致（另有 _types.js 为纯类型文档）。"
      },
      {
        "item": "子进程调用点复核（scout 清单抽样回读）",
        "status": "ok",
        "detail": "scout 给出的 pdflatex/tectonic、pdftotext、go build、npx playwright install、git、rank-pipeline 的 codex/copilot 白名单、batch-tailor 的 claude 调用均以 sed 逐行回读原文比对，行号与文本吻合，无转述失真；未发现清单外的 shell 真调用点（grep child_process 的其余命中集中在 tests/ 与 web/src/lib）。"
      },
      {
        "item": "无 shell 可用时的 unlocatable 项",
        "status": "unlocatable",
        "detail": "scout（SurveyModes）声明无法执行 wc -l（其工具集无 bash），故其行数类结论不可作命令证据；相应计数已由本机重算替代（见上两条 discrepancy）。此外 dashboard/ 下不存在任何 .mjs（该目录为 Go 程序），scout 以 glob 空结果记录为 unlocatable——经本机 ls 确认属事实而非遗漏。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "1d2cb1e125ea",
    "sha256": "56a059cc7e15d2705e114ae29452e30abccf27338b8a6884756bf76b50d5c265",
    "reviewed_by": null,
    "reviewed_at": null
  },
  "assessed_at": "2026-10-25",
  "method_version": "2.0",
  "mirror": {
    "archive": "https://skillpub.pages.dev/r2/v/2026-09-15/career-ops.tar.gz",
    "sha256": "56a059cc7e15d2705e114ae29452e30abccf27338b8a6884756bf76b50d5c265",
    "commit": "1d2cb1e125ea"
  },
  "original": {
    "github": "https://github.com/career-ops-hq/career-ops/tree/main/.agents/skills/career-ops",
    "path": ".agents/skills/career-ops",
    "commit": "1d2cb1e125ea"
  }
}