AI skills


1Presentation

Temma ships a set of skills for AI coding agents. A skill teaches an agent the conventions and mechanisms of Temma, so that it produces idiomatic code when it builds a site or an API based on the framework.

The skills follow the Agent Skills open standard: one directory per skill, each containing a SKILL.md file. They are written in English and prefixed with temma-. They work with Claude Code, OpenAI Codex, and any tool that supports the standard.

Temma provides 18 skills, delivered in the digicreon/temma-lib Composer package (directory vendor/digicreon/temma-lib/skills/):

SkillRole
temma-site-guideStep-by-step guide: from the skeleton to a production site
temma-controllerControllers, actions, routing, execution flow, attributes
temma-daoData model: DAO, criteria, raw SQL
temma-viewViews and Smarty templates; JSON/CSV/RSS/iCal/INI/PHP as references
temma-apiJSON endpoints, API plugin, API keys
temma-pluginPre/post plugins
temma-cliComma CLI commands, Ansi and Term helpers
temma-datasourceData sources: DSN, unified API, connectors
temma-authPasswordless authentication, Auth attribute, sessions
temma-validationValidation contracts (input, output, programmatic)
temma-aiLLMs through the AI datasource
temma-emailSending emails, SMTP relay
temma-testsIntegration tests with \Temma\Web\Test and PHPUnit
temma-asynkAsynchronous processing
temma-sseServer-sent events
temma-attributeCreating custom PHP attributes
temma-logLogging, levels, log managers
temma-securitySecurity audit checklist

2Installation

2.1New projects

For a project created with composer create-project digicreon/temma-project-web (or temma-project-api), there is nothing to do: the skills are installed automatically when the project is created, then kept up to date on every composer install and composer update (hooks are declared in the skeleton's composer.json).


2.2Existing projects

First update the library:

$ composer update digicreon/temma-lib

Then either run the synchronization manually:

$ php vendor/digicreon/temma-lib/skills/sync.php

or (recommended) add the hooks to your project's composer.json, so that skills are kept up to date automatically:

"scripts": {
    "temma-skills-sync": "@php -r \"file_exists('vendor/digicreon/temma-lib/skills/sync.php') && include('vendor/digicreon/temma-lib/skills/sync.php');\"",
    "post-install-cmd": ["@temma-skills-sync"],
    "post-update-cmd":  ["@temma-skills-sync"]
}

2.3What synchronization does

Synchronization creates one relative symlink per skill, pointing to the vendored directory, in both .claude/skills/ (Claude Code) and .agents/skills/ (OpenAI Codex and compatible tools). The directories are created when needed.

Synchronization is safe by design and never breaks Composer (it only prints warnings):
  • your own skills are never touched: you can create your own (real directories) next to the symlinks;
  • only dead symlinks pointing to vendor/digicreon/temma-lib/skills/ are removed (a skill removed or renamed on the framework side); any other link or directory is preserved.

3Usage

Agents discover the skills automatically (their metadata is loaded at the start of a session) and activate them when the task calls for it. In Claude Code, a skill can also be invoked explicitly, for example /temma-controller or /temma-security.

The temma-site-guide skill is the entry point: it guides the construction of a site step by step and points to the specialized skills along the way.

Changes (an updated library, an added skill) are taken into account on the fly by Claude Code; only the initial creation of the .claude/skills/ directory requires restarting the session.


4Customization

You can create your own skills (real directories) in .claude/skills/ or .agents/skills/, alongside the provided symlinks: they are never touched by synchronization.

Overriding a provided skill: a real directory bearing the same name as a provided skill takes precedence. The provided skill is then not installed, and a warning is printed.

Exclusions and disabling: in your project's composer.json, the extra.temma-skills section lets you exclude some skills or disable synchronization entirely:

"extra": {
    "temma-skills": {
        "exclude": ["temma-ai", "temma-sse"],
        "disabled": false
    }
}
  • exclude: removes the listed skills (and their existing symlink).
  • disabled: set to true to disable all synchronization.

Without such an opt-out, a symlink deleted by hand is recreated on the next composer update.


5Limitations

  • Windows: if creating symlinks fails (insufficient privileges), the skills are copied instead. Those copies are then never updated automatically; to refresh them, delete the copied directory and run synchronization again.
  • Tools with "user"-level discovery (such as Gemini CLI or Antigravity, which read a directory in the home folder rather than in the project): manual installation, for example by copying or linking the skills from vendor/digicreon/temma-lib/skills/ to the directory expected by the tool.
  • The Agent Skills standard defines the format, not the location: .claude/skills/ and .agents/skills/ cover Claude Code, Codex and compatible tools; other tools may require a specific configuration.