Repository navigation
feat(review): add read-only mode, ask before stopping other engines - #12
Merged
Merged
Conversation
## Short Summary (TL;DR) `/ddev:review` and `/ddev:ci-failure` now ask before they power off DDEV on other local engines, and `/ddev:review` gets a read-only mode. All three skills drop one maintainer's phrases and habits, because every DDEV maintainer uses them. ## The Issue Parts of the skills assume one maintainer's setup and voice: - `poweroff-others.sh` powered off DDEV on every other local engine and told the user afterwards. That can stop a project someone is working in. - Every `/ddev:review` built binaries and ran Docker, even when the user wanted only a read of the diff. - `/ddev:ci-failure` assumed the user's machine matches the CI runner. - The descriptions listed personal phrases, such as "happy now?", "good commit name?" and "let's fix it once and for all". `/ddev:review` used "happy" as its verdict, and the writing rules had personal style, such as no em dashes. ## How This PR Solves The Issue | Change | Behavior | | --- | --- | | `poweroff-others.sh` | Lists the engines that run DDEV. It powers them off only with `--poweroff`. | | `/ddev:review` and `/ddev:ci-failure` | List the engines before the lock, ask the user, then run `--poweroff` under the lock. The lock isn't held while the agent waits for an answer. | | `/ddev:review` modes | A new read-only mode runs steps 1 and 3 without builds or Docker, and says that nothing ran. | | `/ddev:review` verdict | "Ready to merge", "Not yet", or "Can't conclude yet". | | `/ddev:ci-failure` step 2 | Says when this machine doesn't match the failing job, and asks before it builds a replica environment. | | Descriptions | Keep only common requests, such as "commit", "review again" and "is it intermittent?". | | Writing rules | Drop the em dash rule and "read it aloud". The ASD-STE100 rules stay, because they are for readers who are not native English speakers. | ## Manual Testing Instructions Run this on a machine with two Docker contexts, such as Docker and Podman: ```bash git fetch origin pull/12/head git checkout FETCH_HEAD DOCKER_CONTEXT=<other context> ddev start # in any test project plugins/ddev/skills/review/poweroff-others.sh "$(docker context show)" # Expect "ddev is running on <other context>", with the project still running plugins/ddev/skills/review/poweroff-others.sh --poweroff "$(docker context show)" # Expect "powering off ddev on <other context>" ``` ## Automated Testing Overview Claude Code ran `shellcheck plugins/*/skills/*/*.sh` and `claude plugin validate .` on Linux, and both passed. It ran `poweroff-others.sh` without `--poweroff` on a machine with four contexts and no other engine running DDEV. It printed nothing and exited 0. Nobody ran `--poweroff` against a running project. Claude Code ran each phrase twice, headless, in a throwaway repository with a `github.com/ddev/` remote and in one with another remote: | Phrase | DDEV repository | Other repository | | --- | --- | --- | | "let's review last commit" | `ddev:review` 2 of 2 | none | | "review the last commit" | `ddev:review` 2 of 2 | none | | "happy now?" | none | none | | "just read the last commit diff quickly, any bugs?" | none | none | | "commit this" | `ddev:commit` 2 of 2 | none | | "reword the commit message" | `ddev:commit` 2 of 2 | none | | "this test fails, works locally but fails in CI" | `ddev:ci-failure` 2 of 2 | none | | "TestFoo fails in CI on <ddev/ddev run URL>, is it intermittent?" | `ddev:ci-failure` 2 of 2 | `ddev:ci-failure` 2 of 2, as its description allows for a DDEV run | Nobody checked in a session that the read-only mode skips the builds. 🤖 Developed with assistance from [Claude Code](https://claude.ai/code) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Short Summary (TL;DR)
/ddev:reviewand/ddev:ci-failurenow ask before they power off DDEV on other local engines, and/ddev:reviewgets a read-only mode. All three skills drop one maintainer's phrases and habits, because every DDEV maintainer uses them.The Issue
Parts of the skills assume one maintainer's setup and voice:
poweroff-others.shpowered off DDEV on every other local engine and told the user afterwards. That can stop a project someone is working in./ddev:reviewbuilt binaries and ran Docker, even when the user wanted only a read of the diff./ddev:ci-failureassumed the user's machine matches the CI runner./ddev:reviewused "happy" as its verdict, and the writing rules had personal style, such as no em dashes.How This PR Solves The Issue
poweroff-others.sh--poweroff./ddev:reviewand/ddev:ci-failure--poweroffunder the lock. The lock isn't held while the agent waits for an answer./ddev:reviewmodes/ddev:reviewverdict/ddev:ci-failurestep 2Manual Testing Instructions
Run this on a machine with two Docker contexts, such as Docker and Podman:
Automated Testing Overview
Claude Code ran
shellcheck plugins/*/skills/*/*.shandclaude plugin validate .on Linux, and both passed. It ranpoweroff-others.shwithout--poweroffon a machine with four contexts and no other engine running DDEV. It printed nothing and exited 0. Nobody ran--poweroffagainst a running project.Claude Code ran each phrase twice, headless, in a throwaway repository with a
github.com/ddev/remote and in one with another remote:ddev:review2 of 2ddev:review2 of 2ddev:commit2 of 2ddev:commit2 of 2ddev:ci-failure2 of 2ddev:ci-failure2 of 2ddev:ci-failure2 of 2, as its description allows for a DDEV runNobody checked in a session that the read-only mode skips the builds.
🤖 Developed with assistance from Claude Code