Skip to main content

Contributing

Contributions to Eddy are welcome, whether it's a bug report, a fix or a better sentence in these docs. Report bugs and suggest changes in the issue queue, and send code and docs changes as pull requests against main.

This section covers working on the template itself. To work on an extension created from Eddy, see Development.

What lives where​

The repository is a working Drupal extension, the demo extension in the project root, plus the tooling that turns it into a reusable template:

  • install.php - the one-off interactive installer that renames, rewrites and prunes the template files for a new project, then deletes itself.
  • scripts/eddy-tooling - installs the drevops/eddy-tooling package, whose commands build, provision and deploy the extension, into vendor/. Generated projects get the package from Packagist; this repository installs .eddy/tooling as a symlink, so an edit there applies to the next command without a release.
  • .eddy/ - everything used to develop and test the scaffold itself, including the source of the tooling package. It's removed from generated projects.
  • .claude/skills/ - the Claude Code skills used to maintain the scaffold, such as create-eddy-tooling-release-notes. install.php removes them from generated projects by name, as listed in eddy_skills(), so add a new skill there too.

Inside .eddy/:

  • .eddy/assets/ - the animated demos that these docs and the README embed, with the generator that records them, and the social preview card.
  • .eddy/docs/ - the source of these docs (see Documentation).
  • .eddy/tests/ - the PHPUnit suite that validates the scaffold (see Scaffold tests).
  • .eddy/tooling/ - the source of the drevops/eddy-tooling package (see Tooling releases).
  • .eddy/skills/ - the update-consumer-eddy skill that generated projects fetch to update themselves.

README.md, CONTRIBUTING.md, MIGRATION.md, SECURITY.md and LICENSE.txt belong to Eddy too. A generated project gets its own README.md and CONTRIBUTING.md, rendered from README.dist.md and CONTRIBUTING.dist.md, so keep consumer-facing notes in those templates.

Building and testing the demo extension​

The scaffold builds and tests itself exactly like a generated project, so the Development commands apply here too:

ahoy build # or: make build
ahoy lint # or: make lint
ahoy test # or: make test

The maintenance reference​

.eddy/CLAUDE.md is the full maintenance reference, written for AI agents and humans alike. It covers what these pages don't:

  • the marker blocks that install.php prunes the template with, and the rules a block must follow;
  • the text that install.php renders from the answers;
  • the steps for adding a Drupal major or a development tool;
  • how install.php picks the workflow branches, the GitHub repository and the template version;
  • how to regenerate the animated demos and the social preview card.

In this section​