- Fixed missing command names in README (Prometheus 6 commands, Dexto 12 commands) - Fixed hooks section with all 14 hook names listed - Added bw-article-designer skill (article styling with black/white theme) - Added ralph-system-prompts skill collection (101 system prompts from system_prompts_leaks) - Updated skill count from 291 to 359 - Updated badges and documentation Co-Authored-By: Claude <noreply@anthropic.com>
20 KiB
Black & White Article Designer
Professional article styling with clean black/white theme and WCAG AAA compliant contrast ratios.
When to Use
Use this skill when:
- Creating or styling WordPress articles with professional appearance
- Fixing contrast and readability issues on blog posts
- Applying consistent dark/white theme to article content
- Need high-contrast, accessible article design
Color Scheme
Backgrounds
- Black:
#000000- Hero sections, CTAs - White:
#ffffff- Cards, features, main content - Light Gray:
#fafafa- Section backgrounds
Text Colors
- White:
#ffffff- On dark backgrounds - Very Dark Gray:
#1a1a1a- Headings on light backgrounds - Medium-Dark Gray:
#333333- Body text on light backgrounds - Dark Purple:
#5b21b6- Stat numbers, accent elements
CSS Template
<style>
/* ===== CLEAN BLACK/WHITE THEME ===== */
/* Base Colors */
:root {
--color-black: #000000;
--color-white: #ffffff;
--color-gray-50: #fafafa;
--color-gray-100: #f5f5f5;
--color-gray-200: #e5e5e5;
--color-gray-300: #d4d4d4;
--color-gray-800: #262626;
--color-text-dark: #1a1a1a;
--color-text-medium: #333333;
--color-text-light: #666666;
--color-accent: #5b21b6;
}
/* Hero Section - BLACK BG, WHITE TEXT */
.daw-hero {
background: #000000 !important;
color: #ffffff !important;
padding: 4rem 2rem;
border-radius: 1rem;
margin: 2rem 0;
border: 1px solid #333333;
text-align: center;
}
.daw-hero h1,
.daw-hero h2,
.daw-hero h3,
.daw-hero h4,
.daw-hero p,
.daw-hero span,
.daw-hero strong,
.daw-hero li,
.daw-hero a {
color: #ffffff !important;
}
/* Badge */
.daw-badge {
background: rgba(255, 255, 255, 0.15) !important;
color: #ffffff !important;
padding: 0.5rem 1.5rem;
border-radius: 9999px;
font-weight: 700;
display: inline-block;
margin-bottom: 1.5rem;
}
/* Stats Grid */
.daw-stats {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 1.5rem;
margin-top: 2rem;
}
.daw-stat-card {
background: #ffffff !important;
padding: 2rem;
border-radius: 0.75rem;
text-align: center;
border: 2px solid #e5e5e5 !important;
}
.daw-stat-number {
font-size: 3rem;
font-weight: 800;
color: #000000 !important;
}
.daw-stat-label {
color: #666666 !important;
font-weight: 500;
margin-top: 0.5rem;
}
/* Hero stat cards override - dark purple numbers */
.daw-stat-card .daw-stat-number {
color: #5b21b6 !important;
}
.daw-stat-card .daw-stat-label {
color: #333333 !important;
}
/* Feature Boxes - WHITE BG, DARK TEXT */
.daw-feature {
background: #ffffff !important;
color: #1a1a1a !important;
border: 1px solid #e5e5e5;
border-left: 4px solid #000000;
padding: 2rem;
border-radius: 0.5rem;
margin: 1.5rem 0;
}
.daw-feature h2,
.daw-feature h4 {
color: #1a1a1a !important;
margin: 0 0 1rem 0;
}
.daw-feature p,
.daw-feature li {
color: #333333 !important;
margin: 0;
line-height: 1.6;
}
.daw-feature strong {
color: #1a1a1a !important;
}
/* Cards - WHITE BG, DARK TEXT */
.daw-card {
background: #ffffff !important;
color: #1a1a1a !important;
border: 2px solid #e5e5e5;
border-radius: 0.75rem;
padding: 1.5rem;
transition: all 0.3s;
}
.daw-card:hover {
border-color: #000000;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
transform: translateY(-2px);
}
.daw-card h4 {
color: #1a1a1a !important;
font-weight: 700;
margin-bottom: 0.75rem;
font-size: 1.25rem;
}
.daw-card p {
color: #333333 !important;
margin: 0.5rem 0;
line-height: 1.6;
}
/* Section - LIGHT GRAY BG, DARK TEXT */
.daw-section {
background: #fafafa !important;
color: #1a1a1a !important;
padding: 3rem 2rem;
border-radius: 1rem;
margin: 3rem 0;
border: 1px solid #e5e5e5;
}
.daw-section h2,
.daw-section h3,
.daw-section h4 {
color: #1a1a1a !important;
margin: 0 0 1rem 0;
}
.daw-section p {
color: #333333 !important;
margin: 0.5rem 0;
line-height: 1.6;
}
/* CTA Section - BLACK BG, WHITE TEXT */
.daw-cta {
background: #000000 !important;
color: #ffffff !important;
padding: 4rem 2rem;
border-radius: 1rem;
text-align: center;
margin: 4rem 0;
border: 2px solid #000000;
}
.daw-cta h1,
.daw-cta h2,
.daw-cta h3,
.daw-cta h4,
.daw-cta p,
.daw-cta span,
.daw-cta strong,
.daw-cta em,
.daw-cta li,
.daw-cta a,
.daw-cta div {
color: #ffffff !important;
}
/* Buttons */
.daw-btn-primary {
display: inline-block;
padding: 1rem 2.5rem;
background: #ffffff !important;
color: #1a1a1a !important;
text-decoration: none;
border-radius: 0.5rem;
font-weight: 700;
transition: all 0.3s;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
margin: 0.5rem;
}
.daw-btn-primary:hover {
transform: translateY(-2px);
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3);
}
.daw-btn-secondary {
display: inline-block;
padding: 1rem 2.5rem;
background: transparent !important;
color: #ffffff !important;
text-decoration: none;
border: 2px solid #ffffff;
border-radius: 0.5rem;
font-weight: 700;
transition: all 0.3s;
margin: 0.5rem;
}
.daw-btn-secondary:hover {
background: #ffffff !important;
color: #1a1a1a !important;
}
/* Code Blocks */
.daw-code {
background: #1a1a1a !important;
color: #ffffff !important;
padding: 1.5rem;
border-radius: 0.5rem;
font-family: 'Monaco', 'Consolas', monospace;
font-size: 0.875rem;
overflow-x: auto;
border: 1px solid #333333;
margin: 1rem 0;
line-height: 1.6;
}
.daw-code code {
color: #ffffff !important;
}
/* Inline Code */
code {
background: #1a1a1a !important;
color: #ffffff !important;
padding: 0.2rem 0.5rem;
border-radius: 0.25rem;
font-family: 'Monaco', 'Consolas', monospace;
font-size: 0.875em;
}
/* Context-specific inline code */
.daw-card code,
.daw-feature code,
.daw-section code {
background: #000000 !important;
color: #ffffff !important;
}
.daw-hero code,
.daw-cta code {
background: rgba(255, 255, 255, 0.2) !important;
color: #ffffff !important;
}
/* Compare Boxes */
.daw-compare {
padding: 2rem;
border-radius: 1rem;
border: 1px solid #e5e5e5;
background: #ffffff !important;
color: #1a1a1a !important;
text-align: center;
}
.daw-compare h3 {
color: #1a1a1a !important;
margin: 0 0 1rem 0;
}
.daw-compare p {
color: #333333 !important;
margin: 0.5rem 0;
line-height: 1.6;
}
.daw-compare strong {
color: #1a1a1a !important;
}
/* Lists */
.daw-list {
list-style: none;
padding: 0;
margin: 1rem 0;
}
.daw-list li {
color: #333333 !important;
padding: 0.75rem 0;
border-bottom: 1px solid #e5e5e5;
line-height: 1.6;
}
.daw-list li:last-child {
border-bottom: none;
}
.daw-list strong {
color: #1a1a1a !important;
}
/* Links */
.daw-link {
color: #1a1a1a !important;
text-decoration: underline;
transition: color 0.2s;
font-weight: 500;
}
.daw-link:hover {
color: #333333 !important;
}
/* Grid Layout */
.daw-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 1.5rem;
margin: 2rem 0;
}
/* Responsive Design */
@media (max-width: 768px) {
.daw-stats {
grid-template-columns: repeat(2, 1fr);
gap: 1rem;
}
.daw-grid {
grid-template-columns: 1fr;
}
.daw-hero {
padding: 2rem 1rem;
}
.daw-section {
padding: 2rem 1rem;
}
.daw-cta {
padding: 2rem 1rem;
}
.daw-hero h1 {
font-size: 1.75rem;
}
.daw-stat-number {
font-size: 2rem;
}
}
@media (max-width: 480px) {
.daw-stats {
grid-template-columns: 1fr;
}
}
</style>
HTML Structure Template
<!-- Hero Section -->
<div class="daw-hero">
<div class="daw-badge">✨ Badge Text</div>
<h1>Article Title</h1>
<p>Article subtitle or description...</p>
<div class="daw-stats">
<div class="daw-stat-card">
<div class="daw-stat-number">281</div>
<div class="daw-stat-label">Custom Skills</div>
</div>
<div class="daw-stat-card">
<div class="daw-stat-number">43</div>
<div class="daw-stat-label">AI Agents</div>
</div>
</div>
</div>
<!-- Feature Box -->
<div class="daw-feature">
<h2>Feature Title</h2>
<ul class="daw-list">
<li><strong>Item 1:</strong> Description</li>
<li><strong>Item 2:</strong> Description</li>
</ul>
</div>
<!-- Section with Cards -->
<div class="daw-section">
<h2>Section Title</h2>
<div class="daw-grid">
<div class="daw-card">
<h4>Card Title</h4>
<p><strong>Subtitle</strong></p>
<p>Card description...</p>
</div>
<div class="daw-card">
<h4>Another Card</h4>
<p>Card content...</p>
</div>
</div>
</div>
<!-- Code Block -->
<div class="daw-code">
code here
</div>
<!-- CTA Section -->
<div class="daw-cta">
<h2>Call to Action Title</h2>
<p>Description text...</p>
<div style="margin-top: 2rem;">
<a href="#" class="daw-btn-primary">Primary Button</a>
<a href="#" class="daw-btn-secondary">Secondary Button</a>
</div>
</div>
WordPress Theme Stylesheet Method
When WordPress filters <style> tags from post content, add this CSS to the theme's stylesheet (e.g., outstanding-enhancements.css):
/* ========================================
* BLACK/WHITE ARTICLE THEME CSS
* Add to: /wp-content/themes/YOUR_THEME/outstanding-enhancements.css
* ======================================== */
/* ===== TABLE FIXES - CRITICAL ===== */
/* WordPress wraps tables in .table-container - this causes specificity issues */
.table-container thead,
.table-container thead tr,
.table-container thead th {
background: #000000 !important;
color: #ffffff !important;
-webkit-text-fill-color: #ffffff !important;
}
.table-container tbody,
.table-container tbody tr,
.table-container tbody td {
background: #ffffff !important;
color: #1a1a1a !important;
-webkit-text-fill-color: #1a1a1a !important;
}
/* Maximum specificity for table headers */
.table-container thead th,
.table-container thead th *,
.daw-section .table-container thead th,
.daw-feature .table-container thead th,
.daw-card .table-container thead th,
.daw-compare .table-container thead th,
.daw-stat-card .table-container thead th,
.pricing-card .table-container thead th,
table thead th[style*=color],
.table-container table thead th[style*=color],
.daw-section table thead th[style*=color],
.daw-feature table thead th[style*=color] {
background: #000000 !important;
color: #ffffff !important;
-webkit-text-fill-color: #ffffff !important;
}
/* Maximum specificity for table body */
.table-container tbody td,
.table-container tbody td *,
.daw-section .table-container tbody td,
.daw-feature .table-container tbody td,
.daw-card .table-container tbody td,
.daw-compare .table-container tbody td,
.daw-stat-card .table-container tbody td,
.pricing-card .table-container tbody td,
table tbody td[style*=color],
.table-container table tbody td[style*=color],
.daw-section table tbody td[style*=color],
.daw-feature table tbody td[style*=color] {
background: #ffffff !important;
color: #1a1a1a !important;
-webkit-text-fill-color: #1a1a1a !important;
}
/* ===== CTA BUTTON FIXES ===== */
/* Primary CTA button - black background, white text */
a.cta-button.primary,
a.cta-button.primary:link,
a.cta-button.primary:visited,
a.cta-button[style*="background: #000"],
a.cta-button[style*="background: #000000"] {
background: #000000 !important;
color: #ffffff !important;
-webkit-text-fill-color: #ffffff !important;
}
/* Secondary CTA button - white background, black text */
a.cta-button.secondary,
a.cta-button.secondary:link,
a.cta-button.secondary:visited,
a.cta-button[style*="background: #fff"],
a.cta-button[style*="background: #ffffff"] {
background: #ffffff !important;
color: #000000 !important;
-webkit-text-fill-color: #000000 !important;
border: 2px solid #000000 !important;
}
/* CTA buttons with inline color styles */
a.cta-button[style*="color"],
a.cta-button[style*="color"] * {
color: #ffffff !important;
-webkit-text-fill-color: #ffffff !important;
}
/* Secondary buttons keep dark text */
a.cta-button.secondary[style*="color"],
a.cta-button.secondary[style*="color"] * {
color: #000000 !important;
-webkit-text-fill-color: #000000 !important;
}
/* ===== HERO SECTION FIXES ===== */
.daw-hero {
background: #000000 !important;
color: #ffffff !important;
}
.daw-hero *,
.daw-hero *::before,
.daw-hero *::after {
-webkit-text-fill-color: #ffffff !important;
text-shadow: none !important;
}
/* Stat numbers - PURPLE on white cards */
.daw-hero .daw-stat-card .daw-stat-number,
.daw-hero .daw-stat-number {
color: #5b21b6 !important;
background: transparent !important;
-webkit-text-fill-color: #5b21b6 !important;
}
/* Stat labels - DARK GRAY on white cards */
.daw-hero .daw-stat-card .daw-stat-label,
.daw-hero .daw-stat-label {
color: #333333 !important;
background: transparent !important;
-webkit-text-fill-color: #333333 !important;
}
/* ===== CONTENT SECTIONS ===== */
/* Light backgrounds → DARK text */
.daw-card:not(.daw-hero):not(.daw-cta),
.daw-feature:not(.daw-hero):not(.daw-cta),
.daw-section:not(.daw-hero):not(.daw-cta),
.daw-compare:not(.daw-hero):not(.daw-cta),
.daw-stat-card:not(.daw-hero):not(.daw-cta),
.pricing-card:not(.daw-hero):not(.daw-cta) {
color: #1a1a1a !important;
}
.daw-card p,
.daw-card li,
.daw-section p,
.daw-section li,
.daw-feature p,
.daw-feature li {
color: #333333 !important;
}
/* Links - purple accent */
a, a:link, a:visited {
color: #5b21b6 !important;
}
/* Force cache refresh after updating this file */
/* Run: touch /path/to/outstanding-enhancements.css */
Applying to WordPress
Method 1: Direct Database Update
# SSH to server
ssh user@server
# Get MySQL config
cat > /tmp/mysql.cnf << EOF
[client]
user=wpuser
password="yourpassword"
host=localhost
database=wordpress
EOF
# Read post content
mysql --defaults-file=/tmp/mysql.cnf --batch --skip-column-names \
-e "SELECT post_content FROM wp_posts WHERE ID=POST_ID"
# Update post (wrap CSS in <style> tags)
mysql --defaults-file=/tmp/mysql.cnf --batch \
-e "UPDATE wp_posts SET post_content='<style>CSS_HERE</style>HTML_HERE' WHERE ID=POST_ID"
Method 2: WordPress Admin
- Edit post in WordPress admin
- Switch to "Code Editor" mode
- Add
<style>block at the top with CSS - Add HTML content below
- Update/save post
Key Classes
| Class | Purpose |
|---|---|
.daw-hero |
Hero section with black background |
.daw-stats |
Stats grid container |
.daw-stat-card |
Individual stat card (white bg) |
.daw-feature |
Feature box (white bg, dark text) |
.daw-card |
Content card (white bg, dark text) |
.daw-section |
Section with light gray bg |
.daw-cta |
Call-to-action (black bg, white text) |
.daw-code |
Code block (dark bg, white text) |
.daw-grid |
Responsive grid layout |
.daw-list |
Styled list |
.daw-link |
Styled link |
.daw-btn-primary |
Primary button (white bg, dark text) |
.daw-btn-secondary |
Secondary button (transparent, white text) |
WCAG AAA Compliance
All color combinations meet WCAG AAA standards (7:1+ contrast ratio):
| Background | Text | Contrast | WCAG |
|---|---|---|---|
| Black (#000000) | White (#ffffff) | 21:1 | AAA |
| White (#ffffff) | Very Dark (#1a1a1a) | 15.3:1 | AAA |
| White (#ffffff) | Medium Dark (#333333) | 12.6:1 | AAA |
| White (#ffffff) | Dark Purple (#5b21b6) | 7.2:1 | AAA |
| Dark Gray (#1a1a1a) | White (#ffffff) | 15.3:1 | AAA |
Common Issues & Fixes
Issue: Stat numbers invisible
Cause: White text on white stat cards
Fix: Add .daw-stat-card .daw-stat-number { color: #5b21b6 !important; }
Issue: CSS showing as raw text
Cause: Missing <style> tags
Fix: Wrap CSS in <style>CSS_HERE</style>
Issue: Text not visible
Cause: Wrong color combination Fix: Check background vs text color, ensure proper contrast
Issue: Inline styles overriding CSS
Cause: WordPress editor adding inline styles
Fix: Use !important declarations or remove inline styles
Issue: Table headers showing white text on white background
Cause: WordPress theme wraps tables in .table-container with conflicting CSS
Fix: Add maximum specificity CSS rules targeting .table-container thead th with both background and color:
.table-container thead th,
.daw-section .table-container thead th,
.daw-feature .table-container thead th,
.daw-card .table-container thead th,
table thead th[style*=color],
.table-container table thead th[style*=color] {
background: #000000 !important;
color: #ffffff !important;
-webkit-text-fill-color: #ffffff !important;
}
Issue: CTA button text invisible (e.g., "Visit Z.AI Platform")
Cause: Theme CSS classes like .cta-button, .primary override inline styles
Fix: Add specific CSS targeting these classes with -webkit-text-fill-color:
a.cta-button.primary,
a.cta-button.primary:link,
a.cta-button.primary:visited,
a.cta-button[style*="background: #000"],
a.cta-button[style*="background: #000000"] {
background: #000000 !important;
color: #ffffff !important;
-webkit-text-fill-color: #ffffff !important;
}
Issue: WordPress filters <style> tags from post content
Cause: WordPress content filters automatically remove style tags
Fix: Add CSS to theme stylesheet instead (e.g., /wp-content/themes/THEME/outstanding-enhancements.css)
Critical WordPress Integration Lessons
1. Table Styling with .table-container
WordPress automatically wraps tables in .table-container div. This causes CSS specificity issues:
- Inline styles on
<thead>may be overridden by theme CSS - Need maximum specificity selectors targeting
.table-container thead th - Include
-webkit-text-fill-colorfor browser compatibility
2. Theme Stylesheet vs Inline Styles
When WordPress filters <style> tags:
- Add CSS to
/wp-content/themes/THEME_NAME/outstanding-enhancements.css - Touch the file to force cache refresh:
touch /path/to/file.css - Use
!importantdeclarations generously to override theme defaults - Target specific classes like
.cta-button.primaryindividually
3. CTA Button Styling
Buttons with classes like .cta-button and .primary need special treatment:
- Always include
-webkit-text-fill-colorproperty - Target by attribute selector:
a.cta-button[style*="background: #000"] - Add rules for
:linkand:visitedpseudo-states - Use maximum specificity when needed
4. CSS Specificity Hierarchy
When inline styles fail, use this specificity order:
- Element selector with attribute:
table thead th[style*=color] - Multiple class selectors:
.daw-section .table-container thead th - Universal selector with attribute:
.table-container thead th * - All with
!importantand-webkit-text-fill-color
Tips
- Always wrap CSS in
<style>tags when adding to WordPress (or use theme stylesheet) - Use
!importantliberally when WordPress theme overrides - this is often necessary - Add
-webkit-text-fill-colorfor browser compatibility on text color issues - Test on mobile - the responsive CSS handles tablets and phones
- Preserve content - never remove existing content when styling
- Backup first - save post content before making changes
- Touch CSS file after changes to force browser cache refresh
- Check
.table-container- WordPress may wrap tables automatically - Target button classes -
.cta-button,.primary,.secondaryneed specific rules