Yak Skills

July 14, 2026 · View on GitHub

中文 | English

Yak Skills Hero Banner

面向 AI Agent 的 Yaklang 编程与 Yak 热加载知识库。一个总入口 + 多个专题,每个 skill 都配可一键自测的 .yak 示例,并提供命令行验证器与端到端证据。

Yak Skills 模仿目录式 SKILL 知识库范式,围绕 Yak 公众号文章(yak-project-public)与 yaklang.github.io 官方文档,把 Yaklang 编程与 Yak 热加载的核心机制蒸馏成可被 AI Agent 直接加载、可被人直接运行的技能库。

在线浏览

静态站点:skills.yaklang.io(由 GitHub Pages 自动构建部署,默认中文,可切换英文)。

  • 按分类 / 层级 / 自由文本检索
  • 支持 category:hotpatchtier:master 等过滤语法
  • 每张卡片可一键复制安装命令、跳转 GitHub 源码

三层热加载体系(核心)

热加载(Hot Patch)允许在 不中断服务 的情况下,用 Yaklang 代码动态接管 HTTP 流量的处理阶段。它分三层,执行顺序自上而下:全局 -> 模块(MITM / Web Fuzzer)

全局热加载 (Global Hot Patch)   ← MITM 与所有 Fuzzer 共享, 同时只启用 1 个, 先执行


模块热加载
   ├── MITM 热加载        代理侧: 劫持 / 镜像 / 入库 / mock
   └── Web Fuzzer 热加载  单 Tab: 加解密 / 签名 / 重试 / fuzztag


   出站 / 回显 / 入库

技能目录

Skill层级说明
yak总入口三层热加载路由、YAK_MAIN 调试约定、测试方法
yakit-basic专题Yakit 架构概览、三种界面模式、核心功能区路由表、引擎连接与项目切换、新手快速上手
yakit-ui-binding专题yakit.* 库函数与 UI 交互机制:gRPC ExecResult 流链路、日志/进度条/表格/图表/卡片/网站树输出 API
mitm-hotpatch专题MITM 六类 Hook:hijackHTTPRequest / hijackHTTPResponseEx / mirror* / hijackSaveHTTPFlow / mockHTTPRequest
webfuzzer-hotpatch专题beforeRequest / afterRequest / retryHandler / customFailureChecker / mirrorHTTPFlow / fuzztag;前端加密对抗组合配方(AES-CBC / 加密+验签 / RSA+AES-GCM 混合)让用户看到明文
global-hotpatch专题全站透明加解密、动态 challenge 签名、统一认证、全站染色
yaklang-syntax专题变量 / 控制流 / 函数 / 闭包 / f-string / 错误处理 ~
yaklang-database专题SQLite / 键值存储 / Payload 字典 / 项目配置
yakit-data-extract-plugin专题按 domain 捞 History、URI 去重、提取登录 Cookie、字典驱动发包扫描
yakit-native-plugin专题yak/mitm 原生插件 + cli 参数表单;mitm 被动扫描、mitm+cli 交互式加载外部参数
yakit-rightclick-plugin专题codec 右键插件 handle 契约;History 右键 flow id 反查提取(进度条)、codec+cli 选提取项、Web Fuzzer 选区变换
yaklang-toolchain专题go run 工作流、4 个验证命令、用仓库调试 MITM、如何验证你写的插件

每个专题目录下都有若干 example-*.yak,均可独立运行自测。

安装

整包安装(推荐)

npx skills add yaklang/yak-skills

单个专题

npx skills add yaklang/yak-skills/mitm-hotpatch

curl 拉取单个 SKILL.md

curl -fsSL https://raw.githubusercontent.com/yaklang/yak-skills/main/skills/yak/SKILL.md

YAK_MAIN 调试约定(重要)

所有热加载脚本统一结构——注册 hook 函数 + if YAK_MAIN { runSelfTest() } 守卫本地自测:

// 1) 注册 hook (yakit 加载时只做这件事)
hijackHTTPRequest = func(isHttps, url, req, forward, drop) {
    forward(req)
}

// 2) 本地自测 (命令行运行时才跑)
func runSelfTest() {
    // mock 数据 + 自定义 callback + assert
}

if YAK_MAIN {
    runSelfTest()
}

YAK_MAIN 是 yaklang 引擎注入的全局布尔:

  • 命令行 yak xxx.yak 运行:YAK_MAIN = true → 跑自测。
  • yakit 热加载窗口加载:YAK_MAIN = false → 只注册 hook。

所以含自测块的完整脚本可以 安全地 粘贴回 yakit——yakit 不会执行你的 mock 数据。这就是"命令行一键自测 → 粘回 yakit 使用"的安全闭环。

如何验证你写的插件

