yakit-native-plugin

Build Yakit native yak and mitm plugins with cli parameter forms and passive scanning hooks.

10|1|Updated Jun 16, 2026
One-click install
npx skills add https://github.com/yaklang/yak-skills --skill yakit-native-plugin-yaklang
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: yakit-native-plugin
Source: https://github.com/yaklang/yak-skills/tree/main/skills/yakit-native-plugin
Command: npx skills add https://github.com/yaklang/yak-skills --skill yakit-native-plugin-yaklang

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Writing reusable Yakit plugins requires understanding how cli.* calls become parameter forms in the Yakit execution page and how mitm-type plugins register hooks for passive scanning, which differs from inline hot-patch code and is poorly documented. ## Core Features & Use Cases - cli Parameter Form Mapping: Complete reference of cli.String/Int/Bool/Urls/Ports/StringSlice/File/LineDict and options like setRequired, setDefault, setVerboseName, setCliGroup, and setSelectOption that Yakit renders as form controls. - Native Plugin vs Hot Patch: Clarifies when to ship a saved YakScript plugin with a parameter form versus writing inline MITM/Fuzzer hot-patch code. - Three Runnable Cases: yak plugin collecting cli input, mitm plugin passively scanning responses for phone numbers, ID cards, JWTs, and AKSK keys with risk.NewRisk, and an interactive mitm+cli plugin loading keyword dictionaries and scope from parameters. - Use Case: Build a mitm plugin that scans proxied traffic for sensitive data leaks using a user-supplied keyword dictionary, then verify it locally with yak <file> self-tests guarded by YAK_MAIN. ## Quick Start Ask the AI to write a Yakit mitm native plugin that uses cli.LineDict to load a keyword dictionary and reports matches via risk.NewRisk, with a YAK_MAIN self-test.

Frequently Asked Questions about yakit-native-plugin

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a parameter form to a Yakit plugin?▼

Call cli.* functions like cli.String, cli.Urls, or cli.StringSlice at the top level of the script, and Yakit statically scans them into form controls. Add options such as cli.setRequired(true), cli.setDefault, and cli.setVerboseName, then finish with cli.check() to validate required inputs.

What is the difference between a Yakit native plugin and hot patch code?▼

Native plugins are saved YakScripts with their own execution page and cli-based parameter forms, suited for reusable team tools. Hot patches are inline code snippets inside MITM or Web Fuzzer tabs for quick traffic tweaks, with no parameter form.

How do I write a mitm plugin for passive scanning in Yakit?▼

Register a hook such as mirrorNewWebsitePathParams, which deduplicates by path and parameter structure and only reads traffic. Scan the response body with pure functions and report hits with risk.NewRisk so findings appear in Yakit's risk panel.

How does cli.StringSlice create a dropdown in Yakit?▼

Pass cli.setSelectOption("label", "value") for each choice and cli.setMultipleSelect(false) for single selection. Yakit renders these as a dropdown, and the selected value is injected back into the script at runtime.

How do I test a Yakit plugin locally before loading it?▼

Guard a runSelfTest function with if YAK_MAIN so it only runs under the yak command line, and keep core logic in pure functions for repeatable assertions. Run yak <file> and confirm all asserts pass with a self test passed message.

Why does cli.LineDict not split my comma-separated values?▼

cli.LineDict splits input strictly by line, not by comma. To support CSV-style entries, split each line yourself with str.Split(line, ",") and flatten the results, as shown in the flattenKeywords example.