Skip to content

feat(dx): add /lfx-pr slash command for PR shipping#672

Open
manishdixitlfx wants to merge 12 commits into
mainfrom
feat/lfx-pr-command
Open

feat(dx): add /lfx-pr slash command for PR shipping#672
manishdixitlfx wants to merge 12 commits into
mainfrom
feat/lfx-pr-command

Conversation

@manishdixitlfx
Copy link
Copy Markdown
Contributor

Signed-off-by: Manish Dixit mdixit@linuxfoundation.org

Signed-off-by: Manish Dixit <mdixit@linuxfoundation.org>
Copilot AI review requested due to automatic review settings May 11, 2026 15:17
@manishdixitlfx manishdixitlfx requested a review from a team as a code owner May 11, 2026 15:17
Copy link
Copy Markdown

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.

Tip: disable this comment in your organization's Code Review settings.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 11, 2026

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds a new .claude/commands/lfx-pr.md guide that defines a 7-step fail-fast workflow for shipping PRs: pre-flight checks, Angular-conventional commits with mandatory DCO+GPG signing, sequential yarn quality gates, self-review checks, push rules, GH CLI PR creation with a template, and usage/failure constraints.

Changes

/lfx-pr Command Guide

Layer / File(s) Summary
Command Frontmatter & Overview
.claude/commands/lfx-pr.md
Adds /lfx-pr command metadata and optional $ARGUMENTS handling for commit subject, branch/target, draft mode, and extra PR body context.
Pre-flight Checks
.claude/commands/lfx-pr.md
Step 1: fetch/validate origin/main, refuse running from main, stop if no commits ahead, check git status --porcelain, and derive/confirm commit subject.
Commit Creation Policy
.claude/commands/lfx-pr.md
Step 2: enforce Angular-conventional subject (allowed types, ban chore:, scope/length/lowercase rules), run git add -A, and git commit --signoff -S -m (stop on failures).
Sequential Quality Gates
.claude/commands/lfx-pr.md
Step 3: fail-fast read-only checks: yarn check-types, yarn lint:check, yarn format:check, yarn test, yarn build; require fixes/recommit for lint/format issues and do not skip build.
Self-review & Hard Policy Checks
.claude/commands/lfx-pr.md
Step 4: run ./check-headers.sh, yarn commitlint --from origin/main --to HEAD, ensure Signed-off-by: trailers and GPG-signed commits, then advisory git diff origin/main...HEAD checks (SSR/API guards, brand hexes, other rules).
Push Behavior
.claude/commands/lfx-pr.md
Step 5: git push -u origin HEAD, stop on rejection, avoid force-push.
PR Creation
.claude/commands/lfx-pr.md
Step 6: locate/link LFXV2 ticket, choose PR title (first commit subject), use PR body template with pre-merge checklist, run gh pr create --base main with fallback to manual creation.
Output & Usage Guidelines
.claude/commands/lfx-pr.md
Step 7: expected outputs (PR URL, branch, ticket, commit count, diff stats), follow-up actions, and documented failure-handling/auto-fix and usage constraints.

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat(dx): add /lfx-pr slash command for PR shipping' is a clear and specific description of the main change—adding a new slash command for PR shipping to improve developer experience.
Description check ✅ Passed The PR description contains only a sign-off line; while minimal, it is legitimately related to the changeset as it follows the DCO requirement and matches the PR's commit-signing focus.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/lfx-pr-command

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.claude/commands/lfx-pr.md:
- Line 40: Replace the second top-level heading text "# Note: -S (GPG signing)
is recommended but not enforced by repo policy. Add it if you have GPG
configured." with a normal sentence (no leading "# ") and remove the trailing
punctuation to avoid MD025 and MD026; update the text in
.claude/commands/lfx-pr.md so it becomes a plain paragraph like the existing
prose rather than an H1.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ad0d904b-3494-4862-a7b8-dd89490bc9a0

📥 Commits

Reviewing files that changed from the base of the PR and between 9518b2f and b12c184.

📒 Files selected for processing (1)
  • .claude/commands/lfx-pr.md

Comment thread .claude/commands/lfx-pr.md Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Claude Code slash command (/lfx-pr) intended to standardize and automate the “ship a PR” workflow in the lfx-v2-ui monorepo (preflight checks, optional commit, quality gates, push, and PR creation via gh).

