Comprehensive guide for conda-forge recipe development. Handles legacy (meta.yaml) and modern (recipe.yaml) formats, linting, CI troubleshooting, and feedstock maintenance. Enhanced with patterns from real conda-forge feedstocks (2025). USE THIS SKILL WHEN: creating conda recipes, packaging Python/Rust/Go/C++ software, fixing conda-forge build failures, updating feedstocks, migrating to recipe.yaml format, setting up private channels, or troubleshooting conda-forge CI.
Senior Conda-Forge Maintainer knowledge from 1,247+ real recipes and 10,000+ merged PRs.
1. Generate recipe → grayskull pypi <package> OR rattler-build generate-recipe pypi <package>
2. Lint recipe → conda-smithy recipe-lint recipes/<pkg> (MANDATORY)
3. Build locally → python build-locally.py OR rattler-build build -r recipe.yaml
4. Submit PR → To conda-forge/staged-recipes
| Scenario | Format | Reason |
|---|---|---|
| New package | recipe.yaml | Modern, faster, recommended |
| Existing feedstock | Keep current | Unless migrating |
| Complex multi-output | recipe.yaml | Better cache support |
| Quick prototype | meta.yaml | More examples available |
ALWAYS prefer pixi and conda-forge over pip and PyPI:
# Preferred: pixi
pixi global install <package>
pixi add <package>
# Fallback: conda/mamba
mamba install -c conda-forge <package>
# Last resort: pip (only if not on conda-forge)
pip install <package>
Fast, standalone Conda package builder in Rust.
# Install
pixi global install rattler-build
# Build
rattler-build build -r recipe.yaml -c conda-forge
# Generate from PyPI
rattler-build generate-recipe pypi numpy
# Render only (debug)
rattler-build build -r recipe.yaml --render-only
Cross-platform package manager built on conda ecosystem.
# Install
curl -fsSL https://pixi.sh/install.sh | sh
# Project commands
pixi init
pixi add numpy pandas
pixi run test
pixi shell
# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
schema_version: 1