prestashop
Skill4 starsChanged 8 months agoUnlicenseView on GitHub
Use when building, reviewing, or debugging a PrestaShop 9 module — its structure, hooks, controllers, configuration page, services, persistence, cron, or packaging. Triggers on: "PrestaShop", a module main class or `getContent()`, hook registration (`registerHook`, `hookDisplay*`/`hookAction*`), `config/services.yml` inside a module, a module ZIP that will not install, or a Back Office configuration page that 404s.
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 16
Use this skill for PrestaShop 9 modules.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
PrestaShop 9 Module Development Reference
Use this skill for PrestaShop 9 modules. In PrestaShop terminology, these are modules, not "plugins". If the task says plugin, translate it mentally to module and implement it as a module. Read only the reference files relevant to the task.
Critical Rules
- Use real PrestaShop structure — main module file in the module root, legacy controllers in
controllers/, modern Symfony controllers insrc/Controller, config inconfig/, assets/templates inviews/. - Build only from documented PrestaShop 9 conventions — when a class, hook contract, service, or extension point is not in these references or the official docs, stop and say so instead of inventing it. Never ship your own
PrestaShopBundle,Symfony\Component\..., or other classes inside host namespaces to patch missing knowledge. - Keep the main module class thin — constructor, metadata, install/uninstall, hook registration, and configuration entrypoint only. Put API clients, repositories, sync services, and form handlers into
src/orclasses/. - Prefer modern BO configuration — for a real configuration page in PrestaShop 9, use a Symfony form/controller/route.
getContent()should normally redirect to the module’s modern config route, not render a giant PHP string. - Respect controller boundaries — front-office module controllers live in
controllers/front/and must be named<ModuleClassName><FileName>ModuleFrontController. Modern admin controllers go insrc/Controllerand require routing + services/autoload. - Do not guess hooks — verify the hook exists and confirm whether it is display/action/array-return. If the hook contract is unclear, stop guessing and check the docs or core.
- Use
Configurationonly for settings — scalar module settings belong in configuration. Operational data, sync state, mappings, logs, or queues do not. - Model remote identifiers explicitly — external integrations must store or resolve remote IDs correctly. Email is not a universal surrogate key.
- Secure cron/sync entrypoints — if using a front controller as a cron endpoint, require a token and limit the surface area. Prefer a Symfony console command when CLI access is available.
- Composer must not shadow core dependencies — set
"prepend-autoloader": false, packagevendor/, and do not rely on libraries removed from PrestaShop 9 core. - Avoid overrides — use hooks, services, modern extension points, or controller routes first. Overrides are risky and should be the last resort.
- Do not put HTML in PHP — render through Smarty or Twig. The module class is not a view layer.
- Prefix everything you own — config keys, service IDs, table names, CSS/JS handles, routes, tabs, cron tokens, and PHP namespaces.
- Set realistic compatibility — declare only the versions you actually tested. Do not pretend a module is compatible with versions you never ran.
- A module is not done because it installs — installation success proves almost nothing. You still need to validate routing, hooks, configuration save/load, external I/O, uninstall cleanup, and packaging.
Reference Map
| File | Domain | Use when you need |
module-structure.md | Layout & naming | Correct folder layout, naming, bootstrap, composer/autoload |
main-module-class.md | Main class | Constructor, metadata, install/uninstall, getContent(), tabs |
configuration-pages.md | Settings UI | Modern Symfony config page, forms, providers, handlers, redirect pattern |
controllers-routing.md | Routing & controllers | Front controllers, admin controllers, routes, AJAX, cron endpoints |
hooks-widgets.md | Extension points | Hook registration, display/action hooks, widgets, moduleRoutes |
services-dependency-injection.md | Services | config/services.yml, DI, service design, commands |
data-persistence.md | Data model | Configuration, DB tables, Doctrine, upgrade scripts, multistore considerations |
external-apis-cron.md | Integrations | API clients, id mapping, sync architecture, retries, destructive actions |
translations-templates-assets.md | UI output | Translation domains, Smarty/Twig, CSS/JS loading, mail/templates |
testing-release-checklist.md | Validation | Lint, static analysis, install/uninstall, release packaging, debug flow |
prestashop-9-gotchas.md | Version pitfalls | Removed dependencies, product page changes, common breakages |
Task Routing
- Create a new module skeleton or fix structure/autoload/naming →
references/module-structure.md - Write the main module file or review install/uninstall metadata →
references/main-module-class.md - Build a settings page in Back Office →
references/configuration-pages.md - Create FO/BO endpoints, AJAX, routes, or cron URL →
references/controllers-routing.md - Use hooks, widgets, or custom routes →
references/hooks-widgets.md - Move logic into services or define DI/commands →
references/services-dependency-injection.md - Persist settings, custom entities, mappings, or migrations →
references/data-persistence.md - Integrate an external API or sync data →
references/external-apis-cron.md - Handle translations, templates, assets, or UI text →
references/translations-templates-assets.md - Debug release failures or prepare a distributable ZIP →
references/testing-release-checklist.md - Target PrestaShop 9 specifically or review upgrade risks →
references/prestashop-9-gotchas.md
When Not To Use This Skill
- Framework-generic Symfony questions — PrestaShop 9 embeds Symfony, but form/DI/routing questions outside a module's extension points belong to the Symfony docs.
- Generic PHP or Composer tooling — language-level or dependency questions that are not about module autoload/packaging rules.
- Shop operation, theming, and core upgrades — store configuration, theme development, and PrestaShop core work are not module development.
- Containerized dev environments — load the docker skills for the environment PrestaShop runs in.
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- apideck-libraries/api-skills★ 4same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository73 other files it gives its agents.
- agent/AGENTS.mdAGENTS.md
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- git-guardrails-claude-codeSkill
- setup-project-skillsSkill
- skill-creatorSkill
- websearchSkill
- writing-great-skillsSkill
- codebase-designSkill
- construction-craftSkill
- critical-partnerSkill
- data-intensiveSkill
- diagnosing-bugsSkill
- django-disciplineSkill
- docker-disciplineSkill
- documentation-lifecycleSkill
- domain-driven-designSkill
- enterprise-patternsSkill
- git-disciplineSkill
- legacy-codeSkill
- production-readinessSkill
- refactoring-passSkill
- resolving-merge-conflictsSkill
- tddSkill
- testing-workflowSkill
- ui-design-directionSkill
- webapp-testingSkill
- writing-for-agentsSkill
- django-allauthSkill
- djangoSkill
- dockerSkill
- drfSkill
- full-calendarSkill
- giteaSkill
- htmxSkill
- http-status-codesSkill
- hyperscriptSkill
- langchainSkill
- litestarSkill
- prSkill
- pykeSkill
- python-asyncSkill
- tablerSkill
- cleanroom-rewriteSkill
- councilSkill
- court-jesterSkill
- domain-modelingSkill
- fix-prSkill
- grillingSkill
- grill-meSkill
- grill-with-docsSkill
- handoffSkill
- humanifySkill
- implementSkill
- implement-specSkill
- improve-codebase-architectureSkill
- ponytail-auditSkill
- ponytail-debtSkill
- prototypeSkill
- qaSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

