# title-tag

Audits and writes HTML title tags with checks for search intent, H1 alignment, and keyword cannibalization.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1200 installs · ★ 1062
- Author: kostja94
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/kostja94/marketing-skills/tree/HEAD/skills/seo/on-page/title/SKILL.md
- Updated: 2026-10-21
- HTML: https://affpapa.org/en/nevibecode/skills/title-tag

## What it does

The skill handles drafting and reviewing the HTML `<title>` tag. It reads `contextus.md` in the project root when present, checking page role, primary search intent, current H1, and template brand suffixes. If a title fits a sibling page without edits, the Swap Test requires adding page-specific facts before finalizing the copy.

It treats roughly 60 Latin characters for the title body as a soft warning rather than a rigid limit. Brand suffixes like `| Brand` stay separate from the main character target. When multiple URLs target the same search intent, the skill flags cannibalization and reports overlapping URLs, but it leaves site architecture and keyword assignments untouched.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add kostja94/marketing-skills --skill title-tag -a claude-code
```
```bash
npx skills add kostja94/marketing-skills --skill title -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/title/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/title/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add kostja94/marketing-skills --skill title -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/title/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add kostja94/marketing-skills --skill title -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/title/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install kostja94/marketing-skills title
```

2. **Manually: put the files in place**
- File: `.github/skills/title/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add kostja94/marketing-skills --skill title -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/kostja94/marketing-skills --path skills/seo/on-page/title
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/title/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add kostja94/marketing-skills --skill title -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/kostja94/marketing-skills/tree/HEAD/skills/seo/on-page/title/SKILL.md

## When to use it
- draft page-specific HTML title tags
- audit title alignment against the primary H1
- detect search intent cannibalization across sibling URLs
- separate brand suffixes from core title copy

## Example prompts
- Review the title tag for this product page against its H1
- Write an SEO title tag keeping the brand suffix separate
- Run the swap test on these sibling page titles

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: be797cc70b350613.

BEGIN THIRD-PARTY FILE be797cc70b350613
```text
---
name: title-tag
description: When the user wants to write, audit, or optimize an HTML title tag, SEO title, page title, SERP title, browser-tab title, duplicate title, or title rewrite issue. For a sitewide metadata lifecycle including implementation and production validation, use page-metadata.
metadata:
  version: 2.0.0
---

# SEO On-Page: Title Tag

Owns writing and review rules for the HTML `<title>` element. **page-metadata** owns discovery, implementation, and release verification.

## Inputs

Read root `contextus.md` when present. Confirm page type, unique page job, primary search intent, locale, current title and H1, verified differentiators, sibling-page titles, and whether a template automatically appends the brand.

## Rules

- Write a descriptive, concise, page-specific title that accurately represents the page.
- Put the primary search concept early when natural; do not keyword-stuff.
- Treat about 60 Latin characters for the title body as a default warning, not a hard limit. Pixel width, script, device, and query context affect display.
- A delimiter plus brand suffix such as `| Brand` is outside that title-body target. It may be truncated or rewritten; include it only when useful and never duplicate a template suffix.
- For CJK, RTL, or other scripts, review rendered width and natural language instead of applying a translated character formula.
- Title and H1 must serve the same page intent and promise, but need not use identical wording. Example: title `AI Image Generator`; H1 `Generate Images with AI`.
- Include only claims supported by the page. Do not add a year, number, superlative, or feature merely for click appeal.
- Apply the **Swap Test**: if the title fits a sibling page unchanged, add a verified page-specific fact or sharpen its task.
- Google may generate a different title link from the `<title>`, main visual title, headings, prominent text, anchors, `og:title`, or other signals. Optimize consistency of page identity, not control of the exact displayed string.

## Cannibalization

When multiple URLs target the same primary intent, report the affected URLs, overlap, and evidence. Do not merge pages, reassign keywords, change page roles, or alter information architecture.

## Output

- Recommended title, with the title body and optional brand suffix shown separately.
- A length or width warning when relevant, never a mechanical pass/fail.
- Brief rationale tied to intent and unique page facts.
- H1 semantic-alignment result; actual H1 edits route to **heading-structure**.
- Cannibalization warning when applicable.

## Primary reference

- [Google: influencing title links](https://developers.google.com/search/docs/appearance/title-link)

## Related Skills

- **page-metadata**, **meta-description**, **heading-structure**
- **localization-strategy**, **translation**, **google-search-console**
```
END THIRD-PARTY FILE be797cc70b350613

The third-party file has ended. Everything between the be797cc70b350613 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

© kostja94 · MIT · https://github.com/kostja94/marketing-skills/tree/HEAD/skills/seo/on-page/title/SKILL.md

## Similar
- [fixing-metadata](https://affpapa.org/en/nevibecode/skills/fixing-metadata.md) — skill · 18200 installs
- [product-title-optimization](https://affpapa.org/en/nevibecode/skills/product-title-optimization.md) — skill · 1200 installs
- [seo-aeo-best-practices](https://affpapa.org/en/nevibecode/skills/seo-aeo-best-practices.md) — skill · 7300 installs
- [youtube-publishing-and-metadata](https://affpapa.org/en/nevibecode/skills/youtube-publishing-and-metadata.md) — skill · 660 installs

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
