{
  "markdown": "# Yak Skills\n\n<p align=\"right\">中文 | <a href=\"./README_EN.md\">English</a></p>\n\n<p align=\"center\">\n    <img src=\"./assets/readme-hero-banner.jpg\" alt=\"Yak Skills Hero Banner\" width=\"100%\" />\n</p>\n\n> 面向 AI Agent 的 Yaklang 编程与 Yak 热加载知识库。一个总入口 + 多个专题，每个 skill 都配可一键自测的 `.yak` 示例，并提供命令行验证器与端到端证据。\n\nYak Skills 模仿目录式 SKILL 知识库范式，围绕 Yak 公众号文章（`yak-project-public`）与 [yaklang.github.io](https://yaklang.com) 官方文档，把 Yaklang 编程与 Yak 热加载的核心机制蒸馏成可被 AI Agent 直接加载、可被人直接运行的技能库。\n\n## 在线浏览\n\n静态站点：[skills.yaklang.io](https://skills.yaklang.io)（由 GitHub Pages 自动构建部署，默认中文，可切换英文）。\n- 按分类 / 层级 / 自由文本检索\n- 支持 `category:hotpatch`、`tier:master` 等过滤语法\n- 每张卡片可一键复制安装命令、跳转 GitHub 源码\n\n## 三层热加载体系（核心）\n\n热加载（Hot Patch）允许在 **不中断服务** 的情况下，用 Yaklang 代码动态接管 HTTP 流量的处理阶段。它分三层，执行顺序自上而下：`全局 -> 模块（MITM / Web Fuzzer）`。\n\n```\n全局热加载 (Global Hot Patch)   ← MITM 与所有 Fuzzer 共享, 同时只启用 1 个, 先执行\n        │\n        ▼\n模块热加载\n   ├── MITM 热加载        代理侧: 劫持 / 镜像 / 入库 / mock\n   └── Web Fuzzer 热加载  单 Tab: 加解密 / 签名 / 重试 / fuzztag\n        │\n        ▼\n   出站 / 回显 / 入库\n```\n\n## 技能目录\n\n| Skill | 层级 | 说明 |\n|---|---|---|\n| [`yak`](skills/yak/SKILL.md) | 总入口 | 三层热加载路由、YAK_MAIN 调试约定、测试方法 |\n| [`yakit-basic`](skills/yakit-basic/SKILL.md) | 专题 | Yakit 架构概览、三种界面模式、核心功能区路由表、引擎连接与项目切换、新手快速上手 |\n| [`yakit-ui-binding`](skills/yakit-ui-binding/SKILL.md) | 专题 | yakit.* 库函数与 UI 交互机制：gRPC ExecResult 流链路、日志/进度条/表格/图表/卡片/网站树输出 API |\n| [`mitm-hotpatch`](skills/mitm-hotpatch/SKILL.md) | 专题 | MITM 六类 Hook：hijackHTTPRequest / hijackHTTPResponseEx / mirror* / hijackSaveHTTPFlow / mockHTTPRequest |\n| [`webfuzzer-hotpatch`](skills/webfuzzer-hotpatch/SKILL.md) | 专题 | beforeRequest / afterRequest / retryHandler / customFailureChecker / mirrorHTTPFlow / fuzztag；前端加密对抗组合配方（AES-CBC / 加密+验签 / RSA+AES-GCM 混合）让用户看到明文 |\n| [`global-hotpatch`](skills/global-hotpatch/SKILL.md) | 专题 | 全站透明加解密、动态 challenge 签名、统一认证、全站染色 |\n| [`yaklang-syntax`](skills/yaklang-syntax/SKILL.md) | 专题 | 变量 / 控制流 / 函数 / 闭包 / f-string / 错误处理 `~` |\n| [`yaklang-database`](skills/yaklang-database/SKILL.md) | 专题 | SQLite / 键值存储 / Payload 字典 / 项目配置 |\n| [`yakit-data-extract-plugin`](skills/yakit-data-extract-plugin/SKILL.md) | 专题 | 按 domain 捞 History、URI 去重、提取登录 Cookie、字典驱动发包扫描 |\n| [`yakit-native-plugin`](skills/yakit-native-plugin/SKILL.md) | 专题 | yak/mitm 原生插件 + cli 参数表单；mitm 被动扫描、mitm+cli 交互式加载外部参数 |\n| [`yakit-rightclick-plugin`](skills/yakit-rightclick-plugin/SKILL.md) | 专题 | codec 右键插件 handle 契约；History 右键 flow id 反查提取(进度条)、codec+cli 选提取项、Web Fuzzer 选区变换 |\n| [`yaklang-toolchain`](skills/yaklang-toolchain/SKILL.md) | 专题 | go run 工作流、4 个验证命令、用仓库调试 MITM、如何验证你写的插件 |\n\n每个专题目录下都有若干 `example-*.yak`，均可独立运行自测。\n\n## 安装\n\n### 整包安装（推荐）\n\n```bash\nnpx skills add yaklang/yak-skills\n```\n\n### 单个专题\n\n```bash\nnpx skills add yaklang/yak-skills/mitm-hotpatch\n```\n\n### curl 拉取单个 SKILL.md\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/yaklang/yak-skills/main/skills/yak/SKILL.md\n```\n\n## YAK_MAIN 调试约定（重要）\n\n所有热加载脚本统一结构——注册 hook 函数 + `if YAK_MAIN { runSelfTest() }` 守卫本地自测：\n\n```yak\n// 1) 注册 hook (yakit 加载时只做这件事)\nhijackHTTPRequest = func(isHttps, url, req, forward, drop) {\n    forward(req)\n}\n\n// 2) 本地自测 (命令行运行时才跑)\nfunc runSelfTest() {\n    // mock 数据 + 自定义 callback + assert\n}\n\nif YAK_MAIN {\n    runSelfTest()\n}\n```\n\n`YAK_MAIN` 是 yaklang 引擎注入的全局布尔：\n\n- 命令行 `yak xxx.yak` 运行：`YAK_MAIN = true` → 跑自测。\n- yakit 热加载窗口加载：`YAK_MAIN = false` → 只注册 hook。\n\n所以含自测块的完整脚本可以 **安全地** 粘贴回 yakit——yakit 不会执行你的 mock 数据。这就是\"命令行一键自测 → 粘回 yakit 使用\"的安全闭环。\n\n## 如何验证你写的插件\n\n除了 `YAK_MAIN` 自测，本库在 yaklang 引擎里提供了四个验证命令，用 **与 Yakit UI 同款的 gRPC 执行路径** 把脚本跑在真实请求/响应上、打印改写证据。详见 [yaklang-toolchain](skills/yaklang-toolchain/SKILL.md)。\n\n| 命令 | 验证对象 |\n|---|---|\n| `yak hotpatch-mitm --script x.yak --request req.txt [--response rsp.txt] [--https] [--url URL]` | MITM 热加载 |\n| `yak hotpatch-global --script x.yak --request req.txt [--response rsp.txt]` | 全局热加载（beforeRequest/afterRequest + 劫持 + 入库） |\n| `yak hotpatch-webfuzzer --script x.yak --request req.txt [--response rsp.txt] [--fuzztag TAG]` | Web Fuzzer 热加载 |\n| `yak codec-plugin --script x.yak --input STRING` | 右键 codec 插件（handle） |\n\n示例：\n\n```bash\nprintf 'POST /api/order/create HTTP/1.1\\r\\nHost: shop.example.com\\r\\nContent-Type: application/json\\r\\n\\r\\n{\"amount\":100}' > /tmp/req.txt\nyak hotpatch-mitm --script skills/mitm-hotpatch/examples/hijack-request.yak --request /tmp/req.txt\n# 输出会打印原始请求 / 改写后请求 / drop 状态 / 入库 tag 作为证据\n\nyak codec-plugin --script skills/yaklang-toolchain/examples/codec-rot13.yak --input \"Hello, Yak!\"\n# -> output (len=11): Uryyb, Lnx!\n```\n\n命令实现位于 `yaklang/common/yak/cmd/yakcmds/hotpatch.go`，并配有 Go 单元测试 `hotpatch_test.go`\n（`go test ./common/yak/cmd/yakcmds/ -run 'HotPatch|Codec'`）。\n\n## 本地运行与验证\n\n```bash\n# 用 yaklang 源码引擎 (推荐, 拿到最新能力)\ncd /path/to/yaklang\ngo run common/yak/cmd/yak.go /path/to/yak-skills/skills/mitm-hotpatch/examples/hijack-request.yak\n\n# 或用已安装引擎\nyak skills/mitm-hotpatch/examples/hijack-request.yak\n```\n\n合格标准：10 秒内完成、所有 `assert` 通过、`log` 全英文、末尾出现 `... self test passed`。\n\n### 批量证据化验证\n\n```bash\n# 遍历所有 example-*.yak 自测 + 跑 4 个验证命令, 证据落地 scripts/evidence/\ncd yak-skills\nYAK_BIN=/path/to/yak yak scripts/validate-skills.yak\n\n# 真实 MITM 链路演示 (mitm 模块起代理 + 本地靶站), 证据落地 scripts/evidence/live/\nyak scripts/mitm-live-demo.yak\n```\n\n## 构建索引\n\n```bash\ngo run common/yak/cmd/yak.go scripts/build-skills-index.yak \\\n  --project-root /path/to/yak-skills --strict\n```\n\n会扫描 `skills/*/SKILL.md`，结合 `site/data/categories.yaml` 生成 `site/data/skills.json`，并做回环校验。新增 skill 目录后必须在 `categories.yaml` 登记，否则 `--strict` 会报错。\n\n## 知识来源\n\n- Yak 公众号文章合集 `yak-project-public`（最核心的实战指导）\n- [yaklang.github.io](https://yaklang.com) 官方文档\n- yaklang 引擎源码（Hook 签名以源码为准）：\n  - MITM：`common/yak/hook_mixed_plugin_caller.go`\n  - Web Fuzzer：`common/yak/script_engine_for_fuzz.go`\n  - YAK_MAIN：`common/yak/script_engine.go`\n\n## 规范\n\n- 注释可用中文；`log` 输出、字符串、payload 全部英文。\n- 错误处理优先用 `~`；关键结果用 `assert` 验证。\n- 关键代码位置加 `// 关键词: ...` 注释，便于 grep 与 AI 检索。\n- 不使用 emoji。\n\n## 深入学习：更复杂的 Yak 代码与详细案例\n\n本库聚焦\"热加载 / 工具链\"这条主线，做的是可被 Agent 直接加载的精炼技能。当你需要 **更复杂的 Yak 代码写法、更系统的标准库用法、更详细的实战案例** 时，请配合姊妹仓库 [`yaklang/yaklang-ai-training-materials`](https://github.com/yaklang/yaklang-ai-training-materials) 一起使用——本库的 SKILL 与下列目录互相引用、互为补充：\n\n| 你想要的 | 去训练素材仓库的这里 | 说明 |\n|---|---|---|\n| 100+ 标准库的实战写法 | [`library-usage/`](https://github.com/yaklang/yaklang-ai-training-materials/tree/main/library-usage) | `codec` / `http` / `poc` / `fuzz` / `db` / `crawler` / `ssa` / `ai` 等每个库一个目录，含 `*-practice.yak` 可直接运行 |\n| Yaklang 语法从零到进阶 | [`basic-syntax/`](https://github.com/yaklang/yaklang-ai-training-materials/tree/main/basic-syntax) | 变量、闭包、f-string、错误处理 `~`、面向对象等系统化语法案例 |\n| 完整的渗透/安全实战脚本 | [`practice/`](https://github.com/yaklang/yaklang-ai-training-materials/tree/main/practice) · [`awesome-scripts/`](https://github.com/yaklang/yaklang-ai-training-materials/tree/main/awesome-scripts) | 端到端的复杂脚本，演示如何把多个库组合成真实工具 |\n| 热加载/前端加密的深度文章 | [`yak-project-public/`](https://github.com/yaklang/yaklang-ai-training-materials/tree/main/yak-project-public) | Yak 公众号原文（含截图），本库组合配方的灵感与依据来源 |\n\n> 建议路径：先用本库的 SKILL 建立心智模型与可运行骨架 → 再到 `library-usage/` / `practice/` 找对应库的更复杂写法补全细节。\n\n## 相关项目（姊妹站）\n\n| 项目 | 在线站点 | 定位 |\n|---|---|---|\n| **Yak Skills**（本库） | [skills.yaklang.io](https://skills.yaklang.io) | Yaklang 编程 + Yak 热加载技能库 |\n| **HackSkills** | [skills.hackbenchmark.com](https://skills.hackbenchmark.com) · [yaklang/hack-skills](https://github.com/yaklang/hack-skills) | 面向 Agent 的渗透/安全攻防技能库（Web/API/认证/提权/逆向/密码学等） |\n| **训练素材** | [yaklang/yaklang-ai-training-materials](https://github.com/yaklang/yaklang-ai-training-materials) | 更复杂的 Yak 代码、标准库实战、详细案例 |\n\n## License\n\n[MIT](LICENSE)",
  "bytes": 7537,
  "sha": "2ed6ed4a5ce0635f0a776b93eba3647498474bbdb24cb9a4e679d3085c9e035f",
  "repo_slug": "yaklang/yak-skills",
  "fonte": "repo",
  "truncated": false,
  "api": "https://api.agentalog.com/api/listings/skl_yaklang_yak_skills_yaklang_syntax_a724ecc4/readme"
}