Skip to main content

Why Manage Instructions as Code?

Your analytics knowledge—business definitions, calculation formulas, SQL patterns—shouldn’t live in a UI or people’s heads. Treating instructions as code brings the same rigor you use for data pipelines:
  • Version control: Full history of what changed, when, and why
  • Code review: Team members review instruction changes before they go live
  • Automated testing: Run evals on every PR to catch regressions
  • Single source of truth: Documentation stays in sync with your data models
  • Collaboration: Data engineers, analysts, and AI work from the same definitions
If you already manage dbt models, LookML, or documentation in Git, Bow fits right into that workflow. Your existing docs become instructions automatically. Git Workflow

Connecting a Repository

Connect your Git repository in Data Sources. Bow supports:

Repository Settings


Writing Instructions in Markdown

Create .md files in your repository with YAML frontmatter to control how Bow loads them.

Basic Example

Frontmatter Options


Git CI/CD Integration

Automate your instruction workflow: create instructions in Git, run evals on PR, and deploy on merge.

Prerequisites

  1. Git Repository connected to Bow with a Personal Access Token (PAT)
  2. API Key from Bow Settings → API Keys
  3. Test Suite with test cases configured in Bow

API Reference

Base API URL should be with /api suffix. i.e https://app.bagofwords.com/api

GitHub Actions Setup

1. Add Repository Secrets

2. Add Repository Variable

3. Create Workflow File

Create .github/workflows/bow.yml:

How It Works

On PR Open/Update

  1. Sync: POST /git/{repo_id}/sync pulls your branch and creates a draft build
  2. Eval: POST /tests/runs/batch runs your test suite against the draft build
  3. Report: Results are posted as a PR comment

On PR Merge

  1. Publish: POST /builds/{build_id}/publish promotes the draft build to main
  2. Your instructions are now live in Bow

Unlinking from Git

If you need to modify a Git-synced instruction directly in Bow:
  1. Edit the instruction in Bow
  2. Save changes
  3. Confirm “Unlink from Git” when prompted
The instruction becomes user-owned and will no longer sync from the repository.