diff --git a/docs/superpowers/plans/2026-05-17-sidenav-polish.md b/docs/superpowers/plans/2026-05-17-sidenav-polish.md
new file mode 100644
index 000000000..81ec3270d
--- /dev/null
+++ b/docs/superpowers/plans/2026-05-17-sidenav-polish.md
@@ -0,0 +1,788 @@
+# Chat sidenav polish — Implementation Plan
+
+> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
+
+**Goal:** Rework the chat-sidenav so the minimized state is functionally useful (icon rail), add a footer with left + right slots, and promote "New chat" + "New project" buttons to match the chat-input pill family.
+
+**Architecture:** All changes are within `libs/chat`'s `chat-sidenav` composition + `chat-project-list` primitive + the demo's `demo-shell.component`. The existing slot infrastructure (`[sidenavHeader]`, `[sidenavPrimary]`, `[sidenavSections]`, `[sidenavAccount]`) is extended with two new selectors: `[sidenavFooterLeft]` and `[sidenavFooterRight]`. The `[sidenavAccount]` slot is preserved for back-compat (deprecated but functional).
+
+**Tech Stack:** Angular 20+ standalone components, signals, CSS custom properties, vitest.
+
+**Spec:** `docs/superpowers/specs/2026-05-17-sidenav-polish-design.md`
+
+**Branch:** `claude/sidenav-polish` (already checked out; spec committed at `b4f521e1`).
+
+---
+
+## File Structure
+
+**Modify:**
+- `libs/chat/src/lib/compositions/chat-sidenav/chat-sidenav.component.ts` — template additions: new footer with `[sidenavFooterLeft]` + `[sidenavFooterRight]` slots; move collapse toggle out of `__topbar` into the footer; CSS class renames on the New chat button
+- `libs/chat/src/lib/compositions/chat-sidenav/chat-sidenav.component.spec.ts` — new vitest cases for slot projection, collapse toggle relocation, button styling
+- `libs/chat/src/lib/styles/chat-sidenav.styles.ts` — new classes for `.chat-sidenav__footer`, `.chat-sidenav__footer-left`, `.chat-sidenav__footer-right`, `.chat-sidenav__toggle`; new primary-pill style for `.chat-sidenav__action--new`; collapsed-mode rules
+- `libs/chat/src/lib/styles/chat-project-list.styles.ts` — restyle the existing "+ New project" button to secondary pill
+- `examples/chat/angular/src/app/shell/demo-shell.component.ts` — project a theme-switcher button into `[sidenavFooterRight]`
+
+**Conventions used across tasks:**
+- Slot selectors: `[sidenavFooterLeft]`, `[sidenavFooterRight]` (new); `[sidenavAccount]` (kept for back-compat)
+- CSS classes: `chat-sidenav__footer`, `chat-sidenav__footer-left`, `chat-sidenav__footer-right`, `chat-sidenav__toggle`
+- Existing class `chat-sidenav__action--new` keeps its name but the rendering style changes to primary pill
+- Theme-switcher in demo: a 28×28 transparent icon button that toggles `data-color-scheme` and `data-ngaf-chat-theme` on ``. Reuses existing `DemoShell.colorScheme()` + `onColorSchemeChange(next)`.
+
+---
+
+## Task 1: Add footer slots + move collapse toggle into footer
+
+**Files:**
+- Modify: `libs/chat/src/lib/compositions/chat-sidenav/chat-sidenav.component.ts`
+- Modify: `libs/chat/src/lib/compositions/chat-sidenav/chat-sidenav.component.spec.ts`
+
+- [ ] **Step 1: Write the failing tests**
+
+Append to `libs/chat/src/lib/compositions/chat-sidenav/chat-sidenav.component.spec.ts`:
+
+```ts
+describe('ChatSidenavComponent — footer slots', () => {
+ it('renders [sidenavFooterLeft] projected content in the left footer position', async () => {
+ @Component({
+ standalone: true,
+ imports: [ChatSidenavComponent],
+ template: `