npx skills add https://github.com/jaredlander/freshbooks-speed --skill css遵循当前最佳实践,编写现代、高性能、可维护的 CSS,深入了解浏览器兼容性和 CSS 规范。
重要提示:当您需要查阅 CSS 属性、语法、浏览器兼容性或规范细节时,请使用 context7 MCP 工具查询 MDN 和其他文档源。
# 查阅 CSS 属性
context7 "CSS flexbox properties"
context7 "CSS grid-template-areas syntax"
context7 "CSS custom properties inheritance"
# 检查浏览器兼容性
context7 "CSS container queries browser support"
context7 "CSS :has() selector compatibility"
# 查找最佳实践
context7 "CSS performance optimization"
context7 "CSS naming conventions BEM"
# 探索现代特性
context7 "CSS cascade layers @layer"
context7 "CSS subgrid"
context7 "CSS color-mix function"
在以下情况使用 context7:
/* 常见的 flex 模式 */
.container {
display: flex;
gap: 1rem; /* 间距优先使用 gap 而非 margin */
}
/* 居中内容 */
.centered {
display: flex;
justify-content: center;
align-items: center;
}
/* 响应式 flex 换行 */
.flex-wrap {
display: flex;
flex-wrap: wrap;
gap: 1rem;
}
.flex-wrap > * {
flex: 1 1 300px; /* 增长,收缩,基础值 */
}
/* 常见的 flex 工具类 */
.flex-1 { flex: 1; }
.flex-none { flex: none; }
.flex-auto { flex: auto; }
Write modern, performant, maintainable CSS following current best practices with deep knowledge of browser compatibility and CSS specifications.
IMPORTANT : When you need to look up CSS properties, syntax, browser compatibility, or spec details, use the context7 MCP tool to query MDN and other documentation sources.
# Look up CSS properties
context7 "CSS flexbox properties"
context7 "CSS grid-template-areas syntax"
context7 "CSS custom properties inheritance"
# Check browser compatibility
context7 "CSS container queries browser support"
context7 "CSS :has() selector compatibility"
# Find best practices
context7 "CSS performance optimization"
context7 "CSS naming conventions BEM"
# Explore modern features
context7 "CSS cascade layers @layer"
context7 "CSS subgrid"
context7 "CSS color-mix function"
Use context7 whenever :
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
/* 使用 auto-fit 的响应式网格 */
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 2rem;
}
/* 使用命名网格区域实现语义化布局 */
.layout {
display: grid;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
grid-template-columns: 250px 1fr;
grid-template-rows: auto 1fr auto;
min-height: 100vh;
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.footer { grid-area: footer; }
/* 用于类砖石布局的密集填充 */
.masonry {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
grid-auto-flow: dense;
gap: 1rem;
}
/* 容器查询设置 */
.card-container {
container-type: inline-size;
container-name: card;
}
/* 查询容器,而非视口 */
@container card (min-width: 400px) {
.card {
display: grid;
grid-template-columns: 150px 1fr;
}
}
@container card (min-width: 600px) {
.card {
grid-template-columns: 200px 1fr;
}
}
:root {
/* 颜色系统 */
--color-primary: #0066cc;
--color-primary-dark: #004499;
--color-surface: #ffffff;
--color-text: #1a1a1a;
/* 间距比例 */
--space-xs: 0.25rem;
--space-sm: 0.5rem;
--space-md: 1rem;
--space-lg: 2rem;
--space-xl: 4rem;
/* 排版 */
--font-sans: system-ui, -apple-system, sans-serif;
--font-mono: 'Fira Code', monospace;
/* 使用数据属性的深色模式 */
--bg: var(--color-surface);
--fg: var(--color-text);
}
[data-theme="dark"] {
--color-surface: #1a1a1a;
--color-text: #e5e5e5;
}
/* 使用自定义属性 */
.button {
background: var(--color-primary);
padding: var(--space-sm) var(--space-md);
font-family: var(--font-sans);
}
/* 定义层顺序 - 特异性最低的优先 */
@layer reset, base, components, utilities;
@layer reset {
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
}
@layer base {
body {
font-family: system-ui, sans-serif;
line-height: 1.5;
}
}
@layer components {
.button {
padding: 0.5rem 1rem;
border-radius: 0.25rem;
}
}
@layer utilities {
.text-center { text-align: center; }
.hidden { display: none; }
}
/* 用于分组的 :is()(不增加特异性) */
:is(h1, h2, h3) {
font-weight: 700;
line-height: 1.2;
}
/* 零特异性的 :where() */
:where(.card, .panel) > :where(h2, h3) {
margin-top: 0;
}
/* 用于父元素选择的 :has() */
.card:has(img) {
display: grid;
grid-template-columns: 200px 1fr;
}
.form:has(:invalid) .submit-button {
opacity: 0.5;
pointer-events: none;
}
/* 用于国际化的逻辑属性 */
.element {
margin-inline-start: 1rem; /* 替代 margin-left */
padding-block: 2rem; /* 替代 padding-top 和 padding-bottom */
border-inline-end: 1px solid; /* 替代 border-right */
}
/* 仅对 transform 和 opacity 进行动画以实现 60fps */
.smooth-animation {
/* 给浏览器的优化提示 */
will-change: transform;
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.smooth-animation:hover {
transform: translateY(-4px);
}
/* 动画后移除 will-change */
.smooth-animation:not(:hover) {
will-change: auto;
}
/* 复杂的关键帧动画 */
@keyframes slideInFade {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate-in {
animation: slideInFade 0.4s ease-out;
}
/* 平滑的页面过渡 */
::view-transition-old(root),
::view-transition-new(root) {
animation-duration: 0.3s;
}
/* 特定元素的命名过渡 */
.hero {
view-transition-name: hero-image;
}
::view-transition-old(hero-image),
::view-transition-new(hero-image) {
animation-duration: 0.5s;
}
/* 基于滚动进度进行动画 */
@keyframes fade-in {
from {
opacity: 0;
transform: translateY(50px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.scroll-reveal {
animation: fade-in linear;
animation-timeline: view();
animation-range: entry 0% cover 30%;
}
/* 移动优先方法 */
.component {
/* 基础移动端样式 */
padding: 1rem;
}
/* 平板电脑 */
@media (min-width: 768px) {
.component {
padding: 2rem;
}
}
/* 桌面端 */
@media (min-width: 1024px) {
.component {
padding: 3rem;
}
}
/* 宽屏桌面端 */
@media (min-width: 1440px) {
.component {
padding: 4rem;
}
}
/* 偏好减少动画 */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
/* 深色模式偏好 */
@media (prefers-color-scheme: dark) {
:root {
--bg: #1a1a1a;
--fg: #e5e5e5;
}
}
/* 使用 clamp 实现响应式字体大小 */
h1 {
font-size: clamp(2rem, 4vw + 1rem, 4rem);
}
body {
font-size: clamp(1rem, 0.5vw + 0.875rem, 1.125rem);
}
/* 或使用自定义属性 */
:root {
--fluid-min-width: 320;
--fluid-max-width: 1140;
--fluid-min-size: 16;
--fluid-max-size: 20;
--fluid-size: calc(
(var(--fluid-min-size) * 1px) +
(var(--fluid-max-size) - var(--fluid-min-size)) *
((100vw - (var(--fluid-min-width) * 1px)) /
(var(--fluid-max-width) - var(--fluid-min-width)))
);
}
body {
font-size: clamp(
var(--fluid-min-size) * 1px,
var(--fluid-size),
var(--fluid-max-size) * 1px
);
}
/* 1. 避免昂贵的属性 */
.avoid {
box-shadow: ...; /* 可以,GPU 加速 */
filter: ...; /* 昂贵,谨慎使用 */
}
/* 2. 为独立组件使用包含 */
.card {
contain: layout style paint;
/* 告诉浏览器此元素的样式不会影响其他元素 */
}
.isolated-component {
content-visibility: auto; /* 跳过屏幕外元素的渲染 */
}
/* 3. 优化选择器 - 特异性 vs 性能 */
/* 快速 ✅ */
.button { }
.nav-item { }
/* 较慢 ❌ */
div.container ul li a.link { }
[class*="btn-"] { }
<!-- 关键 CSS 内联在 <head> 中 -->
<style>
/* 首屏样式 */
</style>
<!-- 使用媒体查询技巧的非关键 CSS -->
<link rel="stylesheet" href="styles.css" media="print" onload="this.media='all'">
<!-- 预加载以加快加载速度 -->
<link rel="preload" href="fonts.woff2" as="font" type="font/woff2" crossorigin>
/* 块 */
.card { }
/* 元素 - 块的一部分 */
.card__title { }
.card__body { }
.card__footer { }
/* 修饰符 - 块的变体 */
.card--featured { }
.card--large { }
.card__title--primary { }
/* 间距工具类 */
.p-4 { padding: 1rem; }
.px-4 { padding-left: 1rem; padding-right: 1rem; }
.mt-2 { margin-top: 0.5rem; }
/* 布局工具类 */
.flex { display: flex; }
.grid { display: grid; }
.hidden { display: none; }
/* 排版工具类 */
.text-lg { font-size: 1.125rem; }
.font-bold { font-weight: 700; }
.text-center { text-align: center; }
styles/
├── base/
│ ├── reset.css
│ ├── typography.css
│ └── utilities.css
├── components/
│ ├── button.css
│ ├── card.css
│ └── nav.css
├── layout/
│ ├── grid.css
│ ├── header.css
│ └── footer.css
├── themes/
│ ├── light.css
│ └── dark.css
└── main.css (imports all)
:root {
/* 现代颜色函数 */
--primary: oklch(60% 0.2 250); /* 感知均匀 */
--surface: color-mix(in oklch, var(--primary) 10%, white);
/* 相对颜色 */
--primary-light: oklch(from var(--primary) calc(l + 20%) c h);
--primary-dark: oklch(from var(--primary) calc(l - 20%) c h);
/* 可访问性的颜色对比度 */
--text-color: color-contrast(
var(--surface) vs black, white
);
}
/* 旧版浏览器的回退方案 */
.grid {
display: flex;
flex-wrap: wrap;
}
/* 现代浏览器的增强 */
@supports (display: grid) {
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}
}
/* 渐进增强 */
.button {
background: blue;
}
@supports (backdrop-filter: blur(10px)) {
.button {
background: rgba(0, 0, 255, 0.8);
backdrop-filter: blur(10px);
}
}
/* 现代方式 */
.video {
aspect-ratio: 16 / 9;
}
/* 对于图片 */
img {
aspect-ratio: 16 / 9;
object-fit: cover;
}
/* 单行 */
.truncate {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/* 多行 */
.line-clamp {
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
}
html {
scroll-behavior: smooth;
}
/* 滚动捕捉 */
.carousel {
scroll-snap-type: x mandatory;
overflow-x: auto;
}
.carousel > * {
scroll-snap-align: start;
}
/* 仅对键盘用户显示焦点 */
:focus-visible {
outline: 2px solid var(--color-primary);
outline-offset: 2px;
}
/* 视觉隐藏但保留给屏幕阅读器 */
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
/* 尊重用户偏好 */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
@media (prefers-contrast: high) {
.button {
border: 2px solid currentColor;
}
}
/* 现代 CSS 重置 */
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
}
html {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
body {
min-height: 100vh;
line-height: 1.5;
}
img,
picture,
video,
canvas,
svg {
display: block;
max-width: 100%;
}
input,
button,
textarea,
select {
font: inherit;
}
p,
h1,
h2,
h3,
h4,
h5,
h6 {
overflow-wrap: break-word;
}
查看 references/ 获取详细指南:
记住:当对任何 CSS 特性、语法或浏览器支持有疑问时,请使用 context7 查阅实时文档。
每周安装数
80
仓库
首次出现
2026年1月24日
安全审计
安装于
opencode57
github-copilot56
codex53
gemini-cli50
kimi-cli43
amp42
/* Common flex patterns */
.container {
display: flex;
gap: 1rem; /* Prefer gap over margins for spacing */
}
/* Center content */
.centered {
display: flex;
justify-content: center;
align-items: center;
}
/* Responsive flex wrapping */
.flex-wrap {
display: flex;
flex-wrap: wrap;
gap: 1rem;
}
.flex-wrap > * {
flex: 1 1 300px; /* Grow, shrink, basis */
}
/* Common flex utilities */
.flex-1 { flex: 1; }
.flex-none { flex: none; }
.flex-auto { flex: auto; }
/* Responsive grid with auto-fit */
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 2rem;
}
/* Named grid areas for semantic layouts */
.layout {
display: grid;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
grid-template-columns: 250px 1fr;
grid-template-rows: auto 1fr auto;
min-height: 100vh;
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.footer { grid-area: footer; }
/* Dense packing for masonry-like layouts */
.masonry {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
grid-auto-flow: dense;
gap: 1rem;
}
/* Container query setup */
.card-container {
container-type: inline-size;
container-name: card;
}
/* Query the container, not the viewport */
@container card (min-width: 400px) {
.card {
display: grid;
grid-template-columns: 150px 1fr;
}
}
@container card (min-width: 600px) {
.card {
grid-template-columns: 200px 1fr;
}
}
:root {
/* Color system */
--color-primary: #0066cc;
--color-primary-dark: #004499;
--color-surface: #ffffff;
--color-text: #1a1a1a;
/* Spacing scale */
--space-xs: 0.25rem;
--space-sm: 0.5rem;
--space-md: 1rem;
--space-lg: 2rem;
--space-xl: 4rem;
/* Typography */
--font-sans: system-ui, -apple-system, sans-serif;
--font-mono: 'Fira Code', monospace;
/* Dark mode using data attribute */
--bg: var(--color-surface);
--fg: var(--color-text);
}
[data-theme="dark"] {
--color-surface: #1a1a1a;
--color-text: #e5e5e5;
}
/* Using custom properties */
.button {
background: var(--color-primary);
padding: var(--space-sm) var(--space-md);
font-family: var(--font-sans);
}
/* Define layer order - lowest specificity first */
@layer reset, base, components, utilities;
@layer reset {
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
}
@layer base {
body {
font-family: system-ui, sans-serif;
line-height: 1.5;
}
}
@layer components {
.button {
padding: 0.5rem 1rem;
border-radius: 0.25rem;
}
}
@layer utilities {
.text-center { text-align: center; }
.hidden { display: none; }
}
/* :is() for grouping (no specificity increase) */
:is(h1, h2, h3) {
font-weight: 700;
line-height: 1.2;
}
/* :where() for zero specificity */
:where(.card, .panel) > :where(h2, h3) {
margin-top: 0;
}
/* :has() for parent selection */
.card:has(img) {
display: grid;
grid-template-columns: 200px 1fr;
}
.form:has(:invalid) .submit-button {
opacity: 0.5;
pointer-events: none;
}
/* Logical properties for internationalization */
.element {
margin-inline-start: 1rem; /* Instead of margin-left */
padding-block: 2rem; /* Instead of padding-top and padding-bottom */
border-inline-end: 1px solid; /* Instead of border-right */
}
/* Only animate transform and opacity for 60fps */
.smooth-animation {
/* Hint to browser for optimization */
will-change: transform;
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.smooth-animation:hover {
transform: translateY(-4px);
}
/* Remove will-change after animation */
.smooth-animation:not(:hover) {
will-change: auto;
}
/* Complex keyframe animations */
@keyframes slideInFade {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate-in {
animation: slideInFade 0.4s ease-out;
}
/* Smooth page transitions */
::view-transition-old(root),
::view-transition-new(root) {
animation-duration: 0.3s;
}
/* Named transitions for specific elements */
.hero {
view-transition-name: hero-image;
}
::view-transition-old(hero-image),
::view-transition-new(hero-image) {
animation-duration: 0.5s;
}
/* Animate on scroll progress */
@keyframes fade-in {
from {
opacity: 0;
transform: translateY(50px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.scroll-reveal {
animation: fade-in linear;
animation-timeline: view();
animation-range: entry 0% cover 30%;
}
/* Mobile-first approach */
.component {
/* Base mobile styles */
padding: 1rem;
}
/* Tablet */
@media (min-width: 768px) {
.component {
padding: 2rem;
}
}
/* Desktop */
@media (min-width: 1024px) {
.component {
padding: 3rem;
}
}
/* Wide desktop */
@media (min-width: 1440px) {
.component {
padding: 4rem;
}
}
/* Prefer reduced motion */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
/* Dark mode preference */
@media (prefers-color-scheme: dark) {
:root {
--bg: #1a1a1a;
--fg: #e5e5e5;
}
}
/* Clamp for responsive font sizes */
h1 {
font-size: clamp(2rem, 4vw + 1rem, 4rem);
}
body {
font-size: clamp(1rem, 0.5vw + 0.875rem, 1.125rem);
}
/* Or using custom properties */
:root {
--fluid-min-width: 320;
--fluid-max-width: 1140;
--fluid-min-size: 16;
--fluid-max-size: 20;
--fluid-size: calc(
(var(--fluid-min-size) * 1px) +
(var(--fluid-max-size) - var(--fluid-min-size)) *
((100vw - (var(--fluid-min-width) * 1px)) /
(var(--fluid-max-width) - var(--fluid-min-width)))
);
}
body {
font-size: clamp(
var(--fluid-min-size) * 1px,
var(--fluid-size),
var(--fluid-max-size) * 1px
);
}
/* 1. Avoid expensive properties */
.avoid {
box-shadow: ...; /* OK, GPU accelerated */
filter: ...; /* Expensive, use sparingly */
}
/* 2. Use containment for isolated components */
.card {
contain: layout style paint;
/* Tells browser this element's styles won't affect others */
}
.isolated-component {
content-visibility: auto; /* Skip rendering offscreen elements */
}
/* 3. Optimize selectors - specificity vs performance */
/* Fast ✅ */
.button { }
.nav-item { }
/* Slower ❌ */
div.container ul li a.link { }
[class*="btn-"] { }
<!-- Critical CSS inline in <head> -->
<style>
/* Above-the-fold styles */
</style>
<!-- Non-critical CSS with media query trick -->
<link rel="stylesheet" href="styles.css" media="print" onload="this.media='all'">
<!-- Preload for faster loading -->
<link rel="preload" href="fonts.woff2" as="font" type="font/woff2" crossorigin>
/* Block */
.card { }
/* Element - part of block */
.card__title { }
.card__body { }
.card__footer { }
/* Modifier - variation of block */
.card--featured { }
.card--large { }
.card__title--primary { }
/* Spacing utilities */
.p-4 { padding: 1rem; }
.px-4 { padding-left: 1rem; padding-right: 1rem; }
.mt-2 { margin-top: 0.5rem; }
/* Layout utilities */
.flex { display: flex; }
.grid { display: grid; }
.hidden { display: none; }
/* Typography utilities */
.text-lg { font-size: 1.125rem; }
.font-bold { font-weight: 700; }
.text-center { text-align: center; }
styles/
├── base/
│ ├── reset.css
│ ├── typography.css
│ └── utilities.css
├── components/
│ ├── button.css
│ ├── card.css
│ └── nav.css
├── layout/
│ ├── grid.css
│ ├── header.css
│ └── footer.css
├── themes/
│ ├── light.css
│ └── dark.css
└── main.css (imports all)
:root {
/* Modern color functions */
--primary: oklch(60% 0.2 250); /* Perceptually uniform */
--surface: color-mix(in oklch, var(--primary) 10%, white);
/* Relative colors */
--primary-light: oklch(from var(--primary) calc(l + 20%) c h);
--primary-dark: oklch(from var(--primary) calc(l - 20%) c h);
/* Color contrast for accessibility */
--text-color: color-contrast(
var(--surface) vs black, white
);
}
/* Fallback for older browsers */
.grid {
display: flex;
flex-wrap: wrap;
}
/* Enhanced for modern browsers */
@supports (display: grid) {
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}
}
/* Progressive enhancement */
.button {
background: blue;
}
@supports (backdrop-filter: blur(10px)) {
.button {
background: rgba(0, 0, 255, 0.8);
backdrop-filter: blur(10px);
}
}
/* Modern way */
.video {
aspect-ratio: 16 / 9;
}
/* For images */
img {
aspect-ratio: 16 / 9;
object-fit: cover;
}
/* Single line */
.truncate {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/* Multiple lines */
.line-clamp {
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
}
html {
scroll-behavior: smooth;
}
/* Scroll snapping */
.carousel {
scroll-snap-type: x mandatory;
overflow-x: auto;
}
.carousel > * {
scroll-snap-align: start;
}
/* Focus visible for keyboard users only */
:focus-visible {
outline: 2px solid var(--color-primary);
outline-offset: 2px;
}
/* Hide visually but keep for screen readers */
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
/* Respect user preferences */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
@media (prefers-contrast: high) {
.button {
border: 2px solid currentColor;
}
}
/* Modern CSS reset */
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
}
html {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
body {
min-height: 100vh;
line-height: 1.5;
}
img,
picture,
video,
canvas,
svg {
display: block;
max-width: 100%;
}
input,
button,
textarea,
select {
font: inherit;
}
p,
h1,
h2,
h3,
h4,
h5,
h6 {
overflow-wrap: break-word;
}
See references/ for detailed guides on:
Remember : When in doubt about any CSS feature, syntax, or browser support, use context7 to look it up in real-time documentation.
Weekly Installs
80
Repository
First Seen
Jan 24, 2026
Security Audits
Installed on
opencode57
github-copilot56
codex53
gemini-cli50
kimi-cli43
amp42
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
120,000 周安装
Flutter动画实现指南:隐式/显式/物理/Hero/交错动画策略与代码示例
1,100 周安装
AI提示词查找与优化工具 - 搜索、获取、改进ChatGPT提示词模板
1,100 周安装
本地营销专家指南:Google商家优化、本地SEO与地理定位广告实战策略
80 周安装
Claude 代码插件技能开发指南 - 创建模块化AI技能扩展Claude能力
1,100 周安装
日历自动化:Google Calendar与Outlook会议管理、时间块划分、每日摘要同步工作流
1,200 周安装
agent-memory 技能 - AI 助手记忆管理工具 | 提升开发效率与代码协作
1,100 周安装