一键导入
scss-workflow
SCSS structure, variables, mixins, font loading, and SVG sprites. Use when styling admin or frontend, adding custom fonts, or using SVG icons.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
SCSS structure, variables, mixins, font loading, and SVG sprites. Use when styling admin or frontend, adding custom fonts, or using SVG icons.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Handle plugin activation, deactivation, and uninstall. Use when setting up database tables, default options, cleanup tasks, or requirement checks.
File naming conventions and namespace-to-directory mapping for PHP files. Use when creating new classes, traits, interfaces, or abstract classes to ensure proper autoloading.
Use Hooker service to register WordPress actions and filters. Use when adding WordPress hooks, filters, or actions in the plugin. Never use add_action or add_filter directly.
Create service providers to register and boot services in the WordPress plugin. Use when adding new features, controllers, or services that need dependency injection and initialization.
Use existing traits and create custom traits for code reuse. Use when sharing common functionality across multiple classes without inheritance.
Modify webpack configuration in src/config/ - add entry points, loaders, plugins, aliases. Use when user needs to customize webpack build, add React/TypeScript, modify Babel, add PostCSS plugins, or change dev server settings.
基于 SOC 职业分类
| name | scss-workflow |
| description | SCSS structure, variables, mixins, font loading, and SVG sprites. Use when styling admin or frontend, adding custom fonts, or using SVG icons. |
SCSS structure and build workflow.
src/styles/
├── abstracts/
│ ├── _variables.scss # Colors, sizes, breakpoints
│ ├── _mixins.scss # Reusable mixins
│ └── _functions.scss # Custom functions
├── core/
│ ├── _reset.scss # CSS reset
│ ├── _typography.scss # Font styles
│ └── _utilities.scss # Utility classes
├── vendor/
│ └── _normalize.scss # Third-party CSS
├── admin.scss # Admin entry point
└── main.scss # Frontend entry point
File: src/styles/admin.scss
@import 'abstracts/variables';
@import 'abstracts/mixins';
@import 'core/reset';
@import 'core/typography';
.wppb-admin {
&__header {
padding: 20px;
background: $color-primary;
}
&__content {
margin: 20px 0;
}
}
File: src/styles/main.scss
@import 'abstracts/variables';
@import 'abstracts/mixins';
@import 'core/reset';
@import 'core/typography';
.wppb {
&__container {
max-width: 1200px;
margin: 0 auto;
}
&__button {
@include button-primary;
}
}
File: src/styles/abstracts/_variables.scss
// Colors
$color-primary: #0073aa;
$color-secondary: #23282d;
$color-success: #46b450;
$color-error: #dc3232;
$color-warning: #ffb900;
// Typography
$font-family-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
$font-size-base: 16px;
$line-height-base: 1.5;
// Spacing
$spacing-xs: 4px;
$spacing-sm: 8px;
$spacing-md: 16px;
$spacing-lg: 24px;
$spacing-xl: 32px;
// Breakpoints
$breakpoint-sm: 576px;
$breakpoint-md: 768px;
$breakpoint-lg: 992px;
$breakpoint-xl: 1200px;
// Z-index
$z-index-dropdown: 1000;
$z-index-modal: 1050;
$z-index-tooltip: 1060;
File: src/styles/abstracts/_mixins.scss
// Responsive breakpoints
@mixin respond-to($breakpoint) {
@media (min-width: $breakpoint) {
@content;
}
}
// Button styles
@mixin button-primary {
padding: $spacing-sm $spacing-md;
background: $color-primary;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
&:hover {
background: darken($color-primary, 10%);
}
}
// Flexbox center
@mixin flex-center {
display: flex;
align-items: center;
justify-content: center;
}
// Clearfix
@mixin clearfix {
&::after {
content: '';
display: table;
clear: both;
}
}
Place fonts in src/fonts/:
src/fonts/
├── roboto-regular.woff2
├── roboto-bold.woff2
└── roboto-italic.woff2
File: src/styles/core/_typography.scss
@font-face {
font-family: 'Roboto';
src: url('../fonts/roboto-regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Roboto';
src: url('../fonts/roboto-bold.woff2') format('woff2');
font-weight: 700;
font-style: normal;
font-display: swap;
}
body {
font-family: 'Roboto', sans-serif;
}
Place SVG files in src/icons/:
src/icons/
├── check.svg
├── close.svg
└── arrow.svg
.icon {
width: 24px;
height: 24px;
background-image: url('../icons/spritemap.svg#sprite-check');
background-size: contain;
}
<svg class="icon">
<use xlink:href="path/to/spritemap.svg#sprite-check"></use>
</svg>
# Development build (unminified)
npm run build:dev
# Production build (minified)
npm run build
# Watch mode (auto-rebuild)
npm run dev
# Clean dist folder
npm run clean
Webpack resolves paths automatically:
// Relative to src/styles/
@import 'abstracts/variables';
// Relative to src/
background-image: url('../fonts/font.woff2');
background-image: url('../icons/icon.svg');
background-image: url('../images/image.png');
Built files go to dist/:
dist/
├── scripts/
│ ├── admin-common.js
│ └── main-common.js
└── styles/
├── admin-common.css
└── main-common.css
.wppb {
&__card {
padding: $spacing-md;
&--featured {
border: 2px solid $color-primary;
}
&__title {
font-size: 24px;
margin-bottom: $spacing-sm;
}
&__content {
color: $color-secondary;
}
}
}
Output:
.wppb__card { padding: 16px; }
.wppb__card--featured { border: 2px solid #0073aa; }
.wppb__card__title { font-size: 24px; margin-bottom: 8px; }
.wppb__card__content { color: #23282d; }
src/fonts/src/icons/npm run dev for developmentnpm run build for productiondist/ directly