Documentation Index
Fetch the complete documentation index at: https://braintrust.dev/docs/llms.txt
Use this file to discover all available pages before exploring further.
Looking at the current article, I see the issue - it references Python scripts that don’t exist in the repository. Let me update the article to use actual Braintrust SDK commands that users can run directly.
---
title: Copy prompts, scorers, and datasets across projects
pylon_issue_id: '15549'
pylon_issue_uuid: '6807d9e1-31a4-4fc8-9714-5a68d60b633d'
assignee: "James Purcell"
'og:image': 'https://www.braintrust.dev/og?template=docs&title=Copy%20prompts%2C%20scorers%2C%20and%20datasets%20across%20projects'
---
## Summary
**Goal:** Copy or share prompts, scorers, and dataset records from one Braintrust project to another.
**Features:** Cross-project UI picker, Python SDK, dataset export/import, BTQL filtering.
## Configuration steps
### Step 1: Reference resources cross-project in the Playground UI
No copying required for read-only use. In the Playground, click **+ Task**, **+ Scorer**, or **Select a dataset**. Each dropdown includes an **Other projects...** option to reference resources from another project directly.
### Step 2: Copy a prompt to another project (editable local copy)
Use the Python SDK to duplicate a prompt:
```python
import braintrust
# Get the prompt from source project
source_client = braintrust.init(project="Source Project Name")
source_prompt = source_client.get_prompt("prompt-slug")
# Create copy in target project
target_client = braintrust.init(project="Target Project Name")
target_client.prompts.create(
name=source_prompt.name,
slug=source_prompt.slug + "-copy", # Use different slug to avoid conflicts
prompt_data=source_prompt.prompt_data,
description=source_prompt.description,
)
Step 3: Copy a scorer to another project (editable local copy)
Use the Python SDK to duplicate a scorer function:
import braintrust
# Get scorer function from source project
source_client = braintrust.init(project="Source Project Name")
scorer_functions = source_client.functions.list()
source_scorer = next(f for f in scorer_functions if f.slug == "scorer-slug")
# Create copy in target project
target_client = braintrust.init(project="Target Project Name")
target_client.functions.create(
slug=source_scorer.slug + "-copy",
name=source_scorer.name,
function_data=source_scorer.function_data,
function_type="scorer"
)
Alternatively, recreate the scorer manually in the destination project via the UI using the same configuration.
Step 4: Export filtered dataset rows and import to target project
- Open the source dataset in the UI.
- Apply your BTQL filter.
- Download the filtered subset using the export/download button.
- In the target project, create or open a dataset and upload the downloaded file.
The Add to dataset picker in the UI also supports selecting a dataset in another project as the target directly.
Notes
- Cross-project references (Step 1) share the resource — changes in the source project affect all references.
- Steps 2–3 create independent local copies that can be modified without affecting the source.
- Use different slugs when copying to avoid naming conflicts.
- Ensure you have appropriate permissions in both source and target projects.