CtrlK
BlogDocsLog inGet started
Tessl Logo

blog-ingest

Feed and whole-publication ingestion: turn an entire blog, newsletter, or RSS/Atom archive into brain source pages. Covers feed discovery, pagination walking, normalization to a common article shape, canonical-URL dedup, idempotent re-runs, 429 pacing, and empty-husk repair. This is the PUBLICATION-scope skill — a single article URL routes to idea-ingest instead. Per-article enrichment hands off to the brain-ingest-gate skill; public posts only (gated content is skipped, never worked around).

64

Quality

78%

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 ./plugin-variants/gbrain-daily/skills/blog-ingest/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

81%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.

A strongly actionable, well-sequenced procedural skill body with explicit validation and repair loops for batch ingestion. Its weaknesses are repetition of the paywall and scope rules across sections, and a fully inline structure that could offload platform-specific and format detail to reference files.

Suggestions

State the public-only/gated-content rule once (in the Contract) and have the Substack and Anti-Patterns sections reference it in one line instead of restating it fully.

Move the Substack platform specifics and the Output Format templates into a reference file (e.g. references/platforms.md) and keep a one-line pointer, reducing inline length and repetition.

Trim the rationale prose in the untrusted-content section (e.g. the 'Why this matters' paragraph) to a pointer at the shared convention, which already carries the cross-skill canon.

DimensionReasoningScore

Conciseness

The body is mostly efficient and operational, but the public-only/paywall rule is stated three times (Contract, Substack section, Anti-Patterns) and the scope boundary is repeated across the Dedup table, the scope test, and Anti-Patterns; the untrusted-content section also self-describes as an expansion of a shared convention. These are more than minor instances of content that could be trimmed.

3 / 5

Actionability

Guidance is fully concrete throughout: exact conventional feed paths (/feed, /rss.xml, /sitemap.xml), specific pacing values (1.5s between fetches, backoff 5s doubling to a 30s cap), executable commands (gbrain sync --no-pull --no-embed), a complete output-format template, and a worked slug-collision remedy (weekly-update-a1b2c3).

5 / 5

Workflow Clarity

The six-step procedure is clearly sequenced with explicit validation checkpoints for a batch operation: enumerate and report the candidate count before fetching, the 3-5-post test ramp, check-before-write canonical dedup, the husk detect/repair/delete loop, and run-manifest resumption for killed runs.

5 / 5

Progressive Disclosure

No bundle files exist, so all detail is inline in one ~325-line file, but sections are well organized and external references (conventions/brain-first.md, untrusted-content.md, test-before-bulk.md, sibling SKILL.md paths) are one level deep and clearly signaled. Platform-specific detail (Substack handling, output templates) could be split into reference files, keeping this just below the top anchor.

4 / 5

Total

17

/

20

Passed

Description

75%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 highly specific, well-bounded description that clearly states what the skill does and how it differs from its siblings. Its main gap is the missing explicit 'Use when...' trigger clause inside the description text itself — trigger guidance lives in a separate frontmatter field.

Suggestions

Add an explicit 'Use when...' sentence to the description (e.g. "Use when the user asks to ingest an entire blog, newsletter, or RSS/Atom archive") so the 'when' travels with the description text rather than only the triggers field.

Fold one or two of the most natural user phrasings from the triggers list (e.g. "save this whole substack", "backfill this blog") into the description body to broaden natural-term coverage.

State the writes_to destinations (sources/ pages) outcome in one clause to make the deliverable explicit without adding length.

DimensionReasoningScore

Specificity

The description enumerates seven concrete actions — "feed discovery, pagination walking, normalization to a common article shape, canonical-URL dedup, idempotent re-runs, 429 pacing, and empty-husk repair" — which is comprehensive coverage of the skill's operations, matching the top anchor rather than the 'minor gaps' level below.

5 / 5

Completeness

The 'what' is clear ("turn an entire blog, newsletter, or RSS/Atom archive into brain source pages") but the description lacks an explicit 'Use when...' clause; routing is only weakly implied by "a single article URL routes to idea-ingest instead", so completeness is capped per the guideline.

3 / 5

Trigger Term Quality

Natural terms are present ("blog", "newsletter", "RSS/Atom archive", "feed", "publication") giving good keyword coverage, but a few natural user phrasings (e.g. "substack", "backfill", "save every post") appear only in the separate triggers field, not the description itself.

4 / 5

Distinctiveness Conflict Risk

The description draws sharp boundaries against named sibling skills ("a single article URL routes to idea-ingest instead", "Per-article enrichment hands off to the brain-ingest-gate skill"), giving a clear niche with minimal conflict risk.

5 / 5

Total

17

/

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

frontmatter_unknown_keys

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

Warning

relative_links

Relative link issues: 3 suspicious

Warning

Total

14

/

16

Passed

Repository
garrytan/gbrain
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.