Skip to content

fix(modern-web-guidance): vendor plugin into the marketplace - #299

Merged
amondnet merged 1 commit into
mainfrom
amondnet/vendor-modern-web-guidance
Nov 2, 2026
Merged

amondnet merged 1 commit into
mainfrom
amondnet/vendor-modern-web-guidance

Conversation

@amondnet

@amondnet amondnet commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

This vendors modern-web-guidance into this marketplace with skills.sh, so installing it no longer clones GoogleChrome/modern-web-guidance. That also covers frontend@passionfactory, which depends on it. This is the modern-web-guidance follow-up that chatbot-pf/engineering-standards#2681 left to this repo. It is step 2 after #297 (claude-code-docs). The two PRs are independent.

Why

  • On Claude Code 2.1.310, a remote-source plugin is cloned again on every install, even when pinned to a commit (chatbot-pf/engineering-standards#2679).
  • frontend@passionfactory declares modern-web-guidance@pleaseai as a dependency, so each of its installs paid for this clone.

Changes

  • plugins/modern-web-guidance/: installed both upstream skills (modern-web-guidance, chrome-extensions, 218 files, about 1.7 MB) from GoogleChrome/modern-web-guidance@4f2b13e with bunx skills add … --agent universal. They live under .agents/skills/ and are tracked by skills-lock.json, the same layout as ast-grep.
    • Copied the upstream Apache-2.0 LICENSE. Upstream has no NOTICE file, so there is none to carry, and the skill files are unmodified.
    • Not vendored: policies/ (a Gemini CLI tool policy that Claude Code doesn't use), assets/logo.png, and the other runtimes' upstream manifests. The skills don't reference any of them.
  • .claude-plugin/plugin.json uses "skills": "./.agents/skills/".
    • The version continues upstream's 0.0.196 rather than starting at 1.0.0. This follows #2681: existing installs never see a lower version. Release-please owns the version from here on.
  • .claude-plugin/marketplace.json: source changed from github: GoogleChrome/modern-web-guidance to ./plugins/modern-web-guidance. The plugin ID (modern-web-guidance@pleaseai) is unchanged.
  • bun scripts/cli.ts multi-format: generated the Codex, Cursor and Antigravity manifests and updated the Codex/Cursor marketplaces. I reverted the unrelated repo-wide churn, including the same csp-mcp drift and untracked portone files as in fix(claude-code-docs): vendor plugin into the marketplace #297.
  • release-please: registered plugins/modern-web-guidance at 0.0.196 with all four version-bearing manifests as extra-files. This is a fix: commit, so the next release bumps it to 0.0.197. That bump is required to move existing installs to the local copy (#2681 AC-003).
  • README: added a Built-in Plugins entry.

Upstream sync

No new workflow or script is needed. scripts/update-skills.ts finds every tracked skills-lock.json through git ls-files, so the weekly update-skills.yml job now refreshes this plugin too. It opens a fix: PR, which bumps the version through release-please. bun scripts/update-skills.ts --check plugins/modern-web-guidance reports up to date against this commit.

Related issue

Follow-up to chatbot-pf/engineering-standards#2679 / chatbot-pf/engineering-standards#2681.

Checklist

  • PR title follows Conventional Commits
  • Tests added or updated, and the suite passes: no code changed. update-skills --check passes.
  • Lint/format pass (bun run lint)
  • Documentation updated if behavior changed (README)
  • No breaking change

Validation

  • claude plugin validate plugins/modern-web-guidance passes. The only warning is that the plugin has no icon.
  • claude plugin validate .claude-plugin/marketplace.json reports the same errors as main: the reserved names claude-code-docs and claude-md-management.

Known gaps (left unchanged here)

  • multi-format does not copy the custom skills: "./.agents/skills/" path into the Codex, Cursor or Antigravity manifests. Every skills.sh plugin (for example ast-grep) has the same gap. I haven't checked whether those runtimes find .agents/skills/ on their own.
  • update-skills.ts --check deletes a lock directory that isn't tracked by git yet. It's harmless once committed, but surprising while you're adding a plugin.

After merge

  • Confirm the release PR bumps modern-web-guidance to 0.0.197, and that plugin update moves an existing install to the local copy.
  • Install frontend@passionfactory with a fresh CLAUDE_CONFIG_DIR and check the debug log has no Cloned repository line for modern-web-guidance.

Summary by cubic

Vendors modern-web-guidance into this marketplace so installing it — or frontend@passionfactory, which depends on it — no longer clones GoogleChrome/modern-web-guidance. Claude Code re-clones remote-source plugins on every install even when pinned to a commit.

Changes

  • Installs both upstream skills (modern-web-guidance, chrome-extensions) into plugins/modern-web-guidance, tracked by skills-lock.json.
  • Points .claude-plugin/marketplace.json at the local path; the plugin ID is unchanged.
  • Keeps upstream's version 0.0.196 so existing installs never see a lower version; the next release bumps to 0.0.197, which moves existing installs to the local copy.
  • Keeps the upstream Apache-2.0 LICENSE; upstream ships no NOTICE file.
  • The weekly update-skills.yml job now refreshes this plugin too.

Written for commit facee61. Summary will update on new commits.

Turn on auto-fix

Install the modern-web-guidance and chrome-extensions skills from
GoogleChrome/modern-web-guidance@4f2b13e via skills.sh into
plugins/modern-web-guidance and switch the marketplace source to the
local path, so installing the plugin (or frontend@passionfactory, which
depends on it) no longer clones the upstream repo. The skills-lock.json
puts it under the weekly update-skills.yml refresh. The upstream
Apache-2.0 LICENSE is kept; upstream ships no NOTICE file.

The version continues upstream's 0.0.196 so existing installs never see
a lower version.
@vercel

vercel Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated
claude-code-plugins Ready Ready Preview Oct 30, 2026 6:48am UTC

Request Review

@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!

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@amondnet
amondnet marked this pull request as ready for review October 30, 2026 06:47
@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!

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-30T06:50:40.620447Z facee61 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

Copy link
Copy Markdown

🔍 Tessl Skill Review

plugins/modern-web-guidance/.agents/skills/chrome-extensions/SKILL.md

score

An unusually actionable skill body: twenty mandatory rules each backed by executable broken/correct code, exact API error strings, and a publishing workflow with genuine validation checkpoints and a rejection feedback loop. The weaknesses are token efficiency — an Output Checklist that duplicates the mandatory rules and long code blocks that belong in the (excellent, verified) reference bundle — and a body heavier than a true overview.

Validation

  • ⚠️ skill_md_line_count — SKILL.md is long (531 lines); consider splitting into references/ and linking
  • ⚠️ referenced_paths_exist — Referenced path issues: 47 deeper-than-1-level
Full review details

Validation Checks

14/16 checks passed.

Review Details

Dimension Score Detail
conciseness ███░░ 3/5 The body is dense and high-signal — every rule is a non-obvious gotcha with no explanations of concepts Claude already knows — but the ~30-item Output Checklist restates the 20 Mandatory Rules nearly verbatim (e.g. '[ ] chrome.windows calls use getAll/getLastFocused/getCurrent — NOT .query()' duplicates rule 19), and rule 16 inlines a ~25-line state-machine implementation. The duplication and long inline code blocks are more than 'minor instances', so it sits at anchor 3 rather than 4; it is well above anchor 2 since there is no concept-explanation padding.
actionability █████ 5/5 Guidance is fully executable throughout: broken/correct code pairs (e.g. the side-panel 'chrome.action.onClicked' listener with 'chrome.sidePanel.open({ windowId: tab.windowId })'), exact Chrome error messages ('Unable to download all specified images.', 'targetTab doesn't have URL field set.'), and copy-paste manifest snippets covering the common extension cases. There are no gaps that would drop it to anchor 4.
workflow clarity █████ 5/5 The publishing workflow is clearly sequenced with explicit validation and feedback loops: creation/update triggers for CHROMEWEBSTORE.md, a numbered fill-out process ('Read manifest.json to extract name, version…', 'Scan the codebase for data collection'), the checkpoint 'Before submission, run through references/webstore/review-checklist.md', a rejection-recovery loop ('If the user reports a CWS rejection, update the file with the fix'), and a final 'Verify EVERY item before delivering' checklist — matching the anchor for explicit validation steps, error-recovery loops, and checklists.
progressive disclosure ████░ 4/5 The bundle structure is strong: a 23-topic reference table whose every path exists on disk (verified), 14 well-signaled inline 'See references/extensions/…' pointers, and one-level-deep references (cross-links between reference files are peer-level, not nested chains). However, the 530-line body carries reference-weight material inline (full state-machine code in rule 16, three complete code options in rule 3), so it is not the lean 'clear overview' of anchor 5 — it fits anchor 4's 'most content is appropriately placed; minor organization gaps'.

Suggestions:

  • Replace the Output Checklist's restatement of each mandatory rule with references to rule numbers (e.g. '[ ] Rules 5, 19: async/await and chrome.windows method names') so the checklist verifies without doubling the rules' token cost.
  • Move rule 16's full state-machine implementation to references/extensions/media-capture.md and keep only the pattern ('idle' → 'starting' → 'recording' → 'stopping' with chrome.storage.session locking) and the error it prevents inline.
  • Condense multi-option code blocks such as rule 3's three execution strategies to one inline example plus a pointer to references/extensions/csp-sandbox.md for the full set.

Description Review

Dimension Score Detail
specificity █████ 5/5 The description lists multiple concrete actions — 'Build and publish Chrome Extensions using Manifest V3 best practices', 'create, modify, debug, or understand', 'responding to a review rejection, writing permission justifications, or drafting a privacy policy' — comprehensively covering both the build and publish lifecycles, matching the anchor for comprehensive coverage rather than the 'minor gaps' of a 4.
completeness █████ 5/5 It explicitly answers both questions: what ('Build and publish Chrome Extensions using Manifest V3 best practices') and when ('Use this skill whenever the user asks to create, modify, debug, or understand… Trigger on mentions of: …') with concrete trigger phrases, exactly matching the anchor-5 example pattern.
trigger term quality █████ 5/5 Trigger coverage is exhaustive and natural: 'Chrome extension', 'browser extension', 'manifest.json', 'content script', 'service worker', 'side panel', 'user script', 'script manager', 'publish extension', plus synonyms like 'add-ons'. This matches the anchor for comprehensive natural terms including synonyms; nothing a user would plausibly say is missing, so it does not fall to 4.
distinctiveness conflict risk █████ 5/5 The niche (Chrome extension development and Chrome Web Store publishing) is distinct, and ambiguous terms are explicitly qualified — 'service worker' (in browser context), 'popup' (in browser extension context), 'context menu' (in extension context) — minimizing conflict with general web-development skills, which fits the 'clear niche with distinct triggers' anchor.

plugins/modern-web-guidance/.agents/skills/modern-web-guidance/SKILL.md

score

A strong, highly actionable skill body: executable commands with worked examples, a clearly sequenced search-retrieve-verify workflow with explicit checkpoints and recovery branches, and environment-specific gotchas that earn their tokens. The main improvement space is tightening the prescriptive Step 4 formatting rules and policy examples, or moving them to a reference file.

Full review details

Validation Checks

16/16 checks passed.

Review Details

Dimension Score Detail
conciseness ████░ 4/5 The body is dense with non-obvious, project-specific guidance (npx/Windows/NPM_CONFIG_CACHE gotchas, framework adaptation rules, Baseline fallback policy) and avoids explaining concepts Claude already knows, with only minor trimmable sections (the prescriptive Step 4 disclosure-format rules and the long policy-example list). Not 5: those padded spots and the inline version-pinned flag could be tightened or relocated; not 3: there is no genuinely unnecessary explanation.
actionability █████ 5/5 Copy-paste ready commands ("npx -y modern-web-guidance@latest search "" --skill-version 2026_10_16-6654652b", retrieve, list), realistic example JSON output, concrete good/bad query examples ("light dismiss dialog" vs "close React settings modal on outside click"), and truncation handling ("redirect to a file and read that file") fully cover the common cases. Anchor 4 is ruled out because no key execution detail is missing.
workflow clarity █████ 5/5 Steps 1-4 are clearly sequenced (search, judge results, retrieve, verify, disclose) with an explicit verification checkpoint ("Step 3. Verify Guidance Compliance" with two named checks) and a concrete error-recovery loop (no match → run list once; not covered → proceed without retry loops). Not 4: both the validation step and the recovery branch are explicit rather than implicit.
progressive disclosure ████░ 4/5 The SKILL.md is a well-sectioned overview whose bulk detail sits one level deep behind the tool's search/retrieve commands rather than inlined, with no nested references. Not 5: at ~118 lines it exceeds the short-skill threshold and inlines some policy content (browser-support policy examples, the disclosure format spec) that could live in a separate reference file; not 3: structure is clear and content placement is mostly appropriate.

Description Review

Dimension Score Detail
specificity ███░░ 3/5 "Search tool for modern web development best practices" names the domain plus one concrete action, but the capability side names only that single action (retrieve/verify steps are unstated in the description), matching the '1-2 concrete actions, not comprehensive' anchor. It is not 4 because it does not list several specific actions, and not 2 because the action is explicitly stated rather than minimal or generic.
completeness █████ 5/5 Both parts are explicit: the what ("Search tool for modern web development best practices") and a very explicit when ("Trigger immediately for:" category lists, "Execute FIRST for all HTML/CSS and clientside JS tasks", plus a "DO NOT trigger for" list). This clearly matches the top anchor with concrete trigger phrases, exceeding anchor 4's 'when could be more specific'.
trigger term quality █████ 5/5 Phrases like "Modals/dialogs/popovers", "dark mode", "Forms, validation (:user-valid), autofill, accessibility, custom selects, scrollbars", and "React, Vue, Angular" give comprehensive coverage of natural terms users would say, with synonyms grouped across six categories. Neighboring anchor 4 is ruled out because no common variation category is visibly missing.
distinctiveness conflict risk █████ 5/5 It carves a clear niche (modern client-side web platform guidance) and the explicit "DO NOT trigger for: Backend / Infra/Scripts / Tooling/Trivial" exclusions actively minimize mis-triggering against other skills. Anchor 4's 'minor overlap risk' understates the boundary protection provided.

To improve your score, point your agent at the Tessl optimization guide. Need help? Jump on our Discord.

Feedback

Report issues with this review at tesslio/skill-review, or send private feedback from your terminal with tessl feedback.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: facee6120b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@greptile-apps

greptile-apps Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no actionable issues were found.

Summary

Vendors modern-web-guidance into the marketplace so installation uses the local plugin rather than cloning its upstream repository.

  • The marketplace installs Modern Web Guidance from its local copy.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Marketplace[Marketplace entry] --> Local[Local modern-web-guidance plugin]
  Local --> Manifest[Claude manifest]
  Manifest --> Skills[Two bundled skills]
  Lock[Tracked skills-lock.json] --> Updater[Existing weekly refresh]
  Updater --> Skills
  Release[release-please] --> Versions[Four plugin manifest versions]
Loading

Reviews (1) · Last reviewed commit: "fix(modern-web-guidance): vendor plugin ..." · Reviewed by Greptile

@sonarqubecloud

Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot 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.

All reported issues were addressed across 230 files

Note: This PR contains a large number of files. cubic selects up to 200 of the highest-priority eligible files for this review, so some files may not have been reviewed.

Turn on auto-fix | Re-trigger cubic

@amondnet
amondnet merged commit e334a87 into main Nov 2, 2026
14 checks passed
@amondnet
amondnet deleted the amondnet/vendor-modern-web-guidance branch November 2, 2026 03:29

This branch was successfully deployed

1 active deployment
Preview — facee612 Deployed Oct 30, 2026 by vercel[bot]
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