hook-auto-docs
Automatically track project structure changes and update documentation (README, CHANGELOG)
Automatically scans and documents your project structure.
Features
- π Project Structure Scanning: Auto-generates complete directory tree
- π¦ package.json Extraction: Project name, version, scripts, and dependencies
- π Clickable Links: Direct navigation to each file
- β‘ Smart Scanning: Full scan on first run, tracks only changed files afterward
- π« Auto-Exclusion: Excludes node_modules, .git, dist, and other unnecessary directories
- π Single Document: Consolidates all information in
.project-structure.md
How it Works
This plugin uses a three-stage tracking approach:
Stage 0: Configuration Initialization (SessionStart Hook)
- Runs at session start
- Reads plugin version from
plugin.json - Checks if configuration file exists at
.plugin-config/hook-auto-docs.json - Performs automatic migration if versions differ
- Creates configuration with default settings if doesn't exist
Stage 1: Real-time File Change Tracking (PostToolUse Hook)
- Runs after every
Writeoperation - Records changed file paths to
.structure-changes.json - Silent execution (no user interruption)
Stage 2: Structure Documentation Generation (Stop Hook)
- Runs when Claude Code session ends
- When there are changes or it's the first run:
- Scans entire project directory
- Extracts information from
package.json - Generates directory tree (with clickable file links)
- Saves to
.project-structure.md - Stores current file list in
.structure-state.json
Installation
/plugin install hook-auto-docs@dev-gom-plugins
Usage
Once installed, works automatically. When your session ends:
π Auto-Docs: Generated project structure documentation (245 files)
Or:
π Auto-Docs: Updated project structure (5 file(s) changed)
Generated Files
.project-structure.md
Document containing entire project structure:
# Project Structure
**Generated**: 2025-10-15 14:30:00
## Project Information
- **Name**: claude-code-marketplace
- **Version**: 1.0.0
- **Description**: Claude Code plugin marketplace
## Available Scripts
- `npm run dev`: Start development server
- `npm run build`: Build for production
- `npm test`: Run tests
## Dependencies
### Production (5)
- express: `^4.18.0`
- dotenv: `^16.0.0`
### Development (3)
- eslint: `^8.0.0`
- prettier: `^2.8.0`
## Directory Structure
claude-code-marketplace/
βββ [.gitignore](.gitignore)
βββ [package.json](package.json)
βββ [README.md](README.md)
βββ plugins/
β βββ hook-auto-docs/
β β βββ [scripts/track-structure-changes.js](plugins/hook-auto-docs/scripts/track-structure-changes.js)
β β βββ [scripts/update-structure-docs.js](plugins/hook-auto-docs/scripts/update-structure-docs.js)
β β βββ [hooks/hooks.json](plugins/hook-auto-docs/hooks/hooks.json)
β βββ hook-complexity-monitor/
β βββ ...
Configuration
The plugin automatically creates a configuration file at .plugin-config/hook-auto-docs.json on first run.
Automatic Configuration Migration
When you update the plugin, your settings are automatically migrated:
- β Preserves your custom settings
- β Adds new configuration fields with default values
- β
Version tracked via
_pluginVersionfield - β Zero manual intervention required
Available Configuration Options
showLogs
- Description: Show documentation generation messages in console
- Default:
false - Example:
true(show file tracking confirmations)
outputDirectory
- Description: Directory path to save generated documentation
- Default:
""(project root) - Example:
"docs",".claude-output"
outputFile
- Description: Output filename for project structure documentation
- Default:
""(uses.{project-name}-project-structure.md) - Example:
"project-structure.md","structure.md"
includeDirs
- Description: List of specific directories to scan (if empty, scans entire project)
- Default:
[](empty - scans all directories except excluded ones) - Example:
["src", "lib"]- only scanssrcandlibfolders - Use Case: Useful for large projects where you only want to document specific parts
excludeDirs
- Description: List of directories to exclude from project structure scan (ignored if
includeDirsis set) - Default:
["node_modules", ".git", "dist", "build", "coverage", ".next", "out", ".nuxt", "vendor", ".vscode", ".idea"] - Example: Add/remove directories from the array
includeExtensions
- Description: List of file extensions to include (if empty, all files are included unless excluded)
- Default:
[](empty - includes all file extensions except excluded ones) - Example:
[".js", ".ts", ".jsx", ".tsx"]- only includes JavaScript/TypeScript files - Note: Can be specified with or without dot (
.metaormeta) - Use Case: Focus documentation on specific file types (e.g., only source code, only configs)
excludeExtensions
- Description: List of file extensions to exclude from project structure (works together with
includeExtensions) - Default:
[](empty - no extensions excluded) - Example:
[".meta", ".log", ".tmp"]- excludes Unity meta files, logs, and temp files - Note: Can be specified with or without dot (
.metaormeta) - Use Case: Hide unnecessary file types from documentation (e.g., Unity
.metafiles, build artifacts)
How to Change Settings
Edit the .plugin-config/hook-auto-docs.json file:
{
"showLogs": false,
"outputDirectory": "docs",
"outputFile": "project-structure.md",
"includeDirs": ["src", "lib"],
"excludeDirs": [
"node_modules",
".git",
"dist",
"build",
"coverage",
".next",
"out",
".nuxt",
"vendor",
".vscode",
".idea",
"tmp",
"cache"
],
"includeExtensions": [],
"excludeExtensions": [".meta", ".log", ".tmp"],
"includeEmptyDirs": true
}
Filter Rules:
- If
includeDirsis set to a non-empty array, only those directories will be scanned andexcludeDirswill be ignored - If
includeExtensionsis set, only those extensions are included first, thenexcludeExtensionsis applied to filter them further - Both extension filters work together (AND condition) for maximum flexibility
Configuration Priority
The outputDirectory is determined in this order:
.plugin-config/hook-auto-docs.json'soutputDirectory- Environment variable
AUTO_DOCS_DIR - Environment variable
CLAUDE_PLUGIN_OUTPUT_DIR - Default (project root)
Best Practices
Add to .gitignore
.project-structure.md
.structure-state.json
.structure-changes.json
Regular Reviews
Use the generated project structure documentation to:
- Onboard new team members
- Understand project organization
- Plan refactoring efforts
Output Files
| File | Purpose | Commit? |
|---|---|---|
.project-structure.md | Project structure documentation | β Optional |
.structure-state.json | File list state (internal) | β No |
.structure-changes.json | Session changes (temporary) | β No |
Troubleshooting
Plugin not generating documentation?
-
Check for changes: Plugin only updates when files have changed.
-
First run: Automatically scans entire structure on first run.
-
Check file permissions: Ensure plugin has write permissions to project root.
Some directories missing?
- Check exclusion list: See if it's in
configuration.excludeDirs - Hidden directories: Directories starting with
.are automatically excluded
Performance
- First scan: < 3 seconds even for 1000+ file projects
- Incremental updates: Only tracks changed files for fast execution
- Memory efficient: Processes files in streaming fashion
Related Plugins
- Session Summary - Summarizes file operations during session
- TODO Collector - Collects TODO comments
- Git Auto-Backup - Auto-commits at session end
Technical Details
Script Locations
~/.claude/plugins/marketplaces/dev-gom-plugins/plugins/hook-auto-docs/scripts/init-config.js- Configuration initialization~/.claude/plugins/marketplaces/dev-gom-plugins/plugins/hook-auto-docs/scripts/track-structure-changes.js- File change tracking~/.claude/plugins/marketplaces/dev-gom-plugins/plugins/hook-auto-docs/scripts/update-structure-docs.js- Structure documentation generation
Hook Types
- SessionStart - Initializes configuration on session start
- PostToolUse - Tracks file changes after Write operations
- Stop - Generates structure documentation at session end
Dependencies
- Node.js
- Git (optional - for change detection)
Timeouts
- PostToolUse: 5 seconds
- Stop: 15 seconds
Version
Current Version: 1.4.1
Changelog
v1.4.1 (2025-10-20)
- β¨ Improvement: Unified tree structure when multiple directories are included
- π Bug Fix: Regenerate documentation when output file is deleted
- π Auto Migration: Plugin version-based configuration migration
- π¦ Smart Updates: Preserves user settings while adding new fields
- π― SessionStart Hook: Auto-creates configuration file on session start
- β‘ Performance: SessionStart hook exits immediately if config is up-to-date
- π Cross-Platform: Enhanced path handling for Windows/macOS/Linux compatibility
v1.4.0 (2025-10-18)
- Added
includeEmptyDirsconfiguration option to control empty directory inclusion - Fixed extension filter display to show both filters when both are active
v1.3.0 (2025-10-18)
- Added
includeExtensionsandexcludeExtensionsconfiguration options for file extension filtering - Both filters work together (AND condition) for fine-grained control
v1.2.0 (2025-10-18)
- Added project-scoped file naming using project directory name
- Prevents file collisions across multiple projects
v1.1.0 (2025-10-18)
- Added selective directory scanning with
includeDirsconfiguration option
v1.0.0
- Initial release
License
Apache License 2.0 - See LICENSE for details
Credits
Part of the Claude Code Developer Utilities collection.
πQuick Installation
/plugin install hook-auto-docs@dev-gom-pluginsRun this command in Claude Code to install the plugin.