drupal

DDEV Blog: Contributor Training: Using Claude Code for a DDEV PR

Image removed.

Here's our August 21, 2025 Contributor Training on using Claude Code AI for a DDEV PR:

Big Picture

  • The most amazing thing about Claude Code as an agent is that it can do things and respond to them, on your machine, and using the internet, with your permission. That puts it way ahead of any other AI I've used. It can run tests and respond to the results (and fix things). It can create a commit or a PR.
  • Used with respect, AI can be really powerful, a whole new level of abstraction in software development, maybe a bit like having an IDE when you were previously using just a line editor.
  • AI excels at repetitive tasks, but only you have judgment. It's phenomenal at repeating patterns that it's been trained on, and often good at imitating patterns that you point out to it.
  • It's a pretty good collaborator for those of us who work mostly alone.
  • When I don't have the energy to approach a problem from scratch, sometimes just explaining it to Claude Code and asking for a plan gets me started. I've taken on quite a number of DDEV bugs/features this way and got to them instead of procrastinating another year or two.

Guardrails

  • Your code is your code. Build it with guardrails that will help keep it under control. Tests and static analysis are great guardrails. (DDEV has hundreds of automated tests and make staticrequired for static analysis.)
  • Control, read, and manually test the code yourself.
  • Consider getting a different AI to do a review.
  • Always try to get another human to do a review.
  • AI is fantastic at creating new tests, but don't let it touch the existing tests.

Structure and Strategy

  • For complex initiatives, explain the entire goal in detail to Claude and then get it to write a PRD, then commit the PRD into the repository. That way you'll have a high-quality set of context to use.
  • Put all your general directives in a CLAUDE.md file like DDEV's CLAUDE.md. Their docs claim that directives like this will be used properly to guide Claude's behavior, and it does help, but Claude does not seem to be strictly obedient and I often have to remind it of basic DDEV precepts.
  • TaskMaster AI is a pretty good structural tool. You can give it a PRD and have it create a task list, then Claude can use it to navigate that task list. This would have been a great tool long before AI, but I rarely used that much structure in my coding before using this tool and AI.
  • Every time you accomplish a bit of something, make a commit or have Claude make a commit. That way you can roll it back, or review just one item. (This works for you as a human also.) Thanks @shaal.

Capabilities

  • I was amazed to find that Claude could create an issue or PR for me, and certainly do commits. It can also comment on an issue or PR. I don't let it do those things without permission. (It seems to know how to use the gh utility to do these things; you need to have that installed and configured.)
  • I have definitely learned some things from Claude. It has used the Go t.Run() much more effectively for clearer subtests than I had ever done before. And it seems to use a bit more modern Go in general, so that's a plus.

Problems

  • The current billing situation for Claude is confusing. It's based on the number of tokens you're using, but it doesn't give you feedback until you've almost used it all up. Then (on the $20/month plan) you're not able to use it for a number of hours, which seems to be arbitrary. You can spend more for a higher monthly plan, and you can also pay-as-you-go for tokens. I haven't done either of those. Clear context (/clear) at key points to limit the amount of context you're carrying forward and limit the number of tokens you're using.
  • Claude can get stuck and go in circles, like other AI. Clear context to try to get around that. Have an overall plan to get around it.
  • I'm annoyed by how verbose and flowery the commit/issue/PR language is sometimes, but have tried to calm it down using directives in the CLAUDE.md file, but without success. It also is complimenting me all the time and always agreeing with what I say. I haven't been able to calm that down either.
  • I find that the amount of code I can create quickly for a significant feature is amazing. But then I have to understand it. And since I didn't create it at the micro level, it can be exhausting to work with.

Demonstration

In this demonstration (see screencast) we asked Claude to work on this issue about ddev launch and we asked it to create a PR for us. It generated this PR to resolve the problem. It was a trivial issue with a trivial solution, but the path to create it was similar to the path for a more complex situation.

Responsible AI Usage and Disclosure

