Authoring
automagik-dev/genie
Write or revise a Genie skill so it survives the shipped contract — frontmatter, house size, starter card, and runtime-neutral voice.
Best practices for authoring guidance. An agent skill from GoogleChrome/modern-web-guidance-src.
$ npx skills add GoogleChrome/modern-web-guidance-src --skill project-guides -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install GoogleChrome/modern-web-guidance-src project-guides --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/GoogleChrome/modern-web-guidance-src.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/project-guides .claude/skills/project-guides && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "project-guides" agent skill from https://github.com/GoogleChrome/modern-web-guidance-src/tree/main/.agents/skills/project-guides into .claude/skills/project-guides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-guides", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/GoogleChrome/modern-web-guidance-src/tree/main/.agents/skills/project-guidesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add GoogleChrome/modern-web-guidance-src --skill project-guides -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install GoogleChrome/modern-web-guidance-src project-guides --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GoogleChrome/modern-web-guidance-src.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/project-guides .agents/skills/project-guides && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "project-guides" agent skill from https://github.com/GoogleChrome/modern-web-guidance-src/tree/main/.agents/skills/project-guides into .agents/skills/project-guides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-guides", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add GoogleChrome/modern-web-guidance-src --skill project-guides -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install GoogleChrome/modern-web-guidance-src project-guides --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GoogleChrome/modern-web-guidance-src.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/project-guides .cursor/skills/project-guides && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "project-guides" agent skill from https://github.com/GoogleChrome/modern-web-guidance-src/tree/main/.agents/skills/project-guides into .cursor/skills/project-guides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-guides", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/GoogleChrome/modern-web-guidance-src.git --path .agents/skills/project-guides--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add GoogleChrome/modern-web-guidance-src --skill project-guides -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install GoogleChrome/modern-web-guidance-src project-guides --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GoogleChrome/modern-web-guidance-src.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/project-guides .gemini/skills/project-guides && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "project-guides" agent skill from https://github.com/GoogleChrome/modern-web-guidance-src/tree/main/.agents/skills/project-guides into .gemini/skills/project-guides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-guides", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install GoogleChrome/modern-web-guidance-src project-guidesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add GoogleChrome/modern-web-guidance-src --skill project-guides -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/GoogleChrome/modern-web-guidance-src.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/project-guides .github/skills/project-guides && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "project-guides" agent skill from https://github.com/GoogleChrome/modern-web-guidance-src/tree/main/.agents/skills/project-guides into .github/skills/project-guides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-guides", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add GoogleChrome/modern-web-guidance-src --skill project-guides -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install GoogleChrome/modern-web-guidance-src project-guides --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GoogleChrome/modern-web-guidance-src.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/project-guides .opencode/skills/project-guides && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "project-guides" agent skill from https://github.com/GoogleChrome/modern-web-guidance-src/tree/main/.agents/skills/project-guides into .opencode/skills/project-guides/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-guides", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
project-guidesBest practices for authoring guidance. An agent skill from GoogleChrome/modern-web-guidance-src.
Project Guides is an agent skill from GoogleChrome/modern-web-guidance-src. Best practices for authoring guidance. Use this skill any time you're writing or reviewing guide.md files.
Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The licence is Apache-2.0.
Read from SKILL.md and the folder at commit 271a550. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
nodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Project Guides loads about 3.9k tokens when it runs. Until then it costs about 31 tokens; SKILL.md has 1,985 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from GoogleChrome/modern-web-guidance-src at commit 271a550, republished under its Apache-2.0 licence (© GoogleChrome). 1,985 words, ~3,939 tokens.
.claude/skills/project-guides/SKILL.md (or your agent's skills folder).This is the second of three stages in creating guidance:
When a developer asks an AI coding assistant to implement something, the assistant retrieves the relevant guide.md via a RAG (vector search) system. guide.md is the only project file a real-world coding agent ever sees. Everything else in a use case directory is eval infrastructure:
| File/Directory | Purpose | Seen by real-world agents? |
|---|---|---|
guide.md | Guidance for implementing the use case | ✅ Yes — this is the only file |
expectations.md | Verification criteria used to generate target evaluation suites | ❌ No |
targets/<base_app>/solution.patch | Golden diff against clean base app used to calibrate the grader | ❌ No |
targets/<base_app>/zero-passrate.patch | Guidance-absent diff used to verify grader assertions fail when requirements are not implemented | ❌ No |
targets/<base_app>/grader.ts | Playwright test suite run against the eval agent's output | ❌ No |
targets/<base_app>/task.md | Simulated developer prompts fed to the eval agent by the harness | ❌ No |
Implication for authoring (guide.md & expectations.md): Authors and SMEs strictly author guide.md and expectations.md. You do not hand-author solution.patch, zero-passrate.patch, grader.ts, or task.md. Once guide.md and expectations.md are authored, running gd dev <guide> automatically loops across SUPPORTED_BASE_APPS (daily-grind and devtools-times) inside safe temporary /tmp/ sandboxes to generate and calibrate the evaluation capsules under targets/<base_app>/, runs agent evaluations, and produces an evaluation diagnostic report (test-app-results/report.md). Running gd pr <guide> then automatically commits, pushes, detects PR labels (gd-dev-content or gd-dev-eval), and opens the Pull Request.
Implication for guide.md: Because guide.md is the agent's only source of truth, it must be entirely self-contained. Do not rely on agents reading expectations.md, any target patch, or any external link to understand how to implement the use case.
MANDATORY RULES FOR WRITING guide.md:
guide.md must start with this YAML frontmatter structure (added in Stage 1):
---
name: slugified-use-case-name
description: <do thing> <with feature> (e.g., "Create dynamic color systems using modern color syntax")
web-feature-ids:
- webstatus-feature-id
---tmp- prefix): If a feature ID is pending upstream in @web-platform-dx/web-features (e.g. an open issue), use tmp-<candidate-slug> (e.g. tmp-scroll-axis-lock) in guide.md AND register it in features/pending-web-features.json along with its upstream issue link. Optionally add group (a web-features group ID like scrolling, or an array of them) so ATL triage routes it to that group's owner in guides/atls.json (then run node --experimental-strip-types guides/generate-feature-to-groups.ts), and compat_features (a @mdn/browser-compat-data key or array of keys, e.g. ["css.properties.scroll-axis-lock"]) so CI can detect when the feature graduates upstream even if web-features chooses a different final ID than <candidate-slug>. On the GitHub new-feature issue itself, annotate the predicted final ID without the tmp- prefix (<candidate-slug>); the sync and triage scripts automatically strip tmp- when matching guides to issues. When the feature ID is officially released upstream in web-features, validator checks will automatically fail in CI to prompt updating the frontmatter to the official ID.draft: true (or any truthy value, e.g. draft: future) to withhold the guide from all distribution (search index, README, skills distribution) without deleting it. Set draft: stub when a stub includes author notes in the markdown body so it is still inventoried and validated as a stub. Omit for normal publishing.MANDATORY:, DO, DO NOT) only when emphasis is strictly needed (e.g., for critical constraints, security, or common pitfalls). Do not overuse them for every single instruction. Coding agents respond best to rigid constraints when they are selectively applied.[link text](url)), and DO NOT rely on internal {{ GUIDE_REF("...") }} cross-references to supply required implementation details. All required knowledge to use the feature MUST be fully synthesized into the markdown body (or transcluded at build time via INCLUDE/FEATURE). Agents must not be slowed down or require additional retrievals to implement the guidance.behavior, color, synchronize, center, optimize, etc.) for consistency across documentation, RAG tokens, and search embeddings.<!-- Always use the required attribute -->).import/export) in JavaScript code examples; avoid CommonJS (require).2rem or 50ms) as example-only in comments to avoid them being mistaken for strict technical constraints.MANDATORY if they are truly required for the feature to function. Optional steps (e.g., adding scroll snap, adding an event listener for progressive enhancement) must be labeled as optional. Incorrect use of MANDATORY causes agents to implement unnecessary complexity.demo.html or any other file — agents won't have access to them. Everything the agent needs to implement the use case must be in guide.md.If the primary implementation uses features that are not Baseline Widely Available, you MUST include a fallback recommendation in this section.
Object.hasOwn(HTMLElement.prototype, 'onbeforematch') over 'onbeforematch' in window){{ FEATURE_FALLBACKS("feature-id") }} (preferred) or {{ BASELINE_STATUS("feature-id") }} as a standalone line for every non-widely available feature used.FEATURE_FALLBACKS so that fallbacks can be centralized. If there is no features/<feature-id>.md, create it.BASELINE_STATUS directly when you need the BCD-key second argument: {{ BASELINE_STATUS("feature-id", "bcd.key") }}. This is useful when a critical sub-feature's status differs from the overall feature status.BASELINE_STATUS directly when the fallback strategy is too specific to the use case or the feature is only used in one guide, so creating a separate features/<feature-id>.md would be premature.{{ BASELINE_STATUS("feature-id") }} for features that became Baseline Widely Available within the last 12 months (such as subgrid or :has()), or that are commonly misjudged by coding agents as lacking support. This affirmatively reassures coding agents whose training data might predate wide availability that the feature is universally supported without needing defensive fallbacks.| Macro | What it emits |
|---|---|
{{ BASELINE_STATUS("feature-id"[, "bcd.key"]) }} | "Baseline status for <Feature>: Widely/Newly available..." or "Browser support for <Feature>: Limited availability". |
{{ INCLUDE("path[#section]") }} | Whole markdown file (frontmatter + leading # H1 stripped) or one section (its heading dropped). Bare paths resolve from repo root; .//../ resolve relative to the calling file. |
{{ FEATURE("feature-id", "section") }} | Sugar for INCLUDE("features/<feature-id>.md#<section>"). |
{{ FEATURE_FALLBACKS("feature-id") }} | ### Fallbacks & browser support for <Feature name> + BASELINE_STATUS + the #fallbacks section. If #fallbacks is empty, emits only BASELINE_STATUS (no heading). |
{{ FEATURE_ISSUES("feature-id") }} | ### Issues to be aware of when using <Feature name> + the #issues section. Returns "" if #issues is empty/missing. |
{{ GUIDE_REF("guide-slug") }} | Cross-reference to another guide (\guide-slug` (via `npx -y modern-web-guidance@latest retrieve "guide-slug"`)inskills-cli; relative path in local-dev; markdown link in static-site`). |
MacroError (build fails loudly). Missing referenced content in INCLUDE/FEATURE (file or section) → silent "", so guides can reference content that doesn't exist yet.### Fallback strategies → fallback-strategies), or an explicit {#id} suffix on the heading.GUIDE_REFCoding agents mostly discover and batch-retrieve guides upfront (retrieve "a,b") from search or list results, and rarely follow cross-references after reading a guide.
GUIDE_REF for requirements of the current guide: Anything needed to implement this guide's use case — core rules, shared prerequisites, accessibility requirements, or fallbacks — must be inlined in guide.md or transcluded at build time via INCLUDE/FEATURE.GUIDE_REF to point to a separate use case that is out of scope for the current guide:passkeys or web-components routing to specific use-case guides).progress-ring vs. spinner for determinate vs. indeterminate loading, or usage-aware-component-variations vs. design-token-reactivity).forms pointing to ime-safe-enter-submit for Enter-key submission during IME composition).features/When the same feature-level content (intro, fallback patterns, a11y, gotchas) applies to multiple guides, extract it into features/<feature-id>.md and pull it in with the macros above. Rule of thumb: extract if two or more guides cover the same web-feature-id and repeat the same advice. Standard section names: ## Fallbacks (used by FEATURE_FALLBACKS), ## Issues (used by FEATURE_ISSUES); add others as needed and pull them with FEATURE. Verify your include resolved by inspecting the build output (serving/build/guides/<category>/<id>.md) — silent misses won't fail the build.
expectations.md and demo.htmlexpectations.md: Write a natural language, bulleted list of assertions that must be true if an agent implements the guide.md correctly. (e.g., "The input element is styled with a red border only AFTER a blur event").demo.html: The demo.html file should be a clean example of a correct implementation of the use case. If possible, it should be self-contained with inline scripts and styles.© GoogleChrome, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/project-guides of GoogleChrome/modern-web-guidance-src.
Open the folder on GitHubat commit 271a550
Project Guides next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Project Guides this skillGoogleChrome/modern-web-guidance-src | 1.1k | — | ~3.9k | Automated safety check: Pass | Apache-2.0 | |
| Authoringautomagik-dev/genie | 346 | — | ~1k | Automated safety check: Pass | MIT | |
| AuthoringOdradekAI/bundles-forge | 229 | — | ~3k | Automated safety check: Pass | Apache-2.0 | |
| Authoringactiveing123/mcptoon | 215 | 1 repos | ~559 | Automated safety check: Pass | Apache-2.0 | |
| Hermes Agent Skill AuthoringNousResearch/hermes-agent | 252k | — | ~3.6k | Automated safety check: Pass | MIT | |
| Configuring Oauth2 Authorization Flowmukul975/Anthropic-Cybersecurity-Skills | 34k | — | ~1.7k | Automated safety check: Pass | Apache-2.0 |
automagik-dev/genie
Write or revise a Genie skill so it survives the shipped contract — frontmatter, house size, starter card, and runtime-neutral voice.
OdradekAI/bundles-forge
A skill your agent uses when writing, completing, improving, or adapting SKILL.md and agents/.md in a bundle-plugin — integrating external skills, filling scaffolded stubs, or rewriting for better…
activeing123/mcptoon
Add or edit an MCP server entry in mcptoon's config correctly — stdio/streamable-http/sse shapes, command rules, placeholders, and validation.
NousResearch/hermes-agent
Author in-repo SKILL.md files: frontmatter and structure. An agent skill from NousResearch/hermes-agent.
mukul975/Anthropic-Cybersecurity-Skills
Configures secure OAuth 2.0 authorization flows, including Authorization Code with PKCE, Client Credentials, and Device Authorization Grant, covering flow selection, PKCE implementation, token…
vercel/next.js
How to create and maintain agent skills in .agents/skills/. An agent skill from vercel/next.js.
GoogleChrome/modern-web-guidance-src
Downloads and analyzes the latest three distinct nightly evaluation runs (Claude Code, Codex CLI, and Jetski CLI) from the GCS remote dashboard to identify and flag unhealthy or low-performing tasks…
GoogleChrome/modern-web-guidance-src
Build and publish Chrome Extensions using Manifest V3 best practices.
GoogleChrome/modern-web-guidance-src
Run a document coherence, link integrity, and git repository status audit across repository markdown files using a dedicated subagent.
GoogleChrome/modern-web-guidance-src
Action-oriented guidelines for privacy by design, data minimization, third-party audits, and modern browser privacy APIs.
GoogleChrome/modern-web-guidance-src
Coding style, architectural conventions, and PR review standards for the modern-web-guidance-src (guidance) repository.
GoogleChrome/modern-web-guidance-src
Workflow for refactoring discipline-level guides (e.g., JavaScript, CSS) to remove "Common Knowledge" by generating and comparing against model-specific "Knowledge Mirrors".
Best practices for authoring guidance. An agent skill from GoogleChrome/modern-web-guidance-src. Project Guides is an agent skill from GoogleChrome/modern-web-guidance-src. Best practices for authoring guidance.
Run `npx skills add GoogleChrome/modern-web-guidance-src --skill project-guides -a claude-code`. Or copy the skill folder (.agents/skills/project-guides in GoogleChrome/modern-web-guidance-src) into .claude/skills/project-guides in your project. Claude Code loads it when a task matches its description.
Run `npx skills add GoogleChrome/modern-web-guidance-src --skill project-guides -a codex`. Or copy the skill folder (.agents/skills/project-guides in GoogleChrome/modern-web-guidance-src) into .agents/skills/project-guides in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add GoogleChrome/modern-web-guidance-src --skill project-guides -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/project-guides, .gemini/skills/project-guides, .github/skills/project-guides and .opencode/skills/project-guides in your project.
Going by SKILL.md and its folder, Project Guides needs the command-line tools its instructions call (node).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Project Guides is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.9k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Project Guides: Authoring (automagik-dev/genie, 346 stars), Authoring (OdradekAI/bundles-forge, 229 stars), Authoring (activeing123/mcptoon, 215 stars) and Hermes Agent Skill Authoring (NousResearch/hermes-agent, 252k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
GoogleChrome (a GitHub organization) maintains it in GoogleChrome/modern-web-guidance-src, which has 1,138 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 8, 2026.
Source: GoogleChrome/modern-web-guidance-src on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.