frontend.im

Scanned as a content site

Agent-ready

Can AI bots and agents reach and use it?

100/100

Discovery
100
Content
100
Bot access
100
Protocols
100

Answer-ready

Will AI cite it in answers?

100/100

SEO
100
GEO
100
AEO
100

By area

Bots100Schema100Citability100Entity100Indexing100llms.txt100
Hollow marker = not scored for this site.

Top fixes, biggest impact first

Nothing to fix. Every scored check passed.

All checks

40 checks: 25 passed 0 partial 0 failed

Agent-ready

Discoverability

Passrobots.txtrobots.txt found: 2 groups, 1 sitemap

robots.txt is the first file every crawler and AI agent reads to learn what it may fetch.

What we saw

  • https://frontend.im/robots.txtHTTP 200
    # Search engines and AI assistants may index and quote this site; it may not be used for model training
    User-agent: *
    Content-Signal: search=yes, ai-input=yes, ai-train=no
    Allow: /
    Disallow: /admin
    Disallow: /api/admin
    
    # Training-only crawlers: Content-Signal is a request, so block them outright
    User-agent: GPTBot
    User-agent: ClaudeBot
    User-agent: CCBot
    User-agent: Google-Extended
    User-agent: Applebot-Extended
    User-agent: cohere-ai
    Disallow: /
    
    Sitemap: https://frontend.im/sitemap.xml
    
PassXML sitemapSitemap found (2 URLs)

A sitemap lists every page so crawlers and agents don’t have to discover them by following links.

What we saw

  • https://frontend.im/sitemap.xmlHTTP 200
    <?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
      <url><loc>https://frontend.im/</loc></url>
      <url><loc>https://frontend.im/cv</loc></url>
    </urlset>
    
PassLink headersLink header advertises alternate (markdown)

Link response headers point agents at machine-readable versions of your site without parsing HTML.

What we saw

  • https://frontend.im/HTTP 200
    Link: </sitemap.xml>; rel="sitemap", </llms.txt>; rel="alternate"; type="text/markdown"

Content

PassMarkdown for agentsHomepage served as Markdown on request

Serving Markdown on `Accept: text/markdown` gives agents clean text at a fraction of the tokens.

What we saw

  • https://frontend.im/HTTP 200
    content-type: text/markdown; charset=utf-8
    vary: Accept
Passllms.txtllms.txt found: # Tusko Trush

llms.txt gives language models a curated, plain-text map of your site.

What we saw

  • https://frontend.im/llms.txtHTTP 200
    # Tusko Trush
    
    > 15+ years experienced front-end developer.
    > Team Lead / Full-Stack JS Developer at TraffBand
    
    - Location: Lviv, Ukraine
    - Email: tusko@trush.email
    - GitHub: https://github.com/tusko
    - CV: https://frontend.im/cv
    
    ## Experience
    
    ### Team Lead / Full-Stack JS Developer at [TraffBand](https://www.traffband.com/)
    
    08.2025 / Present, SEO affiliate team
    
    - Lead the front-end and back-end teams – set full-stack technical direction, own architecture across the platform, and mentor eng…

Bot access

PassAI search & user agents allowedAll 15 AI search & user agents allowed (5 training bots blocked — fine)

If AI search and assistant bots are blocked, your site can’t be quoted or linked in AI answers.

What we saw

  • https://frontend.im/robots.txtHTTP 200
    # Search engines and AI assistants may index and quote this site; it may not be used for model training
    User-agent: *
    Content-Signal: search=yes, ai-input=yes, ai-train=no
    Allow: /
    Disallow: /admin
    Disallow: /api/admin
    
    # Training-only crawlers: Content-Signal is a request, so block them outright
    User-agent: GPTBot
    User-agent: ClaudeBot
    User-agent: CCBot
    User-agent: Google-Extended
    User-agent: Applebot-Extended
    User-agent: cohere-ai
    Disallow: /
    
    Sitemap: https://frontend.im/sitemap.xml
    
PassContent SignalsContent-Signal (*): search=yes, ai-input=yes, ai-train=no

Content-Signal says how AI may use your content: search, answers, or training.

What we saw

  • https://frontend.im/robots.txtHTTP 200
    Content-Signal: search=yes, ai-input=yes, ai-train=no
InfoWeb Bot AuthNo signature key directory (only needed if you send bots)

Only matters if you run bots: a key directory lets sites verify your signed requests.

What we saw

  • https://frontend.im/.well-known/http-message-signatures-directoryHTTP 404

Protocol discovery

PassAPI catalogAPI catalog with 1 entry

An RFC 9727 API catalog lets agents find your APIs and their OpenAPI descriptions in one request.

