diff --git a/.all-contributorsrc b/.all-contributorsrc index b3b45bf572c..59c89b44b72 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -14240,6 +14240,52 @@ "contributions": [ "maintenance" ] + }, + { + "login": "kafeelraza", + "name": "kafeelraza", + "avatar_url": "https://avatars.githubusercontent.com/u/193384171?v=4", + "profile": "https://github.com/kafeelraza", + "contributions": [ + "code", + "tool" + ] + }, + { + "login": "akegaviar", + "name": "Ake", + "avatar_url": "https://avatars.githubusercontent.com/u/10195782?v=4", + "profile": "https://ake.gg", + "contributions": [ + "tool" + ] + }, + { + "login": "escottalexander", + "name": "Elliott Alexander", + "avatar_url": "https://avatars.githubusercontent.com/u/22101475?v=4", + "profile": "https://github.com/escottalexander", + "contributions": [ + "tutorial" + ] + }, + { + "login": "Emgevorgyan", + "name": "Emgevorgyan", + "avatar_url": "https://avatars.githubusercontent.com/u/26285829?v=4", + "profile": "https://github.com/Emgevorgyan", + "contributions": [ + "tool" + ] + }, + { + "login": "ricardo-jtg", + "name": "Ricardo Gonçalves", + "avatar_url": "https://avatars.githubusercontent.com/u/35004742?v=4", + "profile": "https://github.com/ricardo-jtg", + "contributions": [ + "tool" + ] } ], "contributorsPerLine": 7, diff --git a/.claude/commands/review-release.md b/.claude/commands/review-release.md index 47474b18641..2dc67dcd825 100644 --- a/.claude/commands/review-release.md +++ b/.claude/commands/review-release.md @@ -1,20 +1,23 @@ --- description: Review a release/deploy PR by checking key changes on staging with a browser -allowed-tools: Bash, Read, Glob, Grep, Agent, Skill, AskUserQuestion -argument-hints: [ (auto-detects latest deploy PR)] +allowed-tools: Bash, Read, Glob, Grep, Agent, Skill +argument-hints: [] [--post-comment] --- # Review Release Review a release/deploy PR by fetching its description, identifying the most important changes, and verifying them on the staging deploy using the browser. -## Arguments +This command NEVER approves or requests changes on the PR. By default it only prints the summary in the terminal. Pass `--post-comment` to additionally post the summary as a comment on the PR (informational, not a review). -`$ARGUMENTS` may contain the PR number to review. If empty, auto-detect the latest deploy PR: +## Arguments -```bash -gh pr list -B master -H staging -s open -S "Deploy" --json number -q ".[0].number" -L 1 -``` +`$ARGUMENTS` may contain: +- A PR number to review. If omitted, auto-detect the latest deploy PR: + ```bash + gh pr list -B master -H staging -s open -S "Deploy" --json number -q ".[0].number" -L 1 + ``` +- `--post-comment` flag. If present, after producing the summary, post it as a PR comment via `gh pr comment`. Without this flag, the summary is only printed to the terminal. ## Workflow @@ -57,24 +60,26 @@ Present a summary table with: |------|--------|-------| | Page name | Pass/Fail | What was checked and confirmed | -Flag any issues found. If everything looks good, confirm the deploy is ready to ship. +Flag any issues found. If everything looks good, note that the deploy looks ready to ship. -### Step 5: Submit Review +### Step 5: Optionally Post as PR Comment -After presenting results, ask the user if they want to submit a review on the PR. Offer two options: +If `--post-comment` was passed in `$ARGUMENTS`, post the summary table as a PR comment: -1. **Approve** — if all checks passed -2. **Request changes** — if issues were found +```bash +gh pr comment --repo ethereum/ethereum-org-website --body "$(cat <<'EOF' +## /review-release summary -Ask the user which action to take (or skip). If they choose to submit, post the summary table as the review body using: + -```bash -gh pr review --repo ethereum/ethereum-org-website --approve --body "..." -# or -gh pr review --repo ethereum/ethereum-org-website --request-changes --body "..." +_Informational only — this is not a PR review. Approval and merge remain manual._ +EOF +)" ``` -Do NOT submit a review without explicit user confirmation. +If `--post-comment` is NOT present, do nothing further — the terminal output is the only artifact. + +This command must NEVER call `gh pr review --approve` or `gh pr review --request-changes`. Approval and merge stay with humans. ## Tips diff --git a/.claude/skills/design-system/SKILL.md b/.claude/skills/design-system/SKILL.md index 857db5c84f0..d394eab3d2e 100644 --- a/.claude/skills/design-system/SKILL.md +++ b/.claude/skills/design-system/SKILL.md @@ -32,6 +32,7 @@ When the existing primitive doesn't quite fit, the answer is usually "add a vari 8. **`useRtlFlip()` for directional icons** (right-pointing arrows/chevrons). Or use `ChevronNext`/`ChevronPrev` from `@/components/Chevron`. 9. **Markdown content goes through `MdComponents`.** The legacy `@/components/Card` (default export) is reserved for markdown shortcodes -- never import it from app code; use `@/components/ui/card`. 10. **Storybook stories ship with new UI components.** No automated unit tests; Storybook + Chromatic + types are the verification layer. +11. **Don't add new layouts.** There are six canonical layouts (`TopicLayout`, `StaticLayout`, `DocsLayout`, `TutorialLayout`, `ContentLayout`, `BaseLayout`). New sectioned content goes in `src/data/topics/.ts` as a `TopicLayout` config -- not a new layout component. See `references/layouts.md`. ## Highest-Value Gotchas (read these now) @@ -80,7 +81,7 @@ Don't add more. Use `numberFormat()`. | Anchor (CTA with arrow) | `import { LinkWithArrow } from "@/components/ui/Link"` | | Page hero | `import { ContentHero, SimpleHero, HubHero, MdxHero } from "@/components/Hero"` | | Inline alert | `import { Alert, AlertContent, AlertDescription } from "@/components/ui/alert"` | -| Top-of-page banner | `import BannerNotification from "@/components/Banners/BannerNotification"` | +| Top-of-page banner | `import { Alert } from "@/components/ui/alert"` then `` | | Big numeric display | `import BigNumber from "@/components/BigNumber"` | | Layout | `import { Stack, HStack, VStack, Flex, Center } from "@/components/ui/flex"` | | Number formatting | `import { numberFormat } from "@/lib/utils/numbers"` | @@ -105,6 +106,7 @@ Pull these in only when the trigger applies. Don't read them all upfront. - **`references/a11y.md`** -- Load when adding interactive elements (modals, dropdowns, custom click targets), building forms, or working with images and headings. - **`references/card-walkthrough.md`** -- Load when starting any card-shaped UI work; an end-to-end worked example. - **`references/page-hero-walkthrough.md`** -- Load when starting a new page that needs a hero; an end-to-end worked example. +- **`references/layouts.md`** -- Load when you're tempted to create a new layout, when adding a new topic-hub section, or when refactoring a one-off `src/layouts/md/
Layout` file. The canonical inventory plus the rule that new layouts are very rare. - **`references/new-component-checklist.md`** -- Load before opening a PR for a new component. The pre-merge checklist. ## Other Project Skills That May Apply diff --git a/.claude/skills/design-system/references/a11y.md b/.claude/skills/design-system/references/a11y.md index 30e396be163..264fcaa04ff 100644 --- a/.claude/skills/design-system/references/a11y.md +++ b/.claude/skills/design-system/references/a11y.md @@ -33,7 +33,11 @@ Without it, screen readers announce nothing meaningful for the button. ### `