Awesome-claude-code yii-knowledge

Yii framework knowledge base. Provides Yii3 modular architecture, DDD integration, PSR-7/PSR-15 compliance, persistence, DI, security (RBAC, auth), event system (PSR-14), queue/jobs, infrastructure components (cache, rate limiter, HTTP client), testing, and antipatterns for Yii PHP projects.

install
source · Clone the upstream repo
git clone https://github.com/dykyi-roman/awesome-claude-code
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/dykyi-roman/awesome-claude-code "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/yii-knowledge" ~/.claude/skills/dykyi-roman-awesome-claude-code-yii-knowledge && rm -rf "$T"
manifest: skills/yii-knowledge/SKILL.md
source content

Yii Knowledge Base

Quick reference for Yii3 framework patterns and PHP implementation guidelines. Yii3 is a complete rewrite — modular, PSR-compliant, and designed for modern PHP 8.4+ applications with clean architecture support.

Core Principles

PSR Compliance

Yii3 implements PSR-3 (log), PSR-4 (autoload), PSR-7/PSR-17 (HTTP messages/factories via

yiisoft/http-message
), PSR-11 (DI via
yiisoft/di
), PSR-12 (coding style), PSR-15 (middleware via
yiisoft/middleware-dispatcher
).

Middleware Pipeline

Request → [Router] → [Auth] → [CORS] → [Action] → Response
              ↓                            ↓
         yiisoft/router            Application Logic

Rule: All HTTP handling flows through the PSR-15 middleware pipeline. No global state.

Modular Package Architecture

Yii3 is split into independent packages (

yiisoft/*
). Install only what you need. No monolithic framework dependency.

Quick Checklists

DDD-Compatible Yii3 Project

  • Domain layer has zero
    use Yiisoft\
    imports
  • ActiveRecord used only in Infrastructure layer
  • Repository interfaces defined in Domain layer
  • Value Objects used instead of primitives in Domain
  • Actions/Controllers only map input and delegate to UseCases
  • DI container configured via providers, not service locator
  • Domain events dispatched through domain
    EventDispatcherInterface
    port (not PSR-14 directly)
  • RBAC Rules delegate business logic to domain Specifications
  • Queue handlers delegate to Application UseCases
  • Infrastructure components (Cache, HTTP Client) accessed via domain ports

Clean Architecture Checks

  • No
    Yiisoft\ActiveRecord
    in Domain or Application layers
  • No HTTP concerns (
    ServerRequestInterface
    ) in Application layer
  • Middleware handles cross-cutting concerns (auth, CORS, logging)
  • Config files separate from business logic
  • Service providers wire interfaces to implementations
  • Tests do not depend on Yii container for unit tests

Common Violations Quick Reference

ViolationWhere to LookSeverity
ActiveRecord in Domain
use Yiisoft\ActiveRecord
in Domain layer
Critical
Service Locator usage
$container->get()
outside composition root
Critical
Business logic in Actionif/switch on domain state in Controller/ActionCritical
Framework in Domain
use Yiisoft\
in Domain namespace
Warning
Fat middlewareMiddleware doing business logicWarning
Missing input validationAction without request validationWarning
IdentityInterface in Domain
use Yiisoft\Auth
in Domain layer
Critical
RBAC logic in Domain
use Yiisoft\Rbac
in Domain layer
Critical
Queue in Domain
QueueInterface
in Domain layer
Critical
Cache/HTTP Client in Domain
CacheInterface
or PSR-18 in Domain layer
Critical
Yii2 patterns in Yii3
Yii::$app->
, global helpers
Critical

PHP 8.4 Yii Patterns

Action (Single Action Controller)

declare(strict_types=1);

namespace Presentation\Api\Order;

final readonly class CreateOrderAction
{
    public function __construct(
        private CreateOrderUseCase $createOrder,
        private OrderRequestMapper $mapper,
    ) {}

    public function __invoke(ServerRequestInterface $request): ResponseInterface
    {
        $dto = $this->mapper->fromRequest($request);
        $result = $this->createOrder->execute($dto);

        return $this->responseFactory->createJson($result->toArray(), 201);
    }
}

PSR-15 Middleware

declare(strict_types=1);

namespace Infrastructure\Http\Middleware;

final readonly class CorrelationIdMiddleware implements MiddlewareInterface
{
    public function process(
        ServerRequestInterface $request,
        RequestHandlerInterface $handler,
    ): ResponseInterface {
        $correlationId = $request->getHeaderLine('X-Correlation-ID') ?: Uuid::v4();
        $request = $request->withAttribute('correlationId', $correlationId);

        return $handler->handle($request)
            ->withHeader('X-Correlation-ID', $correlationId);
    }
}

UseCase with DI

declare(strict_types=1);

namespace Application\Order\UseCase;

final readonly class CreateOrderUseCase
{
    public function __construct(
        private OrderRepositoryInterface $orders,
        private EventDispatcherInterface $events,
    ) {}

    public function execute(CreateOrderDTO $dto): OrderResultDTO
    {
        $order = Order::create(
            id: $this->orders->nextIdentity(),
            customerId: $dto->customerId,
            lines: $dto->lines,
        );
        $this->orders->save($order);
        $this->events->dispatch(...$order->releaseEvents());

        return OrderResultDTO::fromEntity($order);
    }
}

References

For detailed information, load these reference files:

  • references/architecture.md
    — Yii3 modular architecture, middleware pipeline, config system
  • references/ddd-integration.md
    — Extracting Domain from Yii, Repository pattern, Domain Events
  • references/routing-http.md
    — Routing, Actions, PSR-7/PSR-15 middleware
  • references/persistence.md
    — ActiveRecord, Cycle ORM, migrations, Repository pattern
  • references/dependency-injection.md
    — yiisoft/di container, service providers, PSR-11
  • references/testing.md
    — PHPUnit, fixtures, functional testing, middleware testing
  • references/security.md
    — RBAC, authentication, IdentityInterface adapter, password hashing, CSRF
  • references/event-system.md
    — PSR-14 dispatcher, listeners, domain event bridge, stoppable events
  • references/queue.md
    — yii-queue, messages, handlers, middleware pipelines, retry, channels
  • references/infrastructure-components.md
    — Cache (PSR-16), Rate Limiter, HTTP Client (PSR-18), Mailer with DDD ports
  • references/antipatterns.md
    — Yii2-in-Yii3 detection, framework coupling, fat controllers, RBAC in Domain, missing queue resilience