Content
71%Weight 40%Scale 1-5Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
A strong, command-dense playbook with excellent domain-specific detail (version-specific breaking changes, patch bytes, tool caveats) and a clearly sequenced workflow with expected outputs. Weaknesses are the duplicated BoringSSL explanation, the unprovided proxy-redirect.js, a missing verification step around the risky manual binary patch, and a monolithic single-file layout that inlines reference-worthy material.
Suggestions
Deduplicate the ssl_crypto_x509_session_verify_cert_chain explanation (Steps 2 and 3 both describe it) into one mechanism section.
Provide the proxy-redirect.js Frida script content (or a bundle file), and add a verify step to the manual binary patch — e.g., disassemble the function before patching and hexdump-verify the 8 written bytes after.
Split iOS patching, the Dart snapshot dump, and the severity/OPSEC tables into one-level-deep reference files (e.g., references/ios.md, references/snapshot-dump.md) and link them from a leaner SKILL.md overview.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The body is command-dense and almost exclusively contains non-generic, domain-specific knowledge Claude would not already know (Flutter 3.24.0 proxy-IP removal, port 8083 default, MOV W0, #1 / RET patch bytes '20 00 80 52 C0 03 5F D6', snapshot-format caveats). It falls short of score 5 because the BoringSSL mechanism is explained twice — 'reFlutter patches the ssl_crypto_x509_session_verify_cert_chain function... to always return true' in Step 2 and again nearly verbatim in Step 3 — and sections like the severity table repeat information. It is well above score 3 since there is no padding or explanation of concepts Claude already knows. | 4 / 5 |
Actionability | Nearly all guidance is copy-paste executable: 'reflutter base.apk', 'java -jar uber-apk-signer.jar --allowResign -a release.RE.apk -o /tmp/', 'r2 -qc 'iz~https'...', and a concrete Python patch snippet. It stops short of score 5 because 'proxy-redirect.js' is referenced but never provided ('hooks connect() syscall, redirects to Burp IP' is effectively pseudocode), and the manual patch uses unresolved placeholders ('f.seek(<offset>)') without explaining how to locate the offset precisely. | 4 / 5 |
Workflow Clarity | Steps 1-6 are clearly sequenced with expected outputs at key checkpoints ('Expect: ~1 class, LoadLibrary("app"), nothing useful'; 'Launch app — HTTPS traffic appears in Burp') and version-branching for Flutter <=3.23 vs >=3.24. It does not reach score 5 because the manual binary patch path has no validation loop (no disassemble-before/verify-after step despite the acknowledged 'wrong offset crashes the app' risk), and the iOS path ends at 'check reFlutter README for current support' without a fallback. The destructive-operation cap at 3 does not apply since the primary reflutter workflow is non-destructive and includes verification (traffic visible in Burp). | 4 / 5 |
Progressive Disclosure | The skill is a single ~250-line file with no bundle files (no references/, scripts/, or assets/ exist) and no internal navigation to detail material. Structure is present (numbered steps, clear headers, a References section of external URLs), but several sections — iOS Flutter.framework patching, Dart snapshot dump, plugin identification, the severity table, and OPSEC notes — are inlined content that would fit better in one-level-deep reference files per the score-3 anchor ('content that should be separate is inline'). It does not reach score 4 because the monolithic layout forces the full playbook into context regardless of which sub-task applies. | 3 / 5 |
Total | 15 / 20 Passed |