Frappe backend guidance for Python and backend-adjacent JavaScript surfaces such as client interaction patterns, hooks, APIs, patches, scheduler logic, reports, and server-side review.
SkillScore84Maintained
Automatic
◆Coding pack
Last verified 8/15/2026
What it changes
Passed 21 of 25 test cases with the skill, and 20 of 25 without it.
Without skill80%
With skill84%
Checks it passed that the model alone missed
Places document-level preparation logic in the validate lifecycle method.
Evaluates standard low-code mechanisms like Server Scripts before presenting custom app Python code.
2 fixed19 passed either way3 still failing1 broke
Pass-rate lift
+4 pp
Tokens
+3%
Agent turns
0%
Response time
-5%
Model gemini-3.6-flashMeasured 8/15/2026v121 of 25 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 2 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 2
Prompt
In custom DocType document logic, we need to generate an internal hash token before document fields are saved to the database during document save. Which standard lifecycle method in the Document controller class should contain this logic?
What was checked, without and with the skill
Checked
Without skill
With skill
Places document-level preparation logic in the validate lifecycle method.
Missed
Passed
case-22 · gemini-3.6-flash · 8/15/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md27 linessingle file
Treat Frappe backend work as a Python-first system with important JavaScript touchpoints.
Cover:
controllers and document lifecycle methods
hooks
whitelisted methods
scheduler jobs and background work
patches and migrations
server scripts when they are the right layer
report backends
client-to-server API contracts
Principles:
prefer framework APIs over ad hoc patterns
keep imports clean and explicit
use permissions deliberately
separate document logic, service logic, and integration logic
avoid accidental public APIs
Before writing code, decide whether the request should instead be handled by: