CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

obsidian-linked-research

Fetch a URL, summarize it, and save as a structured research note in the current Obsidian Research/Library taxonomy. Use the master Research Library MOC as the source of truth for tags, folder routing, and freshness updates.

58

Quality

73%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./.github/skills/obsidian-linked-research/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

70%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

An exceptionally actionable, rigorously validated workflow — every step has executable commands, explicit fallbacks, and stop-gates, which is rare. The costs are token efficiency and structure: the same environment traps are restated up to four times, dated incident logs are woven into the instructions, and everything (routing table, template, gotchas) is packed into one monolithic SKILL.md instead of one-level-deep reference files.

Suggestions

Split environment gotchas (Windows cp1252/UTF-16LE, PowerShell `$` interpolation, heredoc rules, filename emoji traps) into references/windows-gotchas.md and keep one canonical statement plus a pointer in SKILL.md, eliminating the 3-4x repetition of the LIVE/DEGRADED read() trap.

Move the dated incident log ("observed 2026-09-17 → 09-19", "Measured 2026-09-22", "caught 2026-10-02") into a short 'Why these rules exist' changelog section or file so time-sensitive detail stops padding the live instructions.

Extract the note template and the 13-bucket routing table into references/note-template.md and references/routing.md, leaving SKILL.md a lean overview with clearly signaled one-level-deep links.

DimensionReasoningScore

Conciseness

At ~1,190 lines the body repeats the same traps multiple times: the LIVE-vs-DEGRADED `ob.read()` semantics are explained in the Step 0 trap box, again in Step 2.5a, again in the Step 4 slug-check warning, and again as Rule 19; the heredoc prohibition appears in Step 4 and Rules 4-5. Dated incident notes ("Measured 2026-09-22", "observed 2026-09-17 → 09-19", "caught 2026-10-02") are time-sensitive and inline rather than in a changelog/deprecated section. This matches "noticeably verbose; several unnecessary explanations or padded sections". Not 1 because none of it explains concepts Claude already knows — every trap is genuinely environment-specific; not 3 because the repetition and incident-log padding could realistically halve the token count.

2 / 5

Actionability

Every step has copy-paste-ready commands: the preflight probe one-liner, `python .github/skills/obsidian-linked-research/scripts/fetch.py "<url>"`, the executable `prune_recently_added()` function, the exact image-filter token list (`w_150`, `profile_images`, `default-light`), and the exact `chr(0x1F5FA) + chr(0xFE0F)` filename construction. Fully executable with specific examples covering tweets, web pages, threads, and degraded mode.

5 / 5

Workflow Clarity

Steps 0-8 are clearly sequenced with explicit validation checkpoints and feedback loops: the preflight probe ("run this first, every time"), the mandatory URL-dedup stop gate ("If a match is found, stop"), the `note_text()` assert on the MOC, the explicit truncation check `len(result.get('content', '')) >= 8000`, the transient retry ("retry once... if it fails twice, report"), post-write read-back verification, and the Substack archive-API fallback. This matches the anchor's validate-fix-retry pattern.

5 / 5

Progressive Disclosure

The body is well-sectioned with clear step headers, and the one bundle file (scripts/fetch.py, 767 lines) is real and correctly referenced. But there are no reference files at all: content that clearly belongs in separate files is inlined — the 13-row routing table, the full note template, the Windows/PowerShell gotcha compendium, and the pruning code all live inside a monolithic ~1,200-line SKILL.md. This matches "some structure but could be better organized; content that should be separate is inline". Not 2 because the structure and navigation within the file are strong; not 4 because essentially all reference-worthy material is inlined rather than split out one level deep.

3 / 5

Total

15

/

20

Passed

Description

66%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A specific, well-scoped description that names three concrete actions and the Obsidian Research/Library niche with unusual precision. Its main weakness is the absence of any explicit 'Use when...' trigger guidance, which caps completeness and leaves invocation conditions to be inferred from the body's When-to-Use table.

Suggestions

Append a trigger clause, e.g. "Use when the user shares a URL, tweet, or article to research and save it to Obsidian (e.g. 'research this', 'save this article', 'save this tweet')".

Mention the tweet/X rich-content path and the duplicate-detection gate so the description reflects the skill's two most distinctive capabilities.

Include the word "article" and "link" as natural trigger synonyms users would say.

DimensionReasoningScore

Specificity

Quotes: "Fetch a URL, summarize it, and save as a structured research note in the current Obsidian Research/Library taxonomy" plus "source of truth for tags, folder routing, and freshness updates" — several concrete actions with routing/tag specifics, matching the anchor "lists several specific actions; minor gaps in coverage". Not 5 because real capabilities (tweet/X enrichment, URL dedup, thesis drift check) are unmentioned; not 3 because more than 1-2 actions are named with concrete routing detail.

4 / 5

Completeness

The "what" is clear ("Fetch a URL, summarize it, and save as a structured research note..."), but there is no "Use when..." clause or equivalent trigger guidance — "Use the master Research Library MOC as the source of truth" is an instruction, not a trigger. Per the judging guideline, a missing 'Use when' clause caps completeness at 3.

3 / 5

Trigger Term Quality

Natural terms present: "Fetch a URL", "summarize", "research note", "Obsidian" — phrases a user would plausibly say. Not 5 because common user phrasings like "save this article", "tweet", "link", or "web page" are absent; not 3 because coverage goes beyond a single generic keyword to include the domain vocabulary users of this vault would actually use.

4 / 5

Distinctiveness Conflict Risk

The niche is distinct: "structured research note in the current Obsidian Research/Library taxonomy" and "master Research Library MOC" would not fire for generic PDF/document skills. Not 5 because "Fetch a URL, summarize it" overlaps with sibling skills in this vault (obsidian-daily-research, last30days) and generic summarize/save requests; not 3 because the taxonomy-specific vocabulary keeps it mostly distinguishable.

4 / 5

Total

15

/

20

Passed

Validation

87%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (1201 lines); consider splitting into references/ and linking

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

14

/

16

Passed

Repository

0xRabbidfly/Eric-Cartman

Path

.github/skills/obsidian-linked-research/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.