{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "setup-pstack",
  "built": "2026-10-26",
  "control_level": 2,
  "control_level_label": "L2 本地",
  "capabilities": [
    "write_file"
  ],
  "required_controls": {
    "agent": [
      "restrict_working_directory"
    ],
    "admin": [
      "keep_operation_logs"
    ]
  },
  "evidence": [
    {
      "file": "本地工作目录",
      "summary": "File I/O and artifact output: ~/.cursor/rules/pstack-models.mdc (full-file overwrite, alwaysApply: true, user home directory-level persistent configuration; sole file produced"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查：① 目录清单：pstack/skills/setup-pstack 仅一个 SKILL.md（64 行），无 scripts/references/模板/数据；② 六个 token 类扫描（http(s)://、curl、wget、API_KEY、token、secret、env、shell、exec、subprocess、chmod、rm）零命中——唯一的写指令是 `~/.cursor/rules/pstack-models.mdc`；③ 反向核对「它写什么、谁读它」：grep `pstack-models.mdc` 在 pstack/ 下命中 8 处 / 5 个文件（setup-pstack、interrogate、arena、swarm 的 SKILL.md 与 docs/guide/01-setup.md），逐条读出各 skill 实际取的 role 名（interrogate reviewers / arena runners / arena cross-judge pool / swarm workers），与 setup-pstack 规则模板里的 18 行名字一一对应；④ 校验闸门核对：Step 1 的「探测集合」与 Step 4 的「必须落在探测集合内」两处独立成立，别名豁免两处都写明；⑤ 声明 vs 实现：description 称 'Detects your available models and writes an always-applied rule'，Step 1/5 分别兑现 detect 与 alwaysApply: true，无夸大；⑥ 尾步核对：SKILL.md Step 7 与 docs/guide/01-setup.md 关于 /create-verification-skill 与 .cursor/skills/verify-<app>/ 的描述一致；⑦ 本地 HEAD == origin/main == df3fb154fb982fb83f649de8646d4af6a0cb16b3。",
    "second_pass": [
      {
        "item": "「写一个 always-applied 规则」是否属实",
        "status": "ok",
        "detail": "SKILL.md Step 5 原文给出 `alwaysApply: true`，且位于规则文件 frontmatter 形状中；docs/guide/01-setup.md 复述 'It writes `~/.cursor/rules/pstack-models.mdc`, a small rule every pstack skill reads.'。"
      },
      {
        "item": "「每个真实 slug 必须已被确认可用」的双重校验",
        "status": "ok",
        "detail": "Step 1 'Never write a real slug you have not confirmed is available.' 与 Step 4 'Every real slug written must be in the detected set. `inherit-parent` and `auto` always pass. If a chosen real slug is not available, stop and ask again.' 两处独立存在，非同一句的重复表述。"
      },
      {
        "item": "本 skill 是否读取凭证或环境变量",
        "status": "ok",
        "detail": "全文无 API_KEY/token/secret/env 命中；模型可用性靠「本会话能否 spawn」这一运行时事实，不需读凭证。第一遍的 blue 档依据成立。"
      },
      {
        "item": "首遍写入的「18 行角色」计数",
        "status": "ok",
        "detail": "逐行数 Step 5 模板：feature, refactoring / bug-fix / perf-issue / hillclimb / judgment and prose / hardest tasks / how explorer / how explainer / why investigators / why synthesizer / reflect tooling / reflect judgment, divergent, synthesizer / arena runners / arena cross-judge pool / swarm workers / architect runners / interrogate reviewers = 17 行（另有 2 行注释说明）。首遍写「18 行」为计数偏差，实际 17 行；已在此更正，不影响其他结论。"
      },
      {
        "item": "「配置即扇出规模」的说法",
        "status": "ok",
        "detail": "SKILL.md Step 3 明写面板角色（arena runners、architect runners、interrogate reviewers）'the value is a list, and one subagent runs per entry, alias entries included, so the list length sets the count'；interrogate 的 SKILL.md 亦复述同一语义（'one reviewer per entry, extending or shrinking the Reviewer A/B/C/D labels'），两端一致。"
      },
      {
        "item": "尾步是否可能未经同意就动手",
        "status": "ok",
        "detail": "原文 'offer once ... On yes, invoke /create-verification-skill ... On no, move on without pushing'，明确单次提议 + 需 yes；docs/guide 亦写 'Say yes and it writes … Say no and setup moves on.'。"
      },
      {
        "item": "是否存在未披露的文件写入",
        "status": "ok",
        "detail": "全文写入指令只有一处（规则文件）；写规则时 'Overwrite the whole file' 明确是覆写而非追加，故不会形成多处散落写入。间接写入（.cursor/skills/verify-<app>/）发生在另一个 skill 内，已单列并标注归属。"
      },
      {
        "item": "元数据（license/stars/install）",
        "status": "ok",
        "detail": "license MIT 来自 pstack/LICENSE 与 plugin.json；stars 7799 / last_push 2026-09-15T03:14:54Z 来自 gh api repos/cursor/plugins（仓库根无 LICENSE，故 gh license 为 null）；installs=3 取自 pool.json 的 skills.sh-hot 计数，明显为低值采样，不据此下任何结论。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "df3fb154fb982fb83f649de8646d4af6a0cb16b3",
    "sha256": "21a003c19c3e95accb8b9774aecdc09fe47397f25f9a1144e7b361d3d8743772",
    "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/setup-pstack.tar.gz",
    "sha256": "21a003c19c3e95accb8b9774aecdc09fe47397f25f9a1144e7b361d3d8743772",
    "commit": "df3fb154fb982fb83f649de8646d4af6a0cb16b3"
  },
  "original": {
    "github": "https://github.com/cursor/plugins/tree/main/pstack/skills/setup-pstack",
    "path": "pstack/skills/setup-pstack",
    "commit": "df3fb154fb982fb83f649de8646d4af6a0cb16b3"
  }
}