jeffsenso/dolibarr-skills · Archived

dolibarr-development

Dolibarr ERP/CRM developer skill. Use for: building or extending Dolibarr modules (external/custom), implementing hooks, triggers, DAO classes, SQL tables, menus, permissions, tabs, boxes, PDF templates, cron scripts. Covers both core contributor and external module developer workflows. Applies coding rules (PSR-12, SQL norms, MVC pattern, Active Record).

First seen May 12, 2026

Installation

$ npx skills add jeffsenso/dolibarr-skills --skill dolibarr-development

Summary

  • Dolibarr ERP/CRM developer skill.
  • Use for: building or extending Dolibarr modules (external/custom), implementing hooks, triggers, DAO classes, SQL tables, menus, permissions, tabs, boxes, PDF templates, cron scripts.
  • Covers both core contributor and external module developer workflows.
  • Applies coding rules (PSR-12, SQL norms, MVC pattern, Active Record).

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 8
License LICENSE
Default branch main
Open issues 0
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,693 B
  • docs SUMMARY.md 385 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 24 installs

SKILL.md

Dolibarr Developer Skill

When to Use

  • Creating or extending a Dolibarr module (custom or external)
  • Implementing hooks (actions_mymodule.class.php) or triggers
  • Writing DAO/business object classes, SQL table definitions
  • Adding menus, tabs, permissions, boxes, exports, CSS/JS
  • Building cron/command-line scripts
  • Writing PDF/ODT document templates
  • Following Dolibarr coding rules (PHP, SQL, HTML norms)

Key Concepts

Architecture

  • MVC pattern: Controller (/ Actions /) + View (/ View /) in same PHP file
  • Active Record ORM: one class per table with CRUD methods
  • Global objects: $db, $user, $conf, $langs, $mysoc, $hookmanager, $extrafields
  • Module location: external modules live in htdocs/custom/mymodule/
  • Table prefix: all tables prefixed llx_

Module Entry Points

Extension point When to use
Hooks Inject/replace code in existing pages without modifying core
Triggers React to business events (invoice created, order validated…)
Tabs Add tabs on thirdparty, order, product, invoice… sheets
Menus Add top-level or left-menu entries
Boxes Add widgets on home page
Extrafields Add fields to existing objects (no module needed for simple cases)
PDF templates Customize generated PDF documents

Step-by-Step: Build a Module

1. Generate Skeleton

Use the built-in Module Builder (enable it in Setup → Modules, then click the bug icon top-right). It generates modMyModule.class.php, SQL files, DAO class, and page skeletons.

GitHub template: https://github.com/Dolibarr/dolibarr/tree/develop/htdocs/modulebuilder/template

2. Module Descriptor (required)

File: htdocs/custom/mymodule/core/modules/modMyModule.class.php

  • Class name starts with mod, file matches class name
  • Unique $this->numero (check https://wiki.dolibarr.org/index.php/Listofmodules_id)
  • Declare hooks contexts, menus, permissions, tabs, boxes, CSS/JS in this file
  • Enable/disable via Setup → Modules

See → [Module Structure reference](./references/module-structure.md)

3. SQL Tables (optional)

  • Files in mymodule/sql/llxmytable.sql + llxmytable.key.sql
  • Load via $this->loadtables('/mymodule/sql/') in init()
  • Primary key always rowid INTEGER AUTO_INCREMENT PRIMARY KEY
  • Table prefix llx_, InnoDB engine, no DB triggers, no DELETE CASCADE

See → [Coding Rules reference](./references/coding-rules.md)

4. DAO Class (optional)

File: mymodule/class/myobject.class.php

  • Copy from htdocs/modulebuilder/templates/class/myobject.class.php
  • Methods: create(), fetch(), update(), delete(), fetchAll()
  • DB access pattern: $db->begin() / $db->query() / $db->commit() or $db->rollback()

5. Hooks (optional)

  • Declare context in modMyModule.class.php: $this->module_parts = array('hooks' => array('thirdpartycard', 'orderlist'))
  • Create mymodule/class/actions_mymodule.class.php with hook methods
  • Disable + re-enable module after changing contexts (stored in DB)
  • Find contexts: search initHooks( in source. Find hook names: search executeHooks( in source.

See → [Hooks & Triggers reference](./references/hooks-triggers.md)

6. Menus (optional)

Declare in $this->menu array in module descriptor.

  • fk_menu=0 + type='top' for top menu
  • fkmenu='fkmainmenu=xxx' + type='left' for left sub-menu
  • perms field controls visibility by permission
  • user=0 internal, 1 external, 2 both

7. Tabs (optional)

Declare in $this->tabs array: 'objecttype:+tabcode:Title:langfile@mymodule:condition:/mymodule/page.php?id=ID'

Object types: thirdparty, order, invoice, product, contact, contract, propal, member, user

8. Permissions (optional)

Declare in $this->rights array. Test with $user->rights->mymodule->action->subaction.

9. PHP Pages (optional)

  • Bootstrap: include main.inc.php (try multiple relative paths, see template)
  • Use dolincludeonce('/mymodule/class/myclass.class.php', 'MyClass') for module classes
  • Use requireonce DOLDOCUMENT_ROOT.'/core/...' for Dolibarr core classes
  • CSS classes: liste_titre, pair/impair, flat, button
  • JS: pass $morejs array to llxHeader()

10. Setup Page (optional)

  • Create mymodule/admin/setup.php
  • Set $this->configpageurl = array("setup.php@mymodule") in descriptor

Packaging & Distribution


References

  • [Module structure, descriptor, file tree](./references/module-structure.md)
  • [Hooks system & Triggers](./references/hooks-triggers.md)
  • [Coding rules: PHP, SQL, HTML](./references/coding-rules.md)
  • [Technical components: menus, tabs, permissions, DB, dates](./references/technical-components.md)

Official Docs