My method for external integrations: Claude Code web, no IDE or local dev

Hello everyone,

Following @pierre-gilles’ remark, many people still haven’t seen just how much Claude simplifies development. Here’s how I handle my external integrations and how I fix your bugs, often within the same day :wrench:

A small but important detail: I’m not a developer by trade. If I can do it, so can you :wink:


What I don’t need

None of the usual tools a developer uses—I don’t use any of them:

  • No local development
  • No IDE
  • No Node or Docker to install on my machine
  • No manual commits

This is exactly what @pierre-gilles pointed out: many developers still work this way, even though it’s no longer necessary.

What I do instead

  • I describe the need in simple French
  • Claude Code web handles everything else on the GitHub repository: the code, the pull request, the merge, and the release
  • It also prepares the response to post on the forum
  • I follow up on feedback and test when I have the device

It works just as well from my phone, and I can launch multiple fixes at the same time.


Common foundations for my 24 repositories

  • Manifest verification for each pull request, with the same checks as the store
  • Automatic tests on Node 22 and 24, lint, and formatting
  • Docker image build
  • Dependabot for updates
  • A GitHub Release per version, with its changelog
  • Documentation in French and English

Result: an error is caught before it reaches the store.


How I start an integration

While waiting for the next SDK, I give this message to Claude Code web, on an empty GitHub repository:

In this repo, on the main branch, I want you to create an external integration "Dyson".
Start from the official integration template: https://github.com/GladysAssistant/integration-template-js
Don't forget SECURITY.md, CHANGELOG.md, and CLAUDE.md
Don't forget the cloud and/or local tag
Set up the same workflows as https://github.com/prohand/gladys-devmel
Don't forget the widgets, triggers, and scene actions

Why each line:

  • The official template: the expected structure for Gladys is respected from the start
  • SECURITY.md: explains how to report a vulnerability
  • CHANGELOG.md: keeps track of each version
  • CLAUDE.md: the project rules for Claude, reviewed at each new session
  • Cloud/local tag: indicates in the store whether the integration needs the internet
  • gladys-devmel workflows: tests, store checks, Docker image, and releases, already set up
  • Widgets, triggers, scenes: otherwise, Claude often limits itself to devices

Just replace « Dyson » with your integration.


A bug, from A to Z (real example with Dyson)

1. You post feedback

@mutmut tested the Dyson integration and posted detailed feedback with screenshots:

2. I give the message to Claude Code web

I paste the link to the forum message on the correct repository and ask it to handle everything: the fix, the pull request, the merge, and the release.

Claude reads the feedback, finds the cause in the code, fixes it, adds tests, updates the documentation, and the changelog.

3. Claude opens a pull request

Each forum feedback becomes a pull request. The title indicates which message it responds to.

In the pull request, Claude explains what was fixed, what changed, and what was added. It also indicates what couldn’t be tested on a real device.

For example, we can see that it found why the PM values were different from Matter: the integration was reading the wrong series of measurements from the Dyson.

4. Automatic checks pass

Tests, lint, store checks, Docker image: everything is verified on the pull request, then after the merge.

These checks are what allow me to let Claude go all the way on its own.

5. Claude merges and publishes the version

It merges the pull request and launches the release: the GitHub Release, its changelog, and the Docker image are published. The new version arrives in the store.

6. Claude prepares the forum response

I ask it for a response for the forum, and I just have to paste it. It explains what was fixed, why, and what to do after the update.

All my responses on the Dyson topic were made this way.


The result on Dyson

  • 1.0.0 on the evening of October 10, 1.4.0 on the evening of the 11th
  • 5 pull requests, one per feedback from @mutmut
  • Fixed along the way: missing « Update » button, incorrect PM values, ignored local IP, delayed widget, names in English…
  • And I don’t have a Dyson at home :sweat_smile:

The limits

  • Claude can make mistakes: hence the automatic checks… and your tests
  • Without the device, I rely on what it sends: your feedback is invaluable
  • Some issues come from the core of Gladys. In this case, I propose a fix to Gladys (e.g., PR #3188 for tile colors)

How to get started (developer or not)

  • Create an empty GitHub repository, open Claude Code web, and link your GitHub account
  • Give it the starting message above, with the name of your integration
  • Start small: a simple integration, then a bug, a translation, a test
  • Set up automatic checks before letting Claude merge on its own: it’s your safety net
  • At first, review the pull requests to understand what Claude does

How to help (testers)

  • One topic per integration on the forum, or a GitHub issue
  • Specify: model, integration version, local or cloud
  • Add screenshots and logs, without email, IP, or serial number

The more precise your feedback, the faster the fix. Thanks to all the testers, and especially to @mutmut :folded_hands:

So awesome, thanks for sharing!! :smiley:

It’s very well explained! Thanks @prohand

For my part, I’m even lazier… and I ask Claude to do more things for me.
In this context, I use Claude on a mini-PC at home (the same one where I have Frigate managing my cameras).

The advantage of using it on this mini-PC compared to cloud sessions is that it has access to much more.
So I gave it access to my forum account, which means on my side:

  • it reads all the messages in the threads of my external integrations every day
  • if there are new messages, it analyzes them, codes the corrections if necessary, publishes a release, and once all the tests are green, it posts a message on the forum to inform you.

Similarly, I gave it access to my GitHub repo so it can create what it needs on its own.
So if I ask Claude: « create an Acid Rain Vigilance integration, » it will go check that no one has announced they’ll handle it on the forum, retrieve everything it needs, create the integration, and write a topic on the forum… Without me.

Total laziness :wink:

@guim31 You can do all that in Cloud sessions too!

I didn’t think so (or do you need to allow domains for it?).
Anyway, I use that one a lot on my mini-PC because it can manage all my home devices :wink:

Yes, you need to allow all domains. That’s vital even for development, otherwise it can’t access documentation, etc…

I’ve set it by default in the Gladys Assistant Anthropic org :slight_smile:

You can check here:

Thanks for sharing! Great idea

@pierre-gilles I just had a “crazy” idea that could be the next step: creating the “Lovable” for Gladys :grinning_face_with_smiling_eyes: (like, studio.gladysassistant.com). A regular user can’t find their integration in the store? They describe their need, the tool helps them create, test, and publish it, without a GitHub account or Claude.
With a “plan” mode to help them refine their idea before starting the creation.

We could explore a Claude seat through the startup program, if conditions allow, with rate limiting of course. The idea: make integration creation accessible directly from Gladys to anyone!

EDIT: or reserved for Gladys Plus users

Thanks for sharing your method @prohand. Does this require a paid Claude account, or can it also work with a simple free account? It would probably have a token limit that makes it slower, but I’m not in a hurry for the extension idea I have…

Yes, you need a paid Claude account to use Claude Code
At first, I used the Pro version at €20/month
Now I use a Team Premium seat thanks to @pierre-gilles who was able to get one thanks to a Claude offer

@prohand: Great explanation, that’s what I was missing. I come from a different world. For the past few years, I’ve been sitting at my desk, soldering ESP32 chips, painstakingly teaching them Matter over Thread, and then using them myself. (What nonsense we do when the fleas are biting :slight_smile:

So I’ve made a decision: I’ll give it a try, because it can’t be that we get the transit schedules of every major Canadian city, but can’t even get a train from Frankfurt to Hamburg :wink:

In other words: I’m starting an attempt to take care of something for the German-speaking region, so in reference to the Canadian transit operators, the same for Germany, Switzerland, and Austria.

I also miss the German Weather Service and the Federal Environment Agency, which provide detailed (sometimes down to the municipal level) information on air pollution and pollen. I would also get involved here for Germany, Switzerland, and Austria.

But everything very small at the beginning and I’ve noticed that in case of problems, the entire community here helps out.

Until my first attempt,

Greetings,

Tom

Yes, no problem, go ahead and if you need help, there will always be someone to assist you.

And if you have integration ideas you want, just put the name and someone can take care of it too. We have 2 people, @prohand and @guim31, who are going too fast, we can’t keep up with them.

Hello Tom,

If I ever have an integration for Swiss public transport that should arrive today :wink: It’s already ready.

A+