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.
Files changed (28) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +11 -1
  2. package/bundled-skills/agent-reels/SKILL.md +15 -4
  3. package/bundled-skills/ask-human-expert/SKILL.md +141 -0
  4. package/bundled-skills/datacircle/SKILL.md +128 -0
  5. package/bundled-skills/equibles/SKILL.md +185 -0
  6. package/bundled-skills/jet-browser/SKILL.md +155 -0
  7. package/bundled-skills/qrx/SKILL.md +131 -0
  8. package/bundled-skills/qrx/references/prompt-guide.md +30 -0
  9. package/bundled-skills/qrx/references/rest-api.md +40 -0
  10. package/bundled-skills/reverse-engineer-anything/SKILL.md +239 -0
  11. package/bundled-skills/reverse-engineer-anything/references/android-applications.md +34 -0
  12. package/bundled-skills/reverse-engineer-anything/references/evidence-workflows.md +40 -0
  13. package/bundled-skills/reverse-engineer-anything/references/javascript-applications.md +70 -0
  14. package/bundled-skills/reverse-engineer-anything/references/native-and-artifacts.md +146 -0
  15. package/bundled-skills/reverse-engineer-anything/references/runtime-observation.md +28 -0
  16. package/bundled-skills/tastegate/SKILL.md +129 -0
  17. package/bundled-skills/tastegate/references/THIRD_PARTY_NOTICES.md +25 -0
  18. package/bundled-skills/tastegate/references/craft-floor.md +53 -0
  19. package/bundled-skills/tastegate/references/direction.md +59 -0
  20. package/bundled-skills/tastegate/references/impeccable-LICENSE-Apache-2.0.txt +191 -0
  21. package/bundled-skills/tastegate/references/taste-skill-LICENSE-MIT.txt +21 -0
  22. package/bundled-skills/tastegate/scripts/gate.py +401 -0
  23. package/bundled-skills/url-to-markdown/SKILL.md +74 -0
  24. package/bundled-skills/uxkin-research/SKILL.md +127 -0
  25. package/bundled-skills/what-could-break/SKILL.md +128 -0
  26. package/bundled-skills/what-could-break/references/LICENSE-pstack.txt +21 -0
  27. package/package.json +1 -1
  28. 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`.