Content
75%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, dense body: fully executable demos covering the common PDF operations, a clear summary→branch workflow, and an unusually useful error-fallback table encoding real failure modes. The gaps are consistent but small — a non-executable fragment in §2.5, abbreviated invocations outside §1, no explicit post-write verification step, and some repeated routing instructions that could be stated once.
Suggestions
Make §2.5 executable like the other demos (declare the pdf-lib/fs/degrees imports and show how buf is read) and write the OCR and DocConvert sections in the same full-argument invocation format used in §1 (e.g. PdfInspect { action: "render", filePath: "…", pageRange: "1-5" }) so every snippet is copy-paste ready.
Add an explicit verification checkpoint after write/convert operations — e.g. re-run PdfInspect(summary) on the output to confirm page count and encryption status — so batch operations like merge and watermark close the loop rather than relying on the demos' implicit console.log page counts.
State the 'all writes must go through JsSandbox' routing rule once and let the tool table carry it; consider moving the §2 demos (particularly the 30-line invoice example) to a references/ file so the main SKILL.md stays a lean overview.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | Efficient and assumes competence — no 'what is a PDF' padding, and the content is dense with non-obvious knowledge (checkedValue handling, CJK registerFont, pdfkit lacking save/restore). It falls short of anchor 5 because the 'all writes go through JsSandbox' routing rule is stated three times (intro line, tool table, loading callout) and the tool table partially restates the opening paragraph — minor trimmable redundancy, matching anchor 4. | 4 / 5 |
Actionability | Demos 2.1–2.4 are complete, copy-paste-ready scripts covering the common cases (create, watermark, merge, fill) with real edge-case fixes, and the error-fallback table gives concrete symptom→cause→fix guidance. Not anchor 5: §2.5 is a sketch with undefined variables (buf, fs, degrees are never imported/declared in that block), and the OCR/DocConvert sections use abbreviated invocations ('PdfInspect(summary)', "DocConvert(from='pdf', ...)") rather than the full argument format shown in §1 — minor gaps per anchor 4. | 4 / 5 |
Workflow Clarity | Sequences are clear: summary → branch on textType → per-branch action; form-fields before filling; pageRange for large PDFs; a 3-step OCR pipeline; and the fallback table provides error recovery. The destructive/batch cap is not triggered because writes target new output files, but validation is implicit only (demos log page counts) with no explicit 'verify the output' checkpoint after write/convert operations — anchor 4's 'clear sequence with most checkpoints present; minor validation gaps'. | 4 / 5 |
Progressive Disclosure | A single self-contained ~200-line doc with well-organized sections (Read / Write / OCR / Convert / Errors), a tool-responsibility table, and a prominent loading callout — easy to navigate, no buried or nested references. Not anchor 5: no reference files are used at all, and the ~110 lines of demo code (especially the full invoice example) could live in a references/ file to slim the main doc; not anchor 3: structure is good and nothing that clearly belongs elsewhere is inline to the point of bloat. | 4 / 5 |
Total | 16 / 20 Passed |