PHPackages                             tomashojgr/dev-agents - 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. tomashojgr/dev-agents

ActiveComposer-plugin[CLI &amp; Console](/categories/cli)

tomashojgr/dev-agents
=====================

Development workflow automation via AI-powered CLI agents (spec, approve, code, commit, lint, release)

v2.1.0(2mo ago)054MITShellPHP &gt;=8.4

Since Feb 18Pushed 2mo agoCompare

[ Source](https://github.com/tomashojgr/dev-agents)[ Packagist](https://packagist.org/packages/tomashojgr/dev-agents)[ RSS](/packages/tomashojgr-dev-agents/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (3)Versions (40)Used By (0)

dev-agents
==========

[](#dev-agents)

Composer package providing development workflow automation via AI-powered CLI agents. Agents are bash scripts — no PHP required on the host machine.

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

[](#requirements)

- [`claude` CLI](https://claude.ai/code) installed and authenticated on the host machine (or another configured AI CLI — see [Configuration](#configuration))
- `gh` CLI for PR workflows (`da-code`, `da-review`)
- `git`

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

[](#installation)

```
composer require --dev tomashojgr/dev-agents
```

After install, a block is automatically appended to your project's `Makefile`:

```
# BEGIN dev-agents — do not edit this block manually
# Set to your AI CLI tool (e.g. 'codex exec' / 'codex' for OpenAI Codex):
DA_AI_PRINT ?= claude --print
DA_AI_RUN   ?= claude
DA_AI_AUTO  ?= claude --dangerously-skip-permissions
include vendor/tomashojgr/dev-agents/Makefile.agents
# END dev-agents
```

> **Note:** Composer 2.2+ requires explicit plugin trust. Add this to your project's `composer.json`:
>
> ```
> "config": {
>     "allow-plugins": {
>         "tomashojgr/dev-agents": true
>     }
> }
> ```

Workflow
--------

[](#workflow)

```
# 1. Discuss the task interactively with the AI, say "ok, zapiš to" to save the spec.
#    The AI displays the spec in the conversation and asks if you want to implement now.
#    You can continue refining — the discussion stays open until you confirm.
#    If you confirm, implementation starts automatically.
make da-spec TASK="add DKIM validation to email sender"

# 2. AI creates a branch, implements autonomously, runs lint, pushes and opens a PR
#    (starts automatically after step 1 if confirmed, or run manually with task number/name)
make da-code TASK=1

# 3. Review the PR, leave comments. When ready, let the AI address them:
make da-review TASK=1

# 4. Repeat step 3 until satisfied, then merge the PR

# 5. After all PRs are merged — tag and publish a release
make da-release
```

Agents
------

[](#agents)

CommandDescription`make da-spec TASK="..."`Discuss requirements with AI, generate spec, then implement — all in one session with full context`make da-review TASK=...`Reads PR comments and addresses them autonomously, then pushes`make da-release`Bumps semver, tags release with AI-generated changelog, pushesManual tools
------------

[](#manual-tools)

These commands are useful when working outside the standard `da-spec` flow:

CommandDescription`make da-code TASK=...`Implement a task from its `TASK.md` spec autonomously (use when spec was written manually or `da-spec` was interrupted before coding)`make da-spec-continue TASK=...`Reopen spec discussion for an existing task (note: original conversation context is not available, works from `TASK.md`)`make da-spec-approve TASK=...`Approve a manually written task spec (sets status to `waiting-for-coding`)`make da-lint-fix`Run linters, auto-fix style issues via phpcbf, then AI fixes remaining issues`make da-lint`Run available PHP linters (check only, no fixes)`make da-commit TASK=...`Generate a Conventional Commits message from staged diff> **Note:** `da-spec` and `da-code` both run lint automatically before opening the PR, so `da-lint` / `da-lint-fix` are typically only needed for manual code changes.

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

[](#configuration)

AI commands are configured via Makefile variables. Override them in your `Makefile` **above** the `BEGIN dev-agents` block:

```
# Use OpenAI Codex instead of Claude
DA_AI_PRINT = codex exec
DA_AI_RUN   = codex
DA_AI_AUTO  = codex exec

# BEGIN dev-agents — do not edit this block manually
...
```

VariableDefaultDescription`DA_AI_PRINT``claude --print`Non-interactive AI call — returns output to stdout (used by `da-commit`, `da-release`)`DA_AI_RUN``claude`Interactive AI session without auto-permissions (used by `da-lint-fix`)`DA_AI_AUTO``claude --dangerously-skip-permissions`Autonomous AI session — used by `da-spec`, `da-spec-continue`, `da-code`, `da-review`Lint config files (`phpstan.neon`, `.phpcs.xml`) are created in your project root on install if the respective tools are present in `vendor/bin`. Edit them to customise lint rules.

Task files
----------

[](#task-files)

Tasks are stored in `.tasks//`. Add `.tasks/` to `.gitignore` or commit them — your choice.

```
.tasks/
  task-001-add-dkim-validation/
    TASK.md      ← spec (pure markdown, no metadata)
    task.json    ← lifecycle metadata (status, id, created)

```

All agents accept a flexible `TASK` argument — use the task number, a substring of the name, or the full ID:

```
make da-code TASK=1           # by number
make da-code TASK=dkim        # by substring
make da-code TASK=task-001-add-dkim-validation  # full ID
```

### Task lifecycle

[](#task-lifecycle)

```
spec-in-progress → waiting-for-spec-approval → waiting-for-coding
  → coding-in-progress → waiting-for-pr-review
  → review-in-progress → waiting-for-pr-review → ...
  → task-completed

```

Status is tracked in `task.json` (separate from the spec). Each agent updates it automatically — you can always see where a task stands at a glance.

###  Health Score

45

—

FairBetter than 93% of packages

Maintenance85

Actively maintained with recent releases

Popularity12

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity63

Established project with proven stability

 Bus Factor1

Top contributor holds 100% 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

37

Last Release

76d ago

Major Versions

v0.9.7 → v1.0.02026-03-01

v1.3.2 → v2.0.02026-03-03

### Community

Maintainers

![](https://www.gravatar.com/avatar/9c89bf44e9df4ea9c9a9a658a5a83863794172d52e1bf6630009ae7c228097bb?d=identicon)[tomashojgr](/maintainers/tomashojgr)

---

Top Contributors

[![tomashojgr](https://avatars.githubusercontent.com/u/44899639?v=4)](https://github.com/tomashojgr "tomashojgr (53 commits)")

### Embed Badge

![Health badge](/badges/tomashojgr-dev-agents/health.svg)

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

###  Alternatives

[humbug/box

Fast, zero config application bundler with PHARs.

1.3k801.5k69](/packages/humbug-box)[wp-cli/package-command

Lists, installs, and removes WP-CLI packages.

187.6M9](/packages/wp-cli-package-command)[ramsey/composer-repl

A REPL for PHP built into Composer.

105111.1k24](/packages/ramsey-composer-repl)[elendev/composer-push

Provide a Push command to composer to push to repositories

53181.4k6](/packages/elendev-composer-push)[mwguerra/interactive-upgrader

A CLI tool that handles both Composer and npm dependencies for Laravel projects.

1913.7k](/packages/mwguerra-interactive-upgrader)

PHPackages © 2026

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