除了 YAK_MAIN 自测,本库在 yaklang 引擎里提供了四个验证命令,用 与 Yakit UI 同款的 gRPC 执行路径 把脚本跑在真实请求/响应上、打印改写证据。详见 yaklang-toolchain

命令验证对象
yak hotpatch-mitm --script x.yak --request req.txt [--response rsp.txt] [--https] [--url URL]MITM 热加载
yak hotpatch-global --script x.yak --request req.txt [--response rsp.txt]全局热加载(beforeRequest/afterRequest + 劫持 + 入库)
yak hotpatch-webfuzzer --script x.yak --request req.txt [--response rsp.txt] [--fuzztag TAG]Web Fuzzer 热加载
yak codec-plugin --script x.yak --input STRING右键 codec 插件(handle)

示例:

printf '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
yak hotpatch-mitm --script skills/mitm-hotpatch/examples/hijack-request.yak --request /tmp/req.txt
# 输出会打印原始请求 / 改写后请求 / drop 状态 / 入库 tag 作为证据

yak codec-plugin --script skills/yaklang-toolchain/examples/codec-rot13.yak --input "Hello, Yak!"
# -> output (len=11): Uryyb, Lnx!

命令实现位于 yaklang/common/yak/cmd/yakcmds/hotpatch.go,并配有 Go 单元测试 hotpatch_test.gogo test ./common/yak/cmd/yakcmds/ -run 'HotPatch|Codec')。

本地运行与验证

# 用 yaklang 源码引擎 (推荐, 拿到最新能力)
cd /path/to/yaklang
go run common/yak/cmd/yak.go /path/to/yak-skills/skills/mitm-hotpatch/examples/hijack-request.yak

# 或用已安装引擎
yak skills/mitm-hotpatch/examples/hijack-request.yak

合格标准:10 秒内完成、所有 assert 通过、log 全英文、末尾出现 ... self test passed

批量证据化验证

# 遍历所有 example-*.yak 自测 + 跑 4 个验证命令, 证据落地 scripts/evidence/
cd yak-skills
YAK_BIN=/path/to/yak yak scripts/validate-skills.yak

# 真实 MITM 链路演示 (mitm 模块起代理 + 本地靶站), 证据落地 scripts/evidence/live/
yak scripts/mitm-live-demo.yak

构建索引

go run common/yak/cmd/yak.go scripts/build-skills-index.yak \
  --project-root /path/to/yak-skills --strict

会扫描 skills/*/SKILL.md,结合 site/data/categories.yaml 生成 site/data/skills.json,并做回环校验。新增 skill 目录后必须在 categories.yaml 登记,否则 --strict 会报错。

知识来源

  • Yak 公众号文章合集 yak-project-public(最核心的实战指导)
  • yaklang.github.io 官方文档
  • yaklang 引擎源码(Hook 签名以源码为准):
    • MITM:common/yak/hook_mixed_plugin_caller.go
    • Web Fuzzer:common/yak/script_engine_for_fuzz.go
    • YAK_MAIN:common/yak/script_engine.go

规范

  • 注释可用中文;log 输出、字符串、payload 全部英文。
  • 错误处理优先用 ~;关键结果用 assert 验证。
  • 关键代码位置加 // 关键词: ... 注释,便于 grep 与 AI 检索。
  • 不使用 emoji。

深入学习:更复杂的 Yak 代码与详细案例

本库聚焦"热加载 / 工具链"这条主线,做的是可被 Agent 直接加载的精炼技能。当你需要 更复杂的 Yak 代码写法、更系统的标准库用法、更详细的实战案例 时,请配合姊妹仓库 yaklang/yaklang-ai-training-materials 一起使用——本库的 SKILL 与下列目录互相引用、互为补充:

你想要的去训练素材仓库的这里说明
100+ 标准库的实战写法library-usage/codec / http / poc / fuzz / db / crawler / ssa / ai 等每个库一个目录,含 *-practice.yak 可直接运行
Yaklang 语法从零到进阶basic-syntax/变量、闭包、f-string、错误处理 ~、面向对象等系统化语法案例
完整的渗透/安全实战脚本practice/ · awesome-scripts/端到端的复杂脚本,演示如何把多个库组合成真实工具
热加载/前端加密的深度文章yak-project-public/Yak 公众号原文(含截图),本库组合配方的灵感与依据来源

建议路径:先用本库的 SKILL 建立心智模型与可运行骨架 → 再到 library-usage/ / practice/ 找对应库的更复杂写法补全细节。

相关项目(姊妹站)

项目在线站点定位
Yak Skills(本库)skills.yaklang.ioYaklang 编程 + Yak 热加载技能库
HackSkillsskills.hackbenchmark.com · yaklang/hack-skills面向 Agent 的渗透/安全攻防技能库(Web/API/认证/提权/逆向/密码学等)
训练素材yaklang/yaklang-ai-training-materials更复杂的 Yak 代码、标准库实战、详细案例

License

MIT