---
name: Version prompts like product copy
description: >-
  Teach a beginner Edge FDE to version Foundation Models instructions on iOS 27
  and macOS 27, then route and roll them back with Dynamic Profiles and
  Dynamic Instructions.
---
# Version prompts like product copy

Use this course when instruction text lives in a Swift view and nobody can roll it back. Treat prompts like product copy: a version, an owner, a live flag, and a way to switch. Apple's runtime switch is Dynamic Profiles and Dynamic Instructions. Apple does not ship a hosted prompt registry. You store the versions.

## End-to-end agent recipe

1. Start with [lesson 01](01-prompts-are-copy.llms.md). Treat instructions as copy that can go wrong.
2. Use [lesson 02](02-store-versions.llms.md) for a versioned record (id, text, status).
3. Use [lesson 03](03-route-with-profiles.llms.md) for Dynamic Instructions and Dynamic Profiles.
4. Use [lesson 04](04-ab-and-rollback.llms.md) for experiment buckets and a one-step rollback.
5. Use [lesson 05](05-ship-the-registry.llms.md) for a bundled file the team can edit and a release checklist.
6. Keep these links exact: [Stream tokens and measure speed](../on-device-streaming-metrics/), [Test AI behavior before you ship](../on-device-eval-harness/), [Trace every step of an AI call](../on-device-llm-tracer/), and [Core AI vs Core ML vs MLX](../core-ai-vs-core-ml-vs-mlx/).
7. Cite [WWDC26 session 242](https://developer.apple.com/videos/play/wwdc2026/242/) and the Foundation Models Dynamic Profile docs when a source is needed.
8. Use the human HTML pages for the reader. Use the `.llms.md` briefs for agent steps and acceptance checks.

## Constraints

- Plain spoken English for a non-native reader.
- Literal sentences. No flourish, no quizzes.
- Do not use em dashes.
- Use no Mermaid. Build progressive `.flow` diagrams in HTML.
- Do not invent a hosted Apple prompt registry. Say the registry is yours. Dynamic Profiles are Apple's switch.
- iOS 27, macOS 27, and Xcode 27 only.
- Mark Swift sketches as sketches. Do not use Python for the registry.

## Key concepts

- Prompts are product copy: version, owner, live flag, and a rollback path.
- Your registry stores versions. Apple provides Dynamic Profiles and Dynamic Instructions as the runtime switch.
- One live record per feature. Retired records stay for rollback.
- Bundle `prompts.json` and eval before you mark a version live.

## Takeaways

- You can store prompt versions as data, not hard-coded view strings.
- You can point a Dynamic Profile at the live record and roll back by id.
- You can ship a registry file the team can edit with a release checklist.

## Acceptance checks

- Every human lesson HTML has **Key concepts** and **Takeaways** sections before lesson-nav. The course home has the same two headings for the whole course.
- Five human lessons exist with the requested basenames.
- Five matching `.llms.md` briefs exist and link to their human HTML pages.
- Every human lesson has its Agent brief link and sibling-course links.
- The course index lists all five lessons, the course SKILL.md, and all five briefs.
- Diagrams are progressive HTML `.flow` elements. There is no Mermaid, no em dash, and no quiz.

## Environment setup

No runtime environment is required. The short code samples are sketches of public APIs, not a project to run.
