Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

pre-commit-snippet

CI Documentation License: MIT

A pre-commit hook that automatically syncs markdown snippets from a central repository into your documentation files.

Features

  • Marker-based replacement: Uses <!-- SNIPPET-START: name --> / <!-- SNIPPET-END --> markers to identify replaceable blocks
  • SHA-256 caching: Only rewrites blocks when the central snippet has actually changed, avoiding unnecessary file churn
  • Automatic staging: Modified files are automatically staged for commit
  • Branch/tag support: Pin snippets to a specific branch or tag
  • Dry-run mode: Preview changes without modifying files
  • Debug logging: Detailed logging for troubleshooting

Installation

Using pre-commit framework

Add this to your .pre-commit-config.yaml:

repos:
  - repo: https://github.com/RemoteRabbit/pre-commit-snippet
    rev: v1.0.4  # Use the latest tag
    hooks:
      - id: snippet-sync

Manual installation

  1. Clone this repository
  2. Create a pre-commit-snippet-config.yaml configuration file (see below)
  3. Run python main.py before committing

Configuration

Create a pre-commit-snippet-config.yaml file in your repository root:

# URL of the repository containing your snippets (required)
snippet_repo: https://github.com/your-org/snippets.git

# Branch or tag to use (optional, default: default branch)
snippet_branch: main

# Subdirectory within the snippet repo where snippets are stored (optional)
snippet_subdir: snippets

# File extension for snippet files (optional, default: .md)
snippet_ext: .md

# List of files to process (required)
target_files:
  - README.md
  - docs/CONTRIBUTING.md
  - docs/SECURITY.md

Usage

In your markdown files, wrap the areas you want to sync with snippet markers:

# My Project

<!-- SNIPPET-START: license-notice -->
This content will be replaced with the contents of `license-notice.md` from your snippet repo.
<!-- SNIPPET-END -->

## Other content...

When the hook runs, it will:

  1. Clone the snippet repository (shallow clone)
  2. Find all SNIPPET-START / SNIPPET-END marker pairs
  3. Replace the content between markers with the corresponding snippet file
  4. Cache hashes to avoid rewriting unchanged blocks
  5. Stage any modified files

Command Line Options

pre-commit-snippet [OPTIONS]
# or
python main.py [OPTIONS]
Option Description
--dry-run Preview changes without modifying files
--verbose, -v Print info-level logs (files being processed, updates)
--debug Print debug-level logs with timestamps (commands, hashes, paths)

Examples

# Normal run
pre-commit-snippet

# Preview what would change
pre-commit-snippet --dry-run

# See detailed processing info
pre-commit-snippet --verbose

# Debug issues with full detail
pre-commit-snippet --debug

Cache File

The hook creates a .snippet-hashes.json file to track which snippets have been applied. You should commit this file to avoid unnecessary rewrites on other machines.

Project Structure

pre-commit-snippet/
├── main.py                      # CLI entry point
├── pre_commit_snippet/
│   ├── __init__.py              # Package init
│   ├── cache.py                 # Hash computation and caching
│   ├── cli.py                   # Argument parsing and main logic
│   ├── config.py                # Configuration loading
│   ├── git.py                   # Git operations
│   ├── logging.py               # Logging configuration
│   └── snippet.py               # Snippet replacement logic
└── tests/
    └── test_main.py             # Test suite

Development

See CONTRIBUTING.md for development setup, conventional commits, and release process.

License

MIT

Release files for pre-commit-snippets 1.0.6.dev20260115221749

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pre-commit-snippets 1.0.6.dev20260115221749
File Size Uploaded
pre_commit_snippets-1.0.6.dev20260115221749.tar.gz 13.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pre-commit-snippets 1.0.6.dev20260115221749
File Interpreter ABI Platform
pre_commit_snippets-1.0.6.dev20260115221749-py3-none-any.whl Python 3 none any Details

Total release size: 25.8 kB

Release files / pre_commit_snippets-1.0.6.dev20260115221749.tar.gz

Download URL pre_commit_snippets-1.0.6.dev20260115221749.tar.gz
Size 13.3 kB
Tags Source
SHA-256 checksum
How to use checksums
309d30f041d2993506d5b94e01a242b95b47c576fd1882d0be83eba8dcafa2e0
BLAKE2b-256 checksum
How to use checksums
b28cfd3664f532a4b7e0dd4787afa0e447cbc40ebc4f261abad9084ce31c3ed7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 15, 2026.

Transparency log

Release files / pre_commit_snippets-1.0.6.dev20260115221749-py3-none-any.whl

Download URL pre_commit_snippets-1.0.6.dev20260115221749-py3-none-any.whl
Size 12.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6b5ccb5e2e8d99ee5f5cabddc2a2811979a194db2d391dd17048d31c53ee6d69
BLAKE2b-256 checksum
How to use checksums
c184078164a4d3f5ddb08f6b406c06282537f80001ef09db39e02079bc426e8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 15, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page