mcpField
L
ln-005-environment-scanner

ln-005-environment-scanner

github.com/levnikolaevichAgent 工作流58457 次安装2 天前更新
代码仓库

关于 ln-005-environment-scanner

这款独立技能检查 Codex 和 Gemini CLI 是否可用,并将结果写入 `docs/environment_state.json`。它还会检查钩子配置,并在重新扫描时保留用户设置的禁用标记和自定义字段。

主要功能

  1. 01探测 Codex 和 Gemini CLI 的可用性
  2. 02将结果写入 JSON 状态文件
  3. 03检查钩子配置及依赖项
  4. 04保留禁用标记和自定义字段
  5. 05单项探测失败时继续处理

适用场景

  1. 01首次设置时创建环境状态文件
  2. 02安装变更后刷新 Agent 可用性
  3. 03检查钩子脚本和依赖项
  4. 04在后续技能检查中跳过已禁用的 Agent

MCP 相关

该技能不探测 MCP 工具,也不提供 MCP 服务;它扫描命令行 Agent 和钩子配置。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-005-environment-scanner

安装后在 Claude Code 中输入/ln-005-environment-scanner确认已加载。

附带文件references/environment_state_schema.json

详细介绍

路径: 文件路径(shared/、references/、../ln-*)相对于 skills 仓库根目录。如果在当前工作目录中找不到,请定位此 SKILL.md 所在目录,并向上一级找到仓库根目录。

环境扫描器(独立实用工具)

类型: 独立实用工具 类别: 0XX 共享

探测 CLI Agent(Codex、Gemini)并写入 docs/environment_state.json。技能会读取此文件,在实时探测 Agent 前检查 disabled 标志。


何时使用此技能

  • 首次设置项目(尚无 docs/environment_state.json)
  • 安装或移除 CLI Agent(Codex、Gemini)后
  • 运行 ln-004-agent-config-sync 后(同步可能会改变 Agent 的可用性)
  • 技能报告 Agent 意外不可用时

输出文件

docs/environment_state.json — 根据 references/environment_state_schema.json 验证。

{
  "$schema": "environment_state_v1",
  "scanned_at": "2026-03-08T14:30:00Z",
  "agents": {
    "codex": { "available": true, "version": "0.1.2503" },
    "gemini": { "available": false, "detail": "Command not found in PATH" }
  }
}
用户覆盖设置

用户可以在任意 Agent 条目中添加 "disabled": true,以选择停用,同时保留检测状态:

"codex": { "available": true, "disabled": true, "version": "0.1.2503" }

扫描器重新扫描时会保留 disabled 字段——它会覆盖 available、detail、version,但绝不会修改 disabled。

技能如何使用此设置: 运行 --health-check 前,技能会读取此文件。如果 disabled: true → 立即跳过该 Agent(不进行探测)。如果 disabled: false 或不存在 → 执行实时健康检查。


工作流

Probe Agents → Write JSON → Summary
阶段 1:探测 CLI Agent

单次调用 agent_runner.mjs --health-check 即可探测所有已注册的 Agent:

node shared/agents/agent_runner.mjs --health-check

路径解析: shared/agents/agent_runner.mjs 相对于 skills 仓库根目录。通过此 SKILL.md 所在目录 → 父目录定位。

解析输出(包含各 Agent 状态的 JSON):

Agent注册表键状态字段
Codexcodex(检查 codex --version)available、version(版本输出的首行)
Geminigemini(检查 gemini --version)available、version(版本输出的首行)

如果找不到 agent_runner.mjs 或运行出错: 将两个 Agent 的 available 都设为 false,detail 设为 "agent_runner.mjs not available"。

阶段 1.5:Hook 健康检查

必须阅读: 加载 shared/references/hook_health_check.md

验证 hooks 配置:JSON 语法、脚本是否存在、依赖是否可用。将结果追加到 docs/environment_state.json 的 hooks 键下:

"hooks": {
  "status": "ok",
  "events": 3,
  "scripts_found": "3/3",
  "dependencies": { "node": "22.0.0" }
}

如果找不到 hooks.json:"hooks": { "status": "not_configured" }。

阶段 2:写入 JSON
  1. 读取现有状态(如果 docs/environment_state.json 存在):
    • 保留现有条目中的 disabled 字段
    • 保留任何用户添加的自定义字段
  2. 构建新状态:
    • $schema:"environment_state_v1"
    • scanned_at:当前 ISO 8601 时间戳
    • agents:将探测结果(新的 available/detail/version)与保留的 disabled 标志合并
  3. 确保 docs/ 目录存在(若不存在则创建)
  4. 写入 docs/environment_state.json,使用 2 个空格缩进
  5. 验证写入的文件是否符合 references/environment_state_schema.json 结构(检查键是否存在)
阶段 3:汇总报告

以表格形式显示结果:

Environment Scan Complete:
| Agent  | Status      | Detail                    |
|--------|-------------|---------------------------|
| Codex  | available   | 0.1.2503                  |
| Gemini | unavailable | Command not found in PATH |

State written to: docs/environment_state.json

如果任何 Agent 的 disabled: true,则将状态显示为 disabled(而不是可用/不可用)。


关键规则

  1. 探测所有 Agent。 此技能始终探测所有 Agent,不受现有状态影响。这是完整重新扫描。
  2. 保留 disabled。 绝不覆盖用户的 disabled: true 标志。检测状态会更新,用户偏好保持不变。
  3. 无副作用。 此技能只写入 docs/environment_state.json。不修改其他文件。
  4. 优雅失败。 每次探测相互独立。一次失败 = 一条 available: false 记录,扫描继续。
  5. 无 TTL。 状态文件不会过期。只有运行此技能时才会刷新。

反模式

不要应该
跳过对“已知”Agent 的探测始终探测所有 Agent——这是一次完整扫描
重新扫描时删除 disabled 标记合并:覆盖检测字段,保留 disabled
重试失败的探测每个 Agent 仅尝试一次。失败时设置 available: false
探测 MCP 工具或平台仅探测 CLI Agent(Codex、Gemini)。MCP 工具在其他位置配置
添加 TTL 或缓存过期逻辑状态仅支持手动刷新

完成定义

  • 已探测两个 Agent(Codex、Gemini)
  • 已完成钩子健康检查(hooks.json、脚本、依赖项)
  • 已写入结构有效的 docs/environment_state.json(包含 agents 和 hooks)
  • 重新扫描时保留现有的 disabled 标记
  • 已向用户显示汇总表

版本: 2.0.0 最后更新: 2026-03-08

评论

支持 Markdown