---
name: adk-unit-guide
description: Creates detailed code unit guides for source code documentation.
---

# ADK code unit guide
This skill creates a detailed developer guide for new or updated code file or direct code input. The guide it generates is meant to explain the code to a developer who wants to use it in an application, but with a higher level of technical detail than what would appear in published developer documentation. Similar to a *unit test*, a *unit guide* provides generated, granular-level documentation for a unit of code, without worrying about bloating the actual developer documentation with too many details.

## Input

- Code files containing new functionality
- Code unit tests (optional)
- Code design files (optional)
- Names of new methods and classes (optional)

## Analysis

- Review the code design files, if provided. Make note of:
  - Purpose and intended use of the new or updated code units
  - Classes that depend on the new or updated code units
  - Additional dependencies required by the new or updated code units
  - Limitations of the new or updated code units
- Review specified code file for changes and named methods, if provided.
- Determine what classes and code files may depend on the new or updated code units.

## Output

- Look for an existing guide in the `/docs/guides/***` directory of this repository.
  - If a guide already exists, update the existing guide incrementally and prioritize preserving the previous content as much as possible.
  - If no guide exists, create a guide file for the new code unit in the `/docs/guides/***` directory of this repository, using the relative path of the code unit. For example, if the code unit is called `/topic/function/class.ext`, create a guide in the location `/docs/guides/topic/function/class/index.md`.
- **Update the Index**: Whenever a new guide is created, or an existing guide's title/summary changes, update the index file `/docs/guides/README.md`. Ensure the guide is listed under the correct category with a link and a brief summary.

### Guide structure and content

Use the following structure and instructions to create the guide for the code unit:

```
# Title: name of the code file or code unit

- 2-sentence summary of the code unit

## Introduction

- Paragraph(s) explaining:
  - The purpose and application of the code unit
  - Key classes that depend on this code unit
  - Developer problems solved by this code unit

## Get started

- Present a single, minimum implementation of the code unit to demonstrate its use.
- Show enough of the containing classes to make it clear where the code could be used.
- Use unit test code as a starting point for the code example, if available.
- When writing a sample agent, do not set the `model` attribute.
- For workflow node samples, prefer using a simple Python function rather than extending `BaseNode` to demonstrate the node's logic, unless class extension is explicitly required for the use case.
- When wrapping Python functions as workflow nodes, prefer using the `@node` decorator instead of `FunctionNode` directly, whenever possible.

## How it works

- Explain how the code unit accomplishes its purpose or solves a problem.
- Mention key code classes that depend on this code unit.
- Mention code classes that this code unit depends on.
- Explain any cross-class dependencies of the code unit.

## Configuration options

- If the code unit has configuration options (e.g., settings, configuration objects), document them in a table detailing parameters, types, default values, and descriptions.
- **Do NOT** list options inherited from base classes. Focus only on options introduced by the code unit itself.
- Dive into each option to provide detailed description and usage patterns, rather than just repeating the type and a brief description.
- **Do NOT** list references of all attributes or methods of the classes. Exhaustive API references belong in auto-generated reference documentation, not in guides. Guides should focus on how to use the code unit.

## Advanced applications

- Determine if there are advanced use cases for the code unit.
- Add advanced applications of the code unit, including:
  - Problem solved
  - Implementations for special circumstances

## Limitations

- Mention any limitations of the code unit, if known.

## Related samples

- Link to relevant samples in the `contributing/` directory that demonstrate the use of this code unit.

```
