acc-create-psr7-http-message

Generates PSR-7 HTTP Message implementations for PHP 8.5. Creates Request, Response, Stream, Uri, and ServerRequest classes with immutability. Includes unit tests.

181 stars

Best use case

acc-create-psr7-http-message is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Generates PSR-7 HTTP Message implementations for PHP 8.5. Creates Request, Response, Stream, Uri, and ServerRequest classes with immutability. Includes unit tests.

Teams using acc-create-psr7-http-message should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/acc-create-psr7-http-message/SKILL.md --create-dirs "https://raw.githubusercontent.com/majiayu000/claude-skill-registry/main/skills/data/acc-create-psr7-http-message/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/acc-create-psr7-http-message/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How acc-create-psr7-http-message Compares

Feature / Agentacc-create-psr7-http-messageStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Generates PSR-7 HTTP Message implementations for PHP 8.5. Creates Request, Response, Stream, Uri, and ServerRequest classes with immutability. Includes unit tests.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# PSR-7 HTTP Message Generator

## Overview

Generates PSR-7 compliant HTTP message implementations following `Psr\Http\Message` interfaces.

## When to Use

- Building custom HTTP framework
- Creating lightweight HTTP message handling
- Need for immutable request/response objects
- Testing HTTP interactions

## Generated Components

| Component | Interface | Location |
|-----------|-----------|----------|
| Request | `RequestInterface` | `src/Infrastructure/Http/Message/` |
| Response | `ResponseInterface` | `src/Infrastructure/Http/Message/` |
| ServerRequest | `ServerRequestInterface` | `src/Infrastructure/Http/Message/` |
| Stream | `StreamInterface` | `src/Infrastructure/Http/Message/` |
| Uri | `UriInterface` | `src/Infrastructure/Http/Message/` |
| UploadedFile | `UploadedFileInterface` | `src/Infrastructure/Http/Message/` |

## Quick Template: Response

```php
<?php

declare(strict_types=1);

namespace App\Infrastructure\Http\Message;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\StreamInterface;

final readonly class Response implements ResponseInterface
{
    private const PHRASES = [
        200 => 'OK', 201 => 'Created', 204 => 'No Content',
        400 => 'Bad Request', 401 => 'Unauthorized', 403 => 'Forbidden',
        404 => 'Not Found', 500 => 'Internal Server Error',
    ];

    public function __construct(
        private int $statusCode = 200,
        private string $reasonPhrase = '',
        private array $headers = [],
        private StreamInterface $body = new Stream(''),
        private string $protocolVersion = '1.1',
    ) {}

    public function getStatusCode(): int { return $this->statusCode; }
    public function getReasonPhrase(): string { return $this->reasonPhrase; }
    public function getHeaders(): array { return $this->headers; }
    public function getBody(): StreamInterface { return $this->body; }

    public function withStatus(int $code, string $reasonPhrase = ''): static
    {
        return new self($code, $reasonPhrase ?: (self::PHRASES[$code] ?? ''),
            $this->headers, $this->body, $this->protocolVersion);
    }

    public function withHeader(string $name, $value): static
    {
        $headers = $this->headers;
        $headers[strtolower($name)] = is_array($value) ? $value : [$value];
        return new self($this->statusCode, $this->reasonPhrase, $headers,
            $this->body, $this->protocolVersion);
    }

    public function withBody(StreamInterface $body): static
    {
        return new self($this->statusCode, $this->reasonPhrase,
            $this->headers, $body, $this->protocolVersion);
    }

    // ... other MessageInterface methods
}
```

## Usage Example

```php
<?php

use App\Infrastructure\Http\Message\Response;
use App\Infrastructure\Http\Message\Stream;

// Create response
$response = new Response(200);
$response = $response
    ->withHeader('Content-Type', 'application/json')
    ->withBody(new Stream(json_encode(['status' => 'ok'])));

// Read response
echo $response->getStatusCode();           // 200
echo $response->getHeaderLine('Content-Type'); // application/json
echo (string) $response->getBody();        // {"status":"ok"}
```

## Requirements

```json
{
    "require": {
        "psr/http-message": "^2.0"
    }
}
```

## See Also

- `references/templates.md` - Full Response, Stream, Uri, Request, ServerRequest, UploadedFile templates
- `references/examples.md` - Integration examples

Related Skills

acc-create-value-object

181
from majiayu000/claude-skill-registry

Generates DDD Value Objects for PHP 8.5. Creates immutable, self-validating objects with equality comparison. Includes unit tests.

acc-create-use-case

181
from majiayu000/claude-skill-registry

Generates Application Use Cases for PHP 8.5. Creates orchestration services that coordinate domain objects, handle transactions, and dispatch events. Includes unit tests.

acc-create-unit-test

181
from majiayu000/claude-skill-registry

Generates PHPUnit unit tests for PHP 8.5. Creates isolated tests with AAA pattern, proper naming, attributes, and one behavior per test. Supports Value Objects, Entities, Services.

acc-create-test-double

181
from majiayu000/claude-skill-registry

Generates test doubles (Mocks, Stubs, Fakes, Spies) for PHP 8.5. Creates appropriate double type based on testing needs with PHPUnit MockBuilder patterns.

acc-create-test-builder

181
from majiayu000/claude-skill-registry

Generates Test Data Builder and Object Mother patterns for PHP 8.5. Creates fluent builders with sensible defaults and factory methods for test data creation.

acc-create-strategy

181
from majiayu000/claude-skill-registry

Generates Strategy pattern for PHP 8.5. Creates interchangeable algorithm families with context class, strategy interface, and concrete implementations. Includes unit tests.

acc-create-state

181
from majiayu000/claude-skill-registry

Generates State pattern for PHP 8.5. Creates state machines with context, state interface, and concrete states for behavior changes. Includes unit tests.

acc-create-specification

181
from majiayu000/claude-skill-registry

Generates DDD Specification for PHP 8.5. Creates reusable business rule objects for validation, filtering, and querying with composite pattern support. Includes unit tests.

acc-create-saga-pattern

181
from majiayu000/claude-skill-registry

Generates Saga pattern components for PHP 8.5. Creates Saga interfaces, steps, orchestrator, state management, and compensation logic with unit tests.

acc-create-retry-pattern

181
from majiayu000/claude-skill-registry

Generates Retry pattern for PHP 8.5. Creates resilience component with exponential backoff, jitter, and configurable retry strategies. Includes unit tests.

acc-create-responder

181
from majiayu000/claude-skill-registry

Generates ADR Responder classes for PHP 8.5. Creates HTTP response builders with PSR-7/PSR-17 support. Includes unit tests.

acc-create-repository

181
from majiayu000/claude-skill-registry

Generates DDD Repository interfaces and implementation stubs for PHP 8.5. Creates domain interfaces in Domain layer, implementation in Infrastructure.