Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"name": "my-plugin-marketplace",
"owner": {
"name": "JerryLinLinLin"
},
"metadata": {
"description": "Windows reverse engineering and automation for AI agents."
},
"plugins": [
{
"name": "rizin-re-toolkit",
"source": "./plugins/rizin-re-toolkit",
"description": "Default native reverse engineering and dump analysis toolkit, routing Ghidra/IDA-style workflows through portable Rizin.",
"category": "Security"
},
{
"name": "capstone-binary-patching",
"source": "./plugins/capstone-binary-patching",
"description": "Instruction-aware binary patching, diffs and rollback through a uv-managed Capstone CLI and focused workflows.",
"category": "Security"
},
{
"name": "frida-use",
"source": "./plugins/frida-use",
"description": "Debug, instrument, reverse engineer, and patch running programs with Frida, primarily on Windows.",
"category": "Security"
},
{
"name": "hyper-v-control",
"source": "./plugins/hyper-v-control",
"description": "Control Hyper-V VMs, graphical consoles, guest automation and user/kernel debugging through a native C# stdio MCP server.",
"category": "Developer Tools"
}
]
}
22 changes: 19 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ Each plugin is an independent product installed through the marketplace. Keep it

| Location | Responsibility |
| --- | --- |
| `.agents/plugins/marketplace.json` | Discovery catalog: plugin IDs, locations, and categories |
| `.agents/plugins/marketplace.json` | Canonical discovery catalog and Codex entrypoint: plugin IDs, locations, and categories |
| `.claude-plugin/marketplace.json` | Generated Claude Code discovery catalog |
| `plugins/<id>/` | Installable package: manifest, skill, user documentation, helpers, and licenses |
| `src/<Product>/` | Native application or MCP implementation; currently Hyper-V Control |
| `tests/<Product>.Tests/` | Native protocol and behavior validation |
Expand All @@ -21,7 +22,8 @@ Within Hyper-V Control, `HyperVTools*` exposes the MCP contract, `Services/` own

## Sources of truth