What we saw

  • https://frontend.im/.well-known/api-catalogHTTP 200
    content-type: application/linkset+json
    {"linkset":[{"anchor":"https://frontend.im/api","service-desc":[{"href":"https://frontend.im/openapi.json","type":"application/vnd.oai.openapi+json"}],"service-doc":[{"href":"https://frontend.im/llms.txt","type":"text/markdown"}]}]}
PassAgent skills index1 skill published

A skills index hands agents ready-made instructions for using your site.

What we saw

  • https://frontend.im/.well-known/agent-skills/index.jsonHTTP 200
    content-type: application/json
    {
      "$schema": "https://schemas.agentskills.io/discovery/0.2.0/schema.json",
      "skills": [
        {
          "name": "frontend-im",
          "type": "skill-md",
          "description": "Learn about Tusko Trush from frontend.im: profile, work experience, portfolio projects, CV and contact.",
          "url": "/.well-known/agent-skills/frontend-im/SKILL.md",
          "digest": "sha256:985a0a38367f9bee07eb1818d8172c0b674cbc09ac835aa42f4ff7dc3044f51f"
        }
      ]
    }
    
Not applicable8 checks don’t apply to a content site

SEO — classic search

Snippet

PassPage titleTitle present (52 characters)

The <title> is the headline search engines and AI answers show for your site.

What we saw

  • https://frontend.im/HTTP 200
    <title>Tusko Trush – Vue.js & Nuxt Team Lead, Lviv, Ukraine</title>
PassMeta descriptionMeta description present (153 characters)

A good description is often used as the snippet under your result.

What we saw

  • https://frontend.im/HTTP 200
    description: Front-end team lead and full-stack JS developer in Lviv, Ukraine. 15+ years with Vue.js, Nuxt, TypeScript and Cloudflare Workers. Projects, repos and CV.
PassOpenGraph tagsog:title, og:description and og:image present

OpenGraph tags control how links to your site look when shared or previewed.

What we saw

  • https://frontend.im/HTTP 200
    og:title: Tusko Trush – Vue.js & Nuxt Team Lead, Lviv, Ukraine
    og:description: Front-end team lead and full-stack JS developer in Lviv, Ukraine. 15+ years with Vue.js, Nuxt, TypeScript and Cloudflare Workers. Projects, repos and CV.
    og:image: https://avatars.githubusercontent.com/u/2039259?v=4

Indexing

PassCanonical URLCanonical: https://frontend.im/

A canonical link tells crawlers which URL is the real one, so signals aren’t split.

What we saw

  • https://frontend.im/HTTP 200
    canonical: https://frontend.im/
PassIndexable homepageNo noindex directive

A noindex keeps the page out of search — and out of AI answers built on search.

What we saw

  • https://frontend.im/HTTP 200
    no robots meta or X-Robots-Tag
PassHTTPSHomepage served over HTTPS

Search engines and AI agents prefer — and some require — secure pages.

What we saw

  • https://frontend.im/HTTP 200
    https://frontend.im/
Passhreflang sanityNo hreflang — single-language site

Broken hreflang can show the wrong language version in search and AI answers.

What we saw

  • https://frontend.im/HTTP 200
    no hreflang links
PassHomepage status codeHomepage answers 200 OK

Crawlers only index pages that answer 200 OK.

What we saw

  • https://frontend.im/HTTP 200

GEO — generative engines

Structured data

PassJSON-LD structured data3 JSON-LD nodes: WebSite, ProfilePage, Person

JSON-LD gives AI and search engines machine-readable facts about your site.

