5.9 KiB
WP Assets
Use this skill for Websimple WordPress theme asset source, build, and enqueue conventions.
Use references/wp-theme-dev.md for general PHP/theme structure, references/wp-code-style.md for PHP linting, and references/wp-browser.md for visual smoke tests.
Core principles
- Keep build-time source assets under
src/. - Do not edit compiled/generated assets unless the user explicitly asks and there is no source available.
- Detect the project's actual pipeline before changing files.
- Preserve the existing asset toolchain unless the user asks for migration.
- Keep PHP enqueue integration aligned with the build output and manifest strategy.
Source structure
Theme source assets should live under src/ with clear subdirectories for frontend concerns.
Common structure:
src/
styles/ # CSS/SCSS source
scripts/ # JavaScript/TypeScript entrypoints and modules
components/ # Vue/React or shared frontend components
images/ # source images/icons when processed by the build
fonts/ # source fonts when processed by the build
Follow the existing project structure first. Do not reorganize assets broadly without approval.
Detect the pipeline
Before editing assets, inspect the theme root for signals:
package.json
vite.config.*
webpack.config.*
webpack.mix.js
postcss.config.*
tailwind.config.*
tsconfig.json
src/
assets/
dist/
Use package.json scripts as the source of truth for build/dev commands.
Common signals:
- Vite:
vite.config.ts, scripts likedev,build,preview. - Legacy webpack/Mix:
webpack.config.js,webpack.mix.js, scripts usingwebpack,mix, or older build tooling. - Plain scripts/styles: source under
src/with minimal bundler config.
If signals conflict, report the ambiguity before changing build config.
Build output
Treat build output as generated unless the project clearly uses checked-in compiled assets.
Common output directories:
assets/
dist/
Compiled/generated assets should normally be excluded from Git. For new or modernized projects, prefer ignoring generated build output and committing only source/config files.
Legacy projects may already commit compiled assets. Do not remove those generated files or change .gitignore behavior without approval. For those projects, keep the committed-build convention and make sure to run the build before committing so generated assets stay in sync with source changes.
Do not edit minified files, hashed files, generated manifests, compiled CSS/JS, source maps, or copied vendor assets directly when source files exist.
If compiled assets are committed in the project, update them by running the project build instead of manual edits.
Vite conventions
For Vite-based themes:
- inspect
vite.config.*before adding entrypoints; - keep entrypoints under
src/; - preserve existing manifest/output settings;
- use the manifest when PHP enqueue code relies on hashed filenames;
- run the project build after changing source assets when verification requires compiled output.
Do not rewrite Vite config or migrate legacy projects to Vite unless explicitly requested.
Legacy webpack conventions
For legacy webpack/Mix themes:
- inspect
webpack.config.*orwebpack.mix.jsfirst; - preserve existing entrypoint names and output paths;
- avoid modernizing syntax or build tooling as part of unrelated changes;
- run the existing build script when compiled assets must be refreshed.
Do not convert webpack/Mix to Vite without an explicit migration request.
Enqueue integration
Asset enqueue logic usually belongs under theme PHP includes, often includes/core/assets.php or the existing project equivalent.
Before changing enqueue code:
- Identify the build output path.
- Identify whether filenames are stable or hashed.
- Identify whether the theme uses a manifest.
- Preserve existing handles, dependencies, script type/module settings, and localization/global variables unless changing them is required.
For stable filenames, filemtime-based cache busting is acceptable when already used by the project:
wp_enqueue_style(
'example-theme',
get_stylesheet_directory_uri() . '/dist/css/theme.css',
[],
filemtime( get_stylesheet_directory() . '/dist/css/theme.css' )
);
For hashed filenames, read from the manifest rather than hardcoding generated names.
Vue and React source
Vue/React source should still live under src/, typically under src/components/ or an existing frontend app directory.
Keep this skill focused on source placement and build integration. For component architecture, state management, app mounting, or framework-specific conventions, use dedicated future wp-vue or wp-react guidance.
Styling conventions
- Keep styles under
src/styles/or the existing style source directory. - Preserve the project's CSS methodology and naming conventions.
- Avoid broad restyling when the user asked for a targeted fix.
- Prefer source-level changes over compiled CSS edits.
Workflow
- Inspect theme root,
package.json, build config, source directories, output directories, and enqueue PHP. - Determine whether the project uses Vite, webpack/Mix, or another pipeline.
- Edit source files under
src/or the established source directory. - Do not touch generated output manually.
- Run the smallest relevant check: build, typecheck, lint, or targeted frontend smoke test.
- If compiled assets are committed, run the build before committing and inspect generated diffs.
- Use
references/wp-browser.mdto verify visible frontend changes. - Report changed source files, generated files, and any build/verification blockers.
Safety
- Do not run package installs or major upgrades without approval.
- Do not migrate build tools without explicit request.
- Do not edit compiled/minified/generated assets directly when source exists.
- Do not remove legacy build config just because a newer tool would be nicer.
- Watch for large generated diffs and call them out before committing.