A Copier template for creating Dash docset generators.
- Complete project scaffold for building Dash docsets
- Web scraper with support for sitemap.xml or llms.txt URL discovery
- SQLite search index builder with customizable parsers
- TOC anchor injection for in-page navigation
- Docset validation script (
verify.py) - Dash contribution checker (
verify_contribution.py) - Contribution workflow (
contribute.py) for submitting to Dash-User-Contributions - Pytest test suite with pre-commit hook
- Pre-commit hooks with prek (ty type checking, pytest, standard hooks)
- uv for dependency management
- Poe tasks for common commands (
scrape,build,verify,test,contribute)
# With uv
uv tool install copier
# Or with pipx
pipx install copiercopier copy gh:ichoosetoaccept/dash-docset-template my-new-docset
# Or from a local clone
copier copy /path/to/dash-docset-template my-new-docset- project_name: Name of your project (e.g.,
raycast-docset) - docset_name: Display name for the docset (e.g.,
Raycast) - docs_url: Base URL of documentation (e.g.,
https://developers.raycast.com) - author_name: Your name for attribution
- author_link: Your GitHub profile URL
- repo_url: GitHub repo URL for this docset project
cd my-new-docset
uv sync
prek install- Scraper (
*_docset/scraper.py): Adjust URL discovery and filtering - Parsers (
*_docset/parsers.py): Add custom parsers for different page types - Builder (
*_docset/builder.py): Customize icon URL and path handling
poe scrape # Download documentation
poe build # Build the docset
poe verify # Validate the docset
poe test # Run tests
# Or all at once:
poe alldash-docset-template/
├── copier.yaml # Template configuration
├── template/
│ ├── {{docset_identifier}}_docset/ # Package (name templated)
│ │ ├── __init__.py.jinja
│ │ ├── scraper.py.jinja # Auto-detects sitemap/llms.txt
│ │ ├── builder.py.jinja
│ │ └── parsers.py.jinja
│ ├── tests/ # Pytest test suite
│ │ ├── test_builder.py.jinja
│ │ ├── test_verify.py.jinja
│ │ ├── test_verify_contribution.py
│ │ └── test_contribute.py
│ ├── main.py.jinja
│ ├── verify.py.jinja # Docset quality validation
│ ├── verify_contribution.py.jinja # Dash contribution requirements
│ ├── contribute.py.jinja # Contribution workflow
│ ├── pyproject.toml.jinja
│ ├── README.md.jinja
│ ├── .gitignore
│ └── .pre-commit-config.yaml # Includes pytest hook
└── README.md
MIT