This isn't an adequate place to discuss responsible AI, but:

  • Acknowledge the use of AI. Claude is happy to add a tag onto every commit or comment.
  • Take responsibility for what you build.

Resources

Conclusions

Yes, AI can make us really lazy. And it can make us stupid. Those valid concerns were also leveled against the calculator and the computer, of course. People thought that using the C language instead of assembler was giving up control. It was. We have to learn how to use this technology, use it right, and grow with it.

Build guardrails. Pay attention. Know what your code does. Enjoy the ride!

Contributions welcome!

Your suggestions to improve this blog are welcome. You can do a PR to this blog adding your techniques. Info and a training session on how to do a PR to anything in ddev.com is at DDEV Website For Contributors.

Join us for the next DDEV Live Contributor Training.

Edited with assistance from Claude Code and Codex; banner image generated by Claude.

DDEV Blog: Tailscale for DDEV: Simple and Secure Project Sharing

Image removed.

I've found that DDEV's ddev share command is a great way to quickly share my local development environment. However, since it uses ngrok, it generates a new, random URL every time unless you use a stable domain. As an alternative, I've created the ddev-tailscale-router add-on.

This add-on uses Tailscale, a VPN service that creates a private and secure network between your devices. It is free for personal use!

As a result, you get a stable, human-readable URL for each of your DDEV projects, which you can access from any device on your Tailscale network.

I've found this approach to be particularly useful for:

  • Cross-device testing: I can easily test my sites on my phone or tablet without being on the same Wi-Fi network.
  • Stable webhook URLs: I can use the permanent Tailscale URL as a reliable endpoint for webhooks, such as those from payment gateways.
  • Team collaboration: I can share my development environment with team members so they can see my work in progress.

How it Works

The ddev-tailscale-router add-on works by running a Tailscale container alongside your DDEV project. This container automatically connects to your Tailscale network and securely proxies requests to your project's web container.

Prerequisites

Before installing the add-on, you need to set up Tailscale:

  1. Install Tailscale on at least two devices (phone, tablet, or computer) by following the installation guide. This is required to generate an auth key.
  2. Enable HTTPS by following the Tailscale HTTPS documentation. This is required for TLS certificate generation.
  3. Generate an auth key by following the Tailscale auth keys documentation. Ephemeral, reusable keys are recommended.

Installation

To get started, follow these steps:

  1. First, set up your auth key (recommended approach): Add the auth key to your shell environment:

    echo 'export TS_AUTHKEY=tskey-auth-your-key-here' >> ~/.bashrc source ~/.bashrc

    Replace ~/.bashrc with ~/.zshrc if you use Zsh, or your relevant shell configuration file.

    Alternatively, you can set it per project (NOT RECOMMENDED, because .ddev/.env.tailscale-router is not intended to store secrets):

    ddev dotenv set .ddev/.env.tailscale-router --ts-authkey=tskey-auth-your-key-here
  2. Next, install the add-on:

    ddev add-on get atj4me/ddev-tailscale-router
  3. Finally, restart DDEV:

    ddev restart

Using Your Tailscale URL

Once installation is complete, you can access your project using these commands:

Launch your project's Tailscale URL in browser:

ddev tailscale launch

Get your project's Tailscale URL:

ddev tailscale url

Your project's permanent Tailscale URL will look like: https://<project-name>.<your-tailnet>.ts.net. You can also find it in your Tailscale admin console.

Public vs. Private Mode

The add-on offers two modes for sharing your project:

  • Private (default): Your project is only accessible to devices on your Tailscale network.
  • Public: Your project is accessible to anyone on the internet.

To switch between modes:

Switch to public mode (accessible to anyone on the internet):

ddev dotenv set .ddev/.env.tailscale-router --ts-privacy=public ddev restart

Switch back to private mode (default):

ddev dotenv set .ddev/.env.tailscale-router --ts-privacy=private ddev restart

Note: For public access, you need to configure your Access Control List (ACL) to enable Funnel. See the Tailscale Funnel documentation for details on setting up the required ACL policy.