- Edit `plugins/<id>/plugin.json` for plugin identity, version, and interface metadata. Run `python scripts/check-marketplace.py --sync` to generate `.codex-plugin/plugin.json`; do not maintain the compatibility copy independently.
- Edit `plugins/<id>/plugin.json` for plugin identity, version, and interface metadata. Run `python scripts/check-marketplace.py --sync` to generate `.codex-plugin/plugin.json`, `.claude-plugin/plugin.json`, and the root `.claude-plugin/marketplace.json`; do not maintain these compatibility copies independently. Claude marketplace entries come from the canonical catalog and plugin descriptions; marketplace owner/description metadata lives in the checker's `claude_marketplace` function.
- Edit a plugin's portable `mcp.json` for MCP commands, using `${PLUGIN_ROOT}` for paths inside the package. The same sync command generates `.codex-plugin/mcp.json` with `${PLUGIN_ROOT}` and `.mcp.json` with `${CLAUDE_PLUGIN_ROOT}`. Point the canonical `com.openai.mcpServers` field at `./.codex-plugin/mcp.json`. Claude automatically reads the root `.mcp.json`; keeping the client files separate prevents unresolved path variables. Both clients share the same `skills/` and runtime helpers.
- Compiled downloads use the plugin's `runtime.json` for the exact artifact and hash. Rizin's independently versioned runtime and build inputs are in `bundle.lock.json`. Keep dependency versions in metadata and lockfiles.
- Hyper-V's project, CLI, and protocol versions must match its runtime pin. The plugin version can advance independently for launcher or skill updates. The repository checker rejects inconsistent runtime updates; the build verifies the executable version and hash.
- README files explain purpose, setup, and usage. Keep current version numbers, release dates, and changelogs out of them. The [download catalog](docs/guides/releases.md#release-index) is the maintained entrypoint for current releases.
Expand All @@ -45,7 +47,21 @@ python scripts/check-marketplace.py
python scripts/test-runtime-packaging.py
```

These fast checks validate the catalog, compatibility manifests, bundled skill paths, runtime pins, documentation layout/links, README policy, and runtime packaging. They do not install plugin dependencies or operate a VM.
These fast checks validate both catalogs, Codex/Claude manifests and MCP configurations, bundled skill paths, runtime pins, documentation layout/links, README policy, and runtime packaging. They do not install plugin dependencies or operate a VM.

When Claude Code is available, also run its native validator against the catalog and each plugin:

```powershell
claude plugin validate . --strict
Get-ChildItem plugins -Directory | ForEach-Object {
claude plugin validate $_.FullName --strict
if ($LASTEXITCODE -ne 0) { throw "Claude validation failed: $($_.Name)" }
}
```

To try a local skill without registering the marketplace, start `claude --plugin-dir ./plugins/rizin-re-toolkit` and invoke `/rizin-re-toolkit:rizin-re-toolkit`. Alternatively, `claude plugin marketplace add .` registers the checkout, after which the install commands in the [README](README.md#claude-code) use its local packages. See Claude's [manifest reference](https://code.claude.com/docs/en/plugins-reference) and [marketplace reference](https://code.claude.com/docs/en/plugins/marketplace-reference) for the supported fields and paths.

For MCP configuration changes, run `./scripts/test-hyperv-launcher.ps1` on Windows. It exercises both clients' commands from an isolated plugin path containing spaces with a controlled executable, without operating a VM.

The single PR workflow runs these checks for all changes. It runs Windows build/protocol/installer checks only when their inputs change. Pure documentation changes avoid native builds, newer commits cancel obsolete runs, and merging or tagging does not repeat CI. Use a manual workflow run when downloadable build artifacts are needed.

Expand Down
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,30 @@ Use them independently or together: understand a program, observe it running, ve

## Install

### Codex

```powershell
codex plugin marketplace add JerryLinLinLin/jerry-plugin-marketplace --ref main
```

Open **Jerry's Plugin Marketplace** in Codex and install the plugins you need. Follow each plugin's setup guide, then describe your task to the agent.

### Claude Code

Add the marketplace, then run the install commands for the plugins you need:

```powershell
claude plugin marketplace add JerryLinLinLin/jerry-plugin-marketplace
claude plugin install rizin-re-toolkit@my-plugin-marketplace
claude plugin install frida-use@my-plugin-marketplace
claude plugin install capstone-binary-patching@my-plugin-marketplace
claude plugin install hyper-v-control@my-plugin-marketplace
```

In Claude Code, invoke a skill as `/<plugin-id>:<skill-id>`, for example `/rizin-re-toolkit:rizin-re-toolkit`, or describe a relevant task. Follow the plugin's setup guide for its runtime dependencies. Hyper-V Control requires a Windows x64 host with Hyper-V; its MCP launcher handles runtime setup on first start.

For local validation and development, see the [contribution guide](CONTRIBUTING.md#check-a-change).

## Releases

[Releases](https://github.com/JerryLinLinLin/jerry-plugin-marketplace/releases)
Expand Down
6 changes: 3 additions & 3 deletions docs/guides/releases.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Runtime releases

Install plugins through **Jerry's Plugin Marketplace** in Codex. The marketplace distributes their manifests, skills, launchers, and setup helpers. GitHub Releases distribute native runtimes and their supporting notices, checksums, and build metadata. Do not publish plugin ZIPs or standalone skill files.
Install plugins through **Jerry's Plugin Marketplace** in Codex or Claude Code using the [installation guide](../../README.md#install). The marketplace distributes their manifests, skills, launchers, and setup helpers. GitHub Releases distribute native runtimes and their supporting notices, checksums, and build metadata. Do not publish plugin ZIPs or standalone skill files.

This repository uses the [official marketplace installation workflow](https://developers.openai.com/plugins/build/plugins#add-a-marketplace-from-the-cli).
This repository supports the [Codex marketplace workflow](https://developers.openai.com/plugins/build/plugins#add-a-marketplace-from-the-cli) and [Claude Code marketplace workflow](https://code.claude.com/docs/en/plugin-marketplaces).

## Release index

Expand All @@ -15,7 +15,7 @@ Frida and Capstone dependencies are installed by their plugin setup workflows. T

## Versions and installation

Plugin versions live in `plugins/<id>/plugin.json`. Native runtime versions are independent: Hyper-V records its executable pin in `runtime.json`, and Rizin records its runtime/build inputs in `bundle.lock.json`. A launcher or skill update can ship through the marketplace without rebuilding an unchanged executable.
Plugin versions live in `plugins/<id>/plugin.json`. Run `python scripts/check-marketplace.py --sync` after changing them to update both clients' generated manifests. Native runtime versions are independent: Hyper-V records its executable pin in `runtime.json`, and Rizin records its runtime/build inputs in `bundle.lock.json`. A launcher or skill update can ship through the marketplace without rebuilding an unchanged executable.

Hyper-V's launcher downloads and verifies a missing runtime before starting the MCP. Rizin's skill invokes its verified runtime installer when needed. Each component uses its own versioned installation directory. Never use the repository-wide Latest release to resolve a runtime: pin an exact asset, or filter and paginate within the intended runtime stream.

Expand Down
22 changes: 22 additions & 0 deletions plugins/capstone-binary-patching/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "capstone-binary-patching",
"version": "0.1.0",
"description": "Instruction-aware binary patching, diffs and rollback through a uv-managed Capstone CLI and focused workflows.",
"author": {
"name": "JerryLinLinLin",
"url": "https://github.com/JerryLinLinLin"
},
"homepage": "https://github.com/JerryLinLinLin/jerry-plugin-marketplace",
"repository": "https://github.com/JerryLinLinLin/jerry-plugin-marketplace",
"license": "MIT",
"keywords": [
"capstone",
"binary-patching",
"binary-diff",
"keystone",
"lief",
"firmware",
"uv"
],
"skills": "./skills/"
}
4 changes: 2 additions & 2 deletions plugins/capstone-binary-patching/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ Capstone decodes instructions, LIEF interprets executable mappings, and optional

## Install and use

Install **Capstone Binary Patching** from **Jerry's Plugin Marketplace** and follow the [setup guide](skills/capstone-binary-patching/references/setup.md). Python and dependencies are managed with **uv**; no MCP server or account connection is required.
Install **Capstone Binary Patching** from **Jerry's Plugin Marketplace** in Codex or Claude Code; see the [marketplace setup](https://github.com/JerryLinLinLin/jerry-plugin-marketplace/blob/main/README.md#install). Follow the [setup guide](skills/capstone-binary-patching/references/setup.md). Python and dependencies are managed with **uv**; no MCP server or account connection is required.

Invoke `$capstone-binary-patching`, or ask your agent to inspect a proposed patch. For direct CLI use:
Invoke `$capstone-binary-patching` in Codex or `/capstone-binary-patching:capstone-binary-patching` in Claude Code, or ask your agent to inspect a proposed patch. For direct CLI use:

```powershell
$patchCli = 'C:\path\to\capstone-binary-patching\skills\capstone-binary-patching\scripts\patchkit.py'
Expand Down
23 changes: 23 additions & 0 deletions plugins/frida-use/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"name": "frida-use",
"version": "1.0.0",
"description": "Debug, instrument, reverse engineer, and patch running programs with Frida, primarily on Windows.",
"author": {
"name": "JerryLinLinLin",
"url": "https://github.com/JerryLinLinLin"
},
"homepage": "https://github.com/JerryLinLinLin/jerry-plugin-marketplace",
"repository": "https://github.com/JerryLinLinLin/jerry-plugin-marketplace",
"license": "MIT",
"keywords": [
"frida",
"debugging",
"windows",
"python",
"instrumentation",
"reverse-engineering",
"malware-analysis",
"patching"
],
"skills": "./skills/"
}
7 changes: 5 additions & 2 deletions plugins/frida-use/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Frida Use

