Skip to content

feat(skill): add modern-web-performance community skill (#868 Phase 1)#875

Merged
s977043 merged 1 commit into
mainfrom
feat/868-modern-web-performance-skill
May 22, 2026
Merged

feat(skill): add modern-web-performance community skill (#868 Phase 1)#875
s977043 merged 1 commit into
mainfrom
feat/868-modern-web-performance-skill

Conversation

@s977043

@s977043 s977043 commented May 22, 2026

Copy link
Copy Markdown
Owner

Summary

Second community skill from #868 Modern Web Guidance Phase 1, sibling to #873 modern-web-semantic. Covers the Core Web Vitals axis the first skill intentionally left out.

Scope (all Suggestions, severity: minor)

Vital / area Patterns surfaced
LCP hero <img> without fetchpriority / decoding, lazy-loading misuse above the fold, preconnect / preload chains, font-display
INP heavy work on click / input / scroll / resize / raf, missing passive listener, requestIdleCallback opportunities
CLS missing width / height / aspect-ratio, reserved space for async-injected UI, font swap reflow
Resource cost srcset / sizes / AVIF / WebP, dynamic import for large top-level imports

Guardrails

  • severity: minor, suggestion-tone — never enforces.
  • False-positive guards short-circuit suggestions when:
    • the image / asset already carries the relevant attribute,
    • the diff is type-only / rename / non-semantic,
    • .river/rules.md or README declares a performance policy that the skill should honor.
  • Outputs are starting points for profiling, never claim measured numbers.

Changes

File What
skills/midstream/community/rr-midstream-modern-web-performance-001/SKILL.md New skill (single file, community tier)
tests/fixtures/execution-plan-midstream.json Snapshot regenerated to include the new skill

Test plan

  • npm run skills:validate (new SKILL.md passes)
  • npm test (1082/1082 green, snapshot regenerated)
  • markdownlint + prettier green
  • CI green

Refs: #868. Follows #873 (semantic / Platform-Native sibling).

🤖 Generated with Claude Code

Second community skill from #868 Modern Web Guidance, sibling to the
modern-web-semantic skill landed in #873. Covers the Core Web Vitals
axis the first skill intentionally left out.

Scope (all Suggestions, severity: minor)
- LCP: hero image fetchpriority / decoding, lazy-loading misuse,
  preconnect / preload chains, font-display.
- INP: heavy work on click / input / scroll / resize / raf handlers,
  passive listeners, requestIdleCallback.
- CLS: width / height / aspect-ratio on img/iframe/video/placeholder,
  reserved space for async-injected UI, font swap reflow.
- Resource cost: srcset / sizes / modern image formats, dynamic import
  for large top-level imports.

Guardrails (per the skill's "False-positive guards")
- already-attributed images / preloaded fonts short-circuit
  suggestions.
- type-annotation / rename / non-semantic diffs are out of scope.
- explicit performance policy in .river/rules.md or README is honored
  to avoid noise.
- never claims measured numbers; outputs are suggestion-tone starting
  points for profiling / measurement.

Tests
- npm run skills:validate passes the new SKILL.md.
- tests/fixtures/execution-plan-midstream.json snapshot regenerated to
  include the new skill in the midstream plan.
- npm test: 1082/1082 green.

Refs: #868. Follows #873 (semantic / Platform-Native sibling).

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@vercel

vercel Bot commented May 22, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ai-review-kit Ready Ready Preview, Comment May 22, 2026 2:38am

@github-actions

Copy link
Copy Markdown
Contributor

River Reviewer

  • フェーズ: midstream
  • LLM: skipped (dry-run enabled)
  • Planner: off
  • Impact tags: none
  • 変更ファイル数: 1
  • トークン見積もり: 256

選択されたスキル (0)

  • none
スキップされたスキル (85)
  • adversarial-review: routing skill: not an executable review skill
  • river-reviewer-architecture: routing skill: not an executable review skill
  • river-reviewer-code: routing skill: not an executable review skill
  • river-reviewer-performance: routing skill: not an executable review skill
  • river-reviewer-security: routing skill: not an executable review skill
  • river-reviewer-testing: routing skill: not an executable review skill
  • river-reviewer: routing skill: not an executable review skill
  • rr-downstream-review-policy-standard-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-downstream-coverage-gap-001: phase mismatch: downstream !== midstream; applyTo did not match any changed file; missing inputContext: tests
  • rr-downstream-flaky-test-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-downstream-test-existence-001: phase mismatch: downstream !== midstream; applyTo did not match any changed file; missing inputContext: tests
  • rr-downstream-test-naming-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-downstream-test-plan-review-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-downstream-test-review-sample-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-a11y-accessible-name-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-modern-web-performance-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-modern-web-semantic-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-nextjs-app-router-boundary-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-review-policy-standard-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-agent-skill-bridge-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-api-compatibility-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-config-json-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-gh-address-comments-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-hello-skill-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-i18n-unused-key-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-loading-state-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-logging-observability-001: applyTo did not match any changed file
  • rr-midstream-logic-torturing-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-normalization-consistency-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-nullability-contract-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-review-automation-boundary-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-review-comment-triage-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-security-basic-001: applyTo did not match any changed file
  • rr-midstream-suppression-feedback-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-type-driven-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-typescript-nullcheck-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-typescript-strict-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-war-game-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-code-quality-sample-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-review-policy-standard-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-nextjs-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-php-laravel-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-react-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-remix-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-unit-python-pytest-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-unit-ts-jest-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-vue-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-adr-decision-quality-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-api-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-api-versioning-compat-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-boundaries-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-diagrams-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-risk-register-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-traceability-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-validation-plan-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-availability-architecture-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-bounded-context-language-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-cache-strategy-consistency-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-capacity-cost-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-change-communication-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-context-budget-tuning-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-create-plan-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-data-flow-state-ownership-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-data-model-db-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-dr-multiregion-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-eval-driven-skill-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-event-driven-semantics-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-external-dependencies-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-failure-modes-observability-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-integration-contracts-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-migration-rollout-rollback-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-multitenancy-isolation-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-openapi-contract-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-operability-slo-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-plangate-exec-conformance-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-plangate-gc-deterministic-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-plangate-plan-integrity-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-plangate-rule-promotion-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-plangate-verification-audit-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-pr-template-qa-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-pre-mortem-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-requirements-acceptance-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-security-privacy-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-trust-boundaries-authz-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-sample-001: dry-run: LLM必須スキル(ヒューリスティック未対応)

優先度サマリー

  • P1 (must fix before merge): 0 件

  • P2 (should fix or waive): 1 件

  • P3 (recommended improvement): 0 件

  • P4 (informational): 0 件

  • 抑制済み: 1 件 (主な理由: low_confidence(1))

スコア (参考値)

結果(スコア): 96/100
判定: human-review-recommended

内訳:

  • 可読性: 100/100
  • 拡張性: 100/100
  • パフォーマンス: 100/100
  • セキュリティ: 100/100
  • 保守性: 80/100

スコアは severity と axis から決定論的に算出された 参考値 (derived: true)。HITL レビューと併用してください。

指摘

  • skills/midstream/community/rr-midstream-modern-web-performance-001/SKILL.md:1
    • Finding: マッチするスキルがなく自動指摘を生成できなかった
    • Evidence: LLM: dry-run enabled
    • Impact: 重要なリスクを見落とす可能性がある
    • Fix: このファイル種別に対応するスキルを追加するか、手動レビューを実施する
    • Severity: warning
    • Confidence: low

1 件の指摘を抑制しました (主な理由: low_confidence(1))

@github-actions

Copy link
Copy Markdown
Contributor

PlanGate Review

  • decision: pass
  • plan status: skipped-by-label
  • exec status: skipped-by-label

PlanGate review decision: pass

severity count policy
critical 0 fail
major 0 fail-if-required / warn
minor 0 comment-only
info 0 skipped

ポリシー: critical=fail / major=fail-if-required (warn) / minor=comment-only / info=skipped — spec: pages/reference/cli-review-plan-spec.md

@s977043 s977043 merged commit 9e2a24c into main May 22, 2026
17 checks passed
@s977043 s977043 deleted the feat/868-modern-web-performance-skill branch May 22, 2026 02:42
s977043 added a commit that referenced this pull request May 22, 2026
…low-up) (#879)

* docs(readme): add roadmap status column (codex review follow-up)

Multi-perspective session review (Codex 86, Gemini 95) flagged the
README roadmap as a list of epic names with no implementation status,
making it hard to tell which slice was Implemented vs Partial vs
Planned.

Convert the 7-epic list to a table with an explicit 状態 column,
v0.53.0 reality:
- Epic 0 Partial (community skills #873/#875 landed, official pack
  registry not yet)
- Epic 1 Planned (#800 npm, untouched)
- Epic 2 Partial (plan/exec stable, --plan replay execution #878,
  verify not implemented)
- Epic 3 Implemented (v0.51.0 #860)
- Epic 4 Planned
- Epic 5 Planned (promptfoo per-skill in place, dashboard not yet)
- Epic 6 Partial (troubleshooting.md #866 #872)

Adds a 凡例 line so adopters can interpret the status column.

No code changes.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>

* docs(readme.en): sync roadmap status column with the JA README

Address Gemini PR #879 review: the English README still listed the
roadmap as a bullet list without status information after the JA
README gained a status table in this PR. Bring it in sync.

The second Gemini comment (use pages/guides/troubleshooting.md instead
of docs/review/troubleshooting.md in Epic 6) is intentionally skipped:
the two are different files. docs/review/troubleshooting.md was added
by #866/#872 specifically for silent-skip cleanup diagnosis aimed at
developers, while pages/guides/troubleshooting.md is the public
general-purpose troubleshooting page. Both serve their audiences and
should not be conflated.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
s977043 added a commit that referenced this pull request May 22, 2026
…e 1) (#881)

Third community skill from #868 Modern Web Guidance, closing the
"browser compatibility / Baseline awareness" axis that the existing
modern-web-semantic (#873) and modern-web-performance (#875) skills
intentionally left as a guard / handoff condition rather than a
first-class concern.

Scope (all Suggestions, severity: minor)
- Baseline status (Newly available / Widely available / Limited
  availability) confirmation for newly introduced Web APIs or CSS.
- Feature detection (@supports / 'xxx' in window / try-catch) prompts
  for Limited availability features.
- progressive enhancement / graceful degradation prompts (fallbacks,
  feature flags, sniff-vs-detect).
- CSS: :has, @container, subgrid, text-wrap, color-mix, oklch,
  light-dark, view-transition-name, Anchor Positioning.
- JS / Web API: structuredClone, Object.hasOwn, Array.findLast,
  Promise.any, URL.parse static, Set intersection, iterator helpers,
  Intl v2 APIs.
- HTML: Popover API, experimental command attributes.

Guardrails (False-positive guards)
- "Modern browsers only" / browserslist target / explicit policy in
  .river/rules.md short-circuits Widely available suggestions.
- @supports / 'xxx' in window feature detection already in the diff
  short-circuits the API-specific suggestion.
- Transpiler-handled JS syntax is out of scope; CSS / runtime APIs
  remain in scope.

Tests
- npm run skills:validate passes the new SKILL.md.
- tests/fixtures/execution-plan-midstream.json snapshot regenerated to
  include the new skill in the midstream plan.
- npm test: 1087/1087 green.

#868 Phase 1 coverage after this PR
- semantic / Platform-Native API / modern CSS (#873)
- performance / Core Web Vitals (#875)
- browser compatibility / Baseline awareness (this PR)
- accessibility-focused dedicated skill: still pending (rr-midstream-
  a11y-accessible-name-001 partial coverage exists; deep a11y skill
  TBD)

Refs: #868. Follows #873 (semantic) and #875 (performance).

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
s977043 added a commit that referenced this pull request May 23, 2026
…ase 1) (#884)

Fourth and final community skill for #868 Phase 1, covering the
interactive-UI accessibility axis the existing trio left as guard /
handoff conditions. The new skill complements
rr-midstream-a11y-accessible-name-001 by focusing on dynamic /
interactive behaviour rather than static name / alt attributes.

Scope (all Suggestions, severity: minor)
- Keyboard operability: click-only generic elements, hover-only state
  toggles, shortcut key conflicts, menu / tabs roving tabindex.
- Focus management: modal / dialog / drawer focus entry and return,
  focus trap (recommend native <dialog> / inert), positive tabIndex
  anti-pattern.
- Live regions and dynamic content: aria-live polite vs assertive,
  toast / snackbar / inline validation announcements, large DOM
  rewrites.
- Role and state semantics: aria-expanded for disclosure, aria-pressed
  for toggle buttons, role / aria-selected / aria-checked consistency
  for selection lists, aria-hidden / pointer-events for decorative
  elements.
- Focus visibility: outline: none additions, :focus-visible adoption,
  design token focus ring regressions.

Guardrails (False-positive guards)
- Library / design system components with built-in a11y are
  short-circuited.
- Existing aria-* / tabIndex on the diffed element short-circuit the
  specific suggestion.
- CSS-only style adjustments without interaction change are out of
  scope.
- Existing :focus-visible / outline control short-circuits focus
  visibility comments.
- accessible-name coverage explicitly delegated to
  rr-midstream-a11y-accessible-name-001 (no double finding).

Tests
- npm run skills:validate passes the new SKILL.md.
- tests/fixtures/execution-plan-midstream.json snapshot regenerated to
  include the new skill in the midstream plan.
- npm test: 1087/1087 green.

#868 Phase 1 coverage after this PR (4 axes complete)
- semantic / Platform-Native API / modern CSS — #873
- performance / Core Web Vitals — #875
- browser compatibility / Baseline awareness — #881
- accessibility (interactive UI) — this PR
- accessible name / static labels — existing
  rr-midstream-a11y-accessible-name-001

Phase 2 (review category taxonomy) and Phase 3 (diff-aware skill
routing) remain open.

Refs: #868. Follows #873 / #875 / #881.

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
s977043 added a commit that referenced this pull request May 25, 2026
…ills (S3) (#899)

Implement S3 from the 2026-05-21..25 retrospective: catalog the community
tier explicitly so consumers can tell "core / curated" from "experimental
/ not yet eval-backed". Until now skills/midstream/community/* were
loaded at runtime but invisible in skills/registry.yaml, which Codex
flagged in the multi-perspective review as a scaling risk.

Add a new "Community Skills (Experimental)" subsection between the core
midstream block and the downstream block. Six skills listed:

- rr-midstream-a11y-accessible-name-001          (pre-existing)
- rr-midstream-nextjs-app-router-boundary-001    (pre-existing)
- rr-midstream-modern-web-semantic-001           (#873)
- rr-midstream-modern-web-performance-001        (#875)
- rr-midstream-modern-web-browser-compat-001     (#881)
- rr-midstream-modern-web-a11y-interactive-001   (#884)

All six are marked `recommended: false` so the catalog reflects current
truth: useful as opt-in suggestions, not first-line gates. The block
also carries a comment explaining the convention — a community skill
becomes a `recommended: true` candidate when it gains good/bad fixtures
and a golden output (the S1 convention queued for a later PR).

No code change; node scripts/validate-meta-consistency.mjs and
npm run skills:validate both pass. npm test: 1087/1087 green.

Refs: docs/development/retrospectives/2026-05-21-25.md (S3 entry).

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant