# Contributing to Flutter Packages

[![Build Status](https://api.cirrus-ci.com/github/flutter/packages.svg)](https://cirrus-ci.com/github/flutter/packages/main)

_See also: [Flutter's code of conduct](https://github.com/flutter/flutter/blob/master/CODE_OF_CONDUCT.md)_

## Welcome

For an introduction to contributing to Flutter, see [our contributor
guide](https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md).

Additional resources specific to the packages repository:
- [Setting up the Packages development
  environment](https://github.com/flutter/flutter/wiki/Setting-up-the-Packages-development-environment),
  which covers the setup process for this repository.
- [Packages repository structure](https://github.com/flutter/flutter/wiki/Plugins-and-Packages-repository-structure),
  to get an overview of how this repository is laid out.
- [Contributing to Plugins and Packages](https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages),
  for more information about how to make PRs for this repository.

## Notes

### Style

Flutter packages follow [Flutter's style
guide](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo), with the
exception that code is formatted with `dart format`.

### Releasing

If you are a team member landing a PR, or just want to know what the release
process is for package changes, see [the release
documentation](https://github.com/flutter/flutter/wiki/Releasing-a-Plugin-or-Package).
