Stop Copy-Pasting: Introducing pc-init
We’ve all been there: you’re starting a new project, you’ve got your repo initialized, and now comes the tedious part—setting up the quality gates.
You know you need pre-commit (or the newer prek) to keep your code clean, but you end up hunting through your older repositories to find the "best" .pre-commit-config.yaml to copy and paste. Then, you spend ten minutes editing paths, versions, and configurations to match the specific needs of your new stack.
It’s a chore that breaks your flow before you’ve even written a line of code. That is exactly why I built pc-init.
The Problem: The "Config Archeology" Workflow
Most languages and frameworks have a gold standard for quality tools. If you're working in Python, you want ty and ruff; in React, you want eslint and prettier.
Manually setting these up requires:
- Identifying the recommended tools for your specific stack.
- Looking up the correct hook repository URLs, revisions, and arguments.
- Writing the YAML by hand (and hoping you didn't miss a syntax error).
Doing this every other month is just frequent enough to be a persistent pain point, but not frequent enough to have the workflow committed to muscle memory.
The Solution: pc-init
pc-init is a CLI tool designed to replace "config archeology" with a single, declarative command. It scaffolds a production-ready .pre-commit-config.yaml based on your project's technology stack.
Instead of copying old files, you simply tell pc-init what you're building, and it builds the configuration for you.
How it works
pc-init uses a system of language and framework presets. You provide the parameters, and it handles the rest:
# For a standard Python project
pc-init --lang py
# For a JavaScript project using React
pc-init --lang js --framework react
# For a Python project using Django
pc-init --lang py --framework django --force
Why use pc-init?
- Zero Boilerplate: No more hunting for URLs or managing complex YAML structures.
- Standardization: It ensures consistency across all your projects by enforcing the same quality standards.
-
Extensible: Not happy with the default presets? You can point
--presetsto your own local directory or a private git repository to share your team's custom standards across your entire organization. - Flexible: It works seamlessly with both pre-commit and prek.
Get Started
If you’re ready to speed up your setup process, you can install pc-init via uv:
uv tool install pc-init
After generating your config, don't forget to run pre-commit autoupdate or prek autoupdate to ensure you are pulling the very latest versions of your selected tools.
If you have suggestions for new presets or run into issues, please head over to the GitHub repository and open an issue. Let’s make boilerplate setup a thing of the past.
Top comments (0)