openid-review
星标15
分支5
更新时间2026年6月18日 14:56
Review code changes for correctness, spec compliance, and conformance suite conventions
安装
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
SKILL.md
readonly菜单
Review code changes for correctness, spec compliance, and conformance suite conventions
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | openid-review |
| description | Review code changes for correctness, spec compliance, and conformance suite conventions |
Review the current branch's changes from the point the branch diverged from a target branch. If an argument is provided, use it as the target branch; otherwise default to origin/master.
Concentrate on findings related to changes made on the branch — flag pre-existing issues in unchanged code in a separate section.
git diff --name-only <target>...HEAD (triple-dot) against the target branch — this shows only changes introduced on the current branch since it diverged, not unrelated changes on the targetgit diff <target>...HEAD (triple-dot) to review only the branch's own changessrc/main/java/net/openid/conformance/export/LogEntryHelper.java to find the spec URL mappings (the specLinks HashMap maps prefixes like "AUTHZEN-" to spec base URLs)"AUTHZEN-7.1", "FAPI2SP-5.2.2") to identify which specs and sections are referenced@PreEnvironment and @PostEnvironment annotations matching actual usageConditionResult.FAILURE for mandatory clauses ("shall", "must")ConditionResult.WARNING for recommended clauses ("should")ConditionResult.INFO for optional behavior ("may")error() (to fail) or logSuccess()/log() (to pass) before returningrequirements string array referencing the relevant specification section, e.g., callAndStopOnFailure(Cond.class, "RFC6749-4.1.3")callAndStopOnFailure vs callAndContinueOnFailure appropriately: StopOnFailure when the problem would prevent later test steps executing correctly; ContinueOnFailure when downstream steps are unaffectedenv.getString("object", "nested.path"))schedule-test.html, not internal JSON key names, and include "in the test configuration"*_UnitTest.java naming conventionerror(), invoked by the caller with ConditionResult.WARNING — a condition's own log() is INFO-level, not a warning@PublishTestModule summary field must clearly communicate: what the test does, why, and the expected outcomeschedule-test.html are only shown if they appear in the aggregated configurationFields for the plan/modules. When code added on the branch reads a new client.* (or other) config path, verify the path is declared via either @ConfigurationFields({...}) on the abstract base class (for fields used by every concrete module in the family — preferred when the consuming Extract/Add condition is wired in the abstract base's sequence), @PublishTestModule(configurationFields = ...) on a specific module (for module-specific fields), or @VariantConfigurationFields (for fields only applicable under certain variants). A field that the code reads but no annotation declares is a UI bug — the user can't supply it through the form.frontend/README.md: npm run test:ci for JS/component changes, targeted Playwright E2E for changed static pages under src/main/resources/static/, and test-storybook when components, stories, play functions, or a11y-relevant behavior change.cd frontend && npx playwright test e2e/<page>.spec.js), run npm run test-storybook for changed cts-* components/stories, or open Storybook/the page manually when no automated spec covers the path. Flag missing coverage or observed regressions in keyboard/focus behavior, responsive layout, accessibility names/roles, loading/error/empty states, and text overflow/overlap.frontend/e2e/fixtures/ and route helpers/specs; unmocked API calls or fixture shapes that do not match the backend are findings.cts-* components, OIDF tokens, and established page patterns. Flag hard-coded colors/spacing, ad hoc controls, raw Bootstrap-era markup, or new UI primitives where an existing component fits.schedule-test.html and guided-wizard changes require dedicated browser coverage for the affected user path, including resolved variants/config fields and any hide/show behavior.Content-Type, Cache-Control (where spec requires it), required response body fields, and flag unknown fields as WARNING via a separate conditionContent-Type, Accept)additionalProperties: false for sender validation — the schema condition throws on unknown fields, but the caller should invoke it with ConditionResult.WARNING so unknown fields are warnings, not test failuresaud values: test both array and string formats unless the spec explicitly prohibits one. and ~; avoid non-URL-safe, control, or non-ASCII characters unless explicitly allowed or the value is user-visible/api/** must have corresponding security tests in scripts/run-security-tests.py. Any added @GetMapping/@PostMapping/@RequestMapping handler (or change to an existing one's auth) that ships without them is a finding. The tests should cover, as applicable: unauthenticated access is rejected (401); share-link / private-link tokens cannot reach endpoints outside their allow-list (401/403); the owner/admin can access their own resource (200); and an unknown or unauthorized resource id returns the same not-found response (404, no existence leak). Use a short timeout on any long-poll/blocking endpoint so the suite stays fast.iat: must not be in the future (allow clock skew); if the token should be freshly issued, must not be too far in the past; at minimum, must not be before ~2012 (the JWT spec era)exp: must not be in the past (allow clock skew); must not be unreasonably far in the future (e.g., more than ~50 years)nbf: must not be unreasonably far in the future or pastexpires_in: must be positive; must not be zero or unreasonably large (e.g., 50 years of seconds)