diff --git a/README.md b/README.md
index a2c7da5..8a9cedf 100644
--- a/README.md
+++ b/README.md
@@ -33,6 +33,7 @@ BuildPulse v0.1 includes:
- Pulse Log screen
- Export screen
- AI session prompt export for coding-agent handoff
+- One-click handoff prep from a selected feature
- Appwrite-backed persistence on the Unraid server
- Local cache fallback for resilience during backend hiccups
- Pulse-shaped event records
diff --git a/docs/TEST_PLAN.md b/docs/TEST_PLAN.md
index f0ec112..b370b7e 100644
--- a/docs/TEST_PLAN.md
+++ b/docs/TEST_PLAN.md
@@ -192,6 +192,19 @@ Expected:
- Contains recent pulses.
- Is useful as an AI coder handoff.
+### Test 5.5: Prepare AI handoff from selected feature
+
+Steps:
+1. Open Feature Plan.
+2. Select a feature.
+3. Click `Prepare AI Handoff`.
+4. Confirm Export view opens with the selected feature loaded into `AI_SESSION_PROMPT.md`.
+
+Expected:
+- Export view opens immediately.
+- Prompt focus feature matches the selected feature.
+- Prompt includes current goal, acceptance criteria, parking-lot guardrails, and recent relevant pulses.
+
## Manual Test Group 6 — Mobile Usability
### Test 6.1: Phone layout
diff --git a/src/App.tsx b/src/App.tsx
index f665a99..8a793fe 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -279,6 +279,15 @@ function App() {
}))
}
+ const openFeatureHandoff = (featureId: string) => {
+ setPromptFeatureId(featureId)
+ setPromptTarget('OpenClaw')
+ setActiveTab('export')
+
+ const feature = appState.features.find((entry) => entry.id === featureId)
+ setStatusMessage(feature ? `Prepared AI handoff for “${feature.title}”.` : 'Prepared AI handoff prompt.')
+ }
+
const beginParkingEdit = (item: ParkingLotItem) => {
setSelectedParkingId(item.id)
setParkingDraft({
@@ -601,6 +610,20 @@ function App() {
+ {selectedFeature && (
+ Selected and ready. Shape it here, then kick a clean brief to your agent.