CtrlK
BlogDocsLog inGet started
Tessl Logo

joelclaw-web

Update and maintain joelclaw.com — the Next.js web app at apps/web/. Use when writing blog posts, editing pages, updating the network page, changing layout/header/footer, adding components, or fixing anything on the site. Hard content triggers: 'write article about X' (draft in Convex), 'publish article <slug>' (set draft=false + revalidate tags/paths). Also triggers on: 'update the site', 'write a post', 'fix the blog', 'joelclaw.com', 'update network page', 'add a page', 'change the header', or any task involving the public-facing web app.

72

Quality

91%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

82%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 strong, information-dense site-maintenance skill: nearly everything is project-specific and executable, workflows include explicit verification steps, and the OPSEC section is a model of concrete constraints. The main gaps are minor redundancy between the two publish paths, absent error-recovery feedback loops after verification, and no references/ split (or asset linking) for the design-system and key-file reference material.

Suggestions

Deduplicate the revalidation tags/paths list — it appears in full in both the 'publish article <slug>' workflow and 'Adding a New Post' step 4; state it once and cross-reference, which would also tighten conciseness toward a 5.

Add a feedback loop after the publish verification step (e.g., 'if /feed.xml or the homepage is stale, re-POST /api/revalidate and re-verify; if still stale, confirm fields.draft=false in Convex') to lift workflow clarity from 4 to 5.

Move the Design System spec and Key Files table into a references/ file (e.g., references/design-system.md) and either link the assets/ logos from the body or remove them, so the SKILL.md body is a leaner overview with well-signaled one-level-deep references.

DimensionReasoningScore

Conciseness

The body is dense with project-specific facts Claude cannot know (OPSEC alias rules, Convex content model, revalidation surfaces, design tokens, the ADR H1-strip regex) and explains nothing Claude already knows. It falls short of the score-5 anchor because of minor duplication — the revalidation tags/paths list appears in full both in the "publish article" workflow and again in "Adding a New Post" step 4, and the draft/publish steps substantially repeat each other.

4 / 5

Actionability

Guidance is fully executable: exact file paths ("lib/posts.ts → Convex-first articles"), a concrete revalidation payload ("POST /api/revalidate" with enumerated tags "post:<slug>, article:<slug>, articles" and paths "/, /<slug>, /<slug>.md, /<slug>/md, /feed.xml, /sitemap.md"), a copy-paste regex ("content.replace(/^#\s+(?:ADR-\d+:\s*)?.*$/m, \"\")"), runnable commands ("bun scripts/seed-adrs-discoveries.ts"), env-var names, and a complete MDX frontmatter schema. This matches the score-5 anchor; per the scoring notes, an instruction-only skill needs concrete specific guidance, which is abundantly present.

5 / 5

Workflow Clarity

Both hard-trigger workflows are clearly sequenced and include explicit verification checkpoints ("Verify /, /<slug>, /<slug>.md, and /feed.xml include the published post"; "Verify route + markdown twin + homepage + feed consistency"), and the network-page workflow sequences state-check → OPSEC → update. It stops short of the score-5 anchor because there are no feedback loops — nothing instructs what to do when verification fails (e.g., re-run revalidation, re-check the draft flag and Convex state) — which the batch publish/revalidate operation would benefit from.

4 / 5

Progressive Disclosure

The body is well-sectioned (OPSEC, Content Model, Hard Trigger Workflow, Media Embeds, Writing Voice, Design System, Key Files, ADR Rules, Adding a New Post, Network Page) and everything is one level deep with no nested references. Scored against the actual bundle (no references/ or scripts/ exist; only assets/large-logo.png and assets/small-logo.svg, which are never referenced from the body), it matches the score-4 anchor ('good structure; most content appropriately placed; minor organization gaps'): the ~145-line body exceeds the 50-line simple-skill threshold, and the design-system spec and key-files table are reference material that could live in separate files, with the unreferenced assets a minor navigation gap.

4 / 5

Total

17

/

20

Passed

Description

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

An exemplary description: it states the what (maintaining the joelclaw.com Next.js app), the when (explicit "Use when" plus hard triggers and a list of natural trigger phrases), and stays tightly scoped to one site. Third-person/imperative voice is consistent and no fluff or over-claims are present.

DimensionReasoningScore

Specificity

The description enumerates multiple concrete actions — "writing blog posts, editing pages, updating the network page, changing layout/header/footer, adding components, or fixing anything on the site" — plus concrete trigger workflows ("draft in Convex", "set draft=false + revalidate tags/paths"), giving comprehensive coverage of the skill's capabilities. It exceeds the score-4 anchor ('several specific actions; minor gaps') because the action list plus the two hard-trigger workflows covers the skill's full scope.

5 / 5

Completeness

It explicitly answers both questions: what ("Update and maintain joelclaw.com — the Next.js web app at apps/web/") and when ("Use when writing blog posts... Hard content triggers... Also triggers on...") with concrete trigger phrases. This is a direct match to the score-5 anchor/example; the explicit "Use when" clause rules out the score-3 cap.

5 / 5

Trigger Term Quality

Natural user phrasings are extensively covered with synonyms: "write article about X", "publish article <slug>", "update the site", "write a post", "fix the blog", "joelclaw.com", "update network page", "add a page", "change the header". This matches the score-5 anchor (comprehensive natural terms including synonyms), well above score 4 ('a few natural terms missing') — post/article/blog variants are all present.

5 / 5

Distinctiveness Conflict Risk

The skill is anchored to a clear niche — a single named site ("joelclaw.com", "the Next.js web app at apps/web/") — with site-specific triggers like "publish article <slug>" and "update network page". Minor generic phrases ("add a page", "change the header") exist but are scoped by the site framing, so conflict risk is minimal, matching the score-5 anchor rather than score 4's 'minor overlap risk with closely related skills'.

5 / 5

Total

20

/

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

referenced_paths_exist

Referenced path issues: 3 missing

Warning

Total

14

/

16

Passed

Repository
joelhooks/joelclaw
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.