All skills
michtio avatar

/craft-project-setup

@64a3c26

Scaffold Claude Code configuration specifically for Craft CMS projects. Generates CLAUDE.md and .claude/rules/ files tailored to the project type (plugin, site, module, hybrid, or monorepo). Only for Craft CMS projects — not for Next.js, Laravel, or other frameworks. Triggers on: 'set up Claude for this Craft project', 'initialize CLAUDE.md', 'scaffold project config', 'configure Claude Code for Craft', 'create CLAUDE.md', 'missing CLAUDE.md', 'does this project have a CLAUDE.md', 'bootstrap Claude config', 'new Craft project setup', 'onboard a developer to this Craft project', 'generate .claude/rules', 'set up coding standards config', 'upgrade Claude config', 'update CLAUDE.md', 'compare my setup', 'is my config up to date', 'audit my Claude setup', 'redo project setup'. Also triggers when starting work in a new Craft CMS project that lacks a CLAUDE.md file, or when the user wants to check or upgrade an existing configuration. Detects project type from composer.json (craft-plugin, craft-module, project), .ddev/config.yaml, templates/, config/project/, and modules/. NOT for installing Craft CMS itself, creating DDEV environments, writing PHP code, building templates, or content modeling. NOT for non-Craft projects — if the project is React, Next.js, Laravel, or any non-Craft framework, this skill does not apply.

Use this Skill: https://skilld.dev/gh/michtio/craftcms-claude-skills/craft-project-setup

This session only. Nothing lands on disk.

templatesplugin.clauderulesscaffolding.md

≈548 tokens on demand. Your agent reads this file only when SKILL.md points to it.

Scaffolding

  • Entry file and class name match the plugin handle in PascalCase: handle forum → src/Forum.php / class Forum; handle userProfile → src/UserProfile.php / class UserProfile. Never ship src/Plugin.php / class Plugin — the Craft starter defaults to that, but every plugin's main class would then be Plugin, distinguished only by namespace alias (ambiguous in multi-plugin source trees, grep-unfriendly).
  • composer.json extra.class must point to the renamed FQN (e.g. "class": "vendor\\handle\\Handle"). Update it whenever the entry class is renamed.
  • Always use ddev craft make <type> --with-docblocks to scaffold new components. Never manually create boilerplate that the generator handles.
  • After scaffolding, customize: add section headers, @author {{authorName}}, @since version, @throws chains, and project naming conventions.
  • Available generators: element-type, service, controller, command, queue-job, model, record, field-type, validator, widget-type, utility, asset-bundle, behavior, twig-extension, element-action, element-condition-rule, element-exporter, gql-directive.
  • Plugins with 2+ services use src/services/ServicesTrait.php. Each typed accessor (getX(): X) narrows Yii's Component::get() return (signed ?object) with assert($component instanceof X) so PHPStan level 8 resolves the type. The trait owns the @property X $name tags on its class-level docblock — never duplicate them as @property-read on the main plugin class.
  • Event listeners, URL rule registration, and plugin lifecycle overrides (getSettingsResponse(), getReadOnlySettingsResponse(), createSettingsModel()) belong in src/base/PluginTrait.php — never inline in the main plugin class.
  • The main plugin class stays a thin shell: property declarations, use ServicesTrait; use PluginTrait;, and an init() that calls parent::init(), sets self::$plugin, registers the namespace alias, and invokes the private _register* methods on the trait. Its class-level docblock describes what the plugin does — never an enumeration of services it registers (the trait owns that map).

Source: SKILL.md on GitHub

1 warning16d3 checks · Risk SAFE
  • Gen Agent Trust Hub16d

    The skill automates Craft CMS project setup by scaffolding configuration and pre-approving developer commands to improve agent efficiency. While functional, the broad permission grants and the audit workflow for external repositories introduce surfaces for unauthorized command execution and indirect prompt injection.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: MEDIUM · 1 issue

Signed by skilld at 64a3c26. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 weeks ago.

Activeupdated 2 weeks ago

README badge

README badge for michtio/craftcms-claude-skills/craft-project-setup