Changes:

  • Introduces a new .claude/commands/lfx-pr.md command definition with a step-by-step PR shipping workflow.
  • Documents commit subject validation rules, quality gate commands, and a PR body checklist/template.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .claude/commands/lfx-pr.md Outdated
Comment thread .claude/commands/lfx-pr.md Outdated
Comment thread .claude/commands/lfx-pr.md Outdated
Comment thread .claude/commands/lfx-pr.md Outdated
Comment thread .claude/commands/lfx-pr.md Outdated
Address review comments from @coderabbitai, @copilot-pull-request-reviewer:

- frontmatter: corrected description from (DCO+GPG) to (DCO sign-off;
  GPG optional) to match actual command behavior
  (per @copilot-pull-request-reviewer)
- Step 1: fetch origin/main and use origin/main..HEAD for ahead check;
  avoids stale-local-main drift (per @copilot-pull-request-reviewer)
- Step 2: relaxed scope rule per .claude/rules/commit-workflow.md and
  delegated final validation to yarn commitlint
  (per @copilot-pull-request-reviewer)
- Step 2: converted "# Note:" pseudo-comment to blockquote and wrapped
  commit commands in fenced bash block; fixes MD025/MD026 markdownlint
  failures that were blocking CI (per @coderabbitai)
- Step 3: switched yarn lint/format to :check variants so ship-time
  gates are read-only (no working-tree mutation)
  (per @copilot-pull-request-reviewer)
- Step 4: git diff main...HEAD -> git diff origin/main...HEAD for
  consistency with origin-based comparisons
  (per @copilot-pull-request-reviewer)

Item 6 (move commit-format/Signed-off-by from advisory to fail-fast)
deferred pending user direction — left thread unresolved.

Resolves 5 of 6 review threads.

Signed-off-by: Manish Dixit <mdixit@linuxfoundation.org>
@manishdixitlfx
Copy link
Copy Markdown
Contributor Author

Review Feedback Addressed

Commit: c713ead

Changes Made

  • .claude/commands/lfx-pr.md (frontmatter): description changed from (DCO+GPG) to (DCO sign-off; GPG optional) to match actual behavior (per @copilot-pull-request-reviewer)
  • .claude/commands/lfx-pr.md (Step 1): added git fetch origin main and switched ahead-check to origin/main..HEAD to avoid stale-local-main drift (per @copilot-pull-request-reviewer)
  • .claude/commands/lfx-pr.md (Step 2): relaxed scope rule per .claude/rules/commit-workflow.md, delegated final validation to yarn commitlint (per @copilot-pull-request-reviewer)
  • .claude/commands/lfx-pr.md (Step 2): converted # Note: H1 to blockquote and wrapped commit commands in a fenced bash block — fixes MD025/MD026 markdownlint failures that were blocking CI (per @coderabbitai)
  • .claude/commands/lfx-pr.md (Step 3): switched yarn lint / yarn format to :check variants so ship-time gates are read-only (per @copilot-pull-request-reviewer)
  • .claude/commands/lfx-pr.md (Step 4): git diff main...HEADgit diff origin/main...HEAD for consistency (per @copilot-pull-request-reviewer)

Threads Resolved

5 of 6 unresolved threads addressed in this iteration.

Still Open

  • .claude/commands/lfx-pr.md line 70: @copilot-pull-request-reviewer flagged that commit-format and Signed-off-by checks in Step 4 should be fail-fast rather than advisory. The reviewer is correct that these rules are CI/hook-enforced. However, Step 4 was explicitly reworded earlier in the doc's history to be advisory by intent. Deferred pending a design decision on whether to split Step 4 into a hard fail-fast block (commit format, ≤72, no chore:, Signed-off-by, license headers) and an advisory block (taste items: isPlatformBrowser, lfxColors, ternaries, no-interface-in-apps). Will follow up in a separate commit once decided.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 11, 2026

Tip

For best results, initiate chat on the files or code changes.

@manishdixitlfx: Thanks for the detailed update! Confirmed — converting the # Note: H1 to a blockquote and wrapping the commit commands in a fenced bash block resolves the MD025/MD026 markdownlint issues I flagged. ✅

