.opencode/skills/mate-tools/SKILL.md
Symfony AI Mate operational skill for MCP tool usage, parameter selection, and Docker-first CLI execution. Triggers - mate, symfony ai mate, mcp tools call, phpstan tool, phpunit tool, monolog tool, profiler tool, docker mate wrapper.
npx skillsauth add ineersa/re-search mate-toolsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill when working with Symfony AI Mate capabilities in this repository: static analysis, test execution, logs, Symfony service/profiler inspection, and runtime introspection.
This project runs Mate from the Docker php service. Tool execution should therefore mirror container runtime behavior, not host PHP behavior.
phpstan, phpunit, monolog, or Symfony profiler tools.MANDATORY: All Mate MCP tool invocations MUST use the provided wrapper script:
.opencode/skills/mate-tools/scripts/mate-tool-call.sh <tool-name> '<json-input>'
NEVER call docker compose exec ... vendor/bin/mate directly. The wrapper ensures:
php container.<tool-name>: Mate MCP tool name, e.g. server-info, phpstan-analyse.<json-input>: JSON object string, e.g. '{}', '{"mode":"summary"}'.Run from repo root (where compose.yaml lives). JSON must be valid. Use single quotes around the JSON string in shell. If Docker stack is down, start it first (make up).
docker compose exec -T php php vendor/bin/mate mcp:tools:list --format=toon
[INFO] lines by default by redirecting stderr.MATE_TOOL_CALL_SHOW_BOOT_LOGS=1 .opencode/skills/mate-tools/scripts/mate-tool-call.sh ....--format=toon for maximum token efficiency in LLM contexts.summary/default), then increase detail only when needed.make targets.{} when a tool expects an object with no required fields.Tool names below are the Mate MCP names used with mcp:tools:call.
| Tool | Input | Description |
|------|-------|-------------|
| server-info | {} | PHP version, OS, and loaded extensions |
phpstan-analyse, phpstan-analyse-file, phpstan-clear-cache — references/phpstan.mdphpunit-list-tests, phpunit-run-suite, phpunit-run-file, phpunit-run-method — references/phpunit.mdcomposer-install, composer-require, composer-update, composer-why, composer-why-not — references/composer-tools.md# Check runtime identity
.opencode/skills/mate-tools/scripts/mate-tool-call.sh server-info '{}'
# Code health
.opencode/skills/mate-tools/scripts/mate-tool-call.sh phpstan-analyse '{"mode":"summary"}'
# Tests
.opencode/skills/mate-tools/scripts/mate-tool-call.sh phpunit-run-suite '{"mode":"summary"}'
# Logs
.opencode/skills/mate-tools/scripts/mate-tool-call.sh monolog-tail '{"lines":50}'
# Symfony profiler
.opencode/skills/mate-tools/scripts/mate-tool-call.sh symfony-profiler-list '{"limit":1}'
Composer dependency management via matesofmate/composer-extension:
# Install dependencies
.opencode/skills/mate-tools/scripts/mate-tool-call.sh composer-install '{}'
# Add a new package
.opencode/skills/mate-tools/scripts/mate-tool-call.sh composer-require '{"package":"symfony/console","version":"^6.4"}'
# Remove a package
.opencode/skills/mate-tools/scripts/mate-tool-call.sh composer-remove '{"package":"symfony/debug-bundle","dev":true}'
# Update dependencies
.opencode/skills/mate-tools/scripts/mate-tool-call.sh composer-update '{"mode":"summary"}'
# Investigate package dependencies
.opencode/skills/mate-tools/scripts/mate-tool-call.sh composer-why '{"package":"psr/log"}'
.opencode/skills/mate-tools/scripts/mate-tool-call.sh composer-why-not '{"package":"php","version":"7.4"}'
development
Symfony UX TwigComponent for reusable UI elements. Use when creating reusable Twig templates with PHP backing classes, component composition, props, slots/blocks, computed properties, or anonymous components. Triggers - twig component, AsTwigComponent, reusable template, component props, twig blocks, component slots, anonymous component, Symfony UX component, HTML component, component library, design system component, UI kit, reusable button, reusable card, PreMount, PostMount, mount method. Also trigger for any question about building a reusable piece of UI in Symfony, even if the user doesn't mention TwigComponent by name.
development
Hotwire Turbo for Symfony UX. Use when building SPA-like navigation without JS, partial page updates with frames, real-time updates with streams, or integrating with Mercure for broadcasts. Triggers - turbo drive, turbo-frame, turbo-stream, partial page update, SPA feel, ajax navigation, real-time update, Mercure broadcast, Symfony UX Turbo, inline edit, lazy load section, pagination frame, modal from server, flash message stream, multi-section update, TurboStreamResponse, twig:Turbo:Stream, data-turbo, turbo-stream-source, SSE. Also trigger when the user wants to update part of a page without a full reload, or wants real-time server-to-browser updates.
tools
Symfony UX frontend stack combining Stimulus, Turbo, TwigComponent and LiveComponent. Use when building modern Symfony frontends, choosing between UX tools, creating interactive components, handling real-time updates, or integrating multiple UX packages. Triggers - symfony ux, hotwire symfony, stimulus turbo, live component, twig component, frontend symfony, interactive ui, real-time symfony, which ux package, which tool should I use, how to make this interactive, SPA feel, reactive component, server-rendered component. Also trigger when the user asks a general question about frontend architecture in Symfony or wants to combine multiple UX packages together.
tools
Stimulus JS framework for Symfony UX. Use when building client-side interactivity with data attributes, creating controllers for DOM manipulation, handling user events, managing component state, or integrating with Symfony's StimulusBundle and AssetMapper. Triggers - stimulus controller, data-controller, data-action, data-target, frontend interactivity, JavaScript behavior, Symfony UX frontend, toggle, dropdown, modal JS, tabs JS, clipboard, chart controller, datepicker, autocomplete JS, lazy controller, stimulusFetch, outlets, keyboard shortcut, global event listener. Also trigger when the user wants to add JavaScript behavior to server-rendered HTML, wrap a third-party JS library, or build client-only interactions that don't need a server round-trip.