Prek logo

Prek

Organization
bastani-inc
prek

Use when setting up or running hooks with prek in any repository. prek is a Rust drop-in alternative to pre-commit for running Git hooks that check, format, lint, and validate code and repository files. Prefer it when speed, workspace mode, built-in hooks, shared toolchains, or native TOML configuration matter.

Overview

Publisherbastani-inc
Repositoryatomic
Skill nameprek
Stars
856
Forks
115
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by bastani-inc on GitHub. Read the source before you install it.

Installation

Install the Prek AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/bastani-inc/atomic/tree/main/.agents/skills/prek
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/bastani-inc/atomic.git /tmp/atomic
mkdir -p .claude/skills
cp -r /tmp/atomic/.agents/skills/prek .claude/skills/prek
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Prek in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Prek on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Prek is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

prek

Use this skill when the user wants to set up or run Git hooks with prek.

prek is a Rust reimplementation of pre-commit. Its main job is to run hooks that check code and repository files before commit or on demand: formatters, linters, validators, security checks, and custom project checks.

Start with the public docs

Use the LLM-oriented index first:

Per that file, prefer explicit markdown docs when you need details:

What prek is for

Use prek to:

  • run hooks that check source code and repo contents
  • install Git hook shims such as pre-commit, pre-push, and commit-msg
  • run the same hook ecosystem used by pre-commit
  • manage hook runtimes and toolchains for supported languages
  • validate configs, update pinned hook revisions, and inspect configured hooks

Typical jobs for hooks run by prek:

  • formatting and linting code
  • validating YAML, JSON, TOML, XML, and similar files
  • preventing merge-conflict markers, private keys, oversized files, and bad line endings

Authoring configs

For new configs, prefer prek.toml.

Important repo types:

  • remote repo: normal hook repository such as https://github.com/astral-sh/ruff-pre-commit
  • repo = "local": hooks defined in the current repository
  • repo = "meta": config-checking hooks like check-hooks-apply, check-useless-excludes, and identity
  • repo = "builtin": prek's offline Rust-native hooks

Minimal examples:

toml
[[repos]]
repo = "https://github.com/astral-sh/ruff-pre-commit"
rev = "v0.14.3"
hooks = [
  { id = "ruff" },
  { id = "ruff-format" },
]
toml
[[repos]]
repo = "local"
hooks = [
  {
    id = "cargo-fmt",
    name = "cargo fmt",
    language = "system",
    entry = "cargo fmt --",
    files = "\\.rs$",
  },
]
toml
[[repos]]
repo = "builtin"
hooks = [
  { id = "trailing-whitespace" },
  { id = "check-yaml" },
]

These examples use TOML 1.1 multiline inline tables. Use [[repos.hooks]] array-of-tables if an editor or parser in the toolchain does not support that syntax yet, or when a hook has many fields such as env, pass_filenames = false, or priority.

Filtering patterns:

  • regex is the most portable choice: files = "\\.rs$"
  • prek also supports globs: files = { glob = "src/**/*.rs" }
  • use glob lists for multiple roots: exclude = { glob = ["target/**", "dist/**"] }

Scheduling:

  • smaller priority values run earlier
  • hooks with the same priority can run concurrently
  • priority is evaluated within one config file, not across workspace projects

Useful prek-specific hook/config fields when editing TOML:

  • env for per-hook environment variables
  • priority for hook ordering and concurrency
  • minimum_prek_version for gating newer config features
  • orphan = true to isolate a nested workspace project from parent configs

Default workflow

When adopting prek in a repository:

  1. Check whether the repo already has .pre-commit-config.yaml or .pre-commit-config.yml.
  2. If it does, usually keep that config and switch the commands from pre-commit to prek.
  3. If migrating from pre-commit, reinstall the Git shims with prek install -f.
  4. If it does not, prefer creating prek.toml for a fresh setup.
  5. Install prek.
  6. Validate the config with prek validate-config.
  7. Install the Git shims and prepare hook environments with prek install --prepare-hooks.
  8. Run everything once with prek run --all-files.
  9. For monorepos, consider nested configs, .prekignore, and orphan: true.

