From content-management-system
Designs navigation systems including primary menus, footers, mega-menus, and breadcrumbs. Generates accessible YAML/JSON/HTML structures configurable by type and site needs.
npx claudepluginhub melodic-software/claude-code-plugins --plugin content-management-systemThis skill is limited to using the following tools:
Design a comprehensive navigation system with menus, breadcrumbs, and navigation APIs.
Provides C# models and patterns for menu hierarchies, breadcrumbs, mega-menus, footer nav, mobile patterns, and headless CMS navigation APIs.
Guides design, optimization, and auditing of site navigation menus for SEO, UX, and accessibility. Covers primary nav, sub-menus, mega menus, hamburger menus, semantic HTML.
Guides navigation UX design with models (hub-spoke, hierarchy, flat, content-driven), persistent vs contextual nav, breadcrumbs, and wayfinding principles. Use for app/website nav architecture, mobile constraints, or evaluating user disorientation.
Share bugs, ideas, or general feedback.
Design a comprehensive navigation system with menus, breadcrumbs, and navigation APIs.
/cms:design-navigation --type primary
/cms:design-navigation --type mega --format json
/cms:design-navigation --type all
Extract navigation type and output format from command.
Use AskUserQuestion to understand:
Invoke relevant skills for analysis:
navigation-architecture - Navigation patternspage-structure-design - Page hierarchyurl-routing-patterns - URL structurePrimary Navigation:
navigation:
name: MainNav
type: primary
max_depth: 2
items:
- label: Home
url: /
icon: home
- label: Products
url: /products
children:
- label: All Products
url: /products
- label: Categories
url: /products/categories
- label: New Arrivals
url: /products/new
- label: About
url: /about
children:
- label: Our Story
url: /about/story
- label: Team
url: /about/team
- label: Careers
url: /about/careers
- label: Contact
url: /contact
settings:
mobile_breakpoint: 768
mobile_pattern: hamburger
sticky: true
transparent_on_home: true
Mega Menu:
mega_menu:
name: ProductsMega
trigger: Products
layout: columns
columns:
- heading: Shop by Category
items:
- label: Electronics
url: /products/electronics
image: /images/nav/electronics.jpg
- label: Clothing
url: /products/clothing
image: /images/nav/clothing.jpg
- label: Home & Garden
url: /products/home-garden
- heading: Featured
items:
- label: Best Sellers
url: /products/best-sellers
badge: Popular
- label: Sale Items
url: /products/sale
badge: Up to 50% off
- heading: Quick Links
items:
- label: Gift Cards
url: /gift-cards
- label: Store Locator
url: /stores
promo:
title: Summer Sale
description: Up to 50% off selected items
image: /images/promo/summer-sale.jpg
url: /products/sale
cta: Shop Now
Breadcrumb Configuration:
breadcrumbs:
separator: /
show_home: true
home_label: Home
show_current: true
max_length: 5
truncate_middle: true
schema:
enabled: true
type: BreadcrumbList
patterns:
- path: /products/:category/:product
template:
- label: Home
url: /
- label: Products
url: /products
- label: "{category.name}"
url: /products/{category.slug}
- label: "{product.name}"
url: null # Current page
- path: /blog/:year/:month/:slug
template:
- label: Home
url: /
- label: Blog
url: /blog
- label: "{year}"
url: /blog/{year}
- label: "{post.title}"
url: null
Provide EF Core model for navigation:
public class NavigationMenu
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Type { get; set; } // primary, footer, mega
public List<NavigationItem> Items { get; set; }
public NavigationSettings Settings { get; set; }
}
public class NavigationItem
{
public Guid Id { get; set; }
public string Label { get; set; }
public string Url { get; set; }
public string Icon { get; set; }
public string Target { get; set; }
public int SortOrder { get; set; }
public Guid? ParentId { get; set; }
public List<NavigationItem> Children { get; set; }
public bool IsVisible { get; set; }
public string[] Roles { get; set; } // Role-based visibility
}
public class NavigationSettings
{
public int MobileBreakpoint { get; set; }
public string MobilePattern { get; set; }
public bool Sticky { get; set; }
public bool TransparentOnHome { get; set; }
}
// GET /api/navigation/{name}
[HttpGet("{name}")]
public async Task<ActionResult<NavigationDto>> GetNavigation(
string name,
[FromQuery] string locale = "en")
{
var navigation = await _navigationService
.GetByNameAsync(name, locale);
if (navigation == null)
return NotFound();
return Ok(navigation);
}
// Response structure
public class NavigationDto
{
public string Name { get; set; }
public string Type { get; set; }
public List<NavigationItemDto> Items { get; set; }
}
public class NavigationItemDto
{
public string Label { get; set; }
public string Url { get; set; }
public string Icon { get; set; }
public string Target { get; set; }
public bool IsActive { get; set; }
public List<NavigationItemDto> Children { get; set; }
}
Navigation must meet WCAG 2.1 AA:
| Requirement | Implementation |
|---|---|
| Keyboard Navigation | Tab order, arrow keys, Enter/Space |
| ARIA Labels | aria-label, aria-expanded, aria-current |
| Focus Management | Visible focus indicators |
| Skip Links | "Skip to main content" link |
| Mobile Touch | Touch target minimum 44x44px |
navigation-architecture - Navigation patternspage-structure-design - Page hierarchyurl-routing-patterns - URL patterns