While building with Apple's Foundation Models, I kept running into a workflow problem before the app code itself.
The hard part was not only calling LanguageModelSession. It was figuring out the shape of the interaction:
What should be in the system prompt? What should stay in the user input? What output is actually usable by the app? How much instruction is too much? How do I test the same prompt repeatedly without creating another small Xcode project?
I ended up building a small macOS tool for myself, LocalLM Lab, mainly to speed up that loop. The first use case was a Prompt Playground: system prompt, user input, model output, and a repeatable way to compare results before moving the workflow into app code.
The current version also experiments with connector-style context, such as system clock, weather, reminders/calendar, contacts, and a scoped filesystem folder. That has made the prompt design problem more interesting, because the question becomes: what context should the model see, and how should the app frame that context so the output is useful?
I am curious how other developers are handling this while building with Foundation Models.
Are you mostly iterating inside Xcode playgrounds? Are you building small internal test harnesses? Are you separating system prompts and user inputs during testing? How are you evaluating whether the output is reliable enough for the app workflow? For reference, this is the tool I have been using for my own experiments:
https://thisbrain.ai/locallm
I would be especially interested in any patterns people have found for designing and testing prompts before committing them to app code.