If the user explicitly wants maximum upstream portability, stay with .pre-commit-config.yaml and avoid prek-only keys.

Install and run

Common install methods:

  • uv tool install prek
  • brew install prek
  • mise use prek
  • cargo binstall prek
  • cargo install --locked prek

Command guide

  • prek install: install Git hook shims into the repo's effective hooks directory
  • prek prepare-hooks: prepare hook environments without installing Git shims
  • prek install --prepare-hooks: install shims and prepare environments in one step
  • prek run: run hooks for the current staged file selection
  • prek run --all-files: run hooks across the whole repository
  • prek run <hook-id>: run only one hook
  • prek list: list discovered hooks and projects
  • prek validate-config: validate prek.toml or .pre-commit-config.yaml
  • prek auto-update: update pinned hook revisions
  • prek util yaml-to-toml: convert an existing YAML config to prek.toml
  • prek util identify <path>: inspect file tags when types, types_or, or exclude_types do not match as expected

Useful quality-of-life commands and options mentioned in the docs:

  • prek run --dry-run
  • prek run --directory <dir>
  • prek run --last-commit
  • prek run --skip <hook-or-project>
  • prek -C <dir> ...

For debugging:

  • prek run -vvv
  • PREK_NO_FAST_PATH=1 prek run: compare builtin fast-path behavior against the standard execution path
  • Check the Environment Variable Reference for PREK_* controls such as PREK_HOME, PREK_SKIP, and concurrency limits.

Built-in hook guidance

prek has two important builtin paths:

  • automatic fast path for supported hooks from https://github.com/pre-commit/pre-commit-hooks
  • explicit repo: builtin for offline, zero-setup built-in hooks

Reach for repo: builtin when speed, no-network setup, or minimal bootstrapping matters more than upstream pre-commit compatibility.

Builtin hooks called out by the docs include:

  • trailing-whitespace
  • check-added-large-files
  • check-case-conflict
  • check-illegal-windows-names
  • end-of-file-fixer
  • file-contents-sorter
  • fix-byte-order-marker
  • check-json
  • check-json5
  • pretty-format-json
  • check-toml
  • check-vcs-permalinks
  • check-yaml
  • check-xml
  • mixed-line-ending
  • check-symlinks
  • destroyed-symlinks
  • check-merge-conflict
  • detect-private-key
  • no-commit-to-branch
  • check-shebang-scripts-are-executable
  • check-executables-have-shebangs

Practical guidance for agents

  • Prefer prek.toml for new setups.
  • Prefer existing .pre-commit-config.yaml for migrations unless the user asks for TOML.
  • Reach for workspace mode in monorepos instead of forcing one giant root-only config.
  • Consider repo: builtin when offline or zero-setup hooks are useful.
  • If the repo already uses pre-commit-hooks, remember that prek can use built-in Rust implementations for some common hooks.
  • Start with a small default hook set, then add language-specific hooks the project already uses.
  • Use prek util yaml-to-toml instead of hand-converting YAML when migrating.
  • Before promising parity for a specific hook language, verify it in Language Support.

Frequently asked questions

What does the Prek AI skill do?

Use when setting up or running hooks with prek in any repository. prek is a Rust drop-in alternative to pre-commit for running Git hooks that check, format, lint, and validate code and repository files. Prefer it when speed, workspace mode, built-in hooks, shared toolchains, or native TOML configuration matter.

Why use Prek on TypingMind?

Because you install it once and use it with any model. Prek is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Prek in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/bastani-inc/atomic/tree/main/.agents/skills/prek. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Prek?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Prek?

As many as you like. As long as a model supports skills, you can use Prek with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Prek AI skill free?

It is published on GitHub by bastani-inc. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