PHPackages                             peckphp/peck - 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. [CLI &amp; Console](/categories/cli)
4. /
5. peckphp/peck

ActiveLibrary[CLI &amp; Console](/categories/cli)

peckphp/peck
============

Peck is a powerful CLI tool designed to identify pure wording or spelling (grammar) mistakes in your codebase.

v0.2.0(7mo ago)474325.3k↓17.4%67[10 issues](https://github.com/peckphp/peck/issues)[6 PRs](https://github.com/peckphp/peck/pulls)20MITPHPPHP ^8.2CI passing

Since Jan 13Pushed 4mo ago5 watchersCompare

[ Source](https://github.com/peckphp/peck)[ Packagist](https://packagist.org/packages/peckphp/peck)[ Fund](https://www.paypal.com/paypalme/enunomaduro)[ GitHub Sponsors](https://github.com/nunomaduro)[ RSS](/packages/peckphp-peck/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (10)Versions (7)Used By (20)

 [ ![Overview Peck PHP](/art/video.png) ](https://youtu.be/C1-2I_Y8ih8)

 [![GitHub Workflow Status (master)](https://camo.githubusercontent.com/8146791c4c59c14c76e52c70af3d5500ba7abf0fccbb4877743ab6cd1215899a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f7065636b7068702f7065636b2f74657374732e796d6c)](https://github.com/peckphp/peck/actions) [![Total Downloads](https://camo.githubusercontent.com/985a9e3d27091a0ce5d72a16ee35f71fad4841478f4870f43dea6f6fef0f2873/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f7065636b7068702f7065636b)](https://packagist.org/packages/peckphp/peck) [![Latest Version](https://camo.githubusercontent.com/a09da28b9c6ee1f8f166047b1f0721e7fcaac51394443688a89fc52426dfda76/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f7065636b7068702f7065636b)](https://packagist.org/packages/peckphp/peck) [![License](https://camo.githubusercontent.com/338dc1067d88fee58ad06bfd1ade95ff396f08f4cea50f0cb6710823615d1751/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f7065636b7068702f7065636b)](https://packagist.org/packages/peckphp/peck)

---

**Peck** is a powerful CLI tool designed to identify wording or spelling mistakes in your codebase: filenames, class names, method names, property names, docs, and more. Built for speed, simplicity, and seamless integration, Peck fits naturally into your workflow, much like tools such as Pint or Pest.

Leveraging the robust capabilities of **[GNU Aspell](https://en.wikipedia.org/wiki/GNU_Aspell)**, Peck inspects every corner of your codebase — ensuring your work maintains a high standard of clarity and professionalism.

> Note: Peck is still under active development and is not yet ready for production use.

Installation
------------

[](#installation)

> **Requires [PHP 8.2+](https://php.net/releases/) and [GNU Aspell](https://en.wikipedia.org/wiki/GNU_Aspell)**

Peck relies on GNU Aspell for its spell-checking functionality. Make sure GNU Aspell is installed on your system before using Peck.

### Installing GNU Aspell

[](#installing-gnu-aspell)

- If you are using **Debian/Ubuntu**:

```
sudo apt-get install aspell aspell-en
```

- If you are using **MacOS (using Homebrew)**:

```
brew install aspell
```

- If you are using **Windows**:

> We recommend moving to the **Windows Subsystem for Linux (WSL)** and following the Debian/Ubuntu steps. Alternatively, if you prefer not to use WSL, you can install Aspell using **[Scoop](https://scoop.sh/)**, a package manager for Windows:

```
scoop install main/aspell
```

### Installing Peck

[](#installing-peck)

You can require Peck using [Composer](https://getcomposer.org) with the following command:

```
composer require peckphp/peck --dev

./vendor/bin/peck --init
```

Usage
-----

[](#usage)

To check your project for spelling mistakes, run:

```
./vendor/bin/peck
```

On the very first run, Peck may detect a large number of spelling mistakes. You may use the `ignore-all` option to ignore all the mistakes at once:

```
./vendor/bin/peck --ignore-all
```

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

[](#configuration)

Peck can be configured using a `peck.json` file in the root of your project.

You can scaffold the `peck.json` file with:

```
./vendor/bin/peck --init
```

Here's an example configuration:

```
{
    "preset": "laravel",
    "ignore": {
        "words": [
            "config",
            "namespace"
        ],
        "paths": [
            "app/MyFolder",
            "app/MyFile.php"
        ]
    }
}
```

You can also specify the path to the configuration file using the `--config` option:

```
./vendor/bin/peck --config relative/path/to/peck.json
```

### Presets

[](#presets)

In order to make it easier to get started with Peck, we've included a few presets that you can use to ignore common words in your project. The following presets are available:

- `laravel`

### Languages

[](#languages)

While by default `peck` verfies the spelling by using GNU Aspell's `en_US` language dictionary, you can optionally specify a different (installed) language to be passed using the "language" key in the configuration:

```
{
    "preset": "laravel",
    "language": "en_US",
    "ignore": {
        "words": [
            "config",
            "namespace"
        ]
    }
}
```

You can see a full list of available dictionaries using the command `aspell dump dicts`.

Command Options
---------------

[](#command-options)

The behaviour of `peck` can be modified with the following command options:

#### `--init`

[](#--init)

If you don't have a `peck.json` file yet, you can create a blank configuration file by using the `--init` option.

#### `--config`

[](#--config)

By default `peck` will check for a `peck.json` file in your project root. If one isn't available it will try to figure out the directory to check by itself.

#### `--path`

[](#--path)

The path to check can be overwritten with the `--path` option. If the path is one you always need checking you can place it in your `peck.json` file.

#### `--text`

[](#--text)

The `--text` option allows you to check a string of text for spelling mistakes. This is useful when you want to check a specific string, such as commit messages.

#### `--ignore-all`

[](#--ignore-all)

This option will ignore all spelling mistakes in the current run. This is useful when you have a large number of mistakes and want to ignore them all at once.

CI / GitHub Actions
-------------------

[](#ci--github-actions)

When running Peck on GitHub Actions, you can use the following workflow before running Peck:

```
    - name: Install Aspell
      shell: bash
      run: |
          if [[ "$RUNNER_OS" == "Linux" ]]; then
            sudo apt-get update && sudo apt-get install -y aspell aspell-en
          elif [[ "$RUNNER_OS" == "macOS" ]]; then
            brew install aspell
          fi

    - name: Check Typos
      shell: bash
      run: |
          if [[ "$RUNNER_OS" == "Linux" || "$RUNNER_OS" == "macOS" ]]; then
            composer test:typos
          fi
```

---

Peck is an open-sourced software licensed under the **[MIT license](https://opensource.org/licenses/MIT)**.

###  Health Score

55

—

FairBetter than 98% of packages

Maintenance69

Regular maintenance activity

Popularity59

Moderate usage in the ecosystem

Community45

Growing community involvement

Maturity45

Maturing project, gaining track record

 Bus Factor2

2 contributors hold 50%+ of commits

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 ~66 days

Total

5

Last Release

224d ago

PHP version history (2 changes)v0.1.0PHP ^8.3.0

v0.1.3PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/86cfef5c1f5195df1a9db17a5f8ecb34455e1f0133a725de9acf7f2fb26ac6a1?d=identicon)[nunomaduro](/maintainers/nunomaduro)

---

Top Contributors

[![nunomaduro](https://avatars.githubusercontent.com/u/5457236?v=4)](https://github.com/nunomaduro "nunomaduro (146 commits)")[![c0nst4ntin](https://avatars.githubusercontent.com/u/27086157?v=4)](https://github.com/c0nst4ntin "c0nst4ntin (112 commits)")[![julio-cavallari](https://avatars.githubusercontent.com/u/53496995?v=4)](https://github.com/julio-cavallari "julio-cavallari (43 commits)")[![calvinludwig](https://avatars.githubusercontent.com/u/31071765?v=4)](https://github.com/calvinludwig "calvinludwig (20 commits)")[![GrandadEvans](https://avatars.githubusercontent.com/u/896346?v=4)](https://github.com/GrandadEvans "GrandadEvans (15 commits)")[![chr15k](https://avatars.githubusercontent.com/u/67823070?v=4)](https://github.com/chr15k "chr15k (10 commits)")[![eeappno](https://avatars.githubusercontent.com/u/60288182?v=4)](https://github.com/eeappno "eeappno (9 commits)")[![xHeaven](https://avatars.githubusercontent.com/u/14284867?v=4)](https://github.com/xHeaven "xHeaven (8 commits)")[![Samuel-Salter](https://avatars.githubusercontent.com/u/53296234?v=4)](https://github.com/Samuel-Salter "Samuel-Salter (4 commits)")[![AndrewMast](https://avatars.githubusercontent.com/u/13026511?v=4)](https://github.com/AndrewMast "AndrewMast (4 commits)")[![AhmedAlaa4611](https://avatars.githubusercontent.com/u/92916738?v=4)](https://github.com/AhmedAlaa4611 "AhmedAlaa4611 (4 commits)")[![sebastianlopezanido](https://avatars.githubusercontent.com/u/28570363?v=4)](https://github.com/sebastianlopezanido "sebastianlopezanido (3 commits)")[![benjam-es](https://avatars.githubusercontent.com/u/1738602?v=4)](https://github.com/benjam-es "benjam-es (3 commits)")[![da-mask](https://avatars.githubusercontent.com/u/1960334?v=4)](https://github.com/da-mask "da-mask (3 commits)")[![andrey-helldar](https://avatars.githubusercontent.com/u/10347617?v=4)](https://github.com/andrey-helldar "andrey-helldar (3 commits)")[![EngMahmoudHafez](https://avatars.githubusercontent.com/u/97672919?v=4)](https://github.com/EngMahmoudHafez "EngMahmoudHafez (2 commits)")[![ahinkle](https://avatars.githubusercontent.com/u/17038330?v=4)](https://github.com/ahinkle "ahinkle (2 commits)")[![azzarip](https://avatars.githubusercontent.com/u/116155557?v=4)](https://github.com/azzarip "azzarip (2 commits)")[![cvtmal](https://avatars.githubusercontent.com/u/53231361?v=4)](https://github.com/cvtmal "cvtmal (2 commits)")[![faissaloux](https://avatars.githubusercontent.com/u/60013703?v=4)](https://github.com/faissaloux "faissaloux (2 commits)")

---

Tags

phpspellingcodebasechecker

###  Code Quality

TestsPest

Static AnalysisPHPStan, Rector

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

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

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

###  Alternatives

[laravel/framework

The Laravel Framework.

34.7k509.9M17.0k](/packages/laravel-framework)[nunomaduro/phpinsights

Instant PHP quality checks from your console.

5.6k10.8M426](/packages/nunomaduro-phpinsights)[illuminate/console

The Illuminate Console package.

12944.1M5.1k](/packages/illuminate-console)[laravel-zero/framework

The Laravel Zero Framework.

3371.4M369](/packages/laravel-zero-framework)[seregazhuk/php-watcher

Automatically restart PHP application once the source code changes

394137.8k4](/packages/seregazhuk-php-watcher)

PHPackages © 2026

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