Agent skill

SEO

by gridaco in gridaco/grida

SEO best practices for the Grida project across Next.js pages, blog posts, and documentation.

Apache-2.0Auto-check passedMarketing & SEO

Install SEO

skills CLI
$ npx skills add gridaco/grida --skill seo -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install gridaco/grida seo --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/seo .claude/skills/seo && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
seo
GitHub stars
2.7k
Token cost
~2.1k tokens
SKILL.md length
875 words
Files
1
Skills in repo
29
Repo updated
First seen
Licence
Apache-2.0

At a glance

SEO best practices for the Grida project across Next.js pages, blog posts, and documentation.

  • Works in 8 steps: One primary keyword per page. Include it… → Write for humans first. Natural, helpful… → Unique content. Every page must have a… → …
  • Editing public-facing pages under editor/app/(www)
  • SKILL.md covers Scope, Next.js Pages (editor/app/(www)), Documentation (docs/**) and Blog Posts, plus 3 more sections
  • Reaches grida.co

What it does

SEO is an agent skill from gridaco/grida. SEO best practices for the Grida project across Next.js pages, blog posts, and documentation. Covers Next.js metadata API, Open Graph / Twitter cards, sitemaps, image search optimization, structured data (JSON-LD), Docusaurus frontmatter, and content writing for search. Use when creating or editing public-facing pages under editor/app/(www), writing blog posts, authoring docs, or reviewing SEO-related metadata. Trigger phrases: "SEO", "metadata", "sitemap", "open graph", "og image", "meta tags", "search ranking"…

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Marketing & SEO, covering Schema markup, Technical SEO and Blog and article writing. It works with Next.js and X (Twitter). The licence is Apache-2.0.

When your agent uses it

  • Editing public-facing pages under editor/app/(www)
  • Writing blog posts
  • Reviewing SEO-related metadata
  • Structured data

Example prompts

  • “metadata”
  • “sitemap”
  • “open graph”
  • “/seo”

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. One primary keyword per page. Include it in the title, first paragraph,
  2. Write for humans first. Natural, helpful content ranks better than
  3. Unique content. Every page must have a unique title and description.
  4. Descriptive link text. Use meaningful anchor text, not "click here."
  5. Alt text on images. Describe what the image shows; include keywords
  6. URL structure. Keep URLs short, lowercase, hyphenated, and descriptive.
  7. Mobile-first. Ensure pages render well on mobile -- Google uses
  8. Performance. Page speed is a ranking factor. Prefer static/SSG pages

What it can do on your machine

Read from SKILL.md and the folder at commit 165496f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript and markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • grida.co

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

SEO loads about 2.1k tokens when it runs. Until then it costs about 138 tokens; SKILL.md has 875 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~138
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from gridaco/grida at commit 165496f, republished under its Apache-2.0 licence (© gridaco). 875 words, ~2,083 tokens.

Download SKILL.mdSave it as .claude/skills/seo/SKILL.md (or your agent's skills folder).
name
seo
description
SEO best practices for the Grida project across Next.js pages, blog posts, and documentation. Covers Next.js metadata API, Open Graph / Twitter cards, sitemaps, image search optimization, structured data (JSON-LD), Docusaurus frontmatter, and content writing for search. Use when creating or editing public-facing pages under editor/app/(www), writing blog posts, authoring docs, or reviewing SEO-related metadata. Trigger phrases: "SEO", "metadata", "sitemap", "open graph", "og image", "meta tags", "search ranking", "structured data", "JSON-LD".

SEO

Guidelines for search engine optimization across the Grida project -- Next.js pages, blog posts, and documentation.

Scope

SurfaceLocationFramework
Marketing / product pageseditor/app/(www)/Next.js 16
Blogdocs/blog/ or apps/docs/blog/Docusaurus
Documentationdocs/**Docusaurus
Sitemapseditor/app/sitemap.ts + othersNext.js

Next.js Pages (editor/app/(www))

Metadata

Every public page must export metadata (static or dynamic).

tsx
// Static
export const metadata: Metadata = {
  title: "Page Title — Grida",
  description: "Concise, keyword-rich description under 160 chars.",
  keywords: ["relevant", "keywords"],
  openGraph: {
    title: "Page Title — Grida",
    description: "Same or tailored OG description.",
    images: ["/og/page-name.png"],
  },
  twitter: {
    card: "summary_large_image",
  },
};

// Dynamic
export async function generateMetadata({ params }): Promise<Metadata> { ... }

Rules:

  • title should end with — Grida (or use a title.template in the root layout).
  • description must be unique per page, under 160 characters, and include primary keywords.
  • Every page with OG images must set metadataBase or use absolute URLs so crawlers resolve them correctly.
  • OG images must return 200 without auth and use correct Content-Type.
metadataBase

When openGraph.images uses relative paths, the layout or page must set:

tsx
metadataBase: new URL("https://grida.co"),

Without this, crawlers may see broken OG URLs.

Sitemap

Public pages belong in editor/app/sitemap.ts.

ts
{
  url: "https://grida.co/new-page",
  changeFrequency: "monthly",
  priority: 0.5,
}
  • Use priority: 1 only for the homepage.
  • Match changeFrequency to actual update cadence.
  • When adding a new public page, always add a sitemap entry.
  • Sitemaps are split per route group (root, /packages, /library, …). A new sitemap.ts is invisible to crawlers until it's added as a Sitemap: line in editor/app/robots.txt — non-root sitemaps are not auto-discovered.
  • Prefer deriving sitemap entries from the page's data source (see packages/sitemap.ts) over hand-maintained URL lists, which drift.

Next.js <Image> renders optimized /_next/image?url=... URLs that Google Images indexes unreliably.

For pages where images are the search target (brand assets, logos, press kits):

  • Use <Image unoptimized> or plain <img> so the rendered src is a stable, direct public URL (e.g. /brand/grida-symbol-240.png).
  • Include descriptive alt text with "Grida" + asset name + format.

Checklist for image assets:

  • Returns 200 without cookies; not blocked for Googlebot-Image
  • Correct Content-Type (image/png, image/svg+xml, etc.)
  • Not blocked by robots.txt or X-Robots-Tag
  • /_next/image endpoint itself is not blocked (other pages still use it)
  • Stable, clean URLs under public/ -- no query-string-only canonicals
Structured Data (JSON-LD)

Use JSON-LD for rich results where applicable:

  • Product pages: Product or SoftwareApplication
  • Blog posts: BlogPosting or Article
  • FAQ sections: FAQPage
  • Brand/org: Organization

Embed via a <script type="application/ld+json"> in the page or layout.

Documentation (docs/**)

Docs are built with Docusaurus and published at grida.co/docs.

Frontmatter

Every doc page should have:

md
---
title: Feature Name
description: One-line summary for search snippets (under 160 chars).
keywords: [keyword1, keyword2]
---
  • title becomes the <title> tag and H1.
  • description becomes the meta description.
  • keywords help Docusaurus generate meta tags.
  • Add slug: only when the default URL path is wrong.
Headings
  • Use a single # H1 matching the title frontmatter.
  • Use ## for sections -- these generate anchor links and appear in the TOC.
  • Headings should be descriptive and keyword-aware (search engines weight them).
Internal Linking
  • Link related docs to each other -- it helps search engines discover pages and improves user navigation.
  • Use relative paths within /docs.
  • For editor pages, use universal routing: https://grida.co/_/<path>.

Blog Posts

Title
  • Clear, specific, keyword-forward. Front-load the most important words.
  • Avoid clickbait or vague titles.
  • Good: "How Grida Canvas Renders 10K Nodes at 60 FPS"
  • Bad: "Exciting Updates!"
Meta Description
  • Write a custom description in frontmatter (under 160 chars).
  • Summarize the post's value proposition -- what will the reader learn?
Content Structure
  • Open with a clear summary paragraph (search engines often use this as the snippet).
  • Use ## headings that include relevant keywords.
  • Break content into scannable sections.
  • Include alt text on all images.
Show full SKILL.md (352 more words)Show less
Social Sharing
  • Set image: in frontmatter for the OG image.
  • OG image should be 1200x630 px for optimal display.
  • Ensure the image URL is absolute and publicly accessible.

Crawl Control

robots.txt

Located at editor/app/robots.txt. Currently allows everything except /private/. When adding new route groups that should not be indexed (e.g. internal tools, preview embeds, auth flows), add a Disallow: rule here.

Canonical URLs & Tenant Domains

Grida serves grida.co (main) and [tenant].grida.site (tenant sites). Tenant-rendered pages must not compete with grida.co pages in search.

  • Public marketing pages under (www) should set canonical to https://grida.co/....
  • Tenant pages ((tenant)) should either set noindex or canonical to their own *.grida.site domain -- never to grida.co.
  • Preview / embed pages ((preview)) should be noindex, nofollow.
Known Gaps
  • The (www) root layout (editor/app/(www)/layout.tsx) does not set metadataBase. Pages with relative OG images should set it themselves (see metadataBase section above) or it should be added to the root layout.

General SEO Writing Rules

These apply across all surfaces (pages, docs, blog):

  1. One primary keyword per page. Include it in the title, first paragraph, and at least one heading.
  2. Write for humans first. Natural, helpful content ranks better than keyword-stuffed text.
  3. Unique content. Every page must have a unique title and description. Duplicate meta across pages hurts rankings.
  4. Descriptive link text. Use meaningful anchor text, not "click here."
  5. Alt text on images. Describe what the image shows; include keywords when natural.
  6. URL structure. Keep URLs short, lowercase, hyphenated, and descriptive. Avoid IDs or query params in public URLs.
  7. Mobile-first. Ensure pages render well on mobile -- Google uses mobile-first indexing.
  8. Performance. Page speed is a ranking factor. Prefer static/SSG pages for marketing content. Lazy-load below-fold images.

Verification Checklist

Before shipping a public page or post:

  • title and description set in metadata / frontmatter
  • description is under 160 characters and unique
  • OG image set, absolute URL, returns 200 without auth
  • Page added to sitemap (Next.js pages)
  • Headings use keywords and follow hierarchy (no skipped levels)
  • All images have alt text
  • No duplicate meta with other pages
  • Page is mobile-friendly
  • Canonical URL is correct (no competing duplicates)

© gridaco, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/seo of gridaco/grida.

Open the folder on GitHubat commit 165496f

Compare with similar skills

SEO next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

SEO compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
SEO this skillgridaco/grida2.7k—~2.1kAutomated safety check: PassApache-2.0
SEO Geoericrisco/rsc-harness156—~2.8kAutomated safety check: PassMIT
SEO Setupalisamadiii/Portfolio180—~1.7kAutomated safety check: PassNone
Persian SEOTronIsHere/vibefarsiui207—~1.7kAutomated safety check: WarnNone
Nuxt SEOsecondsky/claude-skills227—~2.7kAutomated safety check: PassMIT
Content Freshness Signalsthedaviddias/Front-End-Checklist74k—~741Automated safety check: PassMIT

Similar skills

  • SEO Geo

    ericrisco/rsc-harness

    A skill your agent uses when one existing page needs to rank in Google AND get cited by AI answer engines — auditing a URL for on-page SEO, structured-data JSON-LD, GEO citation levers, Core Web…

    156 GitHub stars~2.8k tokensUpdated yesterday
    Marketing & SEOAuto-check passed
  • SEO Setup

    alisamadiii/Portfolio

    Full SEO/metadata setup and audit for client websites (Astro, Next.js, any static site).

    180 GitHub stars~1.7k tokensUpdated yesterday
    Marketing & SEOAuto-check passed
  • Persian SEO

    TronIsHere/vibefarsiui

    Technical and on-page SEO for Persian (Farsi) websites: lang and hreflang for fa-IR, RTL-safe metadata, Persian titles and descriptions, slug and URL strategy for Persian content, ZWNJ and keyword…

    207 GitHub stars~1.7k tokensUpdated 7 days ago
    Marketing & SEOAuto-check: warnings
  • Nuxt SEO

    secondsky/claude-skills

    Nuxt SEO v5 modules (robots, sitemap, og-image, schema-org, link-checker, seo-utils, site-config).

    227 GitHub stars~2.7k tokensUpdated 9 days ago
    Marketing & SEOAuto-check passed
  • Content Freshness Signals

    thedaviddias/Front-End-Checklist

    Audits article pages for freshness signals, covering the Last-Modified header, Article JSON-LD dateModified and a visible last-updated date, and fixes mismatches.

    74k GitHub stars~741 tokensUpdated yesterday
    Marketing & SEOAuto-check passed
  • Content SEO

    jdevalk/skills

    Audits a blog post draft or page copy for content-level SEO: search intent fit, focus keyphrase placement, E-E-A-T signals (experience, expertise, authoritativeness, trustworthiness), helpfulness…

    104 GitHub stars~2.3k tokensUpdated 3 mo ago
    Marketing & SEOAuto-check passed

More from gridaco/grida

All 29 skills in this repo
  • Desktop

    gridaco/grida

    Grida Desktop Electron shell and release-impact work: BrowserWindow, preload, window.grida, menus, protocol/deep links, file associations, Forge, path-scoped bridge security, Electron-only UI bugs…

    2.7k GitHub stars~3.2k tokensUpdated yesterday
    Auto-check: notes
  • Io Figma

    gridaco/grida

    Guides work on the Figma I/O package (@grida/io-figma, packages/grida-canvas-io-figma/).

    2.7k GitHub stars~2.2k tokensUpdated yesterday
    Auto-check: notes
  • Opt Library

    gridaco/grida

    Set up, download, verify, and seed the optional Grida Library developer corpus into local Supabase.

    2.7k GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Vision

    gridaco/grida

    Query images with a local Ollama vision model without loading the image into the main agent context.

    2.7k GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • AI Models

    gridaco/grida

    Research, compare, and update shared AI model JSON for TypeScript, web, and Rust consumers.

    2.7k GitHub stars~5.7k tokensUpdated yesterday
    Auto-check passed
  • Agent System

    gridaco/grida

    Grida AI agent system work: @grida/daemon (DaemonServer, loopback HTTP perimeter, files/workspaces, secrets store, daemon discovery) and @grida/agent (the agent tenant: sessions, providers/BYOK…

    2.7k GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed

Questions about SEO

What does SEO do?

SEO best practices for the Grida project across Next.js pages, blog posts, and documentation. SEO is an agent skill from gridaco/grida.js pages, blog posts, and documentation.

When should I use SEO?

SEO fits situations like: editing public-facing pages under editor/app/(www); writing blog posts; reviewing SEO-related metadata; structured data.

How do I install SEO in Claude Code?

Run `npx skills add gridaco/grida --skill seo -a claude-code`. Or copy the skill folder (.agents/skills/seo in gridaco/grida) into .claude/skills/seo in your project. Claude Code loads it when a task matches its description.

How do I install SEO in Codex?

Run `npx skills add gridaco/grida --skill seo -a codex`. Or copy the skill folder (.agents/skills/seo in gridaco/grida) into .agents/skills/seo in your project. Codex loads it when a task matches its description.

Can I use SEO in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gridaco/grida --skill seo -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/seo, .gemini/skills/seo, .github/skills/seo and .opencode/skills/seo in your project.

What does SEO need to run?

SKILL.md names no scripts, command-line tools or credentials: SEO is instructions for the agent only.

Does SEO access the network?

SKILL.md names 1 domain. In commands or code: grida.co; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is SEO safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does SEO use?

SEO is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does SEO use?

About 2.1k tokens (SKILL.md is roughly 8.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to SEO?

Skills that share tags, products or a category with SEO: SEO Geo (ericrisco/rsc-harness, 156 stars), SEO Setup (alisamadiii/Portfolio, 180 stars), Persian SEO (TronIsHere/vibefarsiui, 207 stars) and Nuxt SEO (secondsky/claude-skills, 227 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains SEO?

gridaco (a GitHub organization) maintains it in gridaco/grida, which has 2,657 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 6, 2026.

Source: gridaco/grida on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.