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…
SEO best practices for the Grida project across Next.js pages, blog posts, and documentation.
$ npx skills add gridaco/grida --skill seo -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install gridaco/grida seo --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "seo" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/seo into .claude/skills/seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/gridaco/grida/tree/main/.agents/skills/seoType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add gridaco/grida --skill seo -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install gridaco/grida seo --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/seo .agents/skills/seo && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "seo" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/seo into .agents/skills/seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gridaco/grida --skill seo -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install gridaco/grida seo --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/seo .cursor/skills/seo && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "seo" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/seo into .cursor/skills/seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/gridaco/grida.git --path .agents/skills/seo--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add gridaco/grida --skill seo -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install gridaco/grida seo --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/seo .gemini/skills/seo && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "seo" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/seo into .gemini/skills/seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install gridaco/grida seoInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add gridaco/grida --skill seo -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/seo .github/skills/seo && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "seo" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/seo into .github/skills/seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gridaco/grida --skill seo -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install gridaco/grida seo --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/seo .opencode/skills/seo && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "seo" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/seo into .opencode/skills/seo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
seoSEO best practices for the Grida project across Next.js pages, blog posts, and documentation.
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.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 165496f. It shows what the files ask for, not the result of running them.
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.
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.
Hosts in commands or code, which the agent is likely to contact:
grida.coFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from gridaco/grida at commit 165496f, republished under its Apache-2.0 licence (© gridaco). 875 words, ~2,083 tokens.
.claude/skills/seo/SKILL.md (or your agent's skills folder).Guidelines for search engine optimization across the Grida project -- Next.js pages, blog posts, and documentation.
| Surface | Location | Framework |
|---|---|---|
| Marketing / product pages | editor/app/(www)/ | Next.js 16 |
| Blog | docs/blog/ or apps/docs/blog/ | Docusaurus |
| Documentation | docs/** | Docusaurus |
| Sitemaps | editor/app/sitemap.ts + others | Next.js |
editor/app/(www))Every public page must export metadata (static or dynamic).
// 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.metadataBase or use absolute URLs so crawlers resolve them correctly.Content-Type.metadataBaseWhen openGraph.images uses relative paths, the layout or page must set:
metadataBase: new URL("https://grida.co"),Without this, crawlers may see broken OG URLs.
Public pages belong in editor/app/sitemap.ts.
{
url: "https://grida.co/new-page",
changeFrequency: "monthly",
priority: 0.5,
}priority: 1 only for the homepage.changeFrequency to actual update cadence./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.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):
<Image unoptimized> or plain <img> so the rendered src is a
stable, direct public URL (e.g. /brand/grida-symbol-240.png).alt text with "Grida" + asset name + format.Checklist for image assets:
Googlebot-ImageContent-Type (image/png, image/svg+xml, etc.)robots.txt or X-Robots-Tag/_next/image endpoint itself is not blocked (other pages still use it)public/ -- no query-string-only canonicalsUse JSON-LD for rich results where applicable:
Product or SoftwareApplicationBlogPosting or ArticleFAQPageOrganizationEmbed via a <script type="application/ld+json"> in the page or layout.
docs/**)Docs are built with Docusaurus and published at grida.co/docs.
Every doc page should have:
---
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.slug: only when the default URL path is wrong.# H1 matching the title frontmatter.## for sections -- these generate anchor links and appear in the TOC./docs.https://grida.co/_/<path>.description in frontmatter (under 160 chars).## headings that include relevant keywords.image: in frontmatter for the OG image.robots.txtLocated 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.
Grida serves grida.co (main) and [tenant].grida.site (tenant sites).
Tenant-rendered pages must not compete with grida.co pages in search.
(www) should set canonical to
https://grida.co/....(tenant)) should either set noindex or canonical to their
own *.grida.site domain -- never to grida.co.(preview)) should be noindex, nofollow.(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.These apply across all surfaces (pages, docs, blog):
Before shipping a public page or post:
title and description set in metadata / frontmatterdescription is under 160 characters and uniquealt text© 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
Just SKILL.md in .agents/skills/seo of gridaco/grida.
Open the folder on GitHubat commit 165496f
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| SEO this skillgridaco/grida | 2.7k | — | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| SEO Geoericrisco/rsc-harness | 156 | — | ~2.8k | Automated safety check: Pass | MIT | |
| SEO Setupalisamadiii/Portfolio | 180 | — | ~1.7k | Automated safety check: Pass | None | |
| Persian SEOTronIsHere/vibefarsiui | 207 | — | ~1.7k | Automated safety check: Warn | None | |
| Nuxt SEOsecondsky/claude-skills | 227 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Content Freshness Signalsthedaviddias/Front-End-Checklist | 74k | — | ~741 | Automated safety check: Pass | MIT |
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…
alisamadiii/Portfolio
Full SEO/metadata setup and audit for client websites (Astro, Next.js, any static site).
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…
secondsky/claude-skills
Nuxt SEO v5 modules (robots, sitemap, og-image, schema-org, link-checker, seo-utils, site-config).
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.
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…
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…
gridaco/grida
Guides work on the Figma I/O package (@grida/io-figma, packages/grida-canvas-io-figma/).
gridaco/grida
Set up, download, verify, and seed the optional Grida Library developer corpus into local Supabase.
gridaco/grida
Query images with a local Ollama vision model without loading the image into the main agent context.
gridaco/grida
Research, compare, and update shared AI model JSON for TypeScript, web, and Rust consumers.
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…
Works with
Categories
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.
SEO fits situations like: editing public-facing pages under editor/app/(www); writing blog posts; reviewing SEO-related metadata; structured data.
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.
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.
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.
SKILL.md names no scripts, command-line tools or credentials: SEO is instructions for the agent only.
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.
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.
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.
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.
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.
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.