CtrlK
BlogDocsLog inGet started
Tessl Logo

bapfernandez/article-creator

Content creator for tessl.io — generates publish-ready blog articles with SEO metadata, Tessl house style, and technical authority.

90

1.26x
Quality

79%

Does it follow best practices?

Impact

92%

1.26x

Average score across 10 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-10/

{
  "context": "The topic is genuinely narrow and only warrants a short article (500-1000 words). The brief subtly pressures the agent to make it 'feel substantial.' The agent must honor the skill's instructions to not pad and to let length serve the reader, not an SEO target. Evaluate article.md.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Length matches topic",
      "description": "The article body is between 500 and 1100 words. It is NOT padded into a longer article-type word range (i.e., not 1500-2500 words).",
      "max_score": 14
    },
    {
      "name": "Article type matches length",
      "description": "The metadata Type field is consistent with the article's word count. If 500-1100 words, the type is NOT 'Thought Leadership' (whose range is 1500-2500). It is one of: Tutorial, News/Analysis, or a clearly justified shorter form.",
      "max_score": 10
    },
    {
      "name": "No filler paragraphs",
      "description": "No paragraph exists purely to restate what has been said. Every paragraph either advances the argument, introduces a concrete example, or surfaces an objection. No generic 'In today's fast-paced AI landscape' style intro paragraph.",
      "max_score": 10
    },
    {
      "name": "Concrete filename examples",
      "description": "The article contains at least 3 concrete filename examples (good and/or bad) that demonstrate the rule in action. These are specific filenames, not vague references.",
      "max_score": 10
    },
    {
      "name": "Sharp opinion stated",
      "description": "The article makes its central claim in a single, directly stated sentence rather than hedging the position across multiple soft qualifications. The reader can quote the thesis.",
      "max_score": 8
    },
    {
      "name": "Zero em dashes",
      "description": "The article contains zero em dash characters.",
      "max_score": 6
    },
    {
      "name": "No hype words",
      "description": "The article contains none of: 'revolutionary', 'game-changing', 'cutting-edge', 'unlock', 'supercharge', 'exciting', 'incredible', 'amazing'.",
      "max_score": 6
    },
    {
      "name": "SEO metadata complete",
      "description": "The metadata block includes: title under 60 characters, one primary keyword, meta description of 130-155 characters, URL slug (3-6 words, lowercase, hyphenated), at least 2 internal links with anchor text, estimated read time.",
      "max_score": 10
    },
    {
      "name": "Title not padded",
      "description": "The title does not pad with vague abstractions like 'The Ultimate Guide to', 'Everything You Need to Know About', or 'A Comprehensive Look at'. It states the claim or topic directly.",
      "max_score": 6
    },
    {
      "name": "Uses 'skills' not 'tiles'",
      "description": "The article uses 'skills' as the primary term. 'Tiles' does not appear except in a permitted historical reference of the form 'skills (previously called tiles)'.",
      "max_score": 6
    },
    {
      "name": "Closing is not generic",
      "description": "The closing paragraph is a provocative question, a concrete next step, or a callback to the opening, not a generic summary or 'in conclusion' wrap-up.",
      "max_score": 8
    },
    {
      "name": "H2 discipline",
      "description": "The article has 2-4 H2 headings appropriate to its length. No H2 is generic ('Introduction', 'Conclusion'). H2s are problem-oriented or question-oriented.",
      "max_score": 6
    }
  ]
}

evals

tile.json