Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Solid
csarcrr/invoicing-integration
cursor
laravel
csarcrr
invoicing-integration

Follow SOLID as a guide, not dogma. When a principle conflicts with Simplicity First, simplicity wins; don't add interfaces or layers just to satisfy a principle.

Install
php artisan boost:add-skill csarcrr/invoicing-integration

Save this content to: .cursor/rules/solid.md

# SOLID Principles

Follow SOLID as a guide, not dogma. When a principle conflicts with Simplicity First, simplicity wins; don't add interfaces or layers just to satisfy a principle.

- **Single Responsibility**: each class has one reason to change. A provider class like `Provider/<Provider>/Invoice/Create` builds and sends one request; mapping, validation, and HTTP concerns stay in their own places (DTOs, `Http::handleUnwantedFailures()`).
- **Open/Closed**: add behaviour by adding new classes (a new provider, a new operation) rather than editing unrelated existing ones. The `match` on `Provider` in Actions is the accepted extension point.
- **Liskov Substitution**: every provider implementation must honour its contract fully: same inputs, same return types, domain exceptions instead of provider-specific ones.
- **Interface Segregation**: keep contracts small and operation-focused (`ShouldCreateInvoice`, `CreateClient`); a provider implements only the operations it supports.
- **Dependency Inversion**: Actions and Facades depend on contracts, not concrete provider classes. Inject dependencies instead of reaching for static or global state.

SOLID Principles

Follow SOLID as a guide, not dogma. When a principle conflicts with Simplicity First, simplicity wins; don't add interfaces or layers just to satisfy a principle.

  • Single Responsibility: each class has one reason to change. A provider class like Provider/<Provider>/Invoice/Create builds and sends one request; mapping, validation, and HTTP concerns stay in their own places (DTOs, Http::handleUnwantedFailures()).
  • Open/Closed: add behaviour by adding new classes (a new provider, a new operation) rather than editing unrelated existing ones. The match on Provider in Actions is the accepted extension point.
  • Liskov Substitution: every provider implementation must honour its contract fully: same inputs, same return types, domain exceptions instead of provider-specific ones.
  • Interface Segregation: keep contracts small and operation-focused (ShouldCreateInvoice, CreateClient); a provider implements only the operations it supports.
  • Dependency Inversion: Actions and Facades depend on contracts, not concrete provider classes. Inject dependencies instead of reaching for static or global state.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package