{"id":13869694,"url":"https://github.com/conda/grayskull","last_synced_at":"2026-01-18T20:12:38.377Z","repository":{"id":37025918,"uuid":"232273355","full_name":"conda/grayskull","owner":"conda","description":"Grayskull :skull: - Recipe generator for Conda","archived":false,"fork":false,"pushed_at":"2026-01-12T16:36:21.000Z","size":2724,"stargazers_count":366,"open_issues_count":67,"forks_count":79,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-01-13T14:34:58.691Z","etag":null,"topics":["conda","conda-build","conda-build-recipes","conda-packages","conda-recipe","hacktoberfest","recipe","skeleton"],"latest_commit_sha":null,"homepage":"https://conda.github.io/grayskull/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/conda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"marcelotrevisani","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-01-07T07:57:51.000Z","updated_at":"2026-01-13T09:14:26.000Z","dependencies_parsed_at":"2023-02-17T09:46:08.148Z","dependency_job_id":"88bea982-69ef-42b1-bdb8-40d2d1a6a210","html_url":"https://github.com/conda/grayskull","commit_stats":{"total_commits":369,"total_committers":36,"mean_commits":10.25,"dds":0.5501355013550135,"last_synced_commit":"312ad3a62d55aa53e8224a49905bb5cfe205bab9"},"previous_names":["conda-incubator/grayskull"],"tags_count":82,"template":false,"template_full_name":null,"purl":"pkg:github/conda/grayskull","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conda%2Fgrayskull","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conda%2Fgrayskull/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conda%2Fgrayskull/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conda%2Fgrayskull/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/conda","download_url":"https://codeload.github.com/conda/grayskull/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conda%2Fgrayskull/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28549741,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T19:56:05.265Z","status":"ssl_error","status_checked_at":"2026-01-18T19:55:54.685Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["conda","conda-build","conda-build-recipes","conda-packages","conda-recipe","hacktoberfest","recipe","skeleton"],"created_at":"2024-08-05T20:01:12.216Z","updated_at":"2026-01-18T20:12:38.373Z","avatar_url":"https://github.com/conda.png","language":"Python","funding_links":["https://github.com/sponsors/marcelotrevisani"],"categories":["Python"],"sub_categories":[],"readme":"# Grayskull\n-------------\n[![Tests](https://github.com/conda/grayskull/actions/workflows/tests.yml/badge.svg)](https://github.com/conda/grayskull/actions/workflows/tests.yml) [![Deployment (PyPI)](https://github.com/conda/grayskull/actions/workflows/publish_pypi.yml/badge.svg)](https://github.com/conda/grayskull/actions/workflows/publish_pypi.yml)\n\n[![codecov](https://codecov.io/gh/conda/grayskull/branch/master/graph/badge.svg)](https://codecov.io/gh/conda/grayskull) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) ![](https://img.shields.io/badge/python-3.8+-blue.svg) ![](https://img.shields.io/github/license/conda/grayskull.svg) [![PyPI version](https://badge.fury.io/py/grayskull.svg)](https://badge.fury.io/py/grayskull) [![Conda Version](https://img.shields.io/conda/vn/conda-forge/grayskull.svg)](https://anaconda.org/conda-forge/grayskull) [![Gitter](https://badges.gitter.im/conda_grayskull/community.svg)](https://gitter.im/conda_grayskull/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\n\n-------------\n\u003cspan align=\"center\"\u003e\n    \u003cbr\u003e\n    \u003cimg src=\"https://static.wikia.nocookie.net/heman/images/3/33/Grayskull.jpg\" align=\"center\" /\u003e\n    \u003cbr\u003e\n    \u003ci\u003e\"Skeleto\u003cstrike\u003en\u003c/strike\u003er's main goal is to conquer the mysterious fortress of Castle Grayskull, from which He-Man draws his powers. If he succeeds, Skeletor would be able to conquer not only Eternia, but the whole universe.\"\u003c/i\u003e \u003c/br\u003eAdapted from \u003ca href=https://en.wikipedia.org/wiki/Skeletor\u003eWikipedia\u003c/a\u003e. Image credits: \u003ca href=https://he-man.fandom.com\u003ehttps://he-man.fandom.com\u003c/a\u003e\n\u003c/span\u003e\n\n\n-------------\n## Introduction\n\nGrayskull is an automatic conda recipe generator. \u003cbr\u003e\nThe main goal of this project is to generate concise recipes\nfor [conda-forge](https://conda-forge.org/).\nThe Grayskull project was created with the intention to eventually replace `conda skeleton`. \u003cbr\u003e\nPresently Grayskull can generate recipes for Python packages available on PyPI and also those not published on PyPI but available as GitHub repositories.\nGrayskull can also generate recipes for R packages published on CRAN.\nFuture versions of Grayskull will support recipe generation for packages of other repositories such as Conan and CPAN etc.\n\n## Installation\n\nIt is possible to install this project using `pip`:\n```bash\npip install grayskull\n```\n\nor `conda`, using the ``conda-forge`` channel:\n```bash\nconda install -c conda-forge grayskull\n```\n\nIt is also possible to clone this repo and install it using `pip`:\n```bash\ngit clone https://github.com/conda/grayskull.git\ncd grayskull\npip install -e .\n```\n\n## Usage\n\nIt is pretty simple to use `grayskull`. Just call it, pass the repository\n (`pypi` or `cran`) and the package name.\n\n* Example:\n```bash\ngrayskull pypi pytest\n```\n\nAfter that `grayskull` will create a folder with the same name as the package\nand inside this folder the generated recipe will be present (`meta.yaml`).\n\n* Example with `pytest` (`grayskull pypi pytest`):\n\n![Grayskull CLI](https://github.com/conda/grayskull/raw/main/images/cli_example_grayskull.gif)\n\nIf your package is a GitHub repository just replace the package name with the GitHub repository URL. \u003cbr\u003e\nFor example: \u003cbr\u003e\n\n```bash\ngrayskull pypi https://github.com/confluentinc/confluent-kafka-python\n```\n\nYou can also generate a recipe from a local sdist archive:\n\n```bash\ngrayskull pypi ./pytest-5.3.5.tar.gz\n```\n\nNote that such a recipe isn't really portable as it will depend on the local path of the\nsdist file. It can be useful if you want to automatically generate a conda package.\n\n### Use Grayskull with an internal package index\n\nGrayskull can create recipes that point to any Python Package Index. Supply the `--pypi-mirror-url` keyword.\n\n* Example:\n```bash\ngrayskull pypi --pypi-mirror-url https://pypi.example.com pytest\n```\n\nThe above will source packages from `https://pypi.example.com/packages/source/...`\n\nThis assumes that the mirror follows the same API as pypi _including_ hosting metadata at the `/pypi/{package_name}/json` endpoint.\nTo specify an alternate metadata location use the `--pypi-metadata-url` option.\n\n* Example:\n```bash\ngrayskull pypi --pypi-mirror-url https://pypi.example.com --pypi-metadata-url https://pypi_meta.example.com pytest\n```\n\n\u003e *Note:* `--pypi-metadata-url` is a replacement for `--pypi-url`; `--pypi-url` is deprecated and will be removed in a future release.\n\n### Checking package availability against custom indexes\n\nBy default, Grayskull checks if packages are available on conda-forge and highlights missing dependencies. You can specify custom package indexes to check against using the `--package-indexes` argument:\n\n```bash\ngrayskull pypi --package-indexes my-channel company-channel conda-forge pytest\n```\n\nThis will check if packages exist in `my-channel`, `company-channel`, or `conda-forge` (in that order) and mark them accordingly in the output.\n\nYou can also specify full URLs for internal package indexes that don't use anaconda.org:\n\n```bash\ngrayskull pypi --package-indexes https://internal-conda.example.com http://another-conda.example.com conda-forge pytest\n```\n\nBoth HTTP and HTTPS protocols are supported for custom package indexes. This is particularly useful for internal networks that don't have access to anaconda.org.\n\nFor internal package indexes with custom API structures, you can use the `{pkg_name}` placeholder in your URL:\n\n```bash\ngrayskull pypi --package-indexes \"https://internal-conda.example.com/api/{pkg_name}/available\" conda-forge pytest\n```\n\nThis allows you to specify exactly how your internal package index API works, rather than using the default `/pkg_name/files` path structure.\n\n### Online Grayskull\n\nIt is also possible to use Grayskull without any installation. You can go to this website [marcelotrevisani.com/grayskull](https://www.marcelotrevisani.com/grayskull) and inform the name and the version (optional) of the package and it will create the recipe for you.\n\n\n## License\nCopyright Marcelo Duarte Trevisani and contributors, 2020-2023.\n\nDistributed under the terms of the Apache 2.0 license, grayskull is free and open source software.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconda%2Fgrayskull","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconda%2Fgrayskull","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconda%2Fgrayskull/lists"}