MR
Mayur Rathi
@github
⭐ 34.1k GitHub stars

Php-Symfony

Php-Symfony是一款code方向的AI技能,核心价值是Symfony development standards aligned with official Symfony Best Practices,可用于解决开发者在code领域的实际问题,帮助用户提升效率、自动化重复任务或优化工作流。

Symfony development standards aligned with official Symfony Best Practices

Last verified on: 2026-05-30
mkdir -p ./skills/php-symfony && curl -sfL https://raw.githubusercontent.com/github/awesome-copilot/main/skills/php-symfony/SKILL.md -o ./skills/php-symfony/SKILL.md

Run in terminal / PowerShell. Requires curl (Unix) or PowerShell 5+ (Windows).

Skill Content

# Symfony Development Instructions


Instructions for developing Symfony applications following the official Symfony Best Practices and core framework philosophy.


Project Context

- Symfony (latest stable or LTS)

- Default Symfony directory structure

- Autowiring and autoconfiguration enabled

- Doctrine ORM when persistence is needed

- Twig for templating

- Symfony Forms, Validator, Security, Messenger as needed

- PHPUnit for testing

- Attribute-based configuration where supported


Project Structure

- Use the default Symfony directory structure

- Do not create bundles for application code

- Organize application code using PHP namespaces

- Keep configuration in `config/`, application code in `src/`, templates in `templates/`


Configuration


Environment Configuration

- Use environment variables for infrastructure-related configuration

- Use `.env` files to define environment-specific values

- Do not use environment variables to control application behavior


Sensitive Configuration

- Store secrets (API keys, credentials) using Symfony Secrets

- Never commit secrets to the repository


Application Configuration

- Use parameters in `config/services.yaml` for application behavior configuration

- Override parameters per environment only when needed

- Prefix parameters with `app.` to avoid collisions

- Use short, descriptive parameter names

- Use PHP constants for configuration values that rarely change


Services & Dependency Injection

- Use dependency injection exclusively

- Prefer constructor injection

- Use autowiring and autoconfiguration by default

- Keep services private whenever possible

- Avoid accessing services via `$container->get()`

- Use YAML as the preferred format for service configuration

- Use interfaces where it improves decoupling or clarity


Controllers

- Extend `AbstractController`

- Keep controllers thin and focused on glue code

- Do not place business logic in controllers

- Use attributes to configure routing, caching, and security

- Use dependency injection for services

- Use Entity Value Resolvers when convenient and appropriate

- Perform complex queries explicitly via repositories when needed


Doctrine & Persistence

- Use Doctrine entities as plain PHP objects

- Define Doctrine mapping using PHP attributes

- Use repositories for querying data

- Avoid putting business logic in repositories

- Use migrations for all schema changes


Templates (Twig)

- Use snake_case for template names, directories, and variables

- Prefix template fragments with an underscore

- Keep templates focused on presentation

- Avoid business logic in Twig templates

- Escape output by default

- Avoid using `|raw` unless content is trusted and sanitized


Forms

- Define forms as PHP classes

- Do not build forms directly in controllers

- Add form buttons in templates, not in form classes

- Define validation constraints on the underlying object

- Use a single controller action to render and process each form

- Define submit buttons in controllers only when multiple submits are required


Validation

- Use Symfony Validator constraints

- Validate data at application boundaries

- Prefer object-level validation over form-only validation when reuse is needed


Internationalization

- Use XLIFF for translation files

- Use translation keys instead of literal content strings

- Use descriptive keys that express purpose, not location


Security

- Prefer a single firewall unless multiple systems are required

- Use the auto password hasher

- Use voters for complex authorization logic

- Avoid complex security expressions in attributes


Web Assets

- Use AssetMapper to manage web assets

- Avoid unnecessary frontend build complexity unless required


Asynchronous Processing

- Use Symfony Messenger for async and background tasks

- Keep message handlers small and focused

- Configure failure transports for failed messages


Testing

- Write functional tests using `WebTestCase`

- Add smoke tests to ensure all public URL

🎯 Best For

  • Claude users
  • GitHub Copilot users
  • Software engineers
  • Development teams
  • Tech leads

💡 Use Cases

  • Code quality improvement
  • Best practice enforcement

📖 How to Use This Skill

  1. 1

    Install the Skill

    Copy the install command from the Terminal tab and run it. The SKILL.md file downloads to your local skills directory.

  2. 2

    Load into Your AI Assistant

    Open Claude or GitHub Copilot and reference the skill. Paste the SKILL.md content or use the system prompt tab.

  3. 3

    Apply Php-Symfony to Your Work

    Open your project in the AI assistant and ask it to apply the skill. Start with a small module to verify the output quality.

  4. 4

    Review and Refine

    Review AI suggestions before committing. Run tests, check for regressions, and iterate on the skill output.

❓ Frequently Asked Questions

Is Php-Symfony compatible with Cursor and VS Code?

Yes — this skill works with any AI coding assistant including Cursor, VS Code with Copilot, and JetBrains IDEs.

Do I need specific dependencies for Php-Symfony?

Check the install command and Works With section. Most code skills only require the AI assistant and your codebase.

How do I install Php-Symfony?

Copy the install command from the Terminal tab and run it. The skill downloads to ./skills/php-symfony/SKILL.md, ready to use.

Can I customize this skill for my team?

Absolutely. Edit the SKILL.md file to add team-specific instructions, examples, or workflows.

⚠️ Common Mistakes to Avoid

Skipping validation

Always test AI-generated code changes, even for simple refactors.

Missing dependency updates

Check if the skill requires updated dependencies or new packages.

🔗 Related Skills