iOS 18+ app that shows one reminder at a time from a list you choose (default: a Reminders list named Monotasker).
brew install xcodegencd /path/to/monotask
xcodegen generate
open Monotasker.xcodeproj
Then select an iPhone simulator or device and run (⌘R).
xcodegenPutting Development Team only in the Xcode UI does not survive xcodegen generate (the project file is recreated). Putting it only in YAML is easy to get wrong and triggers “No Account for Team” if the ID does not match Xcode → Settings → Accounts.
If Xcode says signing “requires a development team”: the local team file is missing or still has the placeholder. Without it, xcodegen generate produces a project with no DEVELOPMENT_TEAM (the UI choice alone does not survive regeneration).
Recommended: keep team in Monotasker/Config/MonotaskerSigning.local.xcconfig (gitignored). Each xcodegen generate runs a post-generate step: if that file does not exist, it is copied from MonotaskerSigning.local.xcconfig.example.
xcodegen generate once so MonotaskerSigning.local.xcconfig appears (or copy the example file manually).MonotaskerSigning.local.xcconfig and replace XXXXXXXXXX with your real 10-character Team ID — use Build Settings → Development Team after you have successfully picked Personal Team and built once (must match Xcode → Settings → Accounts). You can cross-check with security find-identity -v -p codesigning (parentheses on the Apple Development: line).Monotasker/Config/MonotaskerSigning.xcconfig #include?s that file; it is not overwritten by xcodegen.If you see “No Account for Team”: fix Accounts and the ID inside MonotaskerSigning.local.xcconfig so they match; remove or fix the bad ID in that file, then build again.
project.local.yml remains available for other optional overrides; prefer the xcconfig path above for Development Team.
Grant full Reminders access when prompted. The app needs read access to incomplete reminders, not write-only.
CFBundleDisplayName in Monotasker/App/Info.plist (or override via project.yml INFOPLIST_KEY_CFBundleDisplayName).PRODUCT_BUNDLE_IDENTIFIER / target name in project.yml.xcodegen generate again.xcodegen generate
# Pick a booted or available iPhone simulator (name + OS must match an installed runtime)
xcodebuild -scheme Monotasker -destination 'platform=iOS Simulator,name=iPhone 16,OS=18.1' test
Verified on this machine with Xcode 16 / iOS 18.1 simulator. List devices: xcrun simctl list devices available.
The onboarding screen appears when Reminders permission is .undetermined (first run) or has been denied. To reset permission on the simulator without wiping it:
xcrun simctl privacy booted reset reminders com.jonplummer.monotasker
Then relaunch the app. On a real device, delete and reinstall the app to reset permission state.
PolyForm Noncommercial 1.0.0 — free for noncommercial use.