Skip to main content

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:

  1. Conversation history stays separate
  2. Memory is shared (global preferences)
  3. 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