64ba36e710
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1.8 KiB
1.8 KiB
BroV — guide for AI coding agents
BroV is a personal, never-published fork of Coucou (github.com/Louis-CFM/coucou, MIT, imported at 83708fe). Native macOS app in NotchBuddy/: an animated character in the MacBook notch that shows Claude Code sessions, lets the user approve/answer from the notch, and chats — with the user's own claude CLI as its brain (no API key).
Where things are
NotchBuddy/Sources/App/— Mac app code.NotchBuddy/Sources/CoucouKit/— shared models, the character engine (BotEngine.swift), pills (PillCatalog.swift).NotchBuddy/Sources/App/ClaudeCodeCLI.swift— runsclaude -p … --output-format stream-json --resume <id>for the chat.NotchBuddy/Resources/sounds/— WAV sounds.NotchBuddy/project.yml— XcodeGen project (never edit the.xcodeprojby hand; it is git-ignored and regenerated).
Build
bash scripts/build.sh # xcodegen + xcodebuild, installs ~/Applications/BroV.app, relaunches
bash scripts/render-brov.sh # character in every state → /tmp/brov-states.png
DerivedData must stay outside ~/Documents (iCloud adds Finder attributes and codesign fails).
Rules
- Personal use only: never publish to GitHub or any public place. The original Coucou name, Mochi character and icon are not used in BroV.
- Swift 6, SwiftUI + AppKit, no third-party dependencies. The character is drawn in code (
Canvas+TimelineView). - Secrets live in the Keychain, never on disk or in git.
- Never block Claude Code: if the app doesn't answer, the hook exits immediately.
- Never overwrite
~/.claude/settings.json: dated backup, merge, write only after the user confirms. - Never approve a Claude Code permission without an explicit click.
- When spawning
claude, stripCLAUDECODEfrom the environment and close stdin. - Pill IDs are stable contract values: never rename an existing pill ID.