Repository navigation
fix(modern-web-guidance): vendor plugin into the marketplace - #299
Conversation
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.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
Up to standards ✅🟢 Issues
|
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
🔍 Tessl Skill Review
|
| 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
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.
There was a problem hiding this comment.
💡 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".
[Medium impact] The PR appears safe to merge; no actionable issues were found. SummaryVendors
|
|
There was a problem hiding this comment.
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



Summary
This vendors
modern-web-guidanceinto this marketplace with skills.sh, so installing it no longer clonesGoogleChrome/modern-web-guidance. That also coversfrontend@passionfactory, which depends on it. This is themodern-web-guidancefollow-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
frontend@passionfactorydeclaresmodern-web-guidance@pleaseaias 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) fromGoogleChrome/modern-web-guidance@4f2b13ewithbunx skills add … --agent universal. They live under.agents/skills/and are tracked byskills-lock.json, the same layout asast-grep.LICENSE. Upstream has noNOTICEfile, so there is none to carry, and the skill files are unmodified.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.jsonuses"skills": "./.agents/skills/"..claude-plugin/marketplace.json: source changed fromgithub: GoogleChrome/modern-web-guidanceto./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 samecsp-mcpdrift and untrackedportonefiles as in fix(claude-code-docs): vendor plugin into the marketplace #297.plugins/modern-web-guidanceat 0.0.196 with all four version-bearing manifests asextra-files. This is afix: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).Upstream sync
No new workflow or script is needed.
scripts/update-skills.tsfinds every trackedskills-lock.jsonthroughgit ls-files, so the weeklyupdate-skills.ymljob now refreshes this plugin too. It opens afix:PR, which bumps the version through release-please.bun scripts/update-skills.ts --check plugins/modern-web-guidancereportsup to dateagainst this commit.Related issue
Follow-up to chatbot-pf/engineering-standards#2679 / chatbot-pf/engineering-standards#2681.
Checklist
update-skills --checkpasses.bun run lint)Validation
claude plugin validate plugins/modern-web-guidancepasses. The only warning is that the plugin has no icon.claude plugin validate .claude-plugin/marketplace.jsonreports the same errors asmain: the reserved namesclaude-code-docsandclaude-md-management.Known gaps (left unchanged here)
skills: "./.agents/skills/"path into the Codex, Cursor or Antigravity manifests. Every skills.sh plugin (for exampleast-grep) has the same gap. I haven't checked whether those runtimes find.agents/skills/on their own.update-skills.ts --checkdeletes 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
modern-web-guidanceto 0.0.197, and thatplugin updatemoves an existing install to the local copy.frontend@passionfactorywith a freshCLAUDE_CONFIG_DIRand check the debug log has noCloned repositoryline formodern-web-guidance.Summary by cubic
Vendors
modern-web-guidanceinto this marketplace so installing it — orfrontend@passionfactory, which depends on it — no longer clonesGoogleChrome/modern-web-guidance. Claude Code re-clones remote-source plugins on every install even when pinned to a commit.Changes
modern-web-guidance,chrome-extensions) intoplugins/modern-web-guidance, tracked byskills-lock.json..claude-plugin/marketplace.jsonat the local path; the plugin ID is unchanged.LICENSE; upstream ships no NOTICE file.update-skills.ymljob now refreshes this plugin too.Written for commit facee61. Summary will update on new commits.