agentsclimarketplace

Symfony components

Skill krzysztofsurdy/code-virtuoso/skills/frameworks/symfony/symfony-components

Skills, sub-agents, and playbooks for Claude Code, Cursor, and any Agent Skills-compatible AI coding assistant.

Install
npx -y skills add krzysztofsurdy/code-virtuoso --skill symfony-components

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 20 stars20 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Comprehensive reference for all 38 Symfony framework components with PHP 8.3+ and Symfony 7.x patterns. Use when the user asks to implement, configure, or troubleshoot any Symfony component including HttpFoundation, HttpKernel, DependencyInjection, Form, Validator, Cache, Messenger, Console, EventDispatcher, Workflow, Serializer, Security, Routing, Twig, Doctrine integration, or any other Symfony component. Covers APIs, configuration, best practices, and common pitfalls.

SKILL.md

8.9 KB, as published. Nobody here has run it

Symfony Components

Complete reference for all 38 Symfony components — patterns, APIs, configuration, and best practices for PHP 8.3+ and Symfony 7.x.

Component Index

HTTP & Runtime

  • HttpFoundation — Object-oriented HTTP requests/responses replacing PHP globals → reference
  • HttpKernel — Request handling, kernel events, controller resolution, middleware → reference
  • PSR-7 Bridge — Bidirectional HttpFoundation ↔ PSR-7 conversion → reference
  • Runtime — Decoupled bootstrapping for multiple runtime environments → reference

Messaging

  • Messenger — Sync/async message buses, transports (AMQP, Redis, Doctrine), middleware, envelopes → reference

Console

  • Console — CLI commands, input/output handling, helpers, formatters, progress bars → reference

Dependency Injection

  • DependencyInjection — Service container, autowiring, compiler passes, tagged services → reference
  • Contracts — Decoupled abstractions for interoperability (Cache, EventDispatcher, HttpClient, etc.) → reference

Forms & Validation

  • Form — Form creation, field types, events, data transformers, collections, theming → reference
  • Validator — JSR-303 constraints, custom validators, groups, severity levels → reference
  • OptionsResolver — Option configuration with defaults, validation, normalization, nesting → reference

Cache, Lock & Semaphore

  • Cache — PSR-6/PSR-16 adapters, tag-based invalidation, stampede prevention → reference
  • Lock — Exclusive resource locking across processes/servers (Redis, PostgreSQL, file) → reference
  • Semaphore — Concurrent access with configurable limits (Redis, DynamoDB) → reference

Events & Workflow

  • EventDispatcher — Observer/Mediator patterns, listeners, subscribers, priorities → reference
  • Workflow — State machines, workflow transitions, guards, metadata, events → reference

Configuration & Expressions

  • Config — Configuration loading, validation, caching, tree building, bundle config → reference
  • ExpressionLanguage — Safe expression sandbox for business rules, validation, security → reference
  • Yaml — YAML parsing, dumping, linting with full data type support → reference

Filesystem, Finder & Process

  • Filesystem — Platform-independent file/directory operations, atomic writes, path utils → reference
  • Finder — File search with fluent criteria (name, size, date, depth, content) → reference
  • Process — Secure system command execution, async processes, output streaming → reference

Serialization & Types

  • PropertyAccess — Read/write objects and arrays via string paths (foo.bar[baz]) → reference
  • PropertyInfo — Property metadata extraction (types, access, descriptions) → reference
  • TypeInfo — PHP type extraction, resolution, and validation → reference
  • VarDumper — Enhanced variable debugging with HTML/CLI formatters → reference
  • VarExporter — Export PHP data to OPcache-optimized code, lazy ghost/proxy objects → reference

Testing

  • BrowserKit — Simulated browser for programmatic HTTP, cookies, history → reference
  • DomCrawler — HTML/XML traversal, CSS selectors, form automation → reference
  • CssSelector — CSS-to-XPath conversion for DOM querying → reference
  • PHPUnit Bridge — Deprecation reporting, time/DNS mocking, parallel tests → reference

Data & Text Utilities

  • Uid — UUID (v1–v8) and ULID generation, conversion, Doctrine integration → reference
  • Clock — Testable time abstraction with MockClock and DatePoint → reference
  • Intl — Internationalization data (languages, countries, currencies, timezones) → reference
  • JsonPath — RFC 9535 JSONPath queries on JSON structures → reference
  • Mime — MIME message creation for emails and content types → reference
  • Ldap — LDAP/Active Directory connections, queries, and management → reference
  • Asset — URL generation and versioning for web assets → reference

Quick Patterns

Dependency Injection (Autowiring)

# services.yaml — most services are autowired automatically
services:
    _defaults:
        autowire: true
        autoconfigure: true
    App\:
        resource: '../src/'
        exclude: '../src/{DI,Entity,Kernel.php}'

Define a Route + Controller

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;

class ArticleController
{
    #[Route('/articles/{id}', methods: ['GET'])]
    public function show(int $id): Response
    {
        return new Response("Article $id");
    }
}

Dispatch a Message (Async)

use Symfony\Component\Messenger\MessageBusInterface;

class OrderService
{
    public function __construct(private MessageBusInterface $bus) {}

    public function place(Order $order): void
    {
        $this->bus->dispatch(new OrderPlaced($order->getId()));
    }
}

Create and Validate a Form

$form = $this->createForm(ArticleType::class, $article);
$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {
    $em->persist($form->getData());
    $em->flush();
    return $this->redirectToRoute('article_list');
}

Cache with Tags

use Symfony\Contracts\Cache\ItemInterface;

$value = $cache->get('products_list', function (ItemInterface $item) {
    $item->expiresAfter(3600);
    $item->tag(['products']);
    return $this->repository->findAll();
});

$cache->invalidateTags(['products']);

Console Command

use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

#[AsCommand(name: 'app:process', description: 'Process items')]
class ProcessCommand extends Command
{
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $output->writeln('Processing...');
        return Command::SUCCESS;
    }
}

Event Subscriber

use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class OrderSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        return [OrderPlacedEvent::class => 'onOrderPlaced'];
    }

    public function onOrderPlaced(OrderPlacedEvent $event): void
    {
        // Handle event
    }
}

Workflow Transition

if ($workflow->can($article, 'publish')) {
    $workflow->apply($article, 'publish');
}

Lock a Resource

$lock = $factory->createLock('pdf-generation', ttl: 30);
if ($lock->acquire()) {
    try {
        generatePdf();
    } finally {
        $lock->release();
    }
}

Best Practices

  • Target PHP 8.3+ and Symfony 7.x with strict typing
  • Use attributes over YAML/XML for routes, commands, message handlers, event listeners
  • Prefer autowiring — only register services manually when configuration is needed
  • Use Cache Contracts ($cache->get()) over raw PSR-6 for stampede prevention
  • Apply validation groups to support multiple form contexts
  • Use state machines by default; use workflows only when parallel states are needed
  • Create custom constraints for business logic that can't be expressed with built-in ones
  • Mock time and DNS in tests using PHPUnit Bridge for deterministic results

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.