{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "last-30-days-research",
  "built": "2026-10-26",
  "control_level": 5,
  "control_level_label": "L5 严管",
  "capabilities": [
    "credential",
    "execute_command",
    "external_write",
    "network",
    "write_file"
  ],
  "required_controls": {
    "agent": [
      "isolated_environment",
      "per_use_authorization"
    ],
    "admin": [
      "strict_authorization",
      "full_audit",
      "compliance_signoff"
    ]
  },
  "evidence": [
    {
      "file": "本地凭据 / 浏览器配置",
      "summary": "Accessing user login cookies/sessions/keychains: Process environment variables and ~/.config/last30days/.env (overridable via LAST30DAYS_CONFIG_DIR, empty string activates no-config mode): YES"
    },
    {
      "file": "scripts/",
      "summary": "Executing local scripts or system commands: python3 scripts/last30days.py <subcommand> (invoked on every run; includes --preflight / --welcome / setup)"
    },
    {
      "file": "外部 API",
      "summary": "Posting content, creating resources, or mutating data on external platforms: None"
    },
    {
      "file": "本地工作目录",
      "summary": "File read/write and artifact emission: Persisting research artifacts: Markdown reports and {slug}-raw.md under --save-dir (defaults to $HOME/Documents/Last30Days)"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查：① 规模核对：wc -l SKILL.md = 2394；find 目录 134 文件；ls scripts/lib | wc -l = 98；wc -l scripts/*.py scripts/lib/*.py 合计 62681；② 逐段实读 SKILL.md 的关键契约（SKILL CONTRACT / OUTPUT CONTRACT 的 11 条 LAW / STEP 0 陈旧副本自检 / 三条离线快路径 / Step 0 setup 与 --preflight / Step 1 调用模板 / Step 2.5 / 机器可读 JSON 例外）；③ 代码侧抽查关键实现并取其原文：last30days.py 的 MIN_PYTHON 与 --preflight/--store-key；lib/env.py 的 FROM_BROWSER 语义、Keychain/1Password 通道、CONFIG_FILE 路径（~/.config/last30days/.env）；lib/chrome_cookies.py 的 macOS 解密说明；lib/agentcookie.py 的启用条件与『值不落日志』；lib/permission_preflight.py 的 ENDPOINT_OVERRIDE_KEYS 与 provider 清单；lib/html_publish.py 的 DEFAULT_ENDPOINT；lib/library.py 的默认落盘目录；lib/backends.py 的 collect-then-pick；④ 端点枚举：对 scripts/ 全量 grep https:// 并按出现频次排序（api.scrapecreators.com 11 次、api.github.com 9 次、hn.algolia.com 4 次、gamma-api.polymarket.com 3 次等），逐类归入 external_deps；⑤ 安全默认值核实：FROM_BROWSER 未设即不读（env.py 注释 'Default (FROM_BROWSER unset): no browser-cookie reads.'）、setup_wizard 的 'True only after explicit consent'、README 发布页公开性提示；⑥ 元数据核实：本地 git HEAD = ac0ed3b7f610ec64cc898349d1e4507cd6220942（= 任务书 pin），SKILL.md frontmatter version 3.24.0 / license MIT / allowed-tools Bash, Read, Write, AskUserQuestion, WebSearch，gh api → stars 62074、pushed_at 2026-09-15T06:37:14Z。",
    "second_pass": [
      {
        "item": "skill 路径（任务书标『待定位』）",
        "status": "ok",
        "detail": "实际相对路径 skills/last30days（仓库 skills/ 下仅此一个子目录）。frontmatter name 为 'last30days'，与任务书展示名 'Last 30 Days Research'／slug 'last-30-days-research' 不同名——本报告 skill.name 保留 frontmatter 真值 'last30days'，文件名按任务书 slug 输出。"
      },
      {
        "item": "『1400+ 行指令契约』的量级声明",
        "status": "ok",
        "detail": "SKILL.md 实测 2394 行（含契约与实现细节），『1400+』是保守表述，未夸大；OUTPUT CONTRACT 段落确实前置在文件开头附近（v3.0.8 起从第 ~1094 行前移），与文档自述一致。"
      },
      {
        "item": "『模型是规划者（--plan）』是否被代码支持",
        "status": "ok",
        "detail": "SKILL.md 规定命名实体主题必须带 --plan；引擎侧确实消费 --plan（文档另说明缺省时用内部 planner 或确定性回退，仅 headless/cron 路径）。文档同时记录了把引擎 stderr 的 'provider' 一词误读为『需要凭证』的真实事故，属可复核的工程记录。"
      },
      {
        "item": "浏览器 cookie 读取的默认状态（第一遍若笼统写『会读浏览器 cookie』则夸大）",
        "status": "discrepancy",
        "detail": "第二遍核对 env.py：'Default (FROM_BROWSER unset): no browser-cookie reads.'，FROM_BROWSER=off 亦返回空；Linux 侧 agentcookie 还需 PATH 存在该二进制且未设 AGENTCOOKIE=off，MacBook 之外的 box-chrome CDP 路径需人工登录。结论修正为『能力存在、默认关闭、需显式同意』，已在 security 与 capabilities 中如实表述（不作默认行为）。"
      },
      {
        "item": "密钥来源分层与项目配置信任策略",
        "status": "ok",
        "detail": "env.py 明确 CONFIG_FILE = Path.home()/'.config'/'last30days'/'.env'（可用 LAST30DAYS_CONFIG_DIR 覆盖），项目 .env 需 LAST30DAYS_TRUST_PROJECT_CONFIG；Keychain 仅 Darwin + security 在 PATH，LAST30DAYS_SKIP_KEYCHAIN 可关；另有 pass(1) 通道与 LAST30DAYS_KEYCHAIN_ALIASES 别名支持。"
      },
      {
        "item": "权限预检的『安全』承诺是否属实",
        "status": "ok",
        "detail": "permission_preflight.build() docstring 为 'Build a stable, secret-free permission preflight object.'；pipeline.py 中 browser_cookies 的 reads_values 在 safe 模式下恒为 False；代码注释要求 safe=True（doctor/--diagnose/--preflight）保持无网络。与 SKILL.md 的『does not read browser-cookie values, does not write … and does not run research』一致。"
      },
      {
        "item": "发布到第三方托管是默认还是 opt-in",
        "status": "ok",
        "detail": "last30days.py 的 --publish 帮助文本写明 'Publish --emit=html output to ht-ml.app (explicit opt-in; public by default)'；SKILL.md 在 library feed 段要求先向用户解释页面公开可被索引再执行。非默认行为。"
      },
      {
        "item": "外部依赖数量（避免把文档链接当成调用点）",
        "status": "discrepancy",
        "detail": "第一遍若按 https:// 出现频次直接列依赖会把文档链接（如 github.com、nodejs.org、ffmpeg.org、example.com）算进去。第二遍逐条回落到代码调用点：api.scrapecreators.com / api.github.com / hn.algolia.com / gamma-api.polymarket.com / arctic-shift.photon-reddit.com / api.x.ai / api.openai.com / generativelanguage.googleapis.com / openrouter.ai / api.perplexity.ai / api.stocktwits.com / bsky.social / truthsocial.com / di.gg / r.jina.ai / api.ht-ml.app 为真实请求端点；github.com、nodejs.org、ffmpeg.org、example.com 等仅出现在文档字符串或占位示例，未计入。"
      },
      {
        "item": "『无遥测』断定",
        "status": "ok",
        "detail": "全仓 grep 未发现向作者回传用量的端点或上报代码；README 亦无 telemetry 章节；与同批 gstack（有 opt-in 遥测 + Supabase sink）形成对照，结论保守表述为『本 skill 不向作者回传使用数据』。"
      },
      {
        "item": "供应链与安全加固的仓库自述（邻接证据）",
        "status": "ok",
        "detail": "README 记录社区安全动作：HTML 渲染器 stored-XSS 修复、cookie 临时文件权限收紧（'locked-down cookie temp files'）、OSSF Scorecard 与构建来源证明、Semgrep/OSV-Scanner、依赖审查门禁、测试覆盖率下限从 60% 提到 84%。这些是仓库级声明，本报告未逐条独立验证，仅作为背景记录（不影响本 skill 的结论）。"
      },
      {
        "item": "元数据（commit/license/stars/last_push）",
        "status": "ok",
        "detail": "本地 git HEAD = ac0ed3b7f610ec64cc898349d1e4507cd6220942（= 任务书 pin ac0ed3b7f610）；LICENSE MIT / Copyright (c) 2026 Matt Van Horn；SKILL.md frontmatter version 3.24.0、license MIT；gh api → stargazers 62074、pushed_at 2026-09-15T06:37:14Z、license MIT。"
      },
      {
        "item": "功能声明 vs 实际代码（夸大检查）",
        "status": "ok",
        "detail": "description 点名 Reddit / X / YouTube / TikTok / Hacker News / Polymarket / GitHub / the web 与 doctor 健康检查——对应模块均实际存在于 scripts/lib（hackernews.py、bird_x.py/grok_x.py、youtube_yt.py、instagram.py、polymarket 相关、github.py、doctor.py），且 README 的来源表把每类来源所需的 key/CLI 逐条列出（含免费与付费区分），无虚标来源。"
      }
    ],
    "level": 2,
    "level_label": "V2 已复核",
    "commit": "ac0ed3b7f610ec64cc898349d1e4507cd6220942",
    "sha256": "41f1dd6604aec71661c04e2954612035d8cca5f5b7a78d15f8a5de2d6253ca6b",
    "reviewed_by": "skills-bayx-audit",
    "reviewed_at": "2026-10-25"
  },
  "assessed_at": "2026-10-25",
  "method_version": "2.0",
  "mirror": {
    "archive": "https://skillpub.pages.dev/r2/v/2026-09-15/last-30-days-research.tar.gz",
    "sha256": "41f1dd6604aec71661c04e2954612035d8cca5f5b7a78d15f8a5de2d6253ca6b",
    "commit": "ac0ed3b7f610ec64cc898349d1e4507cd6220942"
  },
  "original": {
    "github": "https://github.com/mvanhorn/last30days-skill/tree/main/skills/last30days",
    "path": "skills/last30days",
    "commit": "ac0ed3b7f610ec64cc898349d1e4507cd6220942"
  }
}