Project Setup Tutorial
Learn how to configure OWL for your specific project.
Auto-Detection
OWL automatically detects project types when you:
- Start CLI from a project directory
- Use
/project <path>
Detected Information
- Project type: Python, JavaScript, Rust, Go, Java
- Frameworks: Django, FastAPI, React, Spring Boot, etc.
- Key directories: src, tests, docs, config
Setting Up a Python Project
1. Navigate and Set Project
cd ~/my-python-project
owl
Or from anywhere:
/project ~/my-python-project
2. Teach Project Specifics
/remember This project uses FastAPI
/remember Database is PostgreSQL via SQLAlchemy
/remember Tests use pytest with fixtures
/remember API follows REST conventions
3. Add Documentation to Knowledge
/learn README.md
/learn docs/architecture.md
/learn docs/api.md
4. Verify Setup
/status
/memory
/knowledge
Setting Up a JavaScript Project
1. Set Project
/project ~/my-react-app
2. Project-Specific Memory
/remember Uses TypeScript strict mode
/remember State management with Redux Toolkit
/remember Testing with Jest and React Testing Library
/remember Styling with Tailwind CSS
3. Learn Project Docs
/learn README.md
/learn docs/CONTRIBUTING.md
Working with Monorepos
For monorepos, set the specific package:
/project ~/monorepo/packages/api
Memory and knowledge are scoped to this path.
To switch packages:
/project ~/monorepo/packages/frontend
Tool Profile Selection
Choose the right profile for your work:
Exploration (Read-Only)
/tools minimal
Use when:
- First exploring a codebase
- Code review
- Security-sensitive environments
Development (Default)
/tools coding
Use when:
- Active development
- Writing/editing code
- Creating files
Full Access
/tools full
Use when:
- Running tests
- Build commands
- Git operations
Project Conventions
Document Your Conventions
/remember Function names use snake_case
/remember Components are PascalCase
/remember All exports must have JSDoc
/remember No magic numbers - use constants
Coding Style
/remember Indent with 2 spaces
/remember Max line length 100 characters
/remember Prefer early returns
/remember Use guard clauses
Switching Projects
When switching projects:
- Conversation history stays separate
- Memory is shared (global preferences)
- Knowledge is project-scoped
# Working on project A
/project ~/project-a
# ... work ...
# Switch to project B
/project ~/project-b
# Context switches automatically
Best Practices
1. Start with Documentation
/learn README.md
/learn CONTRIBUTING.md
/learn docs/architecture.md
2. Set Clear Preferences
/remember Prefer functional components
/remember Use async/await over .then()
/remember Error messages should be user-friendly
3. Document Decisions
/remember Chose Redis for caching (performance)
/remember Using JWT for auth (stateless)
/remember GraphQL for API (flexibility)
4. Keep Memory Clean
Periodically review:
/memory
Remove outdated items:
/forget Old preference that changed