{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "shader-glsl",
  "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: (SKILL.md instruction) npx playwright screenshot --wait-for-timeout=600 \"file://$PWD/"
    },
    {
      "file": "网络端点",
      "summary": "External network access declaration: The skill directory contains no network-calling code; runtime network surface only stems from fetching tools via `npx playwright` (npm registry + Chromium binary download)"
    },
    {
      "file": "本地工作目录",
      "summary": "File I/O and artifact output: Core deliverable: single shader.html (created by agent per output contract)"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查：① 文件清单核对，确认 skill 目录内无脚本/无着色器资产；② token 扫描（URL / fetch / process.env / child_process / writeFile / API_KEY|TOKEN|SECRET / sandbox|bypass|no-verify）逐条回源；③ 反向验证「能力声明 vs 代码能力」：每个声称的原语（cosine palette、hash/noise、fbm、SDF、domain warp、三种转场、ShaderMaterial、harness）是否都能在文件内找到可编译片段；④ 与同仓另两个 skill 交叉比对，确认同型证据的档位一致（三者同为 blue）。",
    "second_pass": [
      {
        "item": "「skill 目录内无脚本」是否成立（蓝档的关键前提）",
        "status": "ok",
        "detail": "文件清单实证：skills/shader-glsl/ 下只有 SKILL.md、README.md(0 B)、references/glsl-cookbook.md。SKILL.md 引用的 `scripts/seek-shot.sh` 属仓库根资产，已在 reason/risks 记录为「单装 skill 目录会悬空」。"
      },
      {
        "item": "凭证/环境变量读取是否存在",
        "status": "ok",
        "detail": "本仓（webgl-animation-skills）全仓 `process.env|API_KEY|TOKEN|SECRET|Authorization` 零命中；本 skill 的 credential_reads 为空成立。"
      },
      {
        "item": "是否有更高的触发条件被漏掉（红档特征）",
        "status": "ok",
        "detail": "`sandbox|automationcontrolled|no-verify|stealth|bypass|ignoreHTTPSErrors|dangerously` 全仓零命中；无任意代码执行面（交付物是浏览器沙箱内的 GLSL/JS）。"
      },
      {
        "item": "「shader 是 uniform 的纯函数 → ?t=N 可复现」是否与 harness 代码相符",
        "status": "ok",
        "detail": "harness 段在 `?t=N` 分支直接 `frame(parseFloat(t))`（同时把 u_progress 钉到 N），非冻结分支才用 clock + setAnimationLoop；与「只有一个时钟来源」的声明一致，无夸大。"
      },
      {
        "item": "GLSL ES 限制类声明是否确实写在文档内（非推测）",
        "status": "ok",
        "detail": "原文 'Loops must have **constant bounds** in GLSL ES — no dynamic loop counts. Keep fbm octaves ≤ 5–6.'；移动端精度段（mediump/highp、pixelRatio 上限、低分辨率 RT 上采样）亦可逐条定位。"
      },
      {
        "item": "reference 内容与 SKILL.md 描述是否一致",
        "status": "ok",
        "detail": "glsl-cookbook.md 开篇 'Complete, copy-pasteable GLSL for noise, SDFs, palettes, domain warping, transitions, and Three.js wiring.'，随后逐节给出 IQ 调色板、hash21/hash22/valueNoise、SDF 与 domain warping 实现，与 SKILL.md 末尾能力清单对得上。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "50697d659fbf70152f48f9f8aadf1efe78bbdde1",
    "sha256": "b6013fd669696c7fbba2d0592fd7be128887d4587dff2db507ab5d47ac1fe317",
    "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-28/shader-glsl.tar.gz",
    "sha256": "b6013fd669696c7fbba2d0592fd7be128887d4587dff2db507ab5d47ac1fe317",
    "commit": "50697d659fbf70152f48f9f8aadf1efe78bbdde1"
  },
  "original": {
    "github": "https://github.com/iart-ai/webgl-animation-skills/tree/main/skills/shader-glsl",
    "path": "skills/shader-glsl",
    "commit": "50697d659fbf70152f48f9f8aadf1efe78bbdde1"
  }
}