ワンクリックで
umb-navigation
Implement shared site navigation and validate rendering with Playwright. Use when asked to add or improve navigation.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Implement shared site navigation and validate rendering with Playwright. Use when asked to add or improve navigation.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
Add hero images to blog posts and render image previews on list and detail pages. Use when asked to add blog media.
Ensure sufficient authored blog entries for the demo. Use when asked to generate or expand blog content.
Run the end-to-end Umbraco blogging-site demo as a Conductor multi-agent workflow. Use when asked to build the full demo site via Conductor (the orchestrated, workflow-driven variant of the umbraco-demo agent).
Create Blog List and Blog page document types and templates, plus exactly one starter blog post. Use when asked to set up blog pages in Umbraco.
Create the Umbraco home page structure, template, styling, and published root content. Use when asked to scaffold or build the home page.
Run accessibility checks and fix issues until passing. Use when asked to test or improve website accessibility.
SOC 職業分類に基づく
| name | umb-navigation |
| description | Implement shared site navigation and validate rendering with Playwright. Use when asked to add or improve navigation. |
Git: Before making changes, verify you are on a
develop/*branch (seegit.instructions.md).
src/MyProject/Views/Partials._Layout.cshtml (created in the home-page step), not separately inside each page template. Because every page already inherits _Layout.cshtml, adding the nav to the layout makes it appear on all pages automatically — do not paste the nav markup or Html.PartialAsync("Navigation") call into individual templates.Use this exact shape for src/MyProject/Views/Partials/Navigation.cshtml. It compiles first time. Re-style the markup/classes/labels to match your theme, but keep the data-access pattern identical. Do NOT replace it with your own "more dynamic" navigation — past runs that rewrote the data-access logic from scratch threw a Razor compilation exception (HTTP 500) and burned several minutes recovering. Start from this partial and change only the presentation:
@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage
@{
var home = Model.Root();
var blogList = home.Children().FirstOrDefault(x => x.ContentType.Alias == "blogList");
}
<nav>
<a href="@home.Url()" class="@(Model.Id == home.Id ? "active" : "")">Home</a>
@if (blogList != null)
{
<a href="@blogList.Url()" class="@(Model.Id == blogList.Id || Model.Parent?.Id == blogList.Id ? "active" : "")">Blog</a>
}
</nav>
Avoid these compile traps that have cost ~5 minutes of failed iteration on past runs (they throw a Razor compilation exception → site returns HTTP 500 / shows div#stackpage):
@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage. Without it Model.Root()/Model.Id won't resolve.home.Children() (the method, an Umbraco.Extensions extension) — NOT home.Children as a property.System.Linq (FirstOrDefault, Where) and Umbraco.Extensions are already globally available via _ViewImports.cshtml + implicit usings — do NOT add extra @using directives hunting for them; that is not the cause of compile errors.Model.Root() can be null very early; blogList may not exist yet) with ?. and an @if as shown — unguarded access is the usual real cause of the 500.Model.Id/Model.Parent?.Id to the nav node id (URL/string parsing is unnecessary and fragile)..cshtml — Razor views compile at runtime, so a save + browser refresh is enough. A 500 / div#stackpage immediately after a .cshtml edit is a Razor compilation error in the view you just changed, NOT a stale-process problem — restarting will NOT fix it and just wastes minutes. Never Stop-Process the dotnet site or run dotnet run to recover from a 500 here.src/MyProject/umbraco/Logs/UmbracoTraceLog.*.json and find the compilation error line + line number. Do NOT use Invoke-WebRequest/curl to probe the site or read the detached dotnet run console log — the compilation exception with its line number is in the Umbraco trace log. Fix the partial, then just refresh the browser.SITE_BASE_URL and verify:
After validation passes, commit all changes before considering this step done:
git add -A
git commit -m "Step 3: Navigation — <brief summary of what was added>"
This commit is mandatory. The step is not complete until the commit exists in the git log.