application-layer

application-layer is a skill for Claude Code, Codex from garrettw/php-arch-skills. It costs 55 tokens per session (2,224 once invoked), scanned A, original, MPL-2.0.

Guidance for organizing PHP application code around use cases, the concrete actions a system performs, using application or service layers and command/query handlers. It covers controllers, data-transfer objects, and keeping business rules in the domain model.

In plain words
What is it for?
Use it when designing PHP controllers, service layers, application layers, command/query handlers, or data-transfer objects for shared HTTP, command-line, or queue workflows.
Why use it?
It helps prevent controllers from becoming overloaded and keeps workflows easier to test and reuse. It also clarifies which code should coordinate a task and which code should make business decisions.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it when designing PHP controllers, service layers, application layers, command/query handlers, or data-transfer objects for shared HTTP, command-line, or queue workflows.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/garrettw/php-arch-skills/application-layer
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add garrettw/php-arch-skills --skill application-layer
Clone the repo
git clone --depth 1 https://github.com/garrettw/php-arch-skills

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for application-layer

README.md
[![agentmods](https://agentmods.dev/badge/skills/garrettw/php-arch-skills/application-layer/github.svg)](https://agentmods.dev/skills/garrettw/php-arch-skills/application-layer)
Your own site
<a href="https://agentmods.dev/skills/garrettw/php-arch-skills/application-layer"><img src="https://agentmods.dev/badge/skills/garrettw/php-arch-skills/application-layer/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for application-layer

Your own site · 80×15
<a href="https://agentmods.dev/skills/garrettw/php-arch-skills/application-layer"><img src="https://agentmods.dev/badge/skills/garrettw/php-arch-skills/application-layer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 55 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,224 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00055 $0.02224
Opus 5.5 $0.00022 $0.00890
Sonnet 5.5 $0.00011 $0.00445
Haiku 4.5 $0.00006 $0.00222

Measured 1mo ago against content hash c4db86995584, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

application-layer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/application-layer/SKILL.md · 102 lines

How it starts

The opening of the file, as written. The whole thing — 102 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Application Layer & CQRS Patterns for PHP

Service Layer = Application Layer

In DDD terminology, the Service Layer is interchangeable with the Application Layer. A service (also called a handler, operation, action, or interactor) represents one business use case: it orchestrates and coordinates work, controls the transaction, and manages side effects. It does not make business decisions — it is a workflow, not a business rule. The actual decisions live in the domain (rich objects, policies, or a table module). See service-layer.md for the full definition, benefits, the overuse anti-pattern, and how it sits above the domain-modeling spectrum. A Command/Handler here is the in-process expression of a use case; the distribution-patterns skill covers exposing that same use case remotely as a coarse-grained Remote Facade.

When to Use a Service Layer (and the Anti-Pattern to Avoid)

Use a Service Layer whenever more than one delivery channel (HTTP, CLI, queue) needs the same orchestration, or when you want a clear, testable entry point per use case. But do not overuse it: the common failure is Controller → Service → Repository → Entity where the entity is anemic and the service holds all the logic. That is a Transaction Script wearing extra indirection — the fault is an anemic domain, not the pattern. Push business rules down into the domain; keep the service as pure orchestration.

When to Use CQRS (and When NOT to)

CQRS separates read and write models, but adds complexity. Use CQRS only when a bounded context has genuinely divergent read/write workloads. Skip CQRS for simple CRUD, interfaces without complex reads, or early-stage projects where premature separation slows delivery.

Use CQRS For Use Simple Controller/Repository For
Bounded contexts with divergent read/write workloads Simple CRUD, single operation per endpoint
A read model with 10+ projections or dedicated reporting Single or few read paths
Scaling reads and writes independently Uniform access patterns

Read the full file on GitHub · 102 lines

Files

What ships with it

3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 1mo ago First seen · 102 lines · 55 tokens per session scan A c4db86995584

Subscribe to this mod's changes

application-layer is a skill published in the GitHub repository garrettw/php-arch-skills (14 stars, last pushed 2mo ago), licensed MPL-2.0. It adds 55 tokens to every session and 2,224 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

bitrix-console-commands

Bitrix CLI bitrix.php — make: generators (module, controller, tablet, service, event, message, agent), orm:annotate, messenger:consume, own Symfony Console commands in module .settings.php. Use when scaffolding code or writing CLI/cron jobs.

bxmaximum/bitrix-framework-skills · 62 tokens

bitrix-components

Bitrix components — class.php, params, template overrides, resultmodifier/componentepilog, result cache, paged lists, SEF, Controllerable AJAX. Use when building, overriding or caching components in /local.

bxmaximum/bitrix-framework-skills · 48 tokens

bitrix-request-response

Application, Context, HttpRequest (query/post/JSON body), HttpResponse, Json/AjaxJson/Redirect/file responses, cookies, Converter, Uri, UuidGenerator. Use instead of $GET/$POST, header(), setcookie() or jsonencode().

bxmaximum/bitrix-framework-skills · 58 tokens

bitrix-http-client

Bitrix\Main\Web\HttpClient — legacy get/post/download, PSR-18 sendRequest, async requests, httpclientoptions, HttpDebug logging, SSRF protection, GeoIp\Manager. Use for outgoing HTTP calls, webhooks, file downloads and IP geolocation.

bxmaximum/bitrix-framework-skills · 62 tokens

bun-api

Bun runtime API reference for TypeScript scripts. Covers Bun.serve() HTTP/HTTP/2 server with routes and WebSockets, fetch() transport options, proxies and Bun.FetchSession connection pools, Bun.ModuleGraph multi-instance apps, Bun.file(), Bun.write(), Bun.$() shell, Bun.spawn(), Bun.Glob, Bun.env, bun:sqlite…

dmythro/agent-skills · 265 tokens

laravel

Laravel mastery skill. Eloquent ORM, service container, queues, events, Sanctum/Passport auth, Pest testing. Triggers on: /godmode:laravel, "laravel app", "eloquent", "artisan", "blade".

arbazkhan971/godmode · 52 tokens