Content
77%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.
An operationally excellent skill: every step is executable with real commands, exact schemas, and unusually thorough validation and failure-mode handling for a batch scraping workflow. Its weaknesses are length — several paragraphs argue for design decisions instead of instructing, and /rank interop documentation is inlined — and reliance on referenced files (search-queries.md, tools/) that are not present in this bundle.
Suggestions
Trim the design-rationale prose in Step 4 (the freehire-search anecdote, the source/portal-field justifications) to one-line rules stating what to do; move the full /rank schema-extension and field-evolution documentation to a reference file and keep only the fields this skill writes.
Ship the referenced files in the bundle or inline the essential search strategy: Step 0 and Step 1 both point to search-queries.md, which does not exist next to this SKILL.md — at minimum deduplicate the two identical instructions.
Consolidate the accreted sub-steps (2.5, 4.5, 4.75) into a renumbered main sequence or move the health-check procedure to its own reference so the core scrape pipeline reads linearly.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The body is dense with genuine non-obvious operational knowledge (ghost-job detection, fragment URLs, rate-limits-are-not-breakage), but several long paragraphs justify design decisions rather than instruct — e.g. the posted_date rationale recounting "a freehire-search posting dated 2024-05-13 was scraped and ranked Strong Fit at position 1 of 133, its own scoring note observing the listing 'may be long stale'", and the source-field paragraph's "a presented job with no entry here at all points at fabrication, which Rule 1 forbids". This is 'mostly efficient but includes some unnecessary explanation or could be tightened' (anchor 3), not anchor 4 — the rationale prose is substantial and repeated, and Step 0/Step 1 open with the identical instruction to read search-queries.md. | 3 / 5 |
Actionability | Guidance is fully executable throughout: copy-paste commands ("python3 tools/scrape_state.py candidates --results \"<temporary search results.json>\"", "python3 tools/job_key.py --company ... --title ... --url ..."), an exact stored-entry JSON schema, concrete LinkedIn URL templates with encoding and origin parameters, and explicit per-step decision rules. Where exact flags vary, it correctly defers to each portal's documented SKILL.md rather than guessing, and the specific example outputs ("skipped (disabled):", "health:" lines) cover the common cases — matching anchor 5. | 5 / 5 |
Workflow Clarity | Steps 0 through 6 are clearly sequenced with explicit validation checkpoints and feedback loops despite being a batch operation: the candidates command rechecks dedup before any detail fetch, malformed hits are reported and skipped, failed CLIs log-and-continue, and the health check escalates through a bounded probe/retry loop with verdicts ("Only then is the verdict broken... A 429 or block page is never evidence of breakage"). The 'Important Rules' section acts as a closing checklist. This matches anchor 5 ('clear sequence with explicit validation steps; feedback loops for error recovery; checklists') — the batch-operation cap at 3 does not apply since validation is pervasive. | 5 / 5 |
Progressive Disclosure | References are clearly signaled when made ("Read `search-queries.md` (this directory) for the search strategy"; per-portal SKILL.md files; `.claude/skills/job-application-assistant/09-web-research.md`), but no bundle files ship alongside this SKILL.md — search-queries.md and tools/ are absent from the bundle, so the primary search strategy is not actually reachable here. Additionally, substantial material that belongs in a reference file is inlined: the full /rank schema-extension documentation (rank_score, rank_verdict, veto fields, legacy-field migration notes) and the deadline/posted_date field-evolution prose run for many lines inside Step 4, and step numbers accrete (4.5, 4.75) rather than reorganizing. This is anchor 3 ('some structure... content that should be separate is inline'), not anchor 4's 'most content appropriately placed'. | 3 / 5 |
Total | 16 / 20 Passed |