{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "gstack",
  "built": "2026-10-26",
  "control_level": 5,
  "control_level_label": "L5 严管",
  "capabilities": [
    "credential",
    "execute_command",
    "network",
    "write_file"
  ],
  "required_controls": {
    "agent": [
      "isolated_environment",
      "per_use_authorization"
    ],
    "admin": [
      "strict_authorization",
      "full_audit",
      "compliance_signoff"
    ]
  },
  "evidence": [
    {
      "file": "本地凭据 / 浏览器配置",
      "summary": "Reads user login cookies/sessions/keychains: Browser cookies / session states: browser skills read via Aside or the built-in browser; /setup-browser-cookies specifically handles imports"
    },
    {
      "file": "scripts/",
      "summary": "Executes local scripts or commands: bash ~/.claude/skills/gstack/bin/gstack-skill-start --skill gstack --model "
    },
    {
      "file": "网络端点",
      "summary": "Declares external network access: Supabase telemetry edge functions (https://frugpmstpnojnhfyimgv.supabase.co): off by default"
    },
    {
      "file": "本地工作目录",
      "summary": "File read/write and artifact output: ~/.gstack/ (GSTACK_HOME): analytics/skill-usage.jsonl, analytics/.pending-*, se"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查：① 结构核对：根目录一级条目 96 项、'find . -maxdepth 2 -name SKILL.md' = 54 个、bin/ 89 个文件；② 生成链路核实：SKILL.md 头部 AUTO-GENERATED 注释 + SKILL.md.tmpl 内含 '{{PREAMBLE}}' + package.json 'gen:skill-docs' 脚本，三处互证『根文件是生成物』；③ 脚本实读：bin/gstack-skill-start 头部注释与 _sanitize()、_emit_block()、telemetry 段（TELEMETRY/TEL_PROMPTED/TEL_START 状态行）、artifacts sync 段（receipted git fetch/merge）；bin/gstack-skill-end 的本地 analytics 写入；bin/gstack-config 的 telemetry 默认 'off'；④ 网络端点逐条落到调用点：api.anthropic.com 见 lib/context-bill.ts:640、api.supabase.com 见 lib/gbrain-supabase-provision.ts:605、Supabase 遥测项目见 supabase/config.sh:7-8、Aside 见 README 安装段；⑤ 遥测默认值与同意流程：README 'Privacy & Telemetry' 段（'Default is off.'、'Every off-machine send is receipted.'）与代码默认值互证；⑥ egress 台账威胁模型核实：bin/gstack-egress 头注释自述不防尾截断/整文件重造；⑦ 版本双轨核实：SKILL.md frontmatter 'version: 1.2.0' vs 根 VERSION '1.87.0.0'；⑧ 元数据核实：本地 git HEAD = 4a3c6a8a3cad82cfffdaa4d152e1c5ae5c4af659（= 任务书 pin），LICENSE MIT / Copyright (c) 2026 Garry Tan，gh api → stars 133147、pushed_at 2026-09-14T22:14:58Z。",
    "second_pass": [
      {
        "item": "skill 路径（任务书标『待定位』）",
        "status": "ok",
        "detail": "本 skill 即仓库根 SKILL.md（frontmatter name: gstack），故 skill.path 记为 '.'（仓库根）。仓库内其它 53 个 SKILL.md 属同级专家 skill，不在本次侦查范围。"
      },
      {
        "item": "『根 SKILL.md 为生成产物』",
        "status": "ok",
        "detail": "SKILL.md 第 14-15 行为 '<!-- AUTO-GENERATED from SKILL.md.tmpl — do not edit directly -->' 与 '<!-- Regenerate: bun run gen:skill-docs -->'；SKILL.md.tmpl 内容与 SKILL.md 同构且含 '{{PREAMBLE}}' 占位；package.json 定义 gen:skill-docs → scripts/gen-skill-docs.ts。三证一致。"
      },
      {
        "item": "前言确实会执行本地脚本（非纯文本声明）",
        "status": "ok",
        "detail": "SKILL.md 的 Preamble 代码块逐字调用 $HOME/.claude/skills/gstack/bin/gstack-skill-start，并带 --parent-pid；该文件存在、可执行、31513 字节、bash 实现，头部注释自述吸收并替代原先每 skill 内联的 ~13KB bash。"
      },
      {
        "item": "指令块防伪是代码级而非口头",
        "status": "ok",
        "detail": "bin/gstack-skill-start 的 _sanitize() 用 sed 洗掉 'GSTACK_INSTRUCTION' 与行首 'SESSION_ID:'；SKILL.md 侧另有 SESSION_ID 匹配与『未终止块按到输出末尾截断』规则。双方互相印证。"
      },
      {
        "item": "遥测默认关闭 + 收据台账",
        "status": "ok",
        "detail": "README 'Privacy & Telemetry'：'Default is off.'；bin/gstack-config 的 telemetry 默认分支输出 'off'；lib/egress-receipt.ts 注释写明台账路径 ~/.gstack/security/egress.jsonl（0600）。三者一致。"
      },
      {
        "item": "egress 台账的局限性（第一遍若写成『阻断』则错）",
        "status": "discrepancy",
        "detail": "bin/gstack-egress 头注释自述：'it is not an exfiltration control… It does NOT detect tail-truncation, whole-file re-fabrication, or deletion of the ledger'——即台账是取证工具、同机同用户可绕过。第一遍若只引 README 的 'tamper-evident' 会高估其防护力，已在 security.reason 与 internal_assets 中如实修正。"
      },
      {
        "item": "版本双轨",
        "status": "discrepancy",
        "detail": "根 SKILL.md frontmatter 'version: 1.2.0'（本轮 pin 内容）与仓库根 VERSION '1.87.0.0' 不一致；setup 脚本用 VERSION 做迁移/升级比较，而 skill 元数据用 1.2.0，两套口径需使用者自行辨识（页面若展示版本号应注明取自何处）。"
      },
      {
        "item": "浏览器默认走真实登录态（Aside）",
        "status": "ok",
        "detail": "SKILL.md 路由段第 1 条与 README 安装段均写明：浏览器 skill 先用 Aside（'the user's real browser with their real logged-in sessions'），不可用才用自带浏览器；/setup-browser-cookies 负责 cookie 导入（属 fallback 路径）。"
      },
      {
        "item": "仓库内确实存在硬编码的遥测后端地址与 publishable key",
        "status": "ok",
        "detail": "supabase/config.sh 给出 GSTACK_SUPABASE_URL 与 GSTACK_SUPABASE_ANON_KEY（sb_publishable_…）；README 解释这是公开的 publishable key，配合 RLS 与 edge function 校验（supabase/migrations/、functions/、verify-rls.sh 均在仓库内可查）。"
      },
      {
        "item": "npm 依赖与工具链（第一遍印象需证据）",
        "status": "ok",
        "detail": "package.json dependencies 12 项，含 playwright ^1.62.1、@anthropic-ai/sdk ^0.78.0、@anthropic-ai/claude-agent-sdk 0.2.117、@ngrok/ngrok ^1.7.0、@huggingface/transformers ^4.2.0、html-to-docx 1.8.0、marked ^18.0.11、xterm ^5.3.0、socks ^2.8.9、diff ^9.0.0、cross-spawn ^7.0.6；SKILL.md 路由条目与之一致（/make-pdf 需 html-to-docx、/qa 需 playwright）。"
      },
      {
        "item": "元数据（commit/license/stars/last_push）",
        "status": "ok",
        "detail": "本地 git HEAD = 4a3c6a8a3cad82cfffdaa4d152e1c5ae5c4af659（= 任务书 pin 4a3c6a8a3cad）；LICENSE MIT / Copyright (c) 2026 Garry Tan；gh api → stargazers 133147、pushed_at 2026-09-14T22:14:58Z、license MIT。"
      },
      {
        "item": "功能声明 vs 实际内容（夸大检查）",
        "status": "ok",
        "detail": "description 只声明『路由』，正文确实以路由表为主体；未声明自身具备 QA/评审能力（那些归子 skill）。README 的营销性数字（810×、1,237 contributions）属项目叙事、非 skill 能力声明，本报告未采信为能力证据。"
      }
    ],
    "level": 2,
    "level_label": "V2 已复核",
    "commit": "4a3c6a8a3cad82cfffdaa4d152e1c5ae5c4af659",
    "sha256": "3182a9003962c518c0af0c322e182dad668c7c848800977feacffa6b23ec728e",
    "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/gstack.tar.gz",
    "sha256": "3182a9003962c518c0af0c322e182dad668c7c848800977feacffa6b23ec728e",
    "commit": "4a3c6a8a3cad82cfffdaa4d152e1c5ae5c4af659"
  },
  "original": {
    "github": "https://github.com/garrytan/gstack",
    "path": "",
    "commit": "4a3c6a8a3cad82cfffdaa4d152e1c5ae5c4af659"
  }
}