File Management
Reading files
Section titled “Reading files”Ask naturally — BMO will pick the right tool:
Show me internal/agent/agent.goWhat's in the config file?Show lines 100–200 of the main handler.BMO uses view for reading files. For binary or image files, the tool will indicate it can’t read them.
Searching files
Section titled “Searching files”By content
Section titled “By content”Find all files that call json.UnmarshalWhere is the connection pool configured?Grep for TODO comments in the internal/ directoryBMO uses grep with regex patterns. You can also be explicit:
grep -r "ErrNotFound" in internal/By name/path
Section titled “By name/path”Find all *_test.go files in internal/List all .yaml files in the projectBMO uses glob for path pattern matching.
By symbol (LSP)
Section titled “By symbol (LSP)”Find all references to the Options structShow me all implementations of the Tool interfaceWhen LSP is active, BMO uses lsp_references for precise cross-file symbol search.
Editing files
Section titled “Editing files”Tell BMO what to change; it will propose the edit using the edit tool:
Add a Timeout field to the Options struct in config.goRename the function handleRequest to handleHTTPRequest everywhereFix the missing error check on line 42 of server.goWriting new files
Section titled “Writing new files”Create a new file internal/cache/cache.go with a simple LRU cache interfaceGenerate a Makefile with build, test, and lint targetsBMO uses write for new files. It will show you the content before creating.
Bulk operations
Section titled “Bulk operations”Add a license header to every .go file in internal/Rename all occurrences of "userId" to "userID" across the codebaseFor bulk edits, BMO may use a combination of grep, edit, and confirmation. Use Staged Workflow to review the full plan before execution.
Watching what changed
Section titled “Watching what changed”Show me what files I've changed since the last commitWhat did I just edit?BMO can run git diff and summarize changes for you.