Regarding the still-open Step 4 item: your proposed split makes good sense — separating CI/hook-enforced rules (commit format, ≤72 chars, no chore:, Signed-off-by, license headers) into a hard fail-fast block from the taste/style advisory items (isPlatformBrowser, lfxColors, ternary style, no-interface-in-apps) would make the intent of each check much clearer to readers. Happy to review that follow-up when it comes.

Agent-Logs-Url: https://github.com/linuxfoundation/lfx-v2-ui/sessions/fadab2f2-1125-4f1f-a2ea-8f48bdbadf00

Co-authored-by: manishdixitlfx <142783321+manishdixitlfx@users.noreply.github.com>
Copilot AI review requested due to automatic review settings May 11, 2026 15:50
@manishdixitlfx manishdixitlfx review requested due to automatic review settings May 11, 2026 15:50
Comment thread .claude/commands/lfx-pr.md Outdated
Comment thread .claude/commands/lfx-pr.md Outdated
Address review comments from @jordane:

- frontmatter, Step 2 commit cmd, Note, mandatory sentence, Step 4
  hard checks, Step 6 PR body checklist, and failure-handling section
  all updated to make -S (GPG signing) mandatory alongside --signoff
  (DCO). Reverses the prior "GPG optional" direction per @jordane's
  confirmation that GPG signing is enforced by repo policy. Step 4's
  Signed-off-by verification now also checks GPG signature status via
  `git log --format='%G?'` (per @jordane on line 46)

- frontmatter argument-hint, new $ARGUMENTS interpretation paragraph,
  Step 1 dirty-tree branch, and Step 2 heading reworked so $ARGUMENTS
  is treated as freeform user instructions (commit subject, target
  branch, draft toggle, PR body context, etc.) rather than strictly
  as a commit subject. If no commit subject is supplied, the command
  proposes one from the staged diff and asks the user to confirm
  (per @jordane on line 23)

T6 (Step 4 hard vs advisory split) was implemented by copilot-swe-agent
in 6537f5f; keeping that change as-is.

Resolves 3 review threads.

Signed-off-by: Manish Dixit <mdixit@linuxfoundation.org>
Copilot AI review requested due to automatic review settings May 11, 2026 17:13
@manishdixitlfx
Copy link
Copy Markdown
Contributor Author

Review Feedback Addressed — Iteration 2

Commits in this iteration:

  • 6537f5f1 (by @copilot-swe-agent[bot]) — Step 4 hard vs advisory split
  • 576a788d — GPG enforcement (-S mandatory) + freeform $ARGUMENTS handling

Changes Made

GPG signing now mandatory (per @jordane)

  • .claude/commands/lfx-pr.md: frontmatter description, Step 2 commit command, Note blockquote, mandatory sentence, Step 4 hard-check verification, Step 6 PR body checklist, and failure-handling section all updated. -S is now required alongside --signoff. Step 4 also gains an explicit GPG-signature verification (git log --format='%G?' origin/main..HEAD).

$ARGUMENTS now freeform user instructions (per @jordane)

  • .claude/commands/lfx-pr.md: frontmatter argument-hint reworked, new interpretation paragraph added after the $ARGUMENTS reference, Step 1's dirty-tree branch rewritten so the command proposes a commit subject from the staged diff when one isn't supplied, Step 2 heading simplified to "Commit (only if dirty)".

Step 4 split (autofixed by @copilot-swe-agent in 6537f5f, kept as-is)

  • .claude/commands/lfx-pr.md: Step 4 now has a hard fail-fast block (./check-headers.sh, yarn commitlint --from origin/main --to HEAD, Signed-off-by + GPG verification) followed by an advisory-only block for taste items (isPlatformBrowser, lfxColors, ternaries, etc.).

Threads Resolved

3 of 3 unresolved threads addressed in this iteration.

Side Notes

  • I couldn't directly read branch-protection settings to verify GPG enforcement (gh api .../branches/main/protection returns 404 from my account). Took @jordane's word for it. If the policy is documented somewhere, a pointer in CLAUDE.md or .claude/rules/commit-workflow.md would help future contributors avoid the same confusion I had.
  • @copilot-swe-agent's autofix (6537f5f) was pushed directly to this branch without explicit approval. Kept the change because it's reasonable, but worth flagging if unauthorized agent pushes are out of policy.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 5 comments.

Comment thread .claude/commands/lfx-pr.md Outdated
Comment thread .claude/commands/lfx-pr.md Outdated
Comment thread .claude/commands/lfx-pr.md
Comment thread .claude/commands/lfx-pr.md
Comment thread .claude/commands/lfx-pr.md Outdated
Address review comments from @copilot-pull-request-reviewer:

