diff --git a/docs/superpowers/plans/2026-06-04-frontend-spa-milestone-2.md b/docs/superpowers/plans/2026-06-04-frontend-spa-milestone-2.md
new file mode 100644
index 0000000..92776b9
--- /dev/null
+++ b/docs/superpowers/plans/2026-06-04-frontend-spa-milestone-2.md
@@ -0,0 +1,1207 @@
+# Frontend SPA — Milestone 2 (Object Authoring) 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:** Create / edit / delete catalogue objects from the SPA, including the dynamic flexible-field form (all field types) — consuming the existing admin endpoints.
+
+**Architecture:** New full-width route `/objects/new`; in-pane edit at `/objects/:id/edit` via nested routes under `ObjectsPage` (list + `` right pane). A shared `ObjectForm` (react-hook-form) renders inventory-minimum core fields plus dynamic flexible fields; `FieldInput` switches on `data_type` to the right control (term/authority are id-valued `