A plugin for dynamic instrumentation, debugging, and reverse engineering with Frida, focused on Windows. Both the plugin and skill display name are **Frida Use**, and both IDs are `frida-use`. Invoke the skill as `$frida-use`, or let automatic skill selection match a relevant task.
A plugin for dynamic instrumentation, debugging, and reverse engineering with Frida, focused on Windows. Both the plugin and skill display name are **Frida Use**, and both IDs are `frida-use`. Invoke the skill as `$frida-use` in Codex or `/frida-use:frida-use` in Claude Code, or let automatic skill selection match a relevant task.

The plugin includes all documentation, artwork, and licenses from the original project, together with maintained guides and reusable scripts. Installation and use are independent of the original project directory and Git repository.

Expand All @@ -20,10 +20,13 @@ The plugin includes all documentation, artwork, and licenses from the original p

## Install and use

Install **Frida Use** from Jerry's Plugin Marketplace. Refresh an existing marketplace first:
Install **Frida Use** from Jerry's Plugin Marketplace in Codex or Claude Code; see the [marketplace setup](https://github.com/JerryLinLinLin/jerry-plugin-marketplace/blob/main/README.md#install). Refresh an existing marketplace with the command for your client:

```powershell
# Codex
codex plugin marketplace upgrade my-plugin-marketplace
# Claude Code
claude plugin marketplace update my-plugin-marketplace
```

