PHPackages                             arielespinoza07/plow-provider-kit - 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. arielespinoza07/plow-provider-kit

ActiveLibrary

arielespinoza07/plow-provider-kit
=================================

Shared contracts, value objects, and execution primitives for building Plow providers — the minimal dependency surface for third-party Plow provider packages.

v0.2.0(today)039↑2669.2%1MITPHPPHP ^8.3CI passing

Since Aug 1Pushed todayCompare

[ Source](https://github.com/ArielEspinoza07/plow-provider-kit)[ Packagist](https://packagist.org/packages/arielespinoza07/plow-provider-kit)[ RSS](/packages/arielespinoza07-plow-provider-kit/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (3)Versions (3)Used By (1)

Plow Provider Kit
=================

[](#plow-provider-kit)

[![CI](https://github.com/arielespinoza07/plow-provider-kit/actions/workflows/ci.yml/badge.svg)](https://github.com/arielespinoza07/plow-provider-kit/actions/workflows/ci.yml)[![Latest Version](https://camo.githubusercontent.com/7aa5ccab2dc8f415244f35cdc1023d425cc9e1262249ed4efbc3753ed54f8c46/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f617269656c657370696e6f7a6130372f706c6f772d70726f76696465722d6b69742e737667)](https://packagist.org/packages/arielespinoza07/plow-provider-kit)[![Total Downloads](https://camo.githubusercontent.com/026215c52167f217dc8776632e1682b80cc1d74ea9f57f8b4b4c004757e1e469/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f617269656c657370696e6f7a6130372f706c6f772d70726f76696465722d6b69742e737667)](https://packagist.org/packages/arielespinoza07/plow-provider-kit)[![PHP Version](https://camo.githubusercontent.com/f8b678e3bc8eeb987c2ecd227e5871e046f454a3d6b62ac3a084f5d76d9b9ad3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f617269656c657370696e6f7a6130372f706c6f772d70726f76696465722d6b69742e737667)](https://packagist.org/packages/arielespinoza07/plow-provider-kit)[![License](https://camo.githubusercontent.com/9f0f47687398e151caab55bc3e6b88d5488d0fa49ac24c56c5a56825c2e4e647/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f617269656c657370696e6f7a6130372f706c6f772d70726f76696465722d6b69742e737667)](LICENSE)

The minimal dependency surface for building a [Plow](https://github.com/ArielEspinoza07/plow) provider — the interfaces, value objects, and execution helpers a provider needs, and nothing else.

Plow orchestrates existing PHP development tools (formatters, static analyzers, test runners, and more) behind one consistent command interface. A **provider** is the adapter between Plow and a specific tool — Pint, PHPStan, Pest, and so on are all providers. This package is what you depend on to write your own.

---

Requirements
------------

[](#requirements)

- PHP 8.3+

---

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

[](#installation)

```
composer require arielespinoza07/plow-provider-kit
```

Your provider package should depend on **this package only** — not on `arielespinoza07/plow` itself. That keeps your package lightweight and avoids a circular dependency between your provider and the application that loads it.

---

What's included
---------------

[](#whats-included)

- **`Plow\Contracts\Provider\ProviderInterface`** — the interface every provider implements.
- **`Plow\Contracts\Execution\ProcessRunnerInterface`** — for running external processes (the underlying tool your provider wraps).
- **`Plow\Task\Task`** / **`Plow\Task\TaskMode`** — what task is being run, and in what mode (apply or dry-run).
- **`Plow\Task\TaskRequest`** — what `ProviderInterface::execute()` receives: the task, its mode, and any extra arguments.
- **`Plow\Result\TaskResult`** / **`Plow\Result\ResultStatus`** — what your provider returns after running.
- **`Plow\Execution\ProcessResult`** — the outcome of a process run by a `ProcessRunnerInterface` implementation.
- **`Plow\Detection\ProjectRoot`** / **`Plow\Detection\ProjectPaths`** — locating the consuming project's root and source paths, for resolving binaries and analysis targets.
- **`Plow\Provider\Diagnostic\ProviderDiagnostic`** — the health-check info `plow doctor` displays for your provider.

---

Writing a provider
------------------

[](#writing-a-provider)

```