I hope this add-on helps streamline your development workflow! If you run into any issues or have suggestions for improvements, feel free to open an issue on the GitHub repository.

Additional Resources

Here are some additional resources that you might find helpful:

This blog post was written with the assistance of Amazon Q and Google Gemini. I used them to help simplify the language, improve the flow, and proofread the text.

UI Suite Initiative website: UI Suite Monthly #23 - Wrapping Up a Milestone Year and Building Toward UI Suite 2.0

Overall SummaryOur final monthly meeting of 2024 marked the end of what can only be described as a transformative year for the UI Suite initiative. We've reached significant milestones across all five modules that comprise our complete design system implementation for Drupal, with UI Patterns 2.0 approaching its stable release and the entire ecosystem evolving toward a more mature, component-based architecture.

UI Suite Initiative website: UI Suite Monthly #30 - Display Builder "Star of the Show" with live demo (starting at 3:13)

Overall SummaryOur September monthly meeting marked a pivotal moment for the UI Suite Initiative, with Display Builder reaching its final alpha release (Alpha 5) and preparing to transition into the beta phase. The community-driven project, now supported by 11+ contributors from different agencies, showcased significant progress toward making Drupal the first design system native CMS.

UI Suite Initiative website: UI Suite Monthly #18 - Major Reorganization and UI Patterns 2 Reaches 80% Completion

Overall SummaryOur June monthly meeting brought exciting transformational news for the UI Suite ecosystem. We're implementing a major reorganization strategy that will introduce a meta package while maintaining all existing modules as separate, optional components. This change aims to provide both flexibility for individual module users and convenience for those wanting the complete UI Suite experience through a single installation command.

UI Suite Initiative website: UI Suite Monthly #27 - From Components to Core Integration

Overall SummaryOur May 2025 UI Suite community meeting brought together 20 passionate developers and contributors to discuss the exciting progress we're making toward transforming Drupal into the first design system native CMS. We celebrated significant milestones, including Pierre's promotion to provisional front-end framework manager, and showcased groundbreaking work on form API integration with Single Directory Components (SDC). The meeting highlighted our ambitious two-year roadmap and demonstrated how we're revolutionizing the way developers build and manage design systems in Drupal.With major releases on the horizon and innovative features like component-driven form elements becoming reality, we're witnessing a pivotal moment in Drupal's evolution. Our community continues to grow, and the momentum behind our initiatives shows no signs of slowing down.

UI Suite Initiative website: UI Suite Monthly #26 - Building the Future of Drupal Design Systems

Overall SummaryOur latest monthly meeting showcased the incredible momentum we're building across the UI Suite ecosystem. With 18-20 participants from both sides of the Atlantic, we celebrated Jean's promotion to core maintainer for SDC and Icon APIs while diving deep into groundbreaking developments that are reshaping how we approach design systems in Drupal.The session highlighted two years and a half of consistent progress, featuring live demonstrations of revolutionary tools like UI Patterns UI for simplified component management, UI Patterns Field for content entity integration, and our ambitious new Display Builder that promises to transform how we create layouts. From experimental form API integrations to major theme releases reaching beta status, we're seeing our vision of a unified design system approach becoming reality.

UI Suite Initiative website: UI Suite Monthly #24 - Design System Revolution Takes Shape in Drupal

Overall SummaryWe're thrilled to share the exciting developments from our latest UI Suite monthly meeting, where we celebrated major milestones and outlined our ambitious roadmap ahead. After eight years of dedicated work and five years since UI Suite 1, we're finally witnessing UI Suite 2 taking concrete shape with the imminent release of UI Patterns 2.0.0 stable.

UI Suite Initiative website: UI Suite Monthly #20 - Two Years of Progress and Major Milestone Releases

Overall SummaryOur 20th monthly meeting marked a significant milestone for the UI Suite Initiative - celebrating two full years of consistent community engagement and progress. This meeting showcased substantial achievements across our entire ecosystem, with major releases and exciting new developments that demonstrate our maturation as a comprehensive design system solution for Drupal.