# Introduction

The `analysis_server` package implements the Dart Analysis Server (sometimes
referred to as DAS). The analysis server supports both the IDE experience and
command-line tools such as `dart analyze` and `dart fix`.

This directory contains documentation related to the `analysis_server` package.

## Organization

The documentation is divided into the following sections:

- [implementation](implementation/overview.md), which describes the
  implementation of the server. It is intended to help you understand how the
  server works and how to enhance the various features provided by the server.

- [process](process/overview.md), which describes the processes that should be
  followed when working on the analysis server code base.

- [tutorial](tutorial/instrumentation.md), which provides end-user information
  about the analysis server.
