mcpField
C
craft-anything

craft-anything

github.com/storytold开发20.4k50 次安装今天更新
代码仓库

关于 craft-anything

Craft Anything 是用于调查已构建软件产物的证据优先技能,涵盖可执行文件、应用、库和捕获数据。它通过记录假设、证据支持的发现与交接来组织分析,并区分观察和推断。

主要功能

  1. 01调查已发布的软件产物
  2. 02记录问题简报、计划和交接
  3. 03跟踪假设与证据支持的发现
  4. 04区分观察、推导和推断
  5. 05支持按格式启用工具集

适用场景

  1. 01调查可执行文件或库
  2. 02分析应用包或 APK
  3. 03比较应用的两个版本
  4. 04检查崩溃转储或网络捕获

安装

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

$npx skills add https://github.com/storytold/craft-anything --skill craft-anything

安装后在 Claude Code 中输入/craft-anything确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

clients.rs
config.rs
doctor.rs
lib.rs
plan.rs
skill_recovery.md
skill.rs
tests.rs
tools.rs
yaml.rs

详细介绍

Craft Anything:以证据为先的调查

当答案取决于某个已构建并发布的产物时,使用 Craft Anything:例如可执行文件、库、应用包、APK、Electron 应用、WebAssembly 模块、固件、崩溃转储或网络捕获。如果你有源代码,而且问题与源代码有关,直接阅读源代码;这样更快、更直接。

仅在需要时连接

  • 如果你的工具列表中已经有 craft-anything 工具,直接开始工作。不要先运行设置或诊断。
  • 相信实时工具列表及其架构,而不是此文件;服务端的版本可能较新或较旧。
  • 如果缺少工具或工具无法启动,请运行 craft-anything-cli doctor,然后运行 craft-anything-cli setup --dry-run,并在应用任何更改前向用户展示计划。设置成功后,用户必须重启或重新连接其应用。
  • 初始列表只包含少量核心工具。调用 list_toolsets 查看其他工具集,并调用 enable_toolset 启用其中一个(原生代码、Android、Apple、Web、运行时等)。
  • 在 Clean room(默认关闭 Deep 模式)下,不会读取目标内部的任何内容:只会列出可从外部工作的工具,其他工具会因 details.reason 为 clean_room 而被拒绝。请告知用户此问题需要 Deep 模式(应用中的开关、settings_set deep_mode true,或以 --deep 启动服务端),而不是设法绕过限制。

工作记忆:保持最新

长期调查往往超出单个上下文窗口。项目会保存简报、计划、假设、发现和交接说明;每次都要使用它们。

  1. 开始或继续。 先调用 core_investigation_show。如果有交接说明,就从交接说明和计划继续,而不是从头开始。还要调用 core_session_show 查看当前打开的内容。
  2. 有新问题? 进行任何分析调用之前,先用 core_brief_write 编写简报(问题、提出问题的原因、目标、诸如“不要运行程序”的限制,以及完成后的答案应是什么样),再用 core_plan_update 编写初始计划(简短的编号步骤,每步标记为 todo/doing/done/blocked,并说明原因)。
  3. 每批工具调用之后: 更新计划步骤的状态。形成值得验证的主张时,用 core_hypothesis_record 记录假设及其预测的验证或证伪结果。获得证据后,用 core_hypothesis_update 更新状态(supported、refuted、abandoned),并附上证据 ID。
  4. 结论确定时: 用 core_finding_record 记录结论,并附上至少一个证据 ID。报告以发现为依据编写,而不是以聊天文本为依据。
  5. 每轮结束时: 调用 core_handoff_write,说明当前进展、接下来要做什么,以及需要避免的陷阱(无效路径、耗时工具、误导性字符串)。写得要让不熟悉情况的人也能接手。
  6. 需要了解之前已经尝试过什么时,core_journal_read 会显示每一次先前的工具调用和模型轮次。

方法

  • 观察、推导、推断,并注明属于哪一类。 观察事实直接来自字节数据或采集结果。推导事实根据观察结果计算得出(例如控制流图、调用图)。推断则属于判断(例如名称、意图、对模型的解读)。请为每条结论标注类别。
  • 为每条结论引用证据 ID(ev_…)。没有证据 ID 的结论属于假设。
  • 缺失不代表证明。“未找到字符串”或“未找到调用方”只涵盖实际搜索过的范围。请说明搜索边界和工具报告的覆盖范围,并为任何重要但尚未确定的事项记录一条未知项(core_unknown_add)。
  • 先预测,再验证。 在运行工具检验假设之前,先写下预期会看到什么。如果结果不符,请更新假设,而不是找借口解释结果。
  • 先看摘要,再翻页。 大型结果会以摘要和证据 ID 的形式返回。请按需请求页面(offset/limit)或具体条目,而不是一次性获取全部内容。不要重复已经成功或被拒绝的相同调用。
  • 依据格式判断,而非文件名。 让解析器判断文件类型。

按目标类型选择起点

目标第一步
原生可执行文件或库(ELF、PE、Mach-O)调用 core_target_open,然后使用概览、搜索和函数工具
Electron 应用、.asar 或 JavaScript 包对应用或归档调用 core_target_open,然后使用 JavaScript 工具集
Android APK / DEX调用 core_target_open,然后使用 Android 工具集
.NET 程序集调用 core_target_open,然后使用托管代码工具集
WebAssembly、Go、PE 资源、固件、崩溃转储使用格式工具集
实时网页或 Electron 窗口使用浏览器工具集(仅观察)
同一应用的两个版本同时打开两者,然后使用应用工具集中的比较工具

如果用户只说“我的应用”而未说明具体是哪一个,请询问。切勿用示例文件猜测。

同意与安全

  • 运行目标代码或更改已连接设备的工具,需要用户明确同意。如果调用返回 consent_required,请说明该操作会做什么并征求同意;切勿设法绕过。
  • 静态分析不会运行目标。仅凭静态证据,不要声称目标具有某种运行时行为;请说明这是推断。
  • 切勿在笔记、发现或交接内容中写入机密、Cookie 或个人数据。

出错时

错误代码处理方法
not_found先打开目标(core_target_open),或检查路径或名称
feature_missing / engine_missing阅读解决方法说明;其中会列出所需的工具集、引擎或设置
over_limit结果过大,无法发送;请分页查看,或通过证据 ID(evidence://<id> 资源)读取
stale_revision使用 core_investigation_show 重新读取,合并后重试
consent_required征求用户同意

结束前:将计划中的每个步骤标记为已完成或受阻,确保回答中的每条结论都与已记录的发现一致,列出尚未确定的事项,并撰写交接内容。

评论

支持 Markdown