create-doctrine-repository — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited create-doctrine-repository (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
See CQRS/CONTEXT.md for conventions (stateless, no Context dependency, multistore tier model, typed exceptions).
Create src/Adapter/{Domain}/{Domain}Repository.php. Choose the base class based on the multistore tier table in CONTEXT.md.
Implement these methods (adapt naming to your domain):
get{Domain}({Domain}Id $id): {LegacyObjectModel} — loads the ObjectModel, throws {Domain}NotFoundException if not foundcreate(...): {Domain}Id — calls ObjectModel save() or add(), wraps in try/catch, returns new IDupdate(...) — calls ObjectModel save() or update()delete({Domain}Id $id) — deletes the entity, respects multistore if applicableReference: src/Adapter/Tax/CommandHandler/ uses a simple repository pattern, src/Adapter/Carrier/CommandHandler/ uses AbstractMultiShopObjectModelRepository
ShopConstraint as a method parameter — never read it from Context$shopIds = $this->getShopIdsByConstraint($shopConstraint) at the start of every write$shopIds and apply the write for each shop contextShopConstraint::allShops(), ShopConstraint::shop($shopId), ShopConstraint::shopGroup($groupId)For entities with has-many sub-resources, two strategies:
set{SubResource}s({Domain}Id, array $items) — delete all existing rows, insert new setConventions (stateless, no Context, typed exceptions) are in CQRS/CONTEXT.md. Skill-specific reminders:
Db::getInstance() — use Doctrine DBAL or ObjectModel methodsContext::getContext()->shop->id — receive shop as parameter~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.