agentleFS
owidowid/etl/.github/instructions/copilot-instructions.md

etl / instructions

Copilot instructions160 starsChanged 6 months agoMITView on GitHub

This repository contains the ETL (Extract, Transform, Load) system for Our World in Data. It processes, versions, and maintains datasets from various sources. Use these guidelines when suggesting code for this project.

We split this copilot-instructions.md into the rules it gives an agent

13 rules. About 0 are common, 10 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈10

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    NEVER query MCP servers with custom python code, just ask the MCP server directly.

    line 10
  2. Distinctive:

    Follow PEP 8 Python style guidelines with a line length of 120 characters

    line 18
  3. Distinctive:

    Use type hints for all function definitions

    line 19
  4. Distinctive:

    Always handle country name harmonization using the ETL's built-in functions

    line 21
  5. Distinctive:

    Document functions and classes with docstrings

    line 22
  6. Distinctive:

    Add appropriate metadata to datasets according to our metadata schema

    line 23
  7. Distinctive:

    Write unit tests for new functionality

    line 24
  8. Distinctive:

    Create a snapshot of the raw data

    line 29
  9. Distinctive:

    Create grapher configuration if needed

    line 32
  10. Very specific:

    Run make test to run tests

    line 36
  11. Very specific:

    Run make format to format code

    line 37
  12. Very specific:

    Run make etl to process data

    line 38
  13. Distinctive:

    Use these guidelines when suggesting code for this project.

    line 49

≈ “Common” is an estimate: at least 1 in 5 of the 3,669 Copilot instructions files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
copilot-instructions.md

OWID ETL Copilot Instructions

This repository contains the ETL (Extract, Transform, Load) system for Our World in Data. It processes, versions, and maintains datasets from various sources.

Custom instructions

  • NEVER query MCP servers with custom python code, just ask the MCP server directly. If it is not running, let me know.

Architecture

  • We use a DAG-based workflow with YAML configuration files in the dag/ directory
  • Processing happens in channels: Snapshot → Meadow → Garden → Grapher
  • Data processing steps are defined with URIs like data://garden/happiness/2025-03-28/happiness

Development Guidelines

  • Follow PEP 8 Python style guidelines with a line length of 120 characters
  • Use type hints for all function definitions
  • For large datasets, prefer pandas operations that work on entire dataframes over row-by-row operations
  • Always handle country name harmonization using the ETL's built-in functions
  • Document functions and classes with docstrings
  • Add appropriate metadata to datasets according to our metadata schema
  • Write unit tests for new functionality
  • Imports should be placed at the top of the file
  • Let the errors propagate without try-catch block, don't catch them and re-raise with a generic message

Process for Creating ETL Steps

  1. Create a snapshot of the raw data
  2. Process to meadow format (clean CSV)
  3. Harmonize to garden format (standardized entities and variables)
  4. Create grapher configuration if needed

Tools We Use

  • We use make for common development tasks
  • Run make test to run tests
  • Run make format to format code
  • Run make etl to process data
  • We use pytest for testing

File Structure Conventions

  • Steps for building datasets are in the etl/steps directory
  • Core ETL code is in the etl/ directory
  • Snapshots are stored in snapshots/<producer>/<date>/ directories
  • Python processing code for snapshots is in .py files with the same name
  • DVC files (.dvc) track the large data files
  • Metadata for datasets is in .meta.yml files

Use these guidelines when suggesting code for this project.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.