Claude-skill-registry footer-configuration
Configure footer navigation links for SEO completeness. Sets up all pages (Homepage, Services, About, Contact, Impressum, Datenschutz) in organized groups. Dynamically finds footer*.tsx component. Updates i18n with all footer keys.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/footer-configuration" ~/.claude/skills/majiayu000-claude-skill-registry-footer-configuration && rm -rf "$T"
manifest:
skills/data/footer-configuration/SKILL.mdsource content
Footer Configuration
Configure footer links to include ALL pages for complete SEO coverage.
Workflow
- Find Footer Component - Glob for
website/components/footer*.tsx - Read Sitemap - Get all pages from
docs/sitemap.md - Organize Links - Group into Navigation, Services, Legal, Social
- Update Component - Apply link structure to footer component
- Add Contact Info - Phone, email, address
- Configure Branding - Logo/name and copyright
- Update i18n - Add all keys to de.json and en.json
Link Groups
Navigation Group
Main pages that should always be linked:
const navigation = [ { name: t("navigation.home"), href: "/" }, { name: t("navigation.services"), href: "/dienstleistungen" }, { name: t("navigation.about"), href: "/ueber-uns" }, { name: t("navigation.contact"), href: "/kontakt" }, ];
Services Group (Optional)
If services page has subsections:
const services = [ { name: t("services.hair"), href: "/dienstleistungen#haare" }, { name: t("services.nails"), href: "/dienstleistungen#naegel" }, { name: t("services.facials"), href: "/dienstleistungen#gesicht" }, ];
Legal Group
Required legal pages for Swiss/German compliance:
const legal = [ { name: t("legal.privacy"), href: "/datenschutz" }, { name: t("legal.imprint"), href: "/impressum" }, ];
Social Group
External social media links:
const social = [ { name: t("social.instagram"), href: "https://instagram.com/salonname", icon: Instagram }, { name: t("social.facebook"), href: "https://facebook.com/salonname", icon: Facebook }, ];
Contact Information
Add contact details section:
const contact = { phone: "+41 44 XXX XX XX", email: "info@salon-elegance.ch", address: { street: "Musterstrasse 123", city: "8001 Zürich", country: "Schweiz", }, };
Using Next.js Link
Replace
<a> with Next.js <Link> for internal navigation:
import Link from "next/link"; // Internal links <Link href={item.href}>{item.name}</Link> // External links (social media) <a href={item.href} target="_blank" rel="noopener noreferrer" > {item.name} </a>
List Styling
Footer lists must NOT have bullet points. Always add
list-none p-0:
<ul className="list-none space-y-3 p-0"> {links.map((link) => ( <li key={link.text}> <Link href={link.url} className="text-sm text-foreground/70 hover:text-foreground transition-colors"> {link.text} </Link> </li> ))} </ul>
Link Colors
Use
text-foreground or opacity variants, NOT text-primary:
- muted linkstext-foreground/70
- hover state (full opacity)hover:text-foreground
- subtle text like copyrighttext-foreground/60
Do NOT use:
(reserved for CTA buttons, not navigation)text-primary
(no underlines)hover:underline
SEO Importance
All pages MUST be linked in footer for:
- Crawlability - Search engines find all pages
- Internal Linking - Distributes page authority
- User Navigation - Users expect footer navigation
- Accessibility - Alternative to main navigation
Required Pages
| Page | Route | Group |
|---|---|---|
| Homepage | | Navigation |
| Services | | Navigation |
| About | | Navigation |
| Contact | | Navigation |
| Privacy Policy | | Legal |
| Imprint | | Legal |
Branding Section
Business Name
<p className="font-serif text-4xl md:text-6xl"> {t("brand")} </p>
Copyright
<p className="text-sm text-muted-foreground"> {t("copyright")} </p>
i18n Keys
Required Keys in de.json
{ "footer": { "brand": "Salon Elegance", "tagline": "Ihr Salon in Zürich", "navigation": { "title": "Navigation", "home": "Startseite", "services": "Dienstleistungen", "about": "Über uns", "contact": "Kontakt" }, "services": { "title": "Dienstleistungen", "hair": "Haare", "nails": "Nägel", "facials": "Gesicht" }, "legal": { "title": "Rechtliches", "privacy": "Datenschutz", "imprint": "Impressum" }, "social": { "title": "Social Media", "instagram": "Instagram", "facebook": "Facebook" }, "contact": { "title": "Kontakt", "phone": "Telefon", "email": "E-Mail", "address": "Adresse" }, "copyright": "© 2024 Salon Elegance Zürich. Alle Rechte vorbehalten." } }
Required Keys in en.json
{ "footer": { "brand": "Salon Elegance", "tagline": "Your salon in Zurich", "navigation": { "title": "Navigation", "home": "Home", "services": "Services", "about": "About Us", "contact": "Contact" }, "services": { "title": "Services", "hair": "Hair", "nails": "Nails", "facials": "Facials" }, "legal": { "title": "Legal", "privacy": "Privacy Policy", "imprint": "Legal Notice" }, "social": { "title": "Social Media", "instagram": "Instagram", "facebook": "Facebook" }, "contact": { "title": "Contact", "phone": "Phone", "email": "Email", "address": "Address" }, "copyright": "© 2024 Salon Elegance Zurich. All rights reserved." } }
Checklist
- Found footer component (footer*.tsx)
- Homepage linked in navigation group
- Services page linked in navigation group
- About page linked in navigation group
- Contact page linked in navigation group
- Datenschutz (Privacy) in legal group
- Impressum (Imprint) in legal group
- Social media links with external attributes
- All internal links use Next.js
<Link> - Contact information displayed (phone, email, address)
- Brand name displayed
- Copyright with current year
- All footer keys in de.json
- All footer keys in en.json