The plugin provides a skill, Python helpers, and JavaScript examples. Install the Frida runtime in the analysis environment. No MCP server or account connection is required. An existing `frida-windows-re` installation is not renamed automatically; remove it after confirming that the new plugin works.
Expand Down
21 changes: 21 additions & 0 deletions plugins/hyper-v-control/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"name": "hyper-v-control",
"version": "0.1.2",
"description": "Control Hyper-V VMs, graphical consoles, guest automation and user/kernel debugging through a native C# stdio MCP server.",
"author": {
"name": "JerryLinLinLin",
"url": "https://github.com/JerryLinLinLin"
},
"repository": "https://github.com/JerryLinLinLin/jerry-plugin-marketplace",
"license": "MIT",
"keywords": [
"hyper-v",
"windows",
"virtual-machine",
"debugger",
"windbg",
"mcp"
],
"skills": "./skills/",
"mcpServers": "./.mcp.json"
}
16 changes: 16 additions & 0 deletions plugins/hyper-v-control/.codex-plugin/mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"mcpServers": {
"hyper-v-control": {
"command": "powershell.exe",
"args": [
"-NoLogo",
"-NoProfile",
"-NonInteractive",
"-ExecutionPolicy",
"Bypass",
"-File",
"${PLUGIN_ROOT}/scripts/start.ps1"
]
}
}
}
4 changes: 2 additions & 2 deletions plugins/hyper-v-control/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "hyper-v-control",
"version": "0.1.1",
"version": "0.1.2",
"description": "Control Hyper-V VMs, graphical consoles, guest automation and user/kernel debugging through a native C# stdio MCP server.",
"author": {
"name": "JerryLinLinLin",
Expand All @@ -17,7 +17,7 @@
"mcp"
],
"skills": "./skills/",
"mcpServers": "./.mcp.json",
"mcpServers": "./.codex-plugin/mcp.json",
"interface": {
"displayName": "Hyper-V Control",
"shortDescription": "VM lifecycle, computer use, and Windows debugging.",
Expand Down
10 changes: 9 additions & 1 deletion plugins/hyper-v-control/.mcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,15 @@
"mcpServers": {
"hyper-v-control": {
"command": "powershell.exe",
"args": ["-NoLogo", "-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-File", "${PLUGIN_ROOT}/scripts/start.ps1"]
"args": [
"-NoLogo",
"-NoProfile",
"-NonInteractive",
"-ExecutionPolicy",
"Bypass",
"-File",
"${CLAUDE_PLUGIN_ROOT}/scripts/start.ps1"
]
}
}
}
2 changes: 1 addition & 1 deletion plugins/hyper-v-control/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Manage a Hyper-V lab from your AI agent. Create and restore experiments, interac

Requires a Windows x64 host with Hyper-V. The distributed executable is self-contained and needs no separate .NET or Python installation.

