PHPackages                             pisac/pisac - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. pisac/pisac

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

pisac/pisac
===========

...

0.0.9(5y ago)9586MITPHP

Since Feb 26Pushed 5y ago1 watchersCompare

[ Source](https://github.com/pisac/pisac)[ Packagist](https://packagist.org/packages/pisac/pisac)[ RSS](/packages/pisac-pisac/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (9)Dependencies (6)Versions (10)Used By (0)

Pisac - Keep git commit histories clean
---------------------------------------

[](#pisac---keep-git-commit-histories-clean)

Commits are one of the critical parts of a Git repository, and more so, the commit message is a lifelog for the repository. As the project evolves (new features getting added, bugs being fixed, architecture being refactored), commit letters can see what was changed and how. So these messages must reflect the underlying change in a short, precise manner.

#### Git commits history is straightforward to mess up. Here's how you can fix it!

[](#git-commits-history-is-straightforward-to-mess-up-heres-how-you-can-fix-it)

**Pisac** is added to your CI, and when they commit description failed validation, an error occurs. Usually, everyone in the project gets an error message, so you can stop your friends from writing the ugly story. 😈

Configuration
-------------

[](#configuration)

To configure the validation rules, you need to create a new file called `pisac.json` in the project root. For example:

```
{
  "pattern": "(Added|Changed|Deprecated|Removed|Fixed|Security) .*",
  "message": "The commit must start with words (Added|Changed|Deprecated|Removed|Fixed|Security)",
  "limit": 1,
  "skip": [
    "Fix styling",
    "Initial commit"
  ]
}
```

#### Pattern

[](#pattern)

A regular expression that will be used to check messages. Here are some popular suggestions:

- **Update readme** - `(Create|Update|Delete) .*`
- **Changed readme** - `(Added|Changed|Deprecated|Removed|Fixed|Security) .*`
- **refs #123 Changed readme** - `refs #[0-9]+ (Added|Changed|Deprecated|Removed|Fixed|Security) .*`
- **refs #123 \[Info\] Changed readme** - `refs #[0-9]+ \[.*\] (Added|Changed|Deprecated|Removed|Fixed|Security) .*`

#### Message

[](#message)

The message will be displayed if the message does not match the template. It is good practice to show an example of how to describe.

#### Limit

[](#limit)

Indicates how many messages in history Pisac should check. Don't use too many.

#### Skip

[](#skip)

A set of words or their combinations, if present, you need to skip the check. Example:

```
"skip": [
  "Initial commit",
  "Build",
  "Skip"
]
```

GitHub Actions
--------------

[](#github-actions)

You can use it as a GitHub Actions by creating a file `.github/workflows/pisac.yml` with the following content:

```
name: Pisac

on: [ push ]

jobs:
  pisac-cheker:
    runs-on: ubuntu-20.04
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
        with:
          ref: ${{ github.head_ref }}
      - name: Setup PHP 🔧
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.0
          extensions: mbstring
          coverage: none
          tools: composer:v2
      - name: Install 👀
        run: composer global require "pisac/pisac:0.*" -q -n
      - name: Execute 🔧
        run: pisac check
```

Composer
--------

[](#composer)

> **Not recommended.** Sometimes your project can conflict with one or more of Pisac dependencies.

Alternatively, you can also install Pisac as part of your development dependencies. You will likely want to use the require-dev section to exclude Pisac in your production environment. You can either modify your `composer.json` manually or run the following command to include the latest tagged release:

```
$ composer require --dev pisac/pisac
```

And then run as executable:

```
$ php vendor/bin/pisac check
```

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Maintainers
-----------

[](#maintainers)

Pisac is developed and maintained by [Alexandr Chernyaev](https://github.com/tabuna).

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

27

—

LowBetter than 47% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity19

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 81.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

9

Last Release

1951d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/3c47797b11041f37c2eec74b09bc6619c8997467d690797ebad0e6ab7cb232b7?d=identicon)[tabuna](/maintainers/tabuna)

---

Top Contributors

[![tabuna](https://avatars.githubusercontent.com/u/5102591?v=4)](https://github.com/tabuna "tabuna (44 commits)")[![Mamau](https://avatars.githubusercontent.com/u/10494695?v=4)](https://github.com/Mamau "Mamau (10 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/pisac-pisac/health.svg)

```
[![Health](https://phpackages.com/badges/pisac-pisac/health.svg)](https://phpackages.com/packages/pisac-pisac)
```

###  Alternatives

[illuminate/queue

The Illuminate Queue package.

21332.6M1.6k](/packages/illuminate-queue)[illuminate/view

The Illuminate View package.

13047.0M2.2k](/packages/illuminate-view)[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9762.4M129](/packages/roots-acorn)[illuminate/config

The Illuminate Config package.

10944.5M2.5k](/packages/illuminate-config)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
