frappe-core-search

Configure Frappe search subsystems with permission filtering and hooks.

163|53|Updated Jan 14, 2026
One-click install
npx skills add https://github.com/Impertio-Studio/Frappe_Claude_Skill_Package --skill frappe-core-search-impertio-studio
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: frappe-core-search
Source: https://github.com/Impertio-Studio/Frappe_Claude_Skill_Package/tree/main/skills/source/core/frappe-core-search
Command: npx skills add https://github.com/Impertio-Studio/Frappe_Claude_Skill_Package --skill frappe-core-search-impertio-studio

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill prevents search implementations in Frappe from failing silently or returning incomplete results by ensuring the correct configuration, permission filtering, and matching subsystem are used.

Core Features & Use Cases

  • Link field search that actually finds records: Configure DocType search_fields so users can search by meaningful titles instead of only by name, and use standard_queries or per-field query overrides for custom behavior.
  • Global search that matches user expectations: Enable in_global_search=1 on the right fields, understand the indexing/sync delay, and rebuild indexes when needed to avoid “missing results” confusion.
  • Full-text search that supports modern query needs: Choose the right engine (Whoosh legacy, or SQLiteSearch FTS5 in v15+) and implement proper permission filtering to avoid exposing data users should not see.
  • Awesomebar/website search alignment: Apply the correct approach for desk vs website search so autocomplete and web search behave consistently.

Quick Start

Use the frappe-core-search Skill to design the correct search approach for your feature (link autocomplete, global/website search, or SQLiteSearch FTS5) and to generate the needed hooks and configurations without missing search_fields or permission filtering.

Frequently Asked Questions about frappe-core-search

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I configure Frappe link field search to find records by title instead of name?

Frappe global search indexes data asynchronously, causing a sync delay before new records appear. You must enable `in_global_search=1` on target fields and rebuild indexes to resolve missing results.

Does Frappe v15 support SQLite FTS5 for full-text search?

Frappe v15 and v16 support SQLiteSearch FTS5 as a modern full-text search engine. You must implement proper permission filtering to prevent exposing restricted data during website search queries.

Why does Frappe global search return incomplete results after adding new records?

Frappe global search requires enabling `in_global_search=1` on specific fields. Because indexing happens with a sync delay, you often need to rebuild indexes to avoid missing results and ensure data visibility.

What is the best way to apply permission filtering in Frappe website search?

Frappe website search permission filtering is applied via hooks and `get_search_filters`. Configuring these ensures your full-text search queries respect user roles and never expose unauthorized records.

Can I use custom whitelisted queries for Frappe awesomebar search?

Frappe awesomebar search can use safe custom query whitelisting to align desk and website behavior. This ensures autocomplete functions consistently while maintaining strict permission filtering across search subsystems.