Documentation

reference/README.md

About Reference Documentation

What's Here

Information-oriented documentation that provides accurate, detailed technical descriptions.

Current reference docs:

  • components/ - Catalog of all components
  • api/ - API endpoint documentation
  • patterns/ - Architectural patterns and best practices
  • configuration/ - Configuration schemas and options
  • tools/ - Development tools and agents
  • build-system.md - MSBuild architecture

What Belongs Here

Reference documentation is descriptive and:

  • Provides technical descriptions
  • Lists all options, parameters, settings
  • Describes structure accurately
  • Is comprehensive and authoritative
  • Answers "what is X?" questions

Examples of good reference docs:

  • "Component API Reference" - All methods, parameters, return types
  • "Configuration Schema" - All config options with types and defaults
  • "MSBuild Properties" - All available properties
  • "Architectural Patterns Catalog" - Complete list of patterns

What Doesn't Belong Here

❌ Step-by-step guides → Use how-to/
❌ Teaching materials → Use tutorials/
❌ Conceptual explanations → Use explanation/
❌ Operational procedures → Use operations/

How to Think About This

Analogy: A dictionary or encyclopedia

  • Reference: "API: interface { method GetById(int id) }"
  • Not reference: "How to call the API" (that's how-to)
  • Not reference: "Why we use interfaces" (that's explanation)
  • Not reference: "Build your first API" (that's tutorial)

Key characteristics:

  • Dry and factual - Just the facts
  • Comprehensive - Everything is documented
  • Consistent structure - Same format throughout
  • Easy to scan - Find information quickly
  • Authoritative - Single source of truth

Writing Guidelines

Structure

Use consistent structure for each type:

API Reference:

## Method: MethodName

**Signature:**
```csharp
Task<ReturnType> MethodName(ParamType param)

Parameters:

  • param (ParamType) - Description

Returns:

  • ReturnType - Description

Exceptions:

  • ExceptionType - When thrown

**Configuration Reference:**
```markdown
## Setting: SettingName

**Type:** `string`
**Default:** `"value"`
**Required:** Yes/No

Description of what this setting does.

**Example:**
```json
{
  "SettingName": "value"
}

### Style
- Be precise and technical
- Use consistent terminology
- Omit unnecessary words
- Format for scanning (tables, lists)
- Include all details
- Keep it current

## Organization

Reference docs are organized by **what you're looking up**:

- **`components/`** - Component catalog and capabilities
- **`api/`** - HTTP endpoints, request/response schemas
- **`patterns/`** - Design patterns, best practices, anti-patterns
- **`configuration/`** - Config files, options, schemas
- **`tools/`** - CLI tools, agents, development tools

## When to Create Reference Docs

Create reference documentation when:
- ✅ You have a complete API or interface to document
- ✅ There are configuration options that need specification
- ✅ You're cataloging components or patterns
- ✅ Information will be looked up frequently

Don't create reference docs when:
- ❌ Teaching how to use something (use tutorial/how-to)
- ❌ Explaining why something exists (use explanation)

## Maintaining Reference Docs

Reference docs should:
- **Stay current** - Update when code changes
- **Be complete** - Document everything, even if obvious
- **Be consistent** - Use same format throughout
- **Be accurate** - Match the actual implementation
- **Link to source** - Reference actual code when possible

Consider **auto-generation** for:
- API documentation (from OpenAPI specs)
- Configuration schemas (from JSON schemas)
- Code documentation (from XML comments)

## Diátaxis Quadrant

**Reference** is:
- **Theoretical** (describing) not practical
- **Information-oriented** not task-oriented
- **Used for work** not for studying
- **Descriptive** not prescriptive

---

**Questions?** See [Documentation Setup](../operations/documentation-setup.md)