Configuration

Configuration

Doc Holiday supports the use of a configuration file to control which files in a GitHub repository (GitHub, GitLab, and other supported sources) should be indexed and made available for AI-powered documentation generation and updates.

The configuration file must be created and placed (if not already present after installation) at the root of your repository:

.doc.holiday/config

Supported Formats

The .doc.holiday/config file supports two different formats:

1. TOML Format (Recommended)

Include = [
   "*.md",
   "docs/**/*.md",
   "README.md",
   "!docs/deprecated/*.md" # exclude these files
]

2. JSON Format

{
  "include": ["*.md", "docs/**/*.md", "README.md", "!docs/deprecated/*.md"]
}

Include Syntax

The include definition is a list of file patterns identifying which files in the repository to include in the AI documentation system and which to exclude. These rules apply not only to the initial file indexing, but also to any time-bounded documentation generation requests (for example, when asking Doc Holiday to generate documentation updates and release notes based on commits from a specific time range).

When you use a time-based command such as “@doc.holiday generate release notes and documentation updates based on commits from this past week,” Doc Holiday will only process changes to files that match the patterns defined in .doc.holiday/config. Files not matched by the configuration are ignored, even if those files were changed within the specified range. This ensures you have precise control over what content is included in AI-generated documentation and release notes.

Always Excluded File Types

Doc Holiday will never modify certain file types by design:

  • Release notes and changelogs
  • Code

Only user-facing documentation, tutorials, API documentation, and similar content are eligible for updates. Make sure your .doc.holiday/config includes only the files and paths you intend for Doc Holiday to update. If your configuration includes any of these excluded file types they will be ignored.

Match Patterns

  • *.md - All markdown files in the current directory
  • README.md - Specific file
  • docs/*.md - All markdown files in the docs directory
  • **/*.md - All markdown files in any subdirectory
  • docs/**/*.md - All markdown files in the docs directory and its subdirectories

Negation Patterns

  • !docs/deprecated/*.md - Exclude all markdown files in docs/deprecated/
  • !*.tmp.md - Exclude temporary markdown files

Pattern Matching Rules

  1. Patterns are processed in order
  2. Later patterns can override earlier ones
  3. Negation patterns (starting with !) exclude matching files
  4. Non-negation patterns include matching files
  5. If no pattern matches a file, it is excluded by default

Examples

Minimal Configuration

Include = ["*.md"]

Comprehensive Documentation Setup

Include = [
   "README.md",
   "docs/**/*.md",
   "*.md",
   "!docs/deprecated/*.md",
   "!docs/archive/*.md"
]

API Documentation Focus

Include = [
   "api/**/*.md",
   "docs/api/*.md",
   "swagger/*.yaml",
   "swagger/*.json"
]

Best Practices

  1. Be Specific: Use precise patterns to avoid indexing unnecessary files
  2. Use Negation: Exclude temporary, deprecated, or private files
  3. Be comprehensivbe: Include all relevant file formats (e.g., .mdx if you use MDX documentation) in your configuration.