## DevTools Documentation - How To Guide
The documentation for Dart & Flutter DevTools lives on [flutter.dev](https://docs.flutter.dev/development/tools/devtools/overview).

Our docs are written and pushed up to the [flutter/website](https://docs.flutter.dev/development/tools/devtools/overview)
repo by the Flutter DevRel team. Developers working on DevTools should collaborate with Flutter tech writers by following
the below workflow.

## How to request documentation updates

### For simple updates:
Some examples of "simple" updates include updating screenshots, glossary terms, coding recipes, etc. For this type of documentation request, you can include all the relevant information in a GitHub issue. Please follow
the [guidance below](#file-an-issue-on-the-flutterwebsite-repo) to create this issue.

### For feature updates that can be shown in a demo video:

1. Create a [Screencast](chrome://extensions/?id=ccbdlfckiiklnpopmgihhnegpbcgceja) (preferred) or a Google Drive video
explaining the new feature or functionality changes that require docs updates. If the feature is quick to document, you
can include a rough draft of the documentation you think should be written, but where possible, we should leave the
writing to our talented tech writers.
2. Create a Go Link pointed at your demo video.
3. Follow
the [guidance below](#file-an-issue-on-the-flutterwebsite-repo) to create a GitHub issue.

### File an issue on the flutter/website repo:

Create an [new issue](https://github.com/flutter/website/issues/new) on the flutter/website repository.
- Add a descriptive title for your request.
- Add the `devtools-request` label.
- Add relevant information to the issue description. This may include
a Go Link to your demo video or doc, a screenshot, a short description,
or any other relvant context that our tech writers may need to fulfill
your request.