opencode-skills-collection 4.1.10 → 4.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +11 -1
- package/bundled-skills/agent-reels/SKILL.md +15 -4
- package/bundled-skills/ask-human-expert/SKILL.md +141 -0
- package/bundled-skills/datacircle/SKILL.md +128 -0
- package/bundled-skills/equibles/SKILL.md +185 -0
- package/bundled-skills/jet-browser/SKILL.md +155 -0
- package/bundled-skills/qrx/SKILL.md +131 -0
- package/bundled-skills/qrx/references/prompt-guide.md +30 -0
- package/bundled-skills/qrx/references/rest-api.md +40 -0
- package/bundled-skills/reverse-engineer-anything/SKILL.md +239 -0
- package/bundled-skills/reverse-engineer-anything/references/android-applications.md +34 -0
- package/bundled-skills/reverse-engineer-anything/references/evidence-workflows.md +40 -0
- package/bundled-skills/reverse-engineer-anything/references/javascript-applications.md +70 -0
- package/bundled-skills/reverse-engineer-anything/references/native-and-artifacts.md +146 -0
- package/bundled-skills/reverse-engineer-anything/references/runtime-observation.md +28 -0
- package/bundled-skills/tastegate/SKILL.md +129 -0
- package/bundled-skills/tastegate/references/THIRD_PARTY_NOTICES.md +25 -0
- package/bundled-skills/tastegate/references/craft-floor.md +53 -0
- package/bundled-skills/tastegate/references/direction.md +59 -0
- package/bundled-skills/tastegate/references/impeccable-LICENSE-Apache-2.0.txt +191 -0
- package/bundled-skills/tastegate/references/taste-skill-LICENSE-MIT.txt +21 -0
- package/bundled-skills/tastegate/scripts/gate.py +401 -0
- package/bundled-skills/url-to-markdown/SKILL.md +74 -0
- package/bundled-skills/uxkin-research/SKILL.md +127 -0
- package/bundled-skills/what-could-break/SKILL.md +128 -0
- package/bundled-skills/what-could-break/references/LICENSE-pstack.txt +21 -0
- package/package.json +1 -1
- package/skills_index.json +323 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jet-browser
|
|
3
|
+
description: "Verify or integrate Jet Browser when a project needs isolated WPE WebKit sessions, native input, screenshots, ordered JSONL automation, or reproducible runtime checks."
|
|
4
|
+
category: browser-automation
|
|
5
|
+
risk: critical
|
|
6
|
+
source: "https://github.com/masakaai/jet-browser"
|
|
7
|
+
source_repo: masakaai/jet-browser
|
|
8
|
+
source_type: official
|
|
9
|
+
date_added: "2026-10-09"
|
|
10
|
+
author: masakaai
|
|
11
|
+
tags: [browser, wpe-webkit, automation, docker, jsonl, testing]
|
|
12
|
+
tools: [claude, codex]
|
|
13
|
+
license: Apache-2.0
|
|
14
|
+
license_source: "https://github.com/masakaai/jet-browser/blob/v0.6.7/LICENSE"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Jet Browser
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
Use Jet Browser as a replaceable browser-runtime boundary for an agent or deterministic test runner. It runs one isolated WPE WebKit session per container and exposes ordered JSONL commands for navigation, native input, semantic inspection, screenshots, and cleanup.
|
|
22
|
+
|
|
23
|
+
Keep model selection, reasoning, credentials, and orchestration in the calling project. Jet Browser is a browser runtime, not an agent framework, hosted proxy network, anti-bot service, or bridge to a user's personal Chrome profile.
|
|
24
|
+
|
|
25
|
+
## When to Use This Skill
|
|
26
|
+
|
|
27
|
+
- Use when a project needs a self-hosted browser process with an explicit container lifecycle.
|
|
28
|
+
- Use when a harness needs framework-neutral, ordered JSONL instead of a bundled agent loop.
|
|
29
|
+
- Use when native pointer, keyboard, touch, DOM, and screenshot evidence should share one runtime.
|
|
30
|
+
- Use when a repository needs a reproducible offline smoke test or GitHub Actions browser-runtime check.
|
|
31
|
+
- Do not use this skill to control an already-running personal Chrome or reuse its logged-in state; use the environment's permission-approved CDP workflow for that.
|
|
32
|
+
|
|
33
|
+
## Safe Setup and Verification
|
|
34
|
+
|
|
35
|
+
### 1. Establish the boundary before downloading
|
|
36
|
+
|
|
37
|
+
Confirm that the user wants a separate Jet Browser container rather than their daily browser. Check for Docker and Node.js 24+, and report a missing requirement instead of claiming the runtime was verified.
|
|
38
|
+
|
|
39
|
+
For a new checkout or upgrade, identify an immutable release or full commit, inspect the repository's `package.json`, lifecycle scripts, lockfile, Dockerfiles, executable files, symlinks, network access, and credential handling, and summarize what will run. Obtain explicit approval before downloading and again before installing dependencies, building images, or starting containers. A Git commit pin provides reproducibility, not proof of trust.
|
|
40
|
+
|
|
41
|
+
The v0.6.7 source commit reviewed for this catalog entry is:
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
882b17ab1b865560f17dbfeeeea0a7b40b95a146
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Review a newer source tree independently before changing that pin.
|
|
48
|
+
|
|
49
|
+
### 2. Run the standalone acceptance flow
|
|
50
|
+
|
|
51
|
+
After the approvals above, install the pinned source's exact lockfile dependencies and run its standalone check:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
npm ci
|
|
55
|
+
npm run standalone
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Treat the command's observed JSON result as the acceptance check. A passing run must start the local page, verify the JavaScript marker, type through the native input path, capture a PNG, keep the smoke browser's outbound network disabled, and shut the container down cleanly.
|
|
59
|
+
|
|
60
|
+
For source changes, also run:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npm test
|
|
64
|
+
cargo test --all-targets
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Never report a pass when Docker, Node.js, the image build, browser startup, native input, DOM verification, screenshot capture, or cleanup did not actually complete.
|
|
68
|
+
|
|
69
|
+
### 3. Integrate the documented contract
|
|
70
|
+
|
|
71
|
+
Read `docs/demo.md` for the container lifecycle and `docs/agent-tools.md` for model-facing declarations. Prefer the versioned declarations exported by `sdk/tools.mjs`; do not invent tool names, input fields, or response shapes.
|
|
72
|
+
|
|
73
|
+
Send one JSON command per line and consume one JSON response per line. Preserve ordering, bound inputs and outputs in the calling harness, and close the session in guaranteed cleanup. Keep one container per mutually untrusted session, mount profile or download paths explicitly, and never pass unrelated host credentials into the container.
|
|
74
|
+
|
|
75
|
+
Use semantic evidence for target selection and screenshots for visual verification when both are available. Treat evaluation, imported profiles, downloads, and outbound network access as privileged capabilities that require the calling application to define its own authorization and policy gates.
|
|
76
|
+
|
|
77
|
+
## Examples
|
|
78
|
+
|
|
79
|
+
### Example 1: Verify a pinned source checkout
|
|
80
|
+
|
|
81
|
+
After inspecting the pinned source and receiving the required approvals:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
git clone --filter=blob:none --no-checkout https://github.com/masakaai/jet-browser.git
|
|
85
|
+
git -C jet-browser checkout --detach 882b17ab1b865560f17dbfeeeea0a7b40b95a146
|
|
86
|
+
cd jet-browser
|
|
87
|
+
npm ci
|
|
88
|
+
npm run standalone
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Report the exact command result and which acceptance assertions ran. Do not translate a partial build or startup log into a successful verification.
|
|
92
|
+
|
|
93
|
+
### Example 2: Verify Jet Browser in GitHub Actions
|
|
94
|
+
|
|
95
|
+
Pin the Action to the reviewed full commit rather than a moving branch or tag:
|
|
96
|
+
|
|
97
|
+
```yaml
|
|
98
|
+
permissions:
|
|
99
|
+
contents: read
|
|
100
|
+
|
|
101
|
+
jobs:
|
|
102
|
+
verify-browser-runtime:
|
|
103
|
+
runs-on: ubuntu-latest
|
|
104
|
+
steps:
|
|
105
|
+
- name: Verify Jet Browser
|
|
106
|
+
uses: masakaai/jet-browser@882b17ab1b865560f17dbfeeeea0a7b40b95a146 # v0.6.7
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
This checks the public `linux/amd64` release image on a GitHub-hosted Linux runner. Review the Action source and repository workflow permissions before use.
|
|
110
|
+
|
|
111
|
+
## Best Practices
|
|
112
|
+
|
|
113
|
+
- ✅ Pin source and Action use to a reviewed full commit.
|
|
114
|
+
- ✅ Keep one isolated browser session per container and always close it.
|
|
115
|
+
- ✅ Preserve ordered JSONL and use the published schemas instead of inferring fields.
|
|
116
|
+
- ✅ Keep credentials and network policy in the embedding harness.
|
|
117
|
+
- ✅ Report observed checks, failures, and platform limitations exactly.
|
|
118
|
+
- ❌ Do not attach Jet Browser to a personal Chrome profile or copy daily-browser credentials into it.
|
|
119
|
+
- ❌ Do not promise CDP, Chrome extensions, Chromium-only behavior, stealth, CAPTCHA solving, or public-site success.
|
|
120
|
+
- ❌ Do not generalize the published offline benchmark to model accuracy or long-running production reliability.
|
|
121
|
+
|
|
122
|
+
## Limitations
|
|
123
|
+
|
|
124
|
+
- Jet Browser uses WPE WebKit, not Chromium. It does not implement Chrome-only extension, enterprise-policy, or CDP contracts.
|
|
125
|
+
- The published v0.6.7 image targets `linux/amd64`; ARM hosts need compatible emulation or a source build for the host architecture.
|
|
126
|
+
- Docker and Node.js 24+ are required for the documented standalone flow; source development also requires the repository's Rust toolchain.
|
|
127
|
+
- The standalone runtime does not include a hosted control plane, proxy network, account system, persistent daily-browser takeover, or model loop.
|
|
128
|
+
- The published ready-time and memory figures are medians from a pinned offline fixture. They do not measure public-site success, stealth, CAPTCHA handling, model accuracy, or long-running stability.
|
|
129
|
+
- This skill cannot validate a local run when the required runtime is unavailable; report the missing dependency or failed assertion instead.
|
|
130
|
+
|
|
131
|
+
## Security & Safety Notes
|
|
132
|
+
|
|
133
|
+
- `npm ci`, Docker builds, and container startup modify local state and may execute repository-controlled code. Inspect the pinned source and obtain approval before each installation or execution boundary.
|
|
134
|
+
- The standalone smoke test disables browser outbound networking, but image and dependency acquisition can use the network. State that distinction before running it.
|
|
135
|
+
- Use a dedicated container per mutually untrusted session. Mount only required paths, avoid unrelated host credentials, and set explicit resource and network limits.
|
|
136
|
+
- Do not import a user's daily browser profile merely to reuse authentication. When a task genuinely requires an existing logged-in Chrome session, route to a permission-approved CDP workflow instead.
|
|
137
|
+
|
|
138
|
+
## Common Pitfalls
|
|
139
|
+
|
|
140
|
+
- **Problem:** The task needs an already logged-in personal browser.
|
|
141
|
+
**Solution:** Do not use Jet Browser for that path; use the environment's authorized CDP integration.
|
|
142
|
+
- **Problem:** The image fails on an ARM host.
|
|
143
|
+
**Solution:** Use Docker's `linux/amd64` emulation when appropriate or build the pinned source for the host architecture.
|
|
144
|
+
- **Problem:** A harness assumes Chromium/CDP fields.
|
|
145
|
+
**Solution:** Use the JSONL protocol and `sdk/tools.mjs` declarations shipped by the pinned Jet source.
|
|
146
|
+
- **Problem:** A partial startup is reported as a pass.
|
|
147
|
+
**Solution:** Require the complete native-input, DOM, PNG, offline-network, and cleanup assertions before reporting success.
|
|
148
|
+
|
|
149
|
+
## Additional Resources
|
|
150
|
+
|
|
151
|
+
- [Jet Browser source](https://github.com/masakaai/jet-browser)
|
|
152
|
+
- [v0.6.7 release](https://github.com/masakaai/jet-browser/releases/tag/v0.6.7)
|
|
153
|
+
- [Standalone demo](https://github.com/masakaai/jet-browser/blob/v0.6.7/docs/demo.md)
|
|
154
|
+
- [Agent tool catalog](https://github.com/masakaai/jet-browser/blob/v0.6.7/docs/agent-tools.md)
|
|
155
|
+
- [Benchmark method](https://github.com/masakaai/jet-browser/blob/v0.6.7/docs/benchmarks.md)
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qrx
|
|
3
|
+
description: "Make branded, print-ready art QR codes that always scan with QRX (qrx.codes). Use when a link needs a QR code that looks like artwork or matches a brand for print, packaging, signs, slides or event badges, and to list or re-point QRX codes. Not for plain QR codes the agent makes locally."
|
|
4
|
+
category: design
|
|
5
|
+
risk: critical
|
|
6
|
+
source: https://github.com/qrxcodes/qrx-mcp/tree/main/skills/qrx
|
|
7
|
+
source_repo: qrxcodes/qrx-mcp
|
|
8
|
+
source_type: official
|
|
9
|
+
date_added: "2026-10-10"
|
|
10
|
+
author: QRX
|
|
11
|
+
tags: [qr-code, design, branding, mcp, rest-api, print]
|
|
12
|
+
tools: [claude, codex, cursor, copilot, gemini]
|
|
13
|
+
license: MIT
|
|
14
|
+
license_source: https://github.com/qrxcodes/qrx-mcp/blob/main/LICENSE
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# QRX: art QR codes that always scan
|
|
18
|
+
|
|
19
|
+
QRX turns a short picture description (the prompt) and a destination link into an artistic QR code. Every code is checked to decode before it is returned, and it encodes a hosted short link, `https://qrx.to/<id>` on qrx.codes, which forwards scans to the destination. Treat the result as a design asset: a PNG the user can drop into print or digital layouts.
|
|
20
|
+
|
|
21
|
+
## When to Use
|
|
22
|
+
|
|
23
|
+
Use it when the user wants a QR code that is also a picture: on-brand, decorative, or eye-catching enough to earn a scan. Typical asks: a café menu code in a watercolour style, a conference badge code in the event's colours, a poster code that blends into the artwork, a product-packaging code, a wedding-invitation code.
|
|
24
|
+
|
|
25
|
+
Do not use it when:
|
|
26
|
+
- a plain, unstyled QR code will do and can be made locally (offer QRX only if the user wants something designed);
|
|
27
|
+
- the user wants to change the art of an existing code (make a new code instead);
|
|
28
|
+
- the request is for a logo, trademark or character the user does not own (see "What not to do").
|
|
29
|
+
|
|
30
|
+
## Tools (QRX MCP server)
|
|
31
|
+
|
|
32
|
+
| Tool | Use |
|
|
33
|
+
| - | - |
|
|
34
|
+
| `list_styles` | List style ids and names. |
|
|
35
|
+
| `generate_qr_code` | Start a code. Args: `prompt` (required, up to 1,000 characters), `destination` (required, an absolute `http` or `https` URL, up to 2,048 characters), optional `style`. Answers at once with the code's `id` and `status: processing`. |
|
|
36
|
+
| `get_qr_code` | Get a code by `id`. Waits up to `wait` seconds (0 to 25, default 25) for a processing code to finish. Call again while it is still `processing`. |
|
|
37
|
+
| `list_qr_codes` | The user's codes, newest first. `limit` 1 to 100 (default 20); pass `nextCursor` as `cursor` for the next page. |
|
|
38
|
+
| `change_qr_code_destination` | Re-point a link code's short link to a new destination (`id`, `destination`: an absolute `http` or `https` URL). Printed codes follow at once. Only if the account's plan allows changing destinations; it replaces the old destination, so confirm with the user first. |
|
|
39
|
+
| `get_account` | The plan, today's allowance, what is left, when it resets, and which features the account has (Wi-Fi codes, changing destinations). |
|
|
40
|
+
| `get_profile` | The connected QRX account. |
|
|
41
|
+
|
|
42
|
+
The server needs the user to sign in to QRX (or an API key) before it connects. If the tools are missing, it is not connected: ask the user to sign in from their client's MCP or connector settings, or use the REST API instead (see [references/rest-api.md](references/rest-api.md)).
|
|
43
|
+
|
|
44
|
+
## How to make a code
|
|
45
|
+
|
|
46
|
+
1. **Get the destination.** It must be an absolute URL starting with `https://` or `http://` (add `https://` if the user gave a bare domain, and confirm the exact link if it is ambiguous). The MCP tools make link codes only; for a Wi-Fi code, send the user to https://qrx.codes, and never ask them for a Wi-Fi password.
|
|
47
|
+
2. **Write the prompt** (see "Writing a good prompt"). If the user named a look, call `list_styles` and pick the closest style id; otherwise leave `style` out.
|
|
48
|
+
3. **Call `generate_qr_code` once.** Keep the returned `id`; it never changes. Painting usually takes under a minute.
|
|
49
|
+
4. **Poll with `get_qr_code`** using that `id` until `status` is `succeeded` or `failed`. Each call waits up to 25 seconds, so two or three calls are normal.
|
|
50
|
+
- Never call `generate_qr_code` again while a code is still processing: every generate counts against the user's allowance.
|
|
51
|
+
5. **Show the result:** the image (`imageUrl`, a PNG), the short link the code encodes (`shortUrl`, `https://qrx.to/<id>` on qrx.codes), the destination, and the code's page (`pageUrl`). Tell the user to test-scan it with a phone before printing.
|
|
52
|
+
6. **On `failed`:** read `error.message`, simplify the prompt (fewer elements, more contrast), and offer one retry. Ask before making more than one extra attempt.
|
|
53
|
+
|
|
54
|
+
For several variations, say how many will be made and that each counts against the allowance, then start them and poll each `id`.
|
|
55
|
+
|
|
56
|
+
## Writing a good prompt
|
|
57
|
+
|
|
58
|
+
The prompt describes the picture only. QRX handles the QR pattern itself.
|
|
59
|
+
|
|
60
|
+
- **Lead with one clear subject and setting:** "a lighthouse on a cliff at sunset", "a bowl of ramen with steam rising", "a eucalyptus branch with gumnuts".
|
|
61
|
+
- **Add a style or medium:** watercolour, linocut print, isometric 3D, art deco poster, Japanese woodblock, papercraft, neon line art.
|
|
62
|
+
- **Name the palette, especially brand colours:** "in deep navy, coral and cream"; describe colours in words, since hex codes are not reliably followed.
|
|
63
|
+
- **Keep it simple:** one subject, a few adjectives, 10 to 30 words. Busy scenes with many small objects scan and read worse.
|
|
64
|
+
- **Prefer strong light-dark contrast** in the description ("bold shapes, high contrast") for codes that will be printed small or viewed from a distance.
|
|
65
|
+
- **Leave out words and lettering:** do not ask for text, slogans, numbers or logos inside the art. Put copy next to the code in the layout instead.
|
|
66
|
+
- Use Australian or the user's own spelling; it does not matter to the model.
|
|
67
|
+
|
|
68
|
+
More examples and fixes: [references/prompt-guide.md](references/prompt-guide.md).
|
|
69
|
+
|
|
70
|
+
## Limits
|
|
71
|
+
|
|
72
|
+
- Accounts have a daily allowance of codes (some have no daily limit), and changing where a code points depends on the account's plan. Call `get_account` to see what is left today, when the count resets and which features the account has; act on the features it reports, not on the plan name.
|
|
73
|
+
- If a call fails with a limit error, or says a feature is not included in the account's plan, call `get_account`, tell the user plainly what is left and when it resets (or that the feature is not included in their plan), and point them to their account at https://qrx.codes. Do not retry in a loop.
|
|
74
|
+
- An authentication error means no QRX account is connected. Ask the user to sign in to QRX when their client prompts (or from its MCP or connector settings); a client that cannot sign in can use an API key from https://qrx.codes/developers/keys instead.
|
|
75
|
+
|
|
76
|
+
## Links and re-pointing
|
|
77
|
+
|
|
78
|
+
The code encodes its short link (`https://qrx.to/<id>` on qrx.codes), not the destination itself. A code's `id` and short link never change. That keeps the pattern simple and, where the account's plan allows it, lets the user change the destination later with `change_qr_code_destination` without reprinting. Mention this when the user is printing in volume or the destination may change (seasonal menus, event pages).
|
|
79
|
+
|
|
80
|
+
## Print and placement checklist
|
|
81
|
+
|
|
82
|
+
Share the relevant points when the code is for print:
|
|
83
|
+
- **Test-scan** the downloaded PNG on at least two phones (iPhone camera and an Android camera) before sending to print, and again on a printed proof.
|
|
84
|
+
- **Minimum size:** about 2.5 cm (1 inch) square for handheld items such as cards and menus; scale up roughly 1 cm of code width per 10 cm of scanning distance for posters and signs.
|
|
85
|
+
- **Quiet zone:** keep a clear margin around the code, and do not crop, overlap or place text over the artwork's edges.
|
|
86
|
+
- **Do not recolour, stretch, add filters or vectorise** the image; resize proportionally only.
|
|
87
|
+
- **Contrast with the background:** place it on a calm area, not on a busy photo.
|
|
88
|
+
- **Finish:** matte stock scans more reliably than gloss under lights.
|
|
89
|
+
- Put a short call to action beside the code ("Scan for the menu").
|
|
90
|
+
|
|
91
|
+
## What not to do
|
|
92
|
+
|
|
93
|
+
- Do not put logos, trademarks, celebrities or characters the user does not own in the prompt, and do not imitate another company's branding.
|
|
94
|
+
- Do not ask for text inside the art.
|
|
95
|
+
- Do not generate codes that point to phishing, malware or deceptive pages, or that hide where a link goes.
|
|
96
|
+
- Do not start many codes "just to see"; each one uses the user's allowance.
|
|
97
|
+
- Do not paste the user's API key into chat output, files or commits.
|
|
98
|
+
|
|
99
|
+
## REST API fallback
|
|
100
|
+
|
|
101
|
+
If the MCP tools are not available but the user has an API key, follow [references/rest-api.md](references/rest-api.md) (create with `POST https://qrx.codes/v1/codes`, then `GET https://qrx.codes/v1/codes/{id}?wait=45`).
|
|
102
|
+
|
|
103
|
+
## Examples
|
|
104
|
+
|
|
105
|
+
A café wants a menu QR code in watercolours:
|
|
106
|
+
|
|
107
|
+
```text
|
|
108
|
+
1. Destination: https://example.com/menu (confirm the exact link).
|
|
109
|
+
2. find_ui style: list_styles, then pick the closest watercolour-style id.
|
|
110
|
+
3. generate_qr_code({"prompt": "a steaming flat white on a timber bench, watercolour, warm cream and espresso brown", "destination": "https://example.com/menu", "style": "<id>"})
|
|
111
|
+
4. Poll get_qr_code with the returned id until status is succeeded.
|
|
112
|
+
5. Show imageUrl, shortUrl, destination and pageUrl, and ask the owner to test-scan before printing.
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
REST fallback when the MCP server is not connected:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
curl -sS -X POST "https://qrx.codes/v1/codes?wait=45" \
|
|
119
|
+
-H "Authorization: Bearer $QRX_API_KEY" \
|
|
120
|
+
-H "Content-Type: application/json" \
|
|
121
|
+
-H "Idempotency-Key: $(uuidgen 2>/dev/null || date +%s)" \
|
|
122
|
+
-d '{"prompt":"a lighthouse on a cliff at sunset, watercolour, navy and coral","destination":"https://example.com/menu"}'
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Limitations
|
|
126
|
+
|
|
127
|
+
- Needs a QRX account and either the QRX MCP server or an API key; without them the skill cannot generate codes and says so.
|
|
128
|
+
- Codes consume the account's allowance, and changing a code's destination depends on the account's plan; call `get_account` before promising either.
|
|
129
|
+
- Looks codes up by the QRX account only: it cannot manage codes owned by another account.
|
|
130
|
+
- Generated art is returned as a hosted PNG and a hosted short link; QRX does not return the code as a local editable vector.
|
|
131
|
+
- The model provider's data-handling policy still applies to any prompt text that passes through the connected tools.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# QRX prompt guide
|
|
2
|
+
|
|
3
|
+
A QRX prompt describes only the picture. Formula: **subject + setting + style or medium + palette + mood**, in 10 to 30 words.
|
|
4
|
+
|
|
5
|
+
## Examples by use
|
|
6
|
+
|
|
7
|
+
| Use | Prompt |
|
|
8
|
+
| - | - |
|
|
9
|
+
| Café menu | a steaming flat white on a timber bench, morning light, watercolour, warm cream and espresso brown |
|
|
10
|
+
| Surf club poster | a curling turquoise wave at dawn, Japanese woodblock print, navy, teal and sand |
|
|
11
|
+
| Florist packaging | a bunch of native waratahs and banksias, botanical illustration, crimson and sage green |
|
|
12
|
+
| Tech conference badge | a glowing circuit-board city at night, isometric 3D, electric blue and magenta |
|
|
13
|
+
| Wedding invitation | climbing white roses on a stone arch, soft pastel gouache, ivory and blush pink |
|
|
14
|
+
| Winery label | rolling vineyard hills at golden hour, linocut print, burgundy and gold |
|
|
15
|
+
| Kids' event flyer | a friendly cartoon koala in a hot-air balloon, bright flat illustration, primary colours |
|
|
16
|
+
| Real-estate sign | a modern house with a pool at dusk, architectural rendering, charcoal and warm amber |
|
|
17
|
+
|
|
18
|
+
## Fixes
|
|
19
|
+
|
|
20
|
+
| Problem | Change |
|
|
21
|
+
| - | - |
|
|
22
|
+
| Art looks busy or muddy | One subject, drop secondary objects, add "bold shapes, clean composition" |
|
|
23
|
+
| Code hard to scan when printed small | Ask for "high contrast, strong light and dark areas"; print larger |
|
|
24
|
+
| Colours off-brand | Name colours in plain words ("forest green, cream"), two or three at most |
|
|
25
|
+
| Unwanted text or letters appear | Remove any mention of words, signs, labels or typography |
|
|
26
|
+
| Looks generic | Add a specific medium and era: "1930s travel poster", "risograph print" |
|
|
27
|
+
|
|
28
|
+
## Brand fit
|
|
29
|
+
|
|
30
|
+
Ask the user for their brand colours, two or three adjectives for the brand voice, and where the code will appear. Translate these into palette and style words. Never include logos, wordmarks or mascots in the prompt; place the brand logo beside the code in the final layout instead.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# QRX REST API fallback
|
|
2
|
+
|
|
3
|
+
Use this only when the QRX MCP tools are not connected (connecting the MCP server needs sign-in or an API key; prefer signing in). Requires an API key from https://qrx.codes/developers/keys, read from the environment variable `QRX_API_KEY`. Never print the key.
|
|
4
|
+
|
|
5
|
+
Base URL: `https://qrx.codes/v1`. The OpenAPI 3.1 spec is at `https://qrx.codes/v1/openapi.json`, and the reference is at https://qrx.codes/developers/docs/reference (append `.md` to any docs page for Markdown). None of these need a key.
|
|
6
|
+
|
|
7
|
+
Send the key as `Authorization: Bearer $QRX_API_KEY` (preferred) or `X-API-Key: $QRX_API_KEY`. If both are sent, `Authorization` wins.
|
|
8
|
+
|
|
9
|
+
## Create a code
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
curl -sS -X POST "https://qrx.codes/v1/codes?wait=45" \
|
|
13
|
+
-H "Authorization: Bearer $QRX_API_KEY" \
|
|
14
|
+
-H "Content-Type: application/json" \
|
|
15
|
+
-H "Idempotency-Key: $(uuidgen 2>/dev/null || date +%s)" \
|
|
16
|
+
-d '{"prompt":"a lighthouse on a cliff at sunset, watercolour, navy and coral","destination":"https://example.com/menu"}'
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
- `prompt` (required, up to 1,000 characters), `destination` (an absolute `http` or `https` URL, up to 2,048; anything else is a `400`) **or** `wifi` `{ "ssid", "password", "security": "wpa"|"wep" }` (only if the account's plan includes Wi-Fi codes), optional `style` (an id from `GET /v1/styles`).
|
|
20
|
+
- `?wait=` (0 to 50; use 45) holds the request open: `201` means it finished within the wait, `202` means it is still `processing`. The `Location` header is the code's absolute URL.
|
|
21
|
+
- Always send an `Idempotency-Key` so a retried request cannot make a second code. A retry with the same key and body within a day answers with the code as it is now; one that arrives before the first request has made its code answers `409` with `Retry-After`.
|
|
22
|
+
|
|
23
|
+
## Wait for it
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
curl -sS "https://qrx.codes/v1/codes/<id>?wait=45" -H "Authorization: Bearer $QRX_API_KEY"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Repeat until `status` is `succeeded` or `failed`. A finished code has `imageUrl` (PNG), `shortUrl` (the short link, `https://qrx.to/<id>` on qrx.codes), `destination` and `pageUrl`. A code's `id` and `shortUrl` never change. A link code's `id` is currently 6 lowercase letters and digits, such as `k7m2qz`; a Wi-Fi code's `id` is a UUID and its `shortUrl` is null. Treat ids as opaque strings.
|
|
30
|
+
|
|
31
|
+
## Other endpoints
|
|
32
|
+
|
|
33
|
+
| Method and path | Purpose |
|
|
34
|
+
| - | - |
|
|
35
|
+
| `GET /v1/codes?limit=10&cursor=...` | List codes, newest first (`nextCursor` for the next page) |
|
|
36
|
+
| `PATCH /v1/codes/{id}` with `{"destination":"https://..."}` | Re-point a link code (only if the account's plan allows changing destinations) |
|
|
37
|
+
| `GET /v1/account` | Plan, allowance, features and limits |
|
|
38
|
+
| `GET /v1/styles` | Style ids, names and preview images |
|
|
39
|
+
|
|
40
|
+
Errors are RFC 9457 `application/problem+json` with a `type` (`https://qrx.codes/developers/docs/errors#<code>`), `title` and `detail`; `403 plan-required` means the feature is not included in the account's plan, and `429` means a rate or daily limit was hit (check `GET /v1/account`). Rate limits are reported in the `RateLimit-Policy` and `RateLimit` headers (for example `RateLimit-Policy: "requests";q=30;w=60` and `RateLimit: "requests";r=29;t=2`); creates on accounts with a daily allowance also carry a `"codes"` policy for the day's codes.
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reverse-engineer-anything
|
|
3
|
+
description: Use REA to investigate shipped apps, binaries, packages, and runtimes; trace features with evidence, compare versions, or guide reconstruction. Skip ordinary source-code analysis.
|
|
4
|
+
risk: safe
|
|
5
|
+
source: "https://github.com/morluto/rea/tree/main/skill-src/reverse-engineer-anything"
|
|
6
|
+
source_repo: "morluto/rea"
|
|
7
|
+
source_type: community
|
|
8
|
+
date_added: "2026-10-10"
|
|
9
|
+
license: "MIT"
|
|
10
|
+
license_source: "https://github.com/morluto/rea/blob/main/LICENSE"
|
|
11
|
+
metadata:
|
|
12
|
+
version: "34"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# REA
|
|
16
|
+
|
|
17
|
+
## When to Use
|
|
18
|
+
|
|
19
|
+
- Use when a claim depends on a shipped application, binary, package, or requested runtime evidence.
|
|
20
|
+
- Use for decompilation, evidence-backed feature traces, version comparisons, or investigation-guided reconstruction.
|
|
21
|
+
- Skip REA for ordinary source-code analysis of a complete repository.
|
|
22
|
+
|
|
23
|
+
Use REA when a claim depends on a shipped binary or package, decompilation,
|
|
24
|
+
passive application runtime evidence, or comparison with
|
|
25
|
+
behavior not established by available source. For ordinary analysis of a
|
|
26
|
+
complete source repository, use normal repository tools and do not run REA
|
|
27
|
+
readiness or provider commands.
|
|
28
|
+
|
|
29
|
+
## Limitations
|
|
30
|
+
|
|
31
|
+
- The skill supplies investigation guidance; it does not register the REA MCP server or install analysis engines.
|
|
32
|
+
- Native-analysis availability depends on the selected provider, host, and target format. Hopper is separate licensed software; Ghidra and IDA are bring-your-own.
|
|
33
|
+
- Static analysis does not establish runtime behavior or recover original source code. Report provider-specific coverage, partial results, and unknowns.
|
|
34
|
+
- REA runs analysis locally, but the connected model provider may have separate data-handling policies.
|
|
35
|
+
|
|
36
|
+
## Connect only when needed
|
|
37
|
+
|
|
38
|
+
Installing this skill supplies instructions; it does not register the REA MCP
|
|
39
|
+
server, install analysis engines, or add tools to an already-running agent.
|
|
40
|
+
|
|
41
|
+
If REA tools are available and their registration is not known to be stale,
|
|
42
|
+
proceed directly to the target. Do not run diagnostics or setup before every
|
|
43
|
+
investigation. Use the connected server's actual tool list and input schemas;
|
|
44
|
+
a skill installed from repository main may describe capabilities absent from
|
|
45
|
+
an older npm release. Keep complete inline Evidence when that server does not
|
|
46
|
+
advertise retained references.
|
|
47
|
+
|
|
48
|
+
When tools are absent or registration is stale:
|
|
49
|
+
|
|
50
|
+
1. Diagnose without changing files. For Codex, run
|
|
51
|
+
`npx -y rea-agents@latest doctor --client codex --json`. Substitute the current
|
|
52
|
+
supported client: `claude_code`, `claude_desktop`, `codex`, `cursor`,
|
|
53
|
+
`gemini_cli`, `windsurf`, `devin`, `opencode`, `antigravity`, `copilot_cli`,
|
|
54
|
+
`commandcode`, `vscode`, `grok_build`, `omp`, or `grok_bot`. `grok_bot` has no local
|
|
55
|
+
file registration: doctor reports the Grok Bot chat step, and setup does not
|
|
56
|
+
write `mcp.json`. If the client is unknown, use `doctor --json` and
|
|
57
|
+
inspect its registration results before choosing a setup scope.
|
|
58
|
+
2. Distinguish the reason. Missing, malformed, or stale registration needs a
|
|
59
|
+
scoped configuration repair. An aligned registration with no tools in the
|
|
60
|
+
active session needs a restart/reconnection; doctor cannot prove that the
|
|
61
|
+
current agent has connected. A missing provider affects only tasks requiring
|
|
62
|
+
that provider: static JavaScript inspection needs neither Hopper nor Ghidra,
|
|
63
|
+
and Android inspection has separate bring-your-own JADX/Java prerequisites.
|
|
64
|
+
3. For a configuration repair, prepare the read-only plan:
|
|
65
|
+
`npx -y rea-agents@latest setup --client codex --dry-run --json`.
|
|
66
|
+
Use the current client's ID, show its exact proposed paths, backups, and
|
|
67
|
+
changes, and obtain approval before setup writes configuration or installs
|
|
68
|
+
Hopper. Setup normally installs the matching bundled skill too; include that
|
|
69
|
+
replacement in the reviewed plan. After approval, apply the same scope with
|
|
70
|
+
`npx -y rea-agents@latest setup --client codex --yes`. Add `--install-hopper`
|
|
71
|
+
only if that separate installation was needed and explicitly approved.
|
|
72
|
+
4. Restart/reconnect the affected agent. Verify that REA tools actually appear
|
|
73
|
+
in the session, then resume the original investigation. If they remain
|
|
74
|
+
absent, inspect the client's MCP launch error rather than repeating setup.
|
|
75
|
+
|
|
76
|
+
REA setup never installs or upgrades Node.js, npm, Homebrew, Java, Ghidra, IDA,
|
|
77
|
+
JADX, Binwalk, or Unblob. Use existing prerequisites; do not install unrelated
|
|
78
|
+
software to repair
|
|
79
|
+
MCP registration. For an unsupported client, use manual stdio registration
|
|
80
|
+
with a version-pinned `rea-agents` package or continue through the CLI.
|
|
81
|
+
|
|
82
|
+
A concrete CLI fallback for an operator-supplied JavaScript tree or ASAR is:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
No MCP registration or native engine is required. Read the returned Evidence,
|
|
89
|
+
graph, limitations, and unknowns with the same care as an MCP result; the CLI
|
|
90
|
+
returns the Evidence record directly. This fallback does not establish that
|
|
91
|
+
MCP is configured. Native CLI tasks still require their selected engine.
|
|
92
|
+
|
|
93
|
+
## Route the target first
|
|
94
|
+
|
|
95
|
+
Choose the first tool from the target the user supplied. Use `open_binary` for
|
|
96
|
+
active-target native or archive workflows; target-free tools take their own
|
|
97
|
+
explicit path or endpoint and do not need it.
|
|
98
|
+
|
|
99
|
+
- ASAR or extracted JavaScript/Electron tree:
|
|
100
|
+
`analyze_javascript_application`.
|
|
101
|
+
- Archive/package member inventory (ZIP/APK/IPA/MSIX/AppX or DMG):
|
|
102
|
+
`open_binary` with the supplied local path; use `inspect_artifact` when its
|
|
103
|
+
graph and findings help answer the question.
|
|
104
|
+
- Android APK code, classes, methods, or incoming references:
|
|
105
|
+
`inspect_android_package`, then focused Android tools when advertised.
|
|
106
|
+
Archive member inventory still uses the archive route above.
|
|
107
|
+
- Managed PE/CLI assembly: `inspect_managed_artifact`.
|
|
108
|
+
- Firmware image: `inspect_firmware_regions` when advertised. Use
|
|
109
|
+
`extract_firmware` when extraction is requested, with a caller-selected new
|
|
110
|
+
absolute output directory. These tools use caller-supplied Binwalk/Unblob on
|
|
111
|
+
Linux; see the [firmware guide](https://github.com/morluto/rea/blob/main/docs/firmware-analysis.md).
|
|
112
|
+
- .NET NativeAOT PE/ELF: native Ghidra analysis. Native code can yield pseudocode;
|
|
113
|
+
consult the NativeAOT workflow in `references/native-and-artifacts.md` for
|
|
114
|
+
optional metadata recovery and its supported host/layout boundary.
|
|
115
|
+
- User-owned browser page already open: `list_browser_targets`.
|
|
116
|
+
- Retained HAR/native mitmproxy capture: `inspect_web_network_capture`. Select
|
|
117
|
+
original record ordinals when useful; inspect producer fields and byte/number
|
|
118
|
+
sidecars without fetching recorded URLs or claiming live attribution. See
|
|
119
|
+
[historical captures](https://github.com/morluto/rea/blob/main/docs/web-network-captures.md) for the exact upstream
|
|
120
|
+
profile and credential exclusions.
|
|
121
|
+
- User-owned Electron runtime already open: `list_electron_targets`.
|
|
122
|
+
- Explicit local EVM bytecode carrier: `inspect_evm_interface` with caller-selected
|
|
123
|
+
`raw` or `hex` encoding. Preserve carrier/decoded digests and treat selectors,
|
|
124
|
+
argument strings and mutability as inferred candidates; this performs no chain
|
|
125
|
+
lookup or target execution. See the
|
|
126
|
+
[EVM bytecode guide](https://github.com/morluto/rea/blob/main/docs/evm-bytecode.md).
|
|
127
|
+
- Explicit Linux ELF file for offline layout, symbols, relocations or static
|
|
128
|
+
mitigation evidence: `inspect_binary_layout`. This target-free operation uses
|
|
129
|
+
caller-supplied pwntools without opening a disassembler database. Preserve its
|
|
130
|
+
raw locations and inference/coverage limits; see the
|
|
131
|
+
[offline binary guide](https://github.com/morluto/rea/blob/main/docs/binary-diagnostics.md).
|
|
132
|
+
- Supplied Linux x86-64 ELF core: `inspect_recorded_crash`. Read every recorded
|
|
133
|
+
thread, raw note and source-bound register without opening a live target.
|
|
134
|
+
Historical PIDs do not select live processes. Request `include_debugger_context`
|
|
135
|
+
only when core-only mapping candidates help; see the
|
|
136
|
+
[recorded crash guide](https://github.com/morluto/rea/blob/main/docs/recorded-crashes.md).
|
|
137
|
+
- Native executable, library, or analysis database: `open_binary`, then
|
|
138
|
+
use focused analysis tools directly; call `binary_overview` when metadata or
|
|
139
|
+
inventory context is useful and available from the selected provider.
|
|
140
|
+
|
|
141
|
+
For an existing IDA MCP configuration, use `open_binary` with the original
|
|
142
|
+
input binary and `provider_id: "ida"`; do not pass an `.idb` or `.i64` database.
|
|
143
|
+
The legacy attached profile binds the already-open GUI input by SHA-256 and
|
|
144
|
+
leaves its database open. The modern headless profile creates and closes an
|
|
145
|
+
owned private database without saving. Installation and registration reuse
|
|
146
|
+
[mrexodia/ida-pro-mcp](https://github.com/mrexodia/ida-pro-mcp); see the
|
|
147
|
+
[IDA provider guide](https://github.com/morluto/rea/blob/main/docs/ida-provider.md).
|
|
148
|
+
Proceed directly to `analyze_function`, pseudocode, or function/string searches
|
|
149
|
+
after opening; IDA does not supply `binary_overview`. Consult session availability
|
|
150
|
+
when composing broader workflows. Modern direct callers and unsupported dossier
|
|
151
|
+
facets remain unknown; live IDA results are not replayed from snapshots.
|
|
152
|
+
|
|
153
|
+
If the app is missing, ask which app to inspect. Resolve a human-readable app
|
|
154
|
+
name to one clear installed artifact when possible; ask only when matches are
|
|
155
|
+
ambiguous. Never choose an example app on the user's behalf.
|
|
156
|
+
|
|
157
|
+
In a target-free session, use `open_binary` to bind any archive/package or
|
|
158
|
+
native target whose analysis tool operates on the active target. Do not call an
|
|
159
|
+
unadvertised tool; inspect `binary_session` with `{}` and its
|
|
160
|
+
`result.tool_availability` for availability reasons and remediation. The tool
|
|
161
|
+
list stays complete; availability depends on the operation, target, and host.
|
|
162
|
+
|
|
163
|
+
## Work summary-first
|
|
164
|
+
|
|
165
|
+
Start with the default result and use its inline Evidence and graph context.
|
|
166
|
+
Do not repeat an identical tool call. Make a focused follow-up only when the
|
|
167
|
+
returned result leaves a specific question unanswered.
|
|
168
|
+
|
|
169
|
+
If MCP reports `resource_constraint` with `details.resource: "transport"`, call
|
|
170
|
+
`inspect_analysis_view` with its reported same-session Evidence reference for a
|
|
171
|
+
summary, one section/module, or a stable page. Use `trace_application_feature`
|
|
172
|
+
once a seed is known, or call `export_evidence_bundle` to write the complete
|
|
173
|
+
session to a selected path. The analysis remains complete in the ledger; avoid
|
|
174
|
+
repeating it merely to request the same oversized response. Complete CLI JSON
|
|
175
|
+
output also streams without a single MCP frame.
|
|
176
|
+
|
|
177
|
+
Every conclusion must distinguish observations, inferences, and unknowns. Cite
|
|
178
|
+
Evidence IDs, preserve limitations and incomplete coverage, and never imply
|
|
179
|
+
that static analysis observed execution. Runtime requests execute the declared
|
|
180
|
+
target and lifecycle; do not broaden the target or action beyond those fields.
|
|
181
|
+
|
|
182
|
+
Within the user's requested investigation, call available analysis tools
|
|
183
|
+
directly. REA does not require permission grants or per-call approval flags.
|
|
184
|
+
Follow the declared request scope and the host's actual access requirements.
|
|
185
|
+
|
|
186
|
+
## Plan broader investigations
|
|
187
|
+
|
|
188
|
+
For requests that span multiple features or subsystems, use a staged workflow:
|
|
189
|
+
|
|
190
|
+
1. Turn the request into a checklist of questions and the evidence each answer
|
|
191
|
+
needs. Resolve target identity and constraints from the conversation and
|
|
192
|
+
workspace before asking for information again.
|
|
193
|
+
2. Inspect the current REA session, artifact identity, saved analysis database,
|
|
194
|
+
bookmarks, and prior evidence. Reuse matching state; do not open duplicate
|
|
195
|
+
sessions or repeat identical analysis.
|
|
196
|
+
3. Start with the smallest useful overview or inventory. Follow each question
|
|
197
|
+
from its entry point through relevant data and state changes to its result.
|
|
198
|
+
Batch related operations around a specific hypothesis, then expand only when
|
|
199
|
+
the returned evidence leaves a concrete gap.
|
|
200
|
+
4. Inspect relevant packaged resources and configuration alongside code when
|
|
201
|
+
they affect the question. Use format-aware inventory and parsers; do not
|
|
202
|
+
infer behavior from filenames, strings, or layout alone.
|
|
203
|
+
5. Corroborate a conclusion with the evidence type it requires. Use runtime
|
|
204
|
+
observation only when static evidence cannot answer the question and the
|
|
205
|
+
required host runtime and OS access are available. For JavaScript behavior,
|
|
206
|
+
run probes against the actual app through the available browser, Electron,
|
|
207
|
+
or process capture workflow.
|
|
208
|
+
6. Decompose work into independent questions. When parallel workers are
|
|
209
|
+
available and the questions do not depend on one another, assign distinct
|
|
210
|
+
scopes, point workers to existing evidence, and ask them to return sources,
|
|
211
|
+
conclusions, and unresolved gaps. Otherwise, work sequentially.
|
|
212
|
+
7. Keep a concise finding ledger linking each conclusion to Evidence IDs,
|
|
213
|
+
confidence/evidence type, search boundary, and remaining unknowns. Update
|
|
214
|
+
the shared index or investigation report so later passes can reuse results.
|
|
215
|
+
|
|
216
|
+
Before finishing, revisit the original checklist. Mark each question as
|
|
217
|
+
answered, partially answered, or unresolved based on its evidence; keep
|
|
218
|
+
bounded negative searches bounded, and do not describe a broad investigation
|
|
219
|
+
as complete while required questions remain open.
|
|
220
|
+
|
|
221
|
+
## Read only the relevant guide
|
|
222
|
+
|
|
223
|
+
- Native binaries, managed assemblies, archives, and extraction:
|
|
224
|
+
[references/native-and-artifacts.md](references/native-and-artifacts.md)
|
|
225
|
+
- ASARs, extracted JavaScript, feature tracing, and version comparison:
|
|
226
|
+
[references/javascript-applications.md](references/javascript-applications.md)
|
|
227
|
+
- Android APK declarations, classes, methods, and static references:
|
|
228
|
+
[references/android-applications.md](references/android-applications.md)
|
|
229
|
+
- Passive browser/Electron observation and static/runtime reconciliation:
|
|
230
|
+
[references/runtime-observation.md](references/runtime-observation.md)
|
|
231
|
+
- Evidence paging, comparisons, residual unknowns, and verification:
|
|
232
|
+
[references/evidence-workflows.md](references/evidence-workflows.md)
|
|
233
|
+
|
|
234
|
+
## Finish the task
|
|
235
|
+
|
|
236
|
+
Explain findings in plain language and tie them to returned evidence. When the
|
|
237
|
+
user asks to build something, use normal coding tools and separate observed
|
|
238
|
+
behavior from design choices. Close an opened native session with
|
|
239
|
+
`close_binary` when the investigation is complete.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Android application artifacts
|
|
2
|
+
|
|
3
|
+
Use the connected server's advertised Android tools. Repository main and npm
|
|
4
|
+
4.1.0 include this family. A skill installation alone cannot add it to an
|
|
5
|
+
older server.
|
|
6
|
+
|
|
7
|
+
Start with `inspect_android_package` on the caller's APK path for package
|
|
8
|
+
identity, manifest declarations, coverage, and inline Evidence. Use
|
|
9
|
+
`search_android_classes` to find candidates, `inspect_android_class` for one
|
|
10
|
+
class's members, `inspect_android_method` for decompilation, and
|
|
11
|
+
`trace_android_references` for incoming static references. Each call takes its
|
|
12
|
+
own APK path and explicit selectors; do not open a native session first.
|
|
13
|
+
Choose an `overload_index` from the class inventory when methods are ambiguous
|
|
14
|
+
instead of guessing.
|
|
15
|
+
|
|
16
|
+
The provider requires a separately supplied headless JADX MCP JAR 0.7.1 and
|
|
17
|
+
Java 17 or newer. `REA_JADX_MCP_JAR` selects the absolute JAR path; `JAVA_HOME`
|
|
18
|
+
can select Java. REA setup does not install or configure that JAR, and doctor
|
|
19
|
+
provider scopes cover Hopper/Ghidra rather than JADX. Use existing tools and
|
|
20
|
+
report missing prerequisites for the Android task specifically.
|
|
21
|
+
|
|
22
|
+
Linux and macOS use the POSIX owned-process boundary. Windows x64 requires the
|
|
23
|
+
matching bundled native controls and uses an owned Job Object with bidirectional
|
|
24
|
+
stdio. A full JDK, including `jdk.compiler`, is required on every host; Windows
|
|
25
|
+
`JAVA_HOME` selects `bin\java.exe`. Consult the Android guide for actual host
|
|
26
|
+
verification coverage. Calls use one worker and provider deadlines; optional
|
|
27
|
+
`REA_JADX_HEAP_MIB` selects the JVM heap. The APK is never launched,
|
|
28
|
+
and no emulator is required.
|
|
29
|
+
|
|
30
|
+
Manifest entries and decompiled text are static observations, not execution or
|
|
31
|
+
policy enforcement. Incoming references are recovered static relationships;
|
|
32
|
+
reflection, dynamic loading, and unresolved calls remain unknown. Preserve
|
|
33
|
+
artifact digests, locations, diagnostics, and incomplete coverage. For archive
|
|
34
|
+
members rather than code analysis, use `open_binary` and `inspect_artifact`.
|