Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
c528efb
Let Stop end a running npm install (#274)
juanmaguitar Aug 12, 2026
b9b1399
Rank the "Latest" pill by the newest commit, not the newest touch (#285)
juanmaguitar Aug 12, 2026
8f36065
Discard all changes rewinds the ticket to its base (#288)
juanmaguitar Aug 12, 2026
f63b559
Run the initial setup steps as one chain (#246) (#276)
juanmaguitar Aug 12, 2026
a6f9ec5
Say how much of a patch failed, why, and what to do next when it will…
juanmaguitar Aug 12, 2026
5187797
Show a linked ticket's own facts, read off the page the app already o…
juanmaguitar Aug 12, 2026
2ab4b37
Replace the manual install list with a platform-aware Download button…
juanmaguitar Aug 12, 2026
5e04637
Bring the guide back in line with the app before 1.0 (#297)
juanmaguitar Aug 12, 2026
eb750c9
Bump version to 1.0.0-rc.1 (#296)
juanmaguitar Aug 12, 2026
86d361e
Retake the docs screenshots for the 1.0 UI (#298) (#310)
juanmaguitar Aug 12, 2026
fe9b915
Move Open Adminer onto the same line as the site links (#268)
amitraj2203 Aug 13, 2026
f284c5a
Bump the Trac scrape generation before the auto-read fires, not after…
juanmaguitar Aug 13, 2026
bc52d01
Measure the patch conflict warning against the ticket's base, not its…
juanmaguitar Aug 13, 2026
c66e899
Keep an empty file in the patch when it is added or deleted (#315)
juanmaguitar Aug 13, 2026
40f6dee
Read Git empty-file patch sections (#322)
juanmaguitar Aug 13, 2026
37741ef
Name the contributor's own work when a patch fails in a file they edi…
juanmaguitar Aug 13, 2026
116e49a
Say when a ticket's base is unknown instead of guessing at it (#317)
juanmaguitar Aug 13, 2026
eb8d2fc
Treat an applied patch as a named layer, not an undo blob (#318)
juanmaguitar Aug 13, 2026
d302c5f
Warn when trunk moved past a ticket base (#323)
juanmaguitar Aug 13, 2026
87b957e
Explain why discard is unavailable (#330)
juanmaguitar Aug 13, 2026
1a2d857
Clear resolved patch errors after discard (#331)
juanmaguitar Aug 13, 2026
ecb929f
Clarify Codex review instructions
juanmaguitar Aug 13, 2026
4454a14
Preserve requested issue closure outcomes
juanmaguitar Aug 13, 2026
1ea9206
Remove issue closure instruction
juanmaguitar Aug 13, 2026
6083917
Prevent submitting an applied patch as your own work (#332)
juanmaguitar Aug 13, 2026
25bf306
Verify final GitHub workflow states
juanmaguitar Aug 13, 2026
bf0eea9
Fix missing linked PRs and stalled Trac loads (#333)
juanmaguitar Aug 13, 2026
14f4610
Update the guide for current ticket work (#334)
juanmaguitar Aug 13, 2026
f3f0e96
Exclude coding-agent directories from generated patches (#36)
juanmaguitar Aug 13, 2026
f70c6b4
Bump version to 1.0.0-rc.2 (#335)
juanmaguitar Aug 13, 2026
2d70278
[Add] submission workflow screenshots to the guide (#336)
juanmaguitar Aug 13, 2026
8617df1
[Document] recovery states and captured mail (#337)
juanmaguitar Aug 13, 2026
88154a4
[Recommend] preparing sites before Contributor Day (#339)
juanmaguitar Aug 13, 2026
5df2e48
Remove test mode from pull request docs
juanmaguitar Aug 13, 2026
9f1a3f1
Fix line-ending compatibility without changing repository config (#342)
juanmaguitar Aug 14, 2026
a006f59
Bump version to 1.0.0 and point homepage at the docs site (#343)
juanmaguitar Aug 14, 2026
eb3acb3
Update the repository name in user-facing links and user agents (#344)
juanmaguitar Aug 14, 2026
659cb73
Describe what the toolkit does at 1.0 in the README (#346)
juanmaguitar Aug 14, 2026
87ab727
Add an end-to-end engine that drives the app against throwaway state …
juanmaguitar Aug 19, 2026
ade2f44
Cover ticket branches end to end, through the app (#363)
juanmaguitar Aug 19, 2026
094a1e6
Move the testing detail out of CONTRIBUTING.md into TESTING.md (#365)
juanmaguitar Aug 19, 2026
012f48a
Let a journey be watched, and say what its trace really holds (#368)
juanmaguitar Aug 19, 2026
ee9c134
Cover applying and reverting a patch, through the app (#369)
juanmaguitar Aug 19, 2026
317793a
Cover what survives closing the app (#370)
juanmaguitar Aug 19, 2026
855bfcc
Stop hard-wrapping prose in Markdown (#371)
juanmaguitar Aug 19, 2026
d9375cc
Say how to step through a journey by hand, and correct how (#376)
juanmaguitar Aug 20, 2026
c65a43c
Put every test under one tests/ directory (#377)
juanmaguitar Aug 20, 2026
fef37f4
Show the test layout in TESTING.md (#379)
juanmaguitar Aug 20, 2026
8b5baea
Delete a site even when Git marked it read-only, and say when it coul…
juanmaguitar Aug 20, 2026
a0fcbc9
Fix macOS signing key leakage in packaged apps (#390)
iangmaia Aug 20, 2026
c3e216e
Stop a build from spawning processes without bound (#275)
juanmaguitar Aug 11, 2026
c30d39f
Address the pre-PR review findings (#275)
juanmaguitar Aug 11, 2026
aac6d36
Point the rebased tests at the tests/unit layout
juanmaguitar Aug 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 8 additions & 25 deletions .agents/skills/self-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,39 +7,22 @@ description: Review the current branch against this repo's architecture, securit

Run the repo's review standard against the working branch, **before** the PR exists.

Nothing runs this in CI. It is the only review a change gets before a human reads it, which is why
it happens now rather than after: a finding fixed here costs one message, the same finding on the PR
costs a review cycle.
Nothing runs this in CI. It is the only review a change gets before a human reads it, which is why it happens now rather than after: a finding fixed here costs one message, the same finding on the PR costs a review cycle.

## Procedure

**Read [`.github/instructions/code-review.instructions.md`](../../../.github/instructions/code-review.instructions.md)
and follow it.** It is the specification for this task, not background reading — it carries the
procedure (establish the diff, run `npm run lint` and `npm test`, then the five dimensions) as well
as the invariants and the reporting bar. Do not restate it here; run it.
**Read [`.github/instructions/code-review.instructions.md`](../../../.github/instructions/code-review.instructions.md) and follow it.** It is the specification for this task, not background reading — it carries the procedure (establish the diff, run `npm run lint` and `npm test`, then the five dimensions) as well as the invariants and the reporting bar. Do not restate it here; run it.

That file is the single copy of the standard. It lives under `.github/instructions/` so Copilot code
review picks it up natively; every other agent, this one included, reaches it from here. Changes to
how reviews work go there, not into this wrapper.
That file is the single copy of the standard. It lives under `.github/instructions/` so Copilot code review picks it up natively; every other agent, this one included, reaches it from here. Changes to how reviews work go there, not into this wrapper.

Two things this skill adds on top, both agent-neutral — apply whichever your agent can:

**Run the judgement pass in a fresh context.** The diff and the deterministic layer
(`npm run lint`, `npm test`) run inline. The five dimensions should be reviewed by a context that
did not write the change — a subagent, or a separate pass given only the diff and the instructions
file. If the session that wrote the code also grades it, it reviews its own reasoning and finds it
sound.
**Run the judgement pass in a fresh context.** The diff and the deterministic layer (`npm run lint`, `npm test`) run inline. The five dimensions should be reviewed by a context that did not write the change — a subagent, or a separate pass given only the diff and the instructions file. If the session that wrote the code also grades it, it reviews its own reasoning and finds it sound.

**Report, don't apply.** Surface findings in the chat. No GitHub comments, no files written — the PR
does not exist yet. Then offer; the author decides what is a real finding.
**Report, don't apply.** Surface findings in the chat. No GitHub comments, no files written — the PR does not exist yet. Then offer; the author decides what is a real finding.

## Notes

- This is the same skill as [`.claude/skills/self-review/`](../../../.claude/skills/self-review/),
placed here because agents built on the Agent Skills open standard (Command Code and others)
discover skills under `.agents/skills/` rather than `.claude/skills/`. Both are thin wrappers over
the one instructions file — neither is a second copy of the standard.
- The repo-specific knowledge this adds over a generic review: Electron's bundled Node,
`isomorphic-git`, `electron-store`, loopback binding, the Windows spawn shims.
- If a finding reveals a rule the instructions file does not yet cover, say so. It is meant to
accumulate what the project learns.
- This is the same skill as [`.claude/skills/self-review/`](../../../.claude/skills/self-review/), placed here because agents built on the Agent Skills open standard (Command Code and others) discover skills under `.agents/skills/` rather than `.claude/skills/`. Both are thin wrappers over the one instructions file — neither is a second copy of the standard.
- The repo-specific knowledge this adds over a generic review: Electron's bundled Node, `isomorphic-git`, `electron-store`, loopback binding, the Windows spawn shims.
- If a finding reveals a rule the instructions file does not yet cover, say so. It is meant to accumulate what the project learns.
21 changes: 18 additions & 3 deletions .buildkite/commands/setup_macos_code_signing.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,23 @@ bundle exec fastlane setup_code_signing
echo "Expose signing config to electron-builder..."
# Export necessary env vars for `electron-builder` to find those for its `notarize` option
# See https://www.electron.build/mac#notarize
mkdir -p .codesigning/
echo "$APP_STORE_CONNECT_API_KEY_KEY" >.codesigning/apple_api_key
export APPLE_API_KEY=".codesigning/apple_api_key"
#
# The Buildkite step sources this script, so the shebang's `-eu` never applies. Return explicitly
# so callers without `errexit` still receive materialization failures instead of continuing.
MACOS_NOTARIZATION_TEMP_DIR="$(mktemp -d "${TMPDIR:-/tmp}/wordpress-contributor-toolkit-signing.XXXXXX")" || return 1
export APPLE_API_KEY="$MACOS_NOTARIZATION_TEMP_DIR/apple_api_key"

cleanup_macos_notarization_key() {
rm -rf "$MACOS_NOTARIZATION_TEMP_DIR"
}
trap cleanup_macos_notarization_key EXIT

# `printenv` keeps the key itself out of shell traces, while the private temporary directory and
# restrictive file mode keep it unavailable to other users on the build agent. Unlike `echo` under
# `set -u`, `printenv` exits quietly when the variable is missing — hence the explicit guard.
( umask 077; printenv APP_STORE_CONNECT_API_KEY_KEY >"$APPLE_API_KEY" ) || {
echo "APP_STORE_CONNECT_API_KEY_KEY is unset or could not be written to $APPLE_API_KEY" >&2
return 1
}
export APPLE_API_KEY_ID="$APP_STORE_CONNECT_API_KEY_KEY_ID"
export APPLE_API_ISSUER="$APP_STORE_CONNECT_API_KEY_ISSUER_ID"
29 changes: 7 additions & 22 deletions .claude/skills/self-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,36 +7,21 @@ description: Review the current branch against this repo's architecture, securit

Run the repo's review standard against the working branch, **before** the PR exists.

Nothing runs this in CI. It is the only automated pass a change gets before a human reads it, which
is why it happens now rather than after: a finding fixed here costs one message, the same finding on
the PR costs a review cycle.
Nothing runs this in CI. It is the only automated pass a change gets before a human reads it, which is why it happens now rather than after: a finding fixed here costs one message, the same finding on the PR costs a review cycle.

## Procedure

**Read `.github/instructions/code-review.instructions.md` and follow it.** It is the specification
for this task, not background reading — it carries the procedure (establish the diff, run
`npm run lint` and `npm test`, then the five dimensions) as well as the invariants and the
reporting bar. Do not restate it here; run it.
**Read `.github/instructions/code-review.instructions.md` and follow it.** It is the specification for this task, not background reading — it carries the procedure (establish the diff, run `npm run lint` and `npm test`, then the five dimensions) as well as the invariants and the reporting bar. Do not restate it here; run it.

That file sits under `.github/instructions/` so Copilot code review picks it up natively rather
than needing a condensed second copy. It is the only copy of the standard; changes to how reviews
work go there, not here.
That file sits under `.github/instructions/` so Copilot code review picks it up natively rather than needing a condensed second copy. It is the only copy of the standard; changes to how reviews work go there, not here.

Two things this skill adds on top:

**Dispatch the judgement pass to a subagent.** Steps 1-2 of the procedure — the diff and the
deterministic layer — run inline. Step 3, the five dimensions, goes to an `Explore` subagent given
the diff and the instructions file, and nothing else from this conversation. If the session that
wrote the code also reviews it, it reviews its own reasoning and finds it sound. Collect the
subagent's findings and report them.
**Dispatch the judgement pass to a subagent.** Steps 1-2 of the procedure — the diff and the deterministic layer — run inline. Step 3, the five dimensions, goes to an `Explore` subagent given the diff and the instructions file, and nothing else from this conversation. If the session that wrote the code also reviews it, it reviews its own reasoning and finds it sound. Collect the subagent's findings and report them.

**Report in the chat and stop there.** No GitHub comments, no files written — the PR does not exist
yet. Then offer; do not apply. The author decides what is a real finding.
**Report in the chat and stop there.** No GitHub comments, no files written — the PR does not exist yet. Then offer; do not apply. The author decides what is a real finding.

## Notes

- Complements the built-in `/code-review` and `/security-review`. What this adds is the
repo-specific knowledge: Electron's bundled Node, `isomorphic-git`, `electron-store`, loopback
binding, the Windows spawn shims.
- If a finding reveals a rule the instructions file does not yet cover, say so. It is meant to
accumulate what the project learns.
- Complements the built-in `/code-review` and `/security-review`. What this adds is the repo-specific knowledge: Electron's bundled Node, `isomorphic-git`, `electron-store`, loopback binding, the Windows spawn shims.
- If a finding reveals a rule the instructions file does not yet cover, say so. It is meant to accumulate what the project learns.
2 changes: 2 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,5 @@ indent_size = 2

[*.md]
trim_trailing_whitespace = false
# Prose is not wrapped here — one paragraph is one line. See AGENTS.md.
max_line_length = off
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/Bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ body:
id: existing
attributes:
label: Please confirm that you have searched existing issues in the repo.
description: You can do this by searching https://github.com/WordPress/experimental-wp-dev-env/issues
description: You can do this by searching https://github.com/WordPress/contributor-toolkit/issues
options:
- label: "Yes"
required: true
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/installation-bug.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ body:
attributes:
label: Where did you download the app from?
description: Please provide the exact URL or describe where you got it (e.g. GitHub Releases page, a blog post link, etc.).
placeholder: "e.g. https://github.com/WordPress/experimental-wp-dev-env/releases/tag/v1.0.0"
placeholder: "e.g. https://github.com/WordPress/contributor-toolkit/releases/tag/v1.0.0"
validations:
required: true

Expand Down
Loading
Loading