Install **Hyper-V Control** from **Jerry's Plugin Marketplace** in Codex. The plugin includes its skill and launcher. On first start, the launcher downloads and verifies the required executable automatically; subsequent starts reuse the installed runtime.
Install **Hyper-V Control** from **Jerry's Plugin Marketplace** in Codex or Claude Code; see the [marketplace setup](https://github.com/JerryLinLinLin/jerry-plugin-marketplace/blob/main/README.md#install). The plugin includes its skill and launcher. On first start, the launcher downloads and verifies the required executable automatically; subsequent starts reuse the installed runtime. Invoke `$hyper-v-control` in Codex or `/hyper-v-control:hyper-v-control` in Claude Code, or describe a VM task.

For another stdio MCP client, download the EXE from the [runtime releases](https://github.com/JerryLinLinLin/jerry-plugin-marketplace/blob/main/docs/guides/releases.md#release-index) and point its configuration at the executable's absolute path. This example assumes you saved it as `C:\Tools\HyperVControl.exe`:

Expand Down
4 changes: 2 additions & 2 deletions plugins/hyper-v-control/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "hyper-v-control",
"version": "0.1.1",
"version": "0.1.2",
"description": "Control Hyper-V VMs, graphical consoles, guest automation and user/kernel debugging through a native C# stdio MCP server.",
"author": {"name": "JerryLinLinLin", "url": "https://github.com/JerryLinLinLin"},
"repository": "https://github.com/JerryLinLinLin/jerry-plugin-marketplace",
Expand All @@ -10,7 +10,7 @@
"extensions": {
"com.openai": {
"skills": "./skills/",
"mcpServers": "./.mcp.json",
"mcpServers": "./.codex-plugin/mcp.json",
"interface": {
"displayName": "Hyper-V Control",
"shortDescription": "VM lifecycle, computer use, and Windows debugging.",
Expand Down
27 changes: 27 additions & 0 deletions plugins/rizin-re-toolkit/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"name": "rizin-re-toolkit",
"version": "0.4.1",
"description": "Default native reverse engineering and dump analysis toolkit, routing Ghidra/IDA-style workflows through portable Rizin.",
"author": {
"name": "JerryLinLinLin",
"url": "https://github.com/JerryLinLinLin"
},
"homepage": "https://github.com/JerryLinLinLin/jerry-plugin-marketplace",
"repository": "https://github.com/JerryLinLinLin/jerry-plugin-marketplace",
"license": "MIT",
"keywords": [
"rizin",
"reverse-engineering",
"decompiler",
"memory-dump",
"ghidra",
"ida",
"hex-rays",
"binary-ninja",
"radare2",
"cutter",
"yara",
"flirt"
],
"skills": "./skills/"
}
2 changes: 1 addition & 1 deletion plugins/rizin-re-toolkit/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Understand native executables and memory dumps with a portable Windows analysis

## Install

Install **Rizin RE Toolkit** from **Jerry's Plugin Marketplace** in Codex. The included skill guides runtime setup and analysis; invoke it as `$rizin-re-toolkit` or describe a relevant task.
Install **Rizin RE Toolkit** from **Jerry's Plugin Marketplace** in Codex or Claude Code; see the [marketplace setup](https://github.com/JerryLinLinLin/jerry-plugin-marketplace/blob/main/README.md#install). The included skill guides runtime setup and analysis. Invoke `$rizin-re-toolkit` in Codex, `/rizin-re-toolkit:rizin-re-toolkit` in Claude Code, or describe a relevant task.

The skill first checks a known installation path, then `%LOCALAPPDATA%\Programs\Rizin\<release-tag>\rizin\bin\rizin.exe`, then PATH, and reuses a working runtime before downloading. The [PowerShell installer](skills/rizin-re-toolkit/scripts/install.ps1) downloads and verifies the runtime when needed. By default it adds `bin` only to the current PowerShell process's PATH; use `-AddToUserPath` for persistent user PATH registration or `-Destination <directory>` for a custom installation root. Across separate shell sessions, use the resolved absolute executable path.

Expand Down
Loading
Loading