一键导入
portfolio-design
How Ryan designs. Use before changing style.css, page layouts in build.mjs, or adding any visual element to the site.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
How Ryan designs. Use before changing style.css, page layouts in build.mjs, or adding any visual element to the site.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Generate professional infographics, visual summaries, charts, and data visualizations directly with Gemini. A research agent (gemini-3.6-flash) grounds the topic with Google Search and engineers a precise prompt, then gemini-3.1-flash-lite-image renders it into a PNG. No browser, Playwright, or Chromium dependencies — the only requirement is Google's GenAI SDK. Fully portable to any agent CLI environment.
How Ryan writes. Use whenever drafting or editing prose or copy for this site, including work case studies, blog posts, social posts, article headlines, page copy, talk titles and abstracts, naming, social preview copy, and link summaries.
Audit publishable portfolio copy, content completeness, claims, links, canonicals, redirects, images, social metadata, accessibility, and rendered presentation. Use for every public content addition or meaningful edit before it is considered ready for review or publication.
How to add or update content on this site — work entries, blog posts, talks, pages, static assets, or a whole new content type. The CMS is the filesystem.
How Ryan presents. Use when drafting talk abstracts, outlines, speaker notes, or deck content, and when adding presentations to the site.
A collection of skills for architecting and implementing production-ready using Google Maps Platform APIs and SDKs for any map, place, address, geocoding, routing/ETA (including eco-friendly routing), nearby search, 3D / Street View / static map, marker clustering, custom styling, drawing, geofencing, heatmap, or environmental (air-quality / pollen / solar / weather) feature — across Web, Android, iOS, and Web Services APIs. Provides guidance for obtaining Google Maps Platform API keys for prototyping (no billing or Cloud project setup required) and production use.All non-trivial code is grounded in freshly retrieved docs via the Google Maps Platform Code Assist service (no reliance on training-data memory).
| name | portfolio-design |
| description | How Ryan designs. Use before changing style.css, page layouts in build.mjs, or adding any visual element to the site. |
commentsSection in build.mjs) is config-gated in site.json, loads lazily, renders only on writing detail pages, and stays out of the writer preview. Do not add further third-party scripts without updating this skill.prefers-color-scheme and the token block at the top of style.css. Never hardcode a color in a component: add or use a token. Manual html[data-theme] overrides must also set the matching color-scheme; embedded SVGs loaded through <img> evaluate their internal color-scheme media queries from that host value.scripts/artifact-cards.mjs; cards state only facts already in the entry (real commands, real published stats). Never mock a product UI or fabricate a screenshot. Utility flows such as contact, privacy, confirmation, and error pages may omit imagery when it would be decorative.height: auto; in CSS and exact width and height attributes in the HTML matching the physical image dimensions. For dynamic detail pages, query image dimensions at build time to populate these attributes.:root)--bg / --surface — warm paper background, card surface.--ink / --muted / --faint — three-step text hierarchy. Use --muted for summaries, --faint for metadata.--line — all borders and rules.--accent / --accent-ink — one blue, used for eyebrows, hover states, and focus rings only. Never for large fills.--max (page shell) and --prose (reading measure, ~44rem). Long-form text never exceeds --prose..card) for work: metadata line, title, one-line summary, tag chips. Hover = border accent + 2px lift, nothing more..card-thumb): image-on-top, demoCard-style, using a real screenshot or a generated artifact card..row) for writing and talks: title + summary left, venue/type/date right; stacks on mobile..row-thumb): a small image on writing/talks rows, same image rules as work cards.scripts/artifact-cards.mjs) for entries with no honest screenshot to show. State only facts already in the entry copy..eyebrow) label every section in uppercase accent text..empty-state) are designed, not apologetic: sections ship before their content does (see the writing section)..subscribe) and Comments (.comments): quiet bordered-top sections at the end of writing pages. The subscribe form is a plain POST to /api/subscribe (no client JS); comments are the sanctioned giscus embed described in principle 2. See docs/EMAIL_LIST_AND_COMMENTS.md.header, main, footer, nav with aria-label).aria-current="page" on active nav.:focus-visible ring on everything interactive.prefers-reduced-motion kills all transitions.--bg in both schemes: check both when touching tokens.Run the portfolio-review skill for every public visual change. Verify file signatures and dimensions rather than trusting extensions, inspect desktop and mobile renders, and use an independent visual reviewer. Check text-box padding, line wrapping, arrow endpoints, and icon clearance in the rendered image, not just the source coordinates. For generated essay visuals, archive the final prompt and settings; the header, social preview, and inline evidence image must have distinct jobs.
A past UI pass added a Google Fonts import, 3D tilt card hovers, gradient hero text, and scroll-reveal animations. None of that matched this skill: system fonts, a simple border-and-lift hover, novelty spent on writing, not chrome. It got pulled back out. Read this skill before touching style.css or page layouts. If you want to deviate on purpose, update this skill in the same PR, don't just drift from it.