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/):
| Skill | Role |
|---|---|
| temma-site-guide | Step-by-step guide: from the skeleton to a production site |
| temma-controller | Controllers, actions, routing, execution flow, attributes |
| temma-dao | Data model: DAO, criteria, raw SQL |
| temma-view | Views and Smarty templates; JSON/CSV/RSS/iCal/INI/PHP as references |
| temma-api | JSON endpoints, API plugin, API keys |
| temma-plugin | Pre/post plugins |
| temma-cli | Comma CLI commands, Ansi and Term helpers |
| temma-datasource | Data sources: DSN, unified API, connectors |
| temma-auth | Passwordless authentication, Auth attribute, sessions |
| temma-validation | Validation contracts (input, output, programmatic) |
| temma-ai | LLMs through the AI datasource |
| temma-email | Sending emails, SMTP relay |
| temma-tests | Integration tests with \Temma\Web\Test and PHPUnit |
| temma-asynk | Asynchronous processing |
| temma-sse | Server-sent events |
| temma-attribute | Creating custom PHP attributes |
| temma-log | Logging, levels, log managers |
| temma-security | Security 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.
- 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.