- Step 4 hard checks: replaced the manual prose Signed-off-by check
  with a single combined verification command that asserts both GPG
  signature status (`%G?`) and trailer presence per commit via
  `git log --format='%G? %(trailers:key=Signed-off-by,valueonly...)'`
  — fail-fast block is now fully actionable rather than partly
  manual (per @copilot-pull-request-reviewer on line 75)
- Step 6 gh pr create: dropped the branch-name fallback for PR
  title and clarified the title must be `type(scope): description`,
  lowercase, no JIRA ticket. If the first commit subject doesn't
  satisfy that, command asks user for a valid title. Prevents
  PR-title-lint CI failures from branch-name fallbacks like
  `feat/LFXV2-1697` (per @copilot-pull-request-reviewer on line 124)
- Step 6 PR-body checklist: `yarn lint` -> `yarn lint:check`, added
  `yarn format:check` line, so checklist labels now match the gates
  actually run in Step 3 (per @copilot-pull-request-reviewer on
  line 112)

Item 4 (false positive on GPG mandate, line 50) is being handled by
companion PR #674 which documents the GPG-enforcement policy in
CLAUDE.md and .claude/rules/commit-workflow.md.

Item 5 (draft-mode contradiction at line 13) deferred pending user
direction on whether to implement --draft end-to-end or remove the
draft references from $ARGUMENTS interpretation.

Resolves 3 of 5 review threads; 1 reply-only (false positive); 1
deferred.

Signed-off-by: Manish Dixit <mdixit@linuxfoundation.org>
@manishdixitlfx
Copy link
Copy Markdown
Contributor Author

Review Feedback Addressed — Iteration 3

Commit: ee7e63f

Changes Made

  • .claude/commands/lfx-pr.md (Step 4 hard checks): replaced the partly-manual Signed-off-by check with a single combined verification command (git log --format='%G? %(trailers:key=Signed-off-by,valueonly,separator=%x20) %h %s' origin/main..HEAD). Each line must start with G and carry a non-empty trailer value — fully actionable fail-fast (per @copilot-pull-request-reviewer on line 75)
  • .claude/commands/lfx-pr.md (Step 6 gh pr create): dropped the branch-name fallback for PR title; title is now strictly derived from the first commit subject with conventional-commit validation, prompting the user if the subject doesn't satisfy the format. Prevents PR-title-lint CI failures from branch-name fallbacks like feat/LFXV2-1697 (per @copilot-pull-request-reviewer on line 124)
  • .claude/commands/lfx-pr.md (Step 6 PR-body checklist): yarn lintyarn lint:check; added yarn format:check line so the checklist labels match the gates Step 3 actually runs (per @copilot-pull-request-reviewer on line 112)

No Change Needed

  • .claude/commands/lfx-pr.md line 50 (GPG-mandate "false positive"): @copilot-pull-request-reviewer flagged that mandating GPG conflicts with contributor docs that only mention DCO. The doc gap is real but the underlying policy is correct — @jordane confirmed GPG enforcement on this same PR. PR docs(dx): document GPG signing requirement for commits #674 is in flight to update CLAUDE.md and .claude/rules/commit-workflow.md to document the policy, which will close this loop. Resolved on that basis.

Threads Resolved

4 of 5 unresolved threads addressed in this iteration.

Still Open

  • .claude/commands/lfx-pr.md line 13 (draft-mode contradiction): @copilot-pull-request-reviewer correctly flagged that the $ARGUMENTS interpretation lists "draft toggle" as a recognized directive, but Step 6 doesn't pass --draft to gh pr create and the "When to use" section says "Not for drafts". Deferred pending decision on whether to (a) wire --draft through end-to-end with an override of the default "no drafts" intent, or (b) remove the draft references from $ARGUMENTS and keep the "Not for drafts" stance.

Note on Review Status

@jordane left CHANGES_REQUESTED at 15:55 UTC, before iteration 2 (commit 576a788 at 17:13) and iteration 3 (this commit). Iteration 2 specifically addressed @jordane's three threads on GPG enforcement, freeform args, and the Step 4 hard/advisory split. Pinging @jordane for a re-review when convenient.

@manishdixitlfx
Copy link
Copy Markdown
Contributor Author

Review Feedback Addressed — Iteration 3 Wrap-Up

Commits in this iteration window:

  • ee7e63f2 — Signed-off-by check command, PR title derivation, checklist :check alignment
  • 3d28b993 (by @copilot-swe-agent[bot]) — removed draft-mode refs from $ARGUMENTS (rolled forward, not reverted)
  • bbc00b46 — wired --draft end-to-end (re-adds the draft args + adds the gh wiring the bot's commit didn't provide)

Final State — All 5 Threads From This Batch Resolved

  • line 75 (Signed-off-by command): replaced manual prose with a combined git log --format='%G? %(trailers:...)' origin/main..HEAD verification — fully actionable fail-fast
  • line 124 (PR title): dropped branch-name fallback; title now strictly derived from first commit subject with conventional-commit validation, prompting user if invalid
  • line 112 (checklist :check alignment): updated checklist labels to match Step 3 gates (yarn lintyarn lint:check, added yarn format:check)
  • line 50 (GPG-mandate "false positive"): closed by pointing to companion PR docs(dx): document GPG signing requirement for commits #674 which documents the policy in CLAUDE.md and .claude/rules/commit-workflow.md (where the doc gap actually lives — confirmed by @jordane on this same PR)
  • line 13 (draft-mode contradiction): wired --draft through end-to-end in bbc00b46. Default flow unchanged; drafts are explicit opt-in via as draft in $ARGUMENTS

Note for @jordane

Iteration 2 (commit 576a788d) addressed your three threads on GPG enforcement, freeform $ARGUMENTS semantics, and the Step 4 hard/advisory split. Iteration 3 (above) addressed the follow-up bot review. Pinging for re-review when convenient.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 2 comments.

Comment thread .claude/commands/lfx-pr.md Outdated
Comment thread .claude/commands/lfx-pr.md Outdated
jordane
jordane previously approved these changes May 11, 2026
Mirrors the verification-snippet relaxation from PR #674 so the
/lfx-pr command and the canonical commit-workflow rule stay in sync.

- Accept %G? codes G or U (good signature, with U meaning the signing
  key isn't in the local trust db — fine for policy purposes)
- Flag N / B / E as codes needing investigation
- Note that GitHub's Verified badge is the authoritative post-push
  check, since local %G? depends on which keys the user has imported

Signed-off-by: Manish Dixit <mdixit@linuxfoundation.org>
dealako added a commit that referenced this pull request May 12, 2026
* docs(dx): document GPG signing requirement for commits

Surfaced during PR #672 review: @jordane confirmed GPG signing is
enforced by repo policy, but neither CLAUDE.md nor
.claude/rules/commit-workflow.md mentioned it. Both said only DCO
sign-off was required, which caused churn during that review.

- CLAUDE.md: updated the single-line commit guidance to `git commit
  --signoff -S` and noted both signatures are enforced.
- .claude/rules/commit-workflow.md: added a "Commit Signing" section
  with one-time GPG setup, the standard commit command, and a
  signature-verification snippet for branch validation.

Signed-off-by: Manish Dixit <mdixit@linuxfoundation.org>

* docs(dx): align contributor docs with GPG-enforcement policy

Address PR #674 review feedback from @copilot-pull-request-reviewer
and @jordane.

- CONTRIBUTING.md (Sign-off section): renamed to "Sign-off and GPG
  Signing", expanded to require both --signoff and -S, included
  one-time GPG config, and pointed at .claude/rules/commit-workflow.md
  as the canonical policy source (per
  @copilot-pull-request-reviewer)
- .claude/agents/code-standards-enforcer.md (General Rules
  checklist): updated the commit-signing item to require both
  --signoff and -S with a cross-reference to commit-workflow.md
  (per @copilot-pull-request-reviewer)
- .claude/rules/commit-workflow.md (verification snippet): relaxed
  acceptable %G? codes to G or U (good-but-untrusted is fine for
  policy), documented that N/B/E need investigation, and noted that
  GitHub's Verified badge is the authoritative post-push check
  since local %G? depends on which keys are in the user's trust db
  (per @copilot-pull-request-reviewer and @jordane)

Resolves 2 review threads.

Signed-off-by: Manish Dixit <mdixit@linuxfoundation.org>

---------

Signed-off-by: Manish Dixit <mdixit@linuxfoundation.org>
Co-authored-by: David Deal <ddeal@linuxfoundation.org>
Copy link
Copy Markdown
Contributor

@asithade asithade left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR adds a new Claude Code slash command at .claude/commands/lfx-pr.md that ships a PR end-to-end (pre-flight checks, commit with DCO + GPG, quality gates, self-review, push, open PR). Markdown-only change. The command itself is well-structured, follows the same style as existing skills, and the previous 13 review-comment iterations have addressed the substantive concerns.

Remaining items are minor:

  • A few NITs around fenced-block consistency and a duplicate sentence in Step 2.
  • One unresolved upstream-policy citation (GPG enforcement) — recommend linking PR #674 inline.
  • A reference to lfx-preflight in the PR-body checklist that does not match any artifact in this repo.
  • JIRA ticket / branch naming — no LFXV2-XXXX in commits, PR body, or branch. The ticket waiver expired on 2026-04-28; tickets are required again.

Other observations:

  • Markdownlint runs clean.
  • The PR body itself is bare (just Signed-off-by:) — ironic for a PR that adds a tool prescribing a detailed PR template.

PR-level findings

SHOULD_FIX — JIRA ticket and branch naming
Rule: .claude/rules/commit-workflow.md § JIRA Tracking + project memory (waiver EXPIRED 2026-04-28)
No JIRA LFXV2-XXXX ticket is referenced in any commit message or in the PR body. The ticket waiver expired on 2026-04-28; tickets are required again. Branch name feat/lfx-pr-command also does not follow <type>/LFXV2-<number>. Create a ticket and reference it in the PR body and a commit body trailer.

NIT — PR body should describe the change
Rule: .claude/rules/commit-workflow.md PR body should describe the change
The PR body currently contains only Signed-off-by:. Since this PR adds a slash command that itself prescribes a rich PR body template, the PR body here should ideally model the same pattern — "eat your own dogfood." Add a one-paragraph summary and link to the JIRA ticket and PR #674.


Verdict: REQUEST_CHANGES

Comment thread .claude/commands/lfx-pr.md Outdated
Comment thread .claude/commands/lfx-pr.md Outdated
Comment thread .claude/commands/lfx-pr.md
Comment thread .claude/commands/lfx-pr.md Outdated
Comment thread .claude/commands/lfx-pr.md Outdated
Copilot AI review requested due to automatic review settings May 13, 2026 23:05
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 3 comments.

Comments suppressed due to low confidence (1)

.claude/commands/lfx-pr.md:18

  • git fetch origin main only fetches main into FETCH_HEAD and can leave the origin/main remote-tracking ref stale, while the following ahead/diff/commitlint checks all use origin/main. Fetch the remote-tracking ref (for example with a plain git fetch origin or an explicit main:refs/remotes/origin/main refspec) before relying on origin/main.
- git fetch origin main → ensure `origin/main` is current (avoids stale-local-main drift)

Comment on lines +2 to +8
description: Ship a PR for lfx-v2-ui — runs quality gates, signs commits (DCO sign-off + GPG), pushes branch, opens PR with LFXV2 linkage.
argument-hint: [optional: any extra instructions — commit subject, target branch, draft mode, extra PR body context]
---

# /lfx-pr — Ship a PR for lfx-v2-ui

You are running in the lfx-v2-ui monorepo. The user is invoking this command to ship the current branch as a PR. Follow these steps in order. Fail fast — stop immediately if any step fails and surface the error.

User-provided argument (if any): $ARGUMENTS

Interpret `$ARGUMENTS` as freeform user instructions. They may include any of: a commit subject (e.g., `feat(auth): add OAuth`), a target branch (e.g., `to feat/lfx-pr-v2`, `move commits to jme/branch-name`), a draft toggle (e.g., `as draft`), additional PR body context, or other adjustments to the default flow. Apply each instruction at the step that owns it (commit subject in Step 2, branch operations in Steps 1/5, draft flag in Step 6). If any directive is ambiguous, ask the user before acting on it.
@@ -0,0 +1,167 @@
---
description: Ship a PR for lfx-v2-ui — runs quality gates, signs commits (DCO sign-off + GPG), pushes branch, opens PR with LFXV2 linkage.
argument-hint: [optional: any extra instructions — commit subject, target branch, draft mode, extra PR body context]
Address review comments from @copilot-pull-request-reviewer and @asithade:

- .claude/commands/lfx-pr.md (signoff/GPG Note): merge the duplicate
  blockquote + prose into a single line and link to
  .claude/rules/commit-workflow.md § Commit Signing for the authoritative
  policy (per @copilot — in-repo citation; per @asithade — dedupe).
- .claude/commands/lfx-pr.md (Step 4): fence the bare
  'git diff origin/main...HEAD' invocation and rewrite the trailing prose
  for consistency with surrounding fenced blocks (per @asithade).
- .claude/commands/lfx-pr.md (Step 5): fence the bare
  'git push -u origin HEAD' and inline-code the rebase suggestion
  (per @asithade).
- .claude/commands/lfx-pr.md (pre-merge checklist): replace the
  non-existent 'lfx-preflight' skill reference with a direct pointer to
  the actual enforcement: '.claude/hooks/guard-protected-files.sh'
  (per @asithade).

The thread on '%G?' accepting both 'G' and 'U' was already addressed in
the current file (Step 4 explicitly accepts both) — no code change, just
reply + resolve.

Resolves 7 review threads.

Signed-off-by: Manish Dixit <mdixit@linuxfoundation.org>
@manishdixitlfx
Copy link
Copy Markdown
Contributor Author

Review Feedback Addressed

Commit: ee3c15d9

Changes Made

  • .claude/commands/lfx-pr.md (Step 2 Note) — merged the duplicate blockquote + prose into a single Note and linked to .claude/rules/commit-workflow.md § Commit Signing as the authoritative policy (per @copilot-pull-request-reviewer + @asithade)
  • .claude/commands/lfx-pr.md (Step 4) — fenced the bare git diff origin/main...HEAD invocation; trailing prose now reads cleanly on its own line (per @asithade)
  • .claude/commands/lfx-pr.md (Step 5) — fenced the bare git push -u origin HEAD and inline-coded the rebase suggestion (per @asithade)
  • .claude/commands/lfx-pr.md (pre-merge checklist) — replaced the non-existent lfx-preflight skill reference with .claude/hooks/guard-protected-files.sh, which is the actual protected-files enforcement (per @asithade)

No Change Needed

  • GPG %G? check accepting G and U — Step 4 already accepts both with the full explanation (the original thread was on an earlier draft and is now outdated). Replied + resolved (flagged by @copilot-pull-request-reviewer).

Threads Resolved

7 of 7 unresolved threads addressed in this iteration.

Follow-up

  • CLAUDE.md still uses the lfx-preflight phrasing — out of scope for this PR but worth a follow-up edit.

Agent-Logs-Url: https://github.com/linuxfoundation/lfx-self-serve/sessions/e763f1b7-4883-4210-a013-69adc7f4d1f5

Co-authored-by: manishdixitlfx <142783321+manishdixitlfx@users.noreply.github.com>
Copilot AI review requested due to automatic review settings May 13, 2026 23:20
@manishdixitlfx manishdixitlfx review requested due to automatic review settings May 13, 2026 23:20
Agent-Logs-Url: https://github.com/linuxfoundation/lfx-self-serve/sessions/e763f1b7-4883-4210-a013-69adc7f4d1f5

Co-authored-by: manishdixitlfx <142783321+manishdixitlfx@users.noreply.github.com>
Copilot AI review requested due to automatic review settings May 13, 2026 23:21
@manishdixitlfx manishdixitlfx review requested due to automatic review settings May 13, 2026 23:21
Copy link
Copy Markdown
Contributor

Copilot AI commented May 13, 2026

This PR adds a new Claude Code slash command at .claude/commands/lfx-pr.md that ships a PR end-to-end (pre-flight checks, commit with DCO + GPG, quality gates, self-review, push, open PR). Markdown-...

Addressed the remaining in-file policy-citation item in f381fbb by adding the inline PR #674 reference in Step 2. The JIRA/branch naming and PR-body completeness points are PR metadata/process items for the author to update on the PR itself.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • fonts.googleapis.com
    • Triggering command: /opt/hostedtoolcache/node/24.14.1/x64/bin/node /opt/hostedtoolcache/node/24.14.1/x64/bin/node /home/REDACTED/work/lfx-self-serve/lfx-self-serve/node_modules/@angular/cli/bin/ng.js build (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

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.

6 participants