Skip to content
cccskills
FreePublished on GitHub

php-service

Use when the user says 'create service', 'new service class', or needs a PHP service following SOLID principles with proper DI and repository usage.

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md3.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

php-service

When to use

Use when creating a new service, extracting business logic from a controller, or refactoring into a service layer.

Do NOT use when:

  • Controllers (use laravel skill)
  • DTOs (use laravel-dto skill for Laravel/PHP; framework-native skill for other stacks)
  • Models (use eloquent skill)

When to create a service

✅ Multiple steps needing orchestration (save + calculate + notify) ✅ Business rules beyond FormRequest ✅ Logic reused across controllers, jobs, commands ✅ Complex calculations or transformations

❌ Simple CRUD — $model->update($request->validated()) stays in controller ❌ One-liner logic — no class for a single Eloquent call

Procedure: Create a service

Step 0: Inspect

  1. Read ./agents/ and AGENTS.md for service conventions.
  2. Check existing services — match naming, structure, DI patterns.
  3. Check for repositories — see php/patterns/repositories.md guideline.

Step 1: Create the class

  1. Location: app/Services/{Domain}/ or app/Modules/{Module}/App/Services/.
  2. declare(strict_types=1), proper namespace.
  3. Constructor inject dependencies (repositories, other services).
  4. Max 4 constructor dependencies — if more, split the service.

Step 2: Implement methods

  1. One responsibility per method.
  2. Delegate data access to repositories.
  3. Use DTOs for structured data.
  4. Use Math helper for calculations — never raw arithmetic.

Step 3: Wire up

// Controller
public function __invoke(
    UpdateProjectRequest $request,
    Project $project,
    ProjectService $projectService,
): ProjectResource {
    $dto = UpdateProjectDTO::fromRequest($request);
    return ProjectResource::make($projectService->update($project, $dto));
}

Conventions

→ See guideline php/patterns/service-layer.md for full service layer conventions.

Validate

  • Run PHPStan on the service — must pass at level 9.
  • Verify single responsibility: service does one thing, no mixed concerns.
  • Confirm all dependencies are constructor-injected (no app() or facades in service).
  • Run affected tests — must pass.

Output format

  1. Service class with constructor injection and single responsibility
  2. Repository dependency if data access is needed

Gotcha

  • Don't create "god services" with 10+ methods — split by responsibility.
  • Don't inject Request into services — pass specific data.
  • Services are framework-agnostic — no HTTP/request logic.

Do NOT

  • Do NOT inject Request or Controller into services — services are framework-agnostic.
  • Do NOT create services with more than one responsibility — split them.

Auto-trigger keywords

  • service class
  • business logic
  • service layer
  • dependency injection

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.

The English summary is being prepared. Showing the original description.

event4u-app/agent-config12Updated Oct 20, 2026

Use when defining or auditing the activation event — aha-moment selection, retention correlation, falsifiable definition. Triggers on 'what is our aha moment', 'redefine activation'.

The English summary is being prepared. Showing the original description.

event4u-app/agent-config12Updated Oct 20, 2026

Use when capturing an architectural decision — file naming, next ADR number, Status / Context / Decision / Consequences, index regen; fires even without saying 'ADR'.

The English summary is being prepared. Showing the original description.

event4u-app/agent-config12Updated Oct 20, 2026

Adversarial critique — devil's advocate, stress-test, honest teardown ('poke holes', 'be brutal', 'was hältst du davon'); explicit request only. Routine code or design review → code-review.

The English summary is being prepared. Showing the original description.

event4u-app/agent-config12Updated Oct 20, 2026

Use when reading, creating, or updating agent documentation, module docs, roadmaps, or AGENTS.md. Understands the full .augment/, agents/, and copilot-instructions structure.

The English summary is being prepared. Showing the original description.

event4u-app/agent-config12Updated Oct 20, 2026

Use for an adversarial red-team / blue-team / auditor review of an AI agent's CONFIG + behaviour (rules, skills, MCP, hooks, permissions) — attack-chain → defensive-gap list, not a code audit.

The English summary is being prepared. Showing the original description.

event4u-app/agent-config12Updated Oct 20, 2026

See all skills by event4u-app

Report a problem with this skill