What we saw

  • https://frontend.im/HTTP 200
    {"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://frontend.im/#website","url":"https://frontend.im/","name":"Tusko Trush","inLanguage":"en","publisher":{"@id":"https://frontend.im/#person"}},{"@type":"ProfilePage","@id":"https://frontend.im/#profilepage","url":"https://frontend.im/","isPartOf":{"@id":"https://frontend.im/#website"},"mainEntity":{"@id":"https://frontend.im/#person"}},{"@type":"Person","@id":"https://frontend.im/#person","name":"Tusko Trush","alternateN…

Entity

PassEntity typeEntity: Person “Tusko Trush”

An Organization or Person node tells AI who is behind the site, so it can cite you by name.

What we saw

  • https://frontend.im/HTTP 200
    @type: WebSite, ProfilePage, Person
PasssameAs profile links5 sameAs links

sameAs links tie your entity to profiles AI already knows, so it’s not confused with others.

What we saw

  • https://frontend.im/HTTP 200
    sameAs: https://github.com/Tusko, https://www.instagram.com/tuskotrush/, https://www.threads.com/@tuskotrush, http://facebook.com/tuskotrush, https://www.linkedin.com/in/tuskotrush/
PassEntity name consistency“Tusko Trush” used consistently

Using the same name in title, og:site_name and schema helps AI recognise one entity.

What we saw

  • https://frontend.im/HTTP 200
    schema name: Tusko Trush
    title: Tusko Trush – Vue.js & Nuxt Team Lead, Lviv, Ukraine
    og:site_name: (none)

Citability

PassCitable server-rendered text1198 words of server-rendered text

Most AI crawlers don’t run JavaScript — they can only cite text in the HTML.

What we saw

  • https://frontend.im/HTTP 200
    1198 words, has h1/h2: Tusko Trush 15+ years experienced front-end developer. Team Lead / Full-Stack JS Developer at TraffBand Get the CV Lviv, Ukraine tusko@trush.email Coding activity Stats per language Featured repos vimeo-private-downloader Script gets you access to download private videos on Vimeo JavaScript 441 92 441 ACF-CPT-Options-Pages Small addon for ACF Options. Adds ACF options page per custom post type PHP 75 16 75 WP-Anatomy Wordpress theme starter PHP 12 2 12 tuya-smart-plug-not…

AEO — answer engines

Answers

InfoQuestion-style headingsNo question-style headings

Headings phrased as questions match how people ask AI assistants.

What we saw

  • https://frontend.im/HTTP 200
    no question-style h1–h4
PassConcise answer paragraphs7 heading + short answer pairs

A short paragraph right under a heading is the passage answer engines quote.

What we saw

  • https://frontend.im/HTTP 200
    Tusko Trush → 15+ years experienced front-end developer. Team Lead / Full-Stack JS Developer at TraffBand
    vimeo-private-downloader → Script gets you access to download private videos on Vimeo
    ACF-CPT-Options-Pages → Small addon for ACF Options. Adds ACF options page per custom post type
    tuya-smart-plug-notification → Telegram notification for smart plug status
    cloudflare-proxy-worker → A high-performance Cloudflare Worker that proxies HTTP requests with configurable KV-based caching to reduce A…
Passllms.txt qualityllms.txt has title, summary and link sections

A well-formed llms.txt gives AI a curated, quotable map of your site.

What we saw

  • https://frontend.im/llms.txtHTTP 200
    # Tusko Trush
    
    > 15+ years experienced front-end developer.
    > Team Lead / Full-Stack JS Developer at TraffBand
    
    - Location: Lviv, Ukraine
    - Email: tusko@trush.email
    - GitHub: https://github.com/tusko
    - CV: https://frontend.im/cv
    
    ## Experience
    
    ### Team Lead / Full-Stack JS Developer at [TraffBand](https://www.traffband.com/)
    
    08.2025 / Present, SEO affiliate team
    
    - Lead the front-end and back-end teams – set full-stack technical direction, own architecture across the platform, and mentor eng…
Not applicable1 check doesn’t apply to a content site

Trust

PassAuthor and date signalsschema Person

Answer engines favour content with a clear author and a visible date.

What we saw

  • https://frontend.im/HTTP 200
    schema Person

AI bots and your robots.txt

BotOperatorPurposeAccess
GPTBotOpenAITraining Blocked
OAI-SearchBotOpenAISearch Allowedby the * rule
ChatGPT-UserOpenAIUser-triggered Allowedby the * rule
ClaudeBotAnthropicTraining Blocked
Claude-SearchBotAnthropicSearch Allowedby the * rule
Claude-UserAnthropicUser-triggered Allowedby the * rule
PerplexityBotPerplexitySearch Allowedby the * rule
Perplexity-UserPerplexityUser-triggered Allowedby the * rule
Google-ExtendedGoogleTraining Blocked
Google-AgentGoogleUser-triggered Allowedby the * rule
Applebot-ExtendedAppleTraining Blocked
ApplebotAppleSearch Allowedby the * rule
BytespiderByteDanceTraining Allowedby the * rule
CCBotCommon CrawlTraining Blocked
meta-externalagentMetaTraining Allowedby the * rule
meta-webindexerMetaSearch Allowedby the * rule
meta-externalfetcherMetaUser-triggered Allowedby the * rule
AmazonbotAmazonTraining Allowedby the * rule
Amzn-SearchBotAmazonSearch Allowedby the * rule
Amzn-UserAmazonUser-triggered Allowedby the * rule
MistralAI-TrainingMistralTraining Allowedby the * rule
MistralAI-IndexMistralSearch Allowedby the * rule
MistralAI-UserMistralUser-triggered Allowedby the * rule
DuckAssistBotDuckDuckGoSearch Allowedby the * rule

Put your score on your site

Add a live badge to your site or GitHub profile. It updates after each scan and links to this report.

SagBot score for frontend.im

HTML

<a href="https://sagbot.app/d/frontend.im" target="_blank" rel="noopener">
  <img src="https://sagbot.app/badge/frontend.im.svg" alt="SagBot score for frontend.im" />
</a>

Markdown

[![SagBot score for frontend.im](https://sagbot.app/badge/frontend.im.svg)](https://sagbot.app/d/frontend.im)

Track score over time

Sign up and we’ll email you when score tracking for frontend.im opens.