mit einem Klick
odoo-app-landing-page
// Create or update index.html landing pages for Odoo modules following App Store restrictions and best practices
// Create or update index.html landing pages for Odoo modules following App Store restrictions and best practices
| name | odoo-app-landing-page |
| description | Create or update index.html landing pages for Odoo modules following App Store restrictions and best practices |
| allowed-tools | Read, Write, Edit, Grep, Glob |
When the user asks to create or update an index.html file for an Odoo module's landing page, follow these instructions to ensure compliance with Odoo App Store sanitization rules.
Odoo App Store has strict HTML/CSS sanitization that strips many common patterns. This skill helps you create landing pages that survive sanitization and look professional.
ODOO_APP_STORE_HTML_GUIDE.md - Complete documentation of safe/unsafe patternsllm_mcp_server/static/description/index.html - Production-ready exampleNO DOCTYPE or full HTML structure
<!DOCTYPE>, <html>, <head>, <body> tags<section> tagsNO inline flexbox alignment properties
<!-- ❌ BAD - Will be stripped -->
<div style="display:flex; align-items:center; justify-content:center">
<!-- ✅ GOOD - Use Bootstrap classes -->
<div class="d-flex align-items-center justify-content-center"></div>
</div>
NO rgba() colors
<!-- ❌ BAD -->
<div style="background-color:rgba(135,90,123,0.1)">
<!-- ✅ GOOD - Use hex -->
<div style="background-color:#f5efff"></div>
</div>
NO transitions, transforms, or animations
NO inline JavaScript
onclick, onmouseover, or any event handlersNO linear gradients
NO external links (mostly)
<!-- ❌ BAD - Becomes <span> -->
<a href="https://github.com/yourorg">GitHub</a>
<!-- ✅ GOOD - Display as text -->
<code>github.com/yourorg/repo</code>
<!-- ✅ GOOD - mailto works -->
<a href="mailto:support@example.com">Contact</a>
NO unicode special characters
<!-- ❌ BAD - Becomes garbled (→ becomes â) -->
Preferences → API Keys
<!-- ✅ GOOD - Use HTML entities -->
Preferences → API Keys
Bootstrap 5 grid system
container, row, col-md-*, col-lg-*, col-12Bootstrap utility classes
d-flex, align-items-center, justify-content-centerp-4, mb-5, mt-3, mx-autotext-center, shadow-sm, h-100Hex colors only
#875A7B (Odoo purple), #f8f9fa, #333, #fffInline styles for
color, background-color, font-size, font-weightpadding, margin, border-radius, borderline-height, text-align, width, heightIcon centering alternatives
<!-- Method 1: text-center + line-height -->
<div
class="text-center"
style="width:64px; height:64px; line-height:64px; border-radius:50%; background-color:#875A7B"
>
<i
class="fa fa-icon"
style="color:#fff; font-size:32px; vertical-align:middle"
></i>
</div>
<!-- Method 2: Bootstrap flex classes -->
<div
class="d-flex align-items-center justify-content-center"
style="width:64px; height:64px; border-radius:50%; background-color:#875A7B"
>
<i class="fa fa-icon" style="color:#fff; font-size:32px"></i>
</div>
HTML entities for special characters
→ (→), ← (←), — (—), © (©), • (•)Ask the user (if not already provided):
ALWAYS read these files before starting:
# Read the comprehensive guide
Read ODOO_APP_STORE_HTML_GUIDE.md
# Read the working example
Read llm_mcp_server/static/description/index.html
Use this proven structure:
1. Hero Section
- Eye-catching title
- Brief description
- Key value propositions (badges/pills)
2. What Is It Section
- Explain the concept/technology
- Why it matters
- Benefits
3. Demo Section (if available)
- Screenshot or GIF
- Caption
4. Features Section
- 4-6 feature cards
- Icons + descriptions
5. Use Cases Section
- Real-world examples
- Natural language operation examples
6. Setup Instructions (if applicable)
- Step-by-step installation
- Configuration examples
7. Technical Features (for developers)
- Code examples
- Integration points
8. Security/Enterprise Features
- Access control
- Compliance
- Permissions
9. Related Modules
- Ecosystem integration
- Cross-sell opportunities
10. Support/Documentation
- Links to docs (as plain text or code)
- Contact email (mailto)
11. Footer
- Company info
- License
- Contact links
Use these safe hex colors:
Primary Colors:
#875A7B or #71639e (from example)#212529, #333, #495057#6c757d, #666#868e96Backgrounds:
#f8f9fa#f5efff, #f7f2fa#fff or #ffffffAccents:
#28a745, #155724#17a2b8, #0c5460#ffc107#007bff (for buttons)ALWAYS include responsive column classes:
<!-- 3 columns on desktop, 1 on mobile -->
<div class="col-md-4 col-12 mb-4">
<!-- 4 columns on desktop, 2 on tablet, 1 on mobile -->
<div class="col-md-3 col-sm-6 col-12 mb-4">
<!-- 6 on large, 4 on medium, 2 on small -->
<div class="col-lg-2 col-md-4 col-6 mb-4"></div>
</div>
</div>
<div class="col-md-4 col-12 mb-4">
<div class="card h-100 border-0 shadow-sm" style="border-radius:16px">
<div class="card-body p-4">
<div
class="bg-light d-flex align-items-center justify-content-center"
style="width:56px; height:56px; border-radius:12px; margin-bottom:1.5rem"
>
<i class="fa fa-icon-name" style="font-size:28px; color:#71639e"></i>
</div>
<h3
style="font-size:1.25rem; font-weight:700; color:#212529; margin-bottom:1rem"
>
Feature Title
</h3>
<p
style="color:#6c757d; font-size:0.95rem; line-height:1.7; margin-bottom:0"
>
Feature description text
</p>
</div>
</div>
</div>
<pre
class="bg-dark"
style="color:#ffffff; margin:0; padding:1.25rem; border-radius:12px; border:none; white-space:pre; font-family:monospace; font-size:0.85rem; line-height:1.6"
>
# Your code here
def example():
pass
</pre>
Before completing, verify:
//apps.odoocdn.com/apps/assets/18.0/MODULE_NAME/image.pngLanding pages go in:
MODULE_NAME/static/description/index.html
If the module has images:
<img
src="//apps.odoocdn.com/apps/assets/18.0/MODULE_TECHNICAL_NAME/screenshot.png"
alt="Descriptive alt text"
class="img-fluid rounded"
style="max-width:100%"
/>
<section style="padding:4rem 0 3rem">
<div class="container">
<div class="text-center" style="max-width:800px; margin:0 auto">
<h1
style="font-size:3rem; font-weight:800; color:#212529; margin-bottom:1.5rem; line-height:1.2"
>
Your Module Title
</h1>
<p
style="font-size:1.25rem; color:#6c757d; margin-bottom:2rem; line-height:1.6"
>
Brief compelling description
</p>
</div>
</div>
</section>
<hr class="my-5 bg-secondary" style="height:2px; border:none; opacity:0.5" />
<div class="row g-4">
<div class="col-md-4 col-12">
<!-- Feature card -->
</div>
<div class="col-md-4 col-12">
<!-- Feature card -->
</div>
<div class="col-md-4 col-12">
<!-- Feature card -->
</div>
</div>
<div
class="text-center mb-5 bg-primary"
style="padding:3rem 2rem; border-radius:16px"
>
<h3
style="color:#ffffff; font-weight:700; font-size:2rem; margin-bottom:1rem"
>
Call to Action Title
</h3>
<p style="color:#f8f9fa; font-size:1.1rem; margin-bottom:0">
Supporting text
</p>
</div>
llm_mcp_server/static/description/index.htmlODOO_APP_STORE_HTML_GUIDE.md for edge cases<code> tagsThe Odoo App Store sanitizer is aggressive. When in doubt:
ODOO_APP_STORE_HTML_GUIDE.md)llm_mcp_server/static/description/index.html)Remember: Bootstrap classes are safer than inline styles for flexbox and layout properties!