Content
92%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 dense, highly actionable body: exact node/parameter names, executable Code-node snippets for both read and write, an explicit execution-inspection verification loop, and exemplary one-level reference routing with read-when conditions. The only cost is deliberate redundancy — the agent-tool and CDN rules each appear in three-plus places (rules, 'What's NOT available', anti-patterns, checklist, closing mnemonic).
Suggestions
Consolidate the 'What's NOT available' section: '$fromAI() cannot carry binary' is the only new fact there — 'Tool arguments and returns are JSON only' and 'n8n ships no CDN or public file host' already appear as rules 2/3 and in the CDN section, so fold them into the anti-patterns table or drop them.
Drop the closing 'Remember: two slots, side by side...' line — the opening paragraph and the Quick Reference Checklist already carry that mnemonic, and the checklist rows duplicate it a third time.
The anti-patterns table and the Quick Reference Checklist overlap on ~5 of 9 rows; consider keeping the table (with fixes) and trimming the checklist to only non-overlapping verification items.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The body is efficient and assumes Claude's competence (no explaining what base64 or PDFs are; every section carries n8n-specific rules like responseFormat, combineByPosition, passthroughBinaryImages semantics), but there is real repetition: "Tool arguments and returns are JSON only" restates rule 2, "n8n ships no CDN or public file host" restates the CDN section, and the closing "Remember: two slots, side by side" line restates the intro and checklist. That places it at anchor 4 ('minor instances that could be trimmed') rather than anchor 5 ('every token earns its place'). | 4 / 5 |
Actionability | Fully executable, copy-paste-ready guidance: "const buffer = await this.helpers.getBinaryDataBuffer(0, 'data')" with "binary: $input.item.binary, // pass the binary through, or it's gone", a complete write example (Buffer.from(...).toString('base64') with mimeType/fileName/fileExtension), exact parameter names ("responseFormat: 'file'", includeOtherFields, binaryPropertyOutput, executeOnce: true), and a concrete tool-return JSON shape — matching anchor 5's 'specific examples cover the common cases'. | 5 / 5 |
Workflow Clarity | Multi-step processes are clearly sequenced (numbered inbound upload/stage/inject/fetch steps with the re-merge synchronization barrier and executeOnce safeguard for N files) and validation is an explicit feedback loop: "n8n_executions to pull that execution, and inspect per-node output for the binary slot... The node where binary last appears is the node before the strip. That's where the pass-through or Merge goes", plus a 9-item checklist — anchor 5. | 5 / 5 |
Progressive Disclosure | The body is an overview with well-signaled one-level-deep references: inline pointers at point of need ("See BINARY_BASICS.md for the full slot anatomy, mime types, and size limits"; "Full patterns, hash strategy, storage choices... are in AGENT_TOOL_BINARY.md") plus a dedicated "Reference files" table with per-file "Read when" conditions — exactly the anchor-5 pattern. Note: the four referenced .md files are not present in the submitted bundle (no references/ directory), so their contents could not be verified; the score reflects the SKILL.md's disclosure structure. | 5 / 5 |
Total | 19 / 20 Passed |