Help us improve
Share bugs, ideas, or general feedback.
From acc
Generates immutable PSR-7 HTTP message classes (Request, Response, ServerRequest, Stream, Uri) for PHP 8.4 with unit tests. For custom HTTP frameworks or lightweight handling.
npx claudepluginhub dykyi-roman/awesome-claude-code --plugin accHow this skill is triggered — by the user, by Claude, or both
Slash command
/acc:create-psr7-http-messageThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generates PSR-7 compliant HTTP message implementations following `Psr\Http\Message` interfaces.
Generates PSR-17 compliant HTTP factories for PHP 8.4 implementing RequestFactoryInterface, ResponseFactoryInterface, StreamFactoryInterface, UriFactoryInterface, ServerRequestFactoryInterface, and UploadedFileFactoryInterface. Includes unit tests for DI containers, HTTP testing, and frameworks.
Builds PHP 8.3+ applications with Laravel/Symfony, strict typing, PHPStan level 9, and PSR standards. Creates typed DTOs, controllers, migrations, tests, and REST/GraphQL APIs.
Builds modern PHP 8.3+ applications with Laravel or Symfony, enforcing strict typing, PHPStan level 9, Swoole async patterns, and PSR standards. Creates controllers, middleware, migrations, PHPUnit/Pest tests, DTOs, DI, and REST/GraphQL APIs.
Share bugs, ideas, or general feedback.
Generates PSR-7 compliant HTTP message implementations following Psr\Http\Message interfaces.
| 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/ |
<?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
}
<?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"}
{
"require": {
"psr/http-message": "^2.0"
}
}
references/templates.md - Full Response, Stream, Uri, Request, ServerRequest, UploadedFile templatesreferences/examples.md - Integration examples