Skip to main content

webapp-review

Webapp review — analyse your current branch or an existing PR for DRY violations, missing abstractions, SOLID issues, module boundary violations, and extensibility gaps in this NX monorepo.

Jump to install

Source facts

Repository
SonarSource/sonarqube-webapp
Last source activity
June 23, 2026 at 04:22
Detected SKILL.md language
English
Stars
12
Forks
14

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
webapp-review
description
Webapp review — analyse your current branch or an existing PR for DRY violations, missing abstractions, SOLID issues, module boundary violations, and extensibility gaps in this NX monorepo.
Run webapp review: $ARGUMENTS Parse arguments: - `--pr <number or URL>` — review a specific PR's diff instead of current branch; accepts a bare number (`5855`) or a full GitHub URL (`https://github.com/…/pull/5855`) — extract the number from the URL path before proceeding; `--base` is ignored when this is set since `gh pr diff` always diffs against the PR's own base branch - `--base <branch>` — override the base branch when diffing the current branch (default: auto-detected main or master); has no effect when `--pr` is provided --- ## Step 1: Load review guidelines Read all files under `.gitar/review/` — they contain the authoritative rules for this review: @.gitar/review/general-design.md @.gitar/review/module-boundaries.md @.gitar/review/adapters.md @.gitar/review/design-system.md @.gitar/review/react-query.md @.gitar/review/conventions.md --- ## Step 2: Get the diff The two modes — `--pr` and current-branch — use **different data sources**. Do not mix them. ### Mode A: `--pr` The PR already exists on GitHub. All file content must come from the PR's head ref, **not** the local working tree. Run all three commands in a **single** Bash call so they require only one permission grant (`gh pr diff --name-only` requires gh ≥ 2.10; fall back to `gh pr diff {pr} | grep '^diff --git' | sed 's|diff --git a/.* b/||'` if your gh is older): ```bash git fetch origin pull/{pr}/head:pr-{pr} && gh pr diff {pr} --name-only && echo "==FULL_DIFF==" && gh pr diff {pr} ``` For each changed file that looks architecturally significant (query hooks, adapters, route definitions, React contexts, page templates, API services, page-level components), read its full content **from the fetched PR ref** in a **single** Bash call: ```bash for f in file1 file2 file3; do echo "=== $f ==="; git show pr-{pr}:$f; done ``` ### Mode B: Current branch (no `--pr`) Review everything on the current branch that diverges from the base — including uncommitted work. Run branch detection, merge-base resolution, file list, and full diff in a **single** Bash call: ```bash git rev-parse --abbrev-ref HEAD && MERGE_BASE=$(git merge-base HEAD origin/main 2>/dev/null || git merge-base HEAD origin/master) && echo "Merge base: $MERGE_BASE" && git diff $MERGE_BASE --name-only && echo "==FULL_DIFF==" && git diff $MERGE_BASE ``` For each changed file that looks architecturally significant (query hooks, adapters, route definitions, React contexts, page templates, API services, page-level components), read the full file from disk to understand context beyond what changed. --- ## Step 3: Analyse Apply every rule from the loaded `.gitar/review/` files to the diff. For each finding note: file path, approximate line, and whether it's a **must fix** (correctness risk) or **worth addressing** (design smell that will compound). Load the `webapp-code-sharing` skill if you need a deeper understanding of the NX module structure. --- ## Step 4: For each finding, assess the tradeoff Before reporting, ask: what does acting on this actually cost? - **Scope**: one-liner fix, single-class refactor, or multi-module change? - **Complexity trade**: does the fix remove complexity in one place but add it somewhere else? - **Timing**: incremental, or requires a bigger bang? - **Risk**: does it touch a hot path or a tested boundary? Include the tradeoff in every finding. A finding without a tradeoff is just a complaint. --- ## Step 5: Report findings --- **Must fix:** - `{file}:{line}` — {what breaks and why} → fix: {concrete suggestion} | cost: {tradeoff} **Worth addressing (will compound if left):** - `{file}:{line}` — {the smell} → suggestion: {cleaner approach} | cost: {tradeoff} **Looks good:** - {something specific that was done well} --- Keep each finding to 2-3 sentences. If no must-fix items, say so clearly. ### Closing prompt **If `--pr` was used** (reviewing an existing PR): Ask: "Want me to address any of these, or post these findings as a comment on the PR?" If the answer is to post: use `gh pr comment {pr} --body "{findings}"`. Do **not** offer to create a new PR — one already exists. **If reviewing the current branch** (no `--pr`): Ask: "Want to address any of these before opening the PR, or shall I go ahead and create it?" If the answer is to create it: `gh pr create --title "{title}" --body "{body}"`. Mention any deferred items briefly in the PR body so reviewers are aware.
View on GitHub