0f77ec8704
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
26 lines
1.7 KiB
Markdown
26 lines
1.7 KiB
Markdown
# 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` — runs `claude -p … --output-format stream-json --resume <id>` for the chat.
|
|
- `NotchBuddy/Resources/sounds/` — WAV sounds.
|
|
- `NotchBuddy/project.yml` — XcodeGen project (never edit the `.xcodeproj` by hand; it is git-ignored and regenerated).
|
|
|
|
## Build
|
|
```
|
|
cd NotchBuddy && xcodegen && xcodebuild -scheme BroV -configuration Debug -derivedDataPath build build
|
|
open build/Build/Products/Debug/BroV.app
|
|
```
|
|
|
|
## 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`, strip `CLAUDECODE` from the environment and close stdin.
|
|
- Pill IDs are stable contract values: never rename an existing pill ID.
|