skills/crazyswami/white-label/SKILL.md
Complete WordPress white-labeling using FREE plugins only - ASE, Branda, White Label CMS, Admin Menu Editor. Covers login page branding, admin cleanup, security hardening, and client handoff preparation.
npx skillsauth add aiskillstore/marketplace white-labelInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Complete WordPress white-labeling system using free plugins to create a professional, branded admin experience without any paid elements.
| Plugin | Purpose | Key Features | |--------|---------|--------------| | ASE (Admin and Site Enhancements) | Security, admin cleanup | Custom login URL, disable XML-RPC, hide notices, obfuscate authors | | White Label CMS | Dashboard & menu branding | Setup wizard, custom welcome panel, hide menus by role, import/export | | Branda (White Labeling) | Login page branding | Custom logo, colors, backgrounds, admin bar logo | | Admin Menu Editor (optional) | Advanced menu control | Reorder, rename, custom icons, granular permissions |
Access: WordPress Admin → Settings → White Label CMS
White Label CMS has a built-in wizard that walks you through:
/login as URL alias| Feature | Plugin | How |
|---------|--------|-----|
| Custom login page logo | Branda | Upload via Media Library |
| Login background color/image | Branda | Color picker or image upload |
| Login form styling | Branda | Colors, borders, shadows |
| Admin footer text | ASE or Branda | Custom HTML text |
| Admin bar cleanup | ASE | Toggle visibility of items |
| Hide "Howdy" greeting | Branda | Replace with custom text |
| Dashboard widget removal | ASE | Checkbox per widget |
| Custom login URL | ASE | Slug like /client-login |
| Menu organization | Admin Menu Editor | Drag-and-drop |
| WordPress version hiding | ASE | Toggle on/off |
| Admin color scheme | Branda | Custom palette |
| Disable admin notices | ASE | Move to panel or hide |
/client-login or /secure-access/wp-login.phpRecommended slugs:
/client-login
/company-access
/portal
/secure-login
Avoid: /login, /admin, /signin (too common)
Access: Branda → Login Screen
Customize:
Example Configuration:
Logo: /wp-content/uploads/client-logo.png
Logo Width: 300px
Background Color: #1a1a2e
Form Background: #ffffff
Form Border Radius: 8px
Button Color: #e94560
Button Hover: #c73e54
Access: Branda → Admin Area → Admin Bar
Options:
Access: Branda → Admin Area → Howdy Message
Replace with:
Access: Branda → Admin Area → Admin Footer
Custom footer text (HTML supported):
© 2025 [Client Name]. Powered by <a href="https://youragency.com">Your Agency</a>.
Access: Branda → Dashboard → Welcome Widget
Create custom welcome widget with:
Recommended Order for Clients:
| Original | Rename To | |----------|-----------| | Posts | News / Blog / Articles | | Media | Files / Images | | Pages | Website Pages | | Comments | Feedback / Reviews |
Hide from Editors:
Hide from Authors:
Admin Menu Editor allows adding links to:
This skill includes automation scripts that allow Claude to configure ALL white-label settings programmatically based on brand information you provide.
# Apply white-label config from JSON file
/root/.claude/skills/white-label/scripts/apply-white-label.sh config.json container-name
# Example for CSR Development:
/root/.claude/skills/white-label/scripts/apply-white-label.sh \
/root/csrdevelopment.com/white-label-config.json \
wordpress-local-wordpress-1
Create a JSON file with your brand settings:
{
"brand": {
"company_name": "Your Company",
"logo_url": "https://example.com/logo.png",
"website": "https://yourcompany.com",
"colors": {
"primary": "#2271b1",
"primary_dark": "#135e96",
"background": "#1a1a2e"
}
},
"login": {
"background_color": "#1a1a2e",
"form_background": "#ffffff",
"button_color": "#2271b1",
"logo_width": 300
},
"security": {
"login_url": "secure-login",
"disable_xmlrpc": true,
"obfuscate_authors": true
},
"dashboard": {
"hide_news": true,
"hide_quick_draft": true,
"welcome_title": "Welcome",
"welcome_message": "<p>Your custom dashboard message</p>"
},
"greeting": "Welcome,"
}
The automation script configures:
| Plugin | Settings Applied | |--------|-----------------| | White Label CMS | Admin bar logo, greeting, side menu, footer, dashboard widgets, welcome panel | | ASE | Custom login URL, XML-RPC, author obfuscation, email obfuscation, heartbeat, revisions | | Branda | Login page styling, admin bar, howdy message, footer |
Just say:
Claude will:
/root/.claude/skills/white-label/scripts/
├── apply-white-label.sh # Main runner script
├── configure-white-label.php # WP-CLI configuration script
└── white-label-config.example.json # Example config file
All three plugins store settings in wp_options:
| Plugin | Option Name | Format |
|--------|-------------|--------|
| ASE | admin_site_enhancements | Serialized array |
| Branda | ub_settings (and others) | Serialized array |
| Admin Menu Editor | acp_custom_menu, acp_custom_menu_data | Serialized array |
# ASE settings
docker exec wordpress wp option get admin_site_enhancements --format=json
# Branda settings
docker exec wordpress wp option get ub_settings --format=json
# Admin Menu Editor
docker exec wordpress wp option get acp_custom_menu --format=json
ASE Configuration:
docker exec wordpress wp option update admin_site_enhancements '{
"change_login_url": {"enabled": true, "slug": "secure-login"},
"hide_admin_notices": true,
"disable_xmlrpc": true,
"obfuscate_author_slugs": true,
"heartbeat_control": {
"dashboard": "disable",
"post_editor": 30,
"frontend": "disable"
},
"revisions_control": 5
}' --format=json
Branda Login Customization:
# Upload logo first
docker exec wordpress wp media import /path/to/logo.png --title="Client Logo"
# Get attachment ID
LOGO_ID=$(docker exec wordpress wp post list --post_type=attachment --name=logo --field=ID)
# Update Branda settings
docker exec wordpress wp option update ub_login_image "$LOGO_ID"
docker exec wordpress wp option update ub_login_background_color "#1a1a2e"
Complete white-label setup script:
#!/bin/bash
# white-label-setup.sh - Apply complete white-labeling
CLIENT_NAME="${1:-Client Name}"
LOGIN_URL="${2:-client-login}"
LOGO_PATH="${3:-}"
PRIMARY_COLOR="${4:-#2271b1}"
BACKGROUND_COLOR="${5:-#1a1a2e}"
# Configure ASE
docker-compose exec -T wpcli wp option update admin_site_enhancements "$(cat <<EOF
{
"change_login_url": {"enabled": true, "slug": "$LOGIN_URL"},
"hide_admin_notices": true,
"disable_xmlrpc": true,
"obfuscate_author_slugs": true,
"email_address_obfuscation": true,
"clean_up_admin_bar": {
"enabled": true,
"hide_wp_logo": true,
"hide_comments": true,
"hide_new_content": true
},
"disable_dashboard_widgets": {
"welcome": true,
"quick_draft": true,
"wordpress_news": true
},
"heartbeat_control": {
"dashboard": "disable",
"post_editor": 30,
"frontend": "disable"
},
"revisions_control": 5
}
EOF
)" --format=json
# Upload logo if provided
if [ -n "$LOGO_PATH" ] && [ -f "$LOGO_PATH" ]; then
docker cp "$LOGO_PATH" wordpress:/tmp/logo.png
docker-compose exec -T wpcli wp media import /tmp/logo.png --title="$CLIENT_NAME Logo"
fi
# Configure admin footer
docker-compose exec -T wpcli wp option update ub_admin_footer_text \
"© $(date +%Y) $CLIENT_NAME. All rights reserved."
echo "White-labeling complete for: $CLIENT_NAME"
echo "Login URL: /wp-login.php → /$LOGIN_URL"
Save this as your baseline white-label configuration:
{
"ase": {
"change_login_url": {
"enabled": true,
"slug": "secure-login"
},
"hide_admin_notices": true,
"disable_xmlrpc": true,
"obfuscate_author_slugs": true,
"email_address_obfuscation": true,
"clean_up_admin_bar": {
"enabled": true,
"hide_wp_logo": true,
"hide_comments": true,
"hide_new_content": true,
"hide_updates": true
},
"disable_dashboard_widgets": {
"welcome": true,
"quick_draft": true,
"wordpress_news": true,
"activity": false
},
"heartbeat_control": {
"dashboard": "disable",
"post_editor": 30,
"frontend": "disable"
},
"revisions_control": 5,
"image_upload_control": {
"max_width": 2560,
"max_height": 2560
}
},
"branda": {
"login_screen": {
"logo_enabled": true,
"background_color": "#1a1a2e",
"form_background": "#ffffff",
"button_color": "#e94560"
},
"admin_bar": {
"hide_wp_logo": true,
"custom_logo_enabled": true
},
"howdy_message": {
"enabled": true,
"text": "Welcome,"
},
"admin_footer": {
"enabled": true,
"text": "© {year} {client}. All rights reserved."
}
},
"admin_menu_editor": {
"hide_for_non_admins": [
"plugins.php",
"theme-editor.php",
"options-general.php",
"tools.php"
],
"rename": {
"Posts": "News",
"Media": "Files"
}
}
}
Before handing off to client:
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.