Skip to content

feat(skills): add responsive-layout-audit 🤖🤖🤖 - #5076

Closed
furukawa658 wants to merge 4 commits into
github:mainfrom
furukawa658:feat/responsive-layout-audit
Closed

furukawa658 wants to merge 4 commits into
github:mainfrom
furukawa658:feat/responsive-layout-audit

Conversation

@furukawa658

Copy link
Copy Markdown
Contributor

PR Draft: responsive-layout-audit

Title

feat(skills): add responsive-layout-audit skill 🤖🤖🤖

Summary

Add responsive-layout-audit, a Playwright-based skill for responsive UI audit across multiple viewports.
The skill separates page-level horizontal overflow from intentional region-level horizontal scrolling,
captures evidence (layout-report.json + PNG), and reports review candidates such as:

  • page-horizontal-overflow
  • text-clipping-candidate
  • action-outside-viewport-candidate
  • hit-test-obstruction-candidate

It also redacts secret-like query parameter values in the report target URL.

Why this adds value

  • Provides a reusable, testable audit workflow instead of ad-hoc manual viewport checks.
  • Distinguishes "page bug" vs "intentional scroll container" with explicit region probes.
  • Produces machine-readable evidence for follow-up review, not just screenshots.

Contents

  • New skill folder: skills/responsive-layout-audit/
    • SKILL.md
    • scripts/layout-audit.mjs
    • tests/layout-audit.test.mjs
    • tests/fixtures/intentional-scroll.html
    • tests/fixtures/page-overflow.html
  • Generated update:
    • docs/README.skills.md

Verification

Executed in local awesome-copilot working tree.

  1. npm run skill:validate
  • Result: pass
  • Evidence: all 430 skills validated; no skill-specific error for this addition.
  1. npm run build
  • Result: pass
  • Evidence: README generation and marketplace generation completed.
  • Note: warning lines from existing external.json entries are pre-existing and not introduced by this skill.
  1. Functional checks with fixtures
  • intentional-scroll.html
    • page overflow false
    • region endReached=true, edgeVisible=true
    • clipping and hit-test candidates detected
  • redaction target with access_token=secret-value
    • output target contains access_token=REDACTED
  • page-overflow.html
    • page overflow true
    • page-horizontal-overflow candidate detected

Limitations

  • Findings are candidates for human review, not final defect verdicts.
  • The tool does not click elements; hit-test is sampled-point obstruction detection.
  • Redaction currently targets secret-like query keys and userinfo fields; it is not a full anonymization system.

Disclosure

  • This contribution was prepared with AI assistance.
  • Local checks are not maintainer approval.

Copilot AI balanced review requested due to automatic review settings October 14, 2026 11:02
@furukawa658
furukawa658 requested review from a team as code owners October 14, 2026 11:02
@github-actions github-actions Bot added new-submission PR adds at least one new contribution skills PR touches skills labels Oct 14, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🔒 PR Risk Scan Results

Scanned 5 changed file(s).

Severity Count
🔴 High 0
🟠 Medium 0
ℹ️ Info 2
Severity Rule File Line Match
ℹ️ skill-script-touched skills/responsive-layout-audit/scripts/layout-audit.mjs 1 skills/responsive-layout-audit/scripts/layout-audit.mjs
ℹ️ skill-script-touched skills/responsive-layout-audit/tests/layout-audit.test.mjs 1 skills/responsive-layout-audit/tests/layout-audit.test.mjs

This is an automated soft-gate report. Findings indicate review targets and do not block merge by themselves.

@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

🚦 Submission status: 👀 Ready for review

Risk tier: merge-risk:high — Privileged execution, automation, or review-policy change
Required to merge: passing submission-gate checks plus 1 approval from reviewers with write access, including a maintainer with admin or maintain permission.

Why this tier
  • skills/responsive-layout-audit/scripts/layout-audit.mjs is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • Spawns processes or evaluates code in skills/responsive-layout-audit/tests/layout-audit.test.mjs

Automated checks

Check Status Details
Line endings ✅ Passed Passed · logs
Spelling ✅ Passed Passed · logs
Generated README consistency ✅ Passed Passed · logs
Skill validation ✅ Passed Passed · logs
Skill lint (vally) ✅ Passed Passed · logs
Risk scan ✅ Passed Passed · logs
Contributor reputation ✅ Passed Passed · logs
Duplicate resource scan ✅ Passed Passed · logs
PR quality signal ⏭️ Skipped Skipped by its workflow · logs

Review

  • Approvals: 0/1
  • Assigned reviewer: not assigned yet — comment /request-review to ask for one
  • Review target date: not set
  • Still needed: 1 more approval(s); an approval from a maintainer with admin or maintain permission
  • The core-maintainers pool is not staffed yet; an approver with admin or maintain permission is required instead.

Commands

Command Who What it does
/rerun-checks PR author, maintainers Re-runs failed or incomplete checks and re-evaluates this gate
/request-review PR author, maintainers Asks the review rotation to assign a reviewer (adds needs-reviewer)

Updated for ba35580 · gate run · This comment is maintained automatically — see submission gate docs.

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Vally Lint Results

✅ All checks passed

Scope Checked
Skills 1
Agents 0
Total 1
Severity Count
❌ Errors 0
⚠️ Warnings 0
ℹ️ Advisories 0

Summary

Level Finding
ℹ️ ✅ responsive-layout-audit (2/2 checks passed)
ℹ️ ✓ [spec-compliance] All 1 skill(s) are spec-compliant.
ℹ️ ✓ spec-compliance: All spec checks passed.
ℹ️ ✓ [valid-refs] All file references across 1 skill(s) are valid.
ℹ️ ✓ valid-refs: All file references resolve to existing files within the skill directory.
ℹ️ 1 skill(s) linted, 1 passed
Full linter output
### Linting skills/responsive-layout-audit
✅ responsive-layout-audit (2/2 checks passed)
    ✓ [spec-compliance] All 1 skill(s) are spec-compliant.
        ✓ spec-compliance: All spec checks passed.
    ✓ [valid-refs] All file references across 1 skill(s) are valid.
        ✓ valid-refs: All file references resolve to existing files within the skill directory.

1 skill(s) linted, 1 passed

@github-actions github-actions Bot added ready-for-review Submission passed intake validation and is ready for maintainer review and removed awaiting-automation labels Oct 14, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

Correctness and portability gaps affect clipping detection, below-fold hit testing, RTL scrolling, and browser setup.

9 open findings
What changed in this PR

Adds a reusable Playwright-based responsive layout auditing skill with machine-readable evidence.

Changes:

  • Adds overflow, clipping, hit-testing, and scroll-region analysis.
  • Adds fixtures and functional tests.
  • Registers the skill in generated documentation.

Knowledge uplift: High — the deterministic audit script provides functionality beyond existing general web-testing guidance.

File Description
skills/​responsive-layout-audit/​SKILL.md Documents usage and findings.
skills/​responsive-layout-audit/​scripts/​layout-audit.mjs Implements the audit engine.
skills/​responsive-layout-audit/​tests/​layout-audit.test.mjs Tests core audit behavior.
skills/​responsive-layout-audit/​tests/​fixtures/​intentional-scroll.html Provides scrolling and obstruction cases.
skills/​responsive-layout-audit/​tests/​fixtures/​page-overflow.html Provides page-overflow coverage.
docs/​README.skills.md Registers the new skill.

🧠 Review effort: Balanced


💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread skills/responsive-layout-audit/scripts/layout-audit.mjs Outdated
Comment thread skills/responsive-layout-audit/scripts/layout-audit.mjs Outdated
Comment thread skills/responsive-layout-audit/scripts/layout-audit.mjs Outdated
Comment thread skills/responsive-layout-audit/scripts/layout-audit.mjs Outdated
Comment thread skills/responsive-layout-audit/scripts/layout-audit.mjs Outdated
Comment thread skills/responsive-layout-audit/scripts/layout-audit.mjs
Comment thread skills/responsive-layout-audit/scripts/layout-audit.mjs Outdated
Comment thread skills/responsive-layout-audit/tests/layout-audit.test.mjs Outdated
Comment thread skills/responsive-layout-audit/SKILL.md Outdated
Copilot AI balanced review requested due to automatic review settings October 14, 2026 13:08
@github-actions github-actions Bot added awaiting-automation ready-for-review Submission passed intake validation and is ready for maintainer review and removed ready-for-review Submission passed intake validation and is ready for maintainer review awaiting-automation labels Oct 14, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

The report can expose plaintext form values, and clipping detection has a confirmed false-positive condition.

2 open findings
9 resolved since last review
Previously missed (1)

In code that hasn't changed since last review

Medium severity Require clipping overflow before reporting text-overflow ellipsis

skills/​responsive-layout-audit/​scripts/​layout-audit.mjs:164

text-overflow: ellipsis does not itself clip content; with overflow-x: visible (or a scrollable overflow), the text remains available, but this condition still emits a clipping candidate. Require an actually clipping overflow mode so the report does not produce a known false positive. The regression fixture should also combine text-overflow: ellipsis with its visible-overflow case.

🧠 Review effort: Balanced

Comment thread skills/responsive-layout-audit/scripts/layout-audit.mjs Outdated
const originalScroll = [...document.querySelectorAll("*")].filter(element => element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth).map(element => ({element, left: element.scrollLeft, top: element.scrollTop}));
for (const [index, element] of interactive.entries()) {
const originalRect = elements[index].rect;
if ((originalRect.left < -1 || originalRect.right > viewportWidth + 1) && !hasHorizontalScrollAncestor(element)) {
Copilot AI balanced review requested due to automatic review settings October 14, 2026 13:40
@github-actions github-actions Bot added ready-for-review Submission passed intake validation and is ready for maintainer review and removed ready-for-review Submission passed intake validation and is ready for maintainer review awaiting-automation labels Oct 14, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔵 Needs a closer look

The clipping detector currently reports false positives when ellipsis is configured without clipping overflow.

1 open finding
1 resolved since last review
Previously missed (1)

In code that hasn't changed since last review

Medium severity Require clipping overflow before reporting ellipsis text clipping

skills/​responsive-layout-audit/​scripts/​layout-audit.mjs:164

text-overflow: ellipsis does not itself clip content; with overflow-x: visible, the text remains rendered outside the box. The || style.textOverflow === "ellipsis" branch therefore reports text-clipping-candidate for content that is not clipped. Require a clipping overflow mode (and add a regression fixture with ellipsis plus visible overflow).

🧠 Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 14, 2026 14:00
@github-actions github-actions Bot added awaiting-automation ready-for-review Submission passed intake validation and is ready for maintainer review and removed ready-for-review Submission passed intake validation and is ready for maintainer review awaiting-automation labels Oct 14, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

The skill is differentiated, documented, syntactically valid, and supported by focused functional tests.

1 open finding

🧠 Review effort: Balanced

@aaronpowell

Copy link
Copy Markdown
Contributor

This skill isn't really adding a major uplift, it's more acting as an opinionated wrapper around playwright.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk:high new-submission PR adds at least one new contribution ready-for-review Submission passed intake validation and is ready for maintainer review skills PR touches skills

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants