Skip to content
Git Hooks for Swift projects 🐩
Branch: master
Clone or download
Latest commit b55ada6 Apr 19, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode Skip automation on deploys Nov 25, 2018
Documentation Fix missing end code back-tick Apr 12, 2019
Sources/Komondor Improve new PackageConfig integration Apr 7, 2019
Tests Initial commit of Komondor Nov 24, 2018
.gitignore Initial commit of Komondor Nov 24, 2018
LICENSE Improve the README Nov 24, 2018
Package.resolved Update Rocket Apr 19, 2019
Package.swift Unhide dependencies Apr 19, 2019 Update Apr 18, 2019


Git Hook automation for Swift and Xcode projects. A port of Husky to Swift.


  1. Add or amend a Package.swift
  2. Add this dependency .package(url: "", from: "1.0.0"),
  3. Run the install command: swift run komondor install
  4. Add a config section to your Package.swift

Then you'll get git-hooks consolidated and centralized so that everyone can work with the same tooling.


If you care about something, you should automate it.

Git Hooks like what Komondor provides gives you more surface area for per-project automation. Komondor provides an easily understood way to see how all the git automation touch-points in your project will come together. These hooks allow for much faster feedback during development and let different team-members to use different tools but still have the same bar of quality.

For example, adding SwiftFormat to your pre-commit hook means that no-one will ever need to discuss formatting in code review again. Perfect. It won't slow down your Xcode builds, because it lives outside of your project and you can verify it on CI if you'd like to be 100% that everyone conforms.

Another example, running tests before pushing - this means you don't have to come back 10-15m later once CI has told you that you have a failing test. This moves more validation to a point where you are still in-context.

An Example

This is from the repo you're looking at:

#if canImport(PackageConfig)
    import PackageConfig

    let config = PackageConfig([
        "komondor": [
            "pre-push": "swift test",
            "pre-commit": [
                "swift test",
                "swift run swiftFormat .",
                "swift run swiftlint autocorrect --path Sources/",
                "git add .",

See more about the config here.

Getting Set up

On a SwiftPM project On an Xcode Project


Use swift run rocket [patch]

You can’t perform that action at this time.