frappe-performance-optimizer

Frappe Performance Optimizer

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "frappe-performance-optimizer" with this command: npx skills add venkateshvenki404224/frappe-apps-manager/venkateshvenki404224-frappe-apps-manager-frappe-performance-optimizer

Frappe Performance Optimizer

Generate performance-optimized code including efficient queries, caching strategies, and database indexes for Frappe applications.

When to Use This Skill

Claude should invoke this skill when:

  • User reports slow queries or performance issues

  • User wants to add caching

  • User needs database indexing

  • User mentions performance, optimization, or slow queries

  • User wants to eliminate N+1 queries

Capabilities

  1. Query Optimization

Optimized Report Query:

Efficient query with proper indexing

def get_sales_summary(from_date, to_date): return frappe.db.sql(""" SELECT si.customer, c.customer_name, c.customer_group, COUNT(si.name) as invoice_count, SUM(si.grand_total) as total_amount FROM tabSales Invoice si INNER JOIN tabCustomer c ON c.name = si.customer WHERE si.posting_date BETWEEN %s AND %s AND si.docstatus = 1 GROUP BY si.customer ORDER BY total_amount DESC LIMIT 100 """, (from_date, to_date), as_dict=True)

Add index for performance

frappe.db.add_index('Sales Invoice', ['customer', 'posting_date', 'docstatus'])

  1. Caching Implementation

Cache Expensive Calculations:

def get_item_price(item_code, price_list, customer=None): """Get price with caching""" cache_key = f"price:{item_code}:{price_list}:{customer or 'default'}"

# Try cache
cached_price = frappe.cache().get_value(cache_key)
if cached_price is not None:
    return cached_price

# Calculate price (expensive)
price = frappe.db.get_value('Item Price',
    filters={'item_code': item_code, 'price_list': price_list},
    fieldname='price_list_rate'
)

# Cache for 1 hour
if price:
    frappe.cache().set_value(cache_key, price, expires_in_sec=3600)

return price

3. Batch Operations

Bulk Update Pattern:

def bulk_update_items(updates): """Update multiple items efficiently""" # updates = [{'item_code': 'ITEM-001', 'is_active': 1}, ...]

# Build single query
item_codes = [u['item_code'] for u in updates]

frappe.db.sql("""
    UPDATE `tabItem`
    SET is_active = 1,
        modified = NOW(),
        modified_by = %s
    WHERE name IN %s
""", (frappe.session.user, tuple(item_codes)))

frappe.db.commit()

References

Performance Examples:

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

frappe-api-handler

No summary provided by upstream source.

Repository SourceNeeds Review
General

frappe-report-generator

No summary provided by upstream source.

Repository SourceNeeds Review
General

Speech Writer

演讲稿(TED风格)、婚礼致辞、商务演讲、励志演讲、祝酒词、演讲大纲。Speech writing for TED-style talks, wedding speeches, business presentations, motivational speeches, toasts, and outlines....

Registry SourceRecently Updated
General

Study Plan

学习计划生成器。考研计划、考证规划、每日学习、番茄钟。Study plan generator for exams, certifications, daily schedules. 学习计划、考研计划、备考规划。Use when creating study schedules.

Registry SourceRecently Updated