frappe-core-workflow

Configure Frappe Workflow states, transitions, and docstatus rules.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill prevents Frappe Workflows from breaking in production by guiding you to configure states, transitions, permissions, conditions, and docstatus behavior so documents move correctly instead of getting stuck or failing permission checks.

Core Features & Use Cases

  • Workflow state machine correctness: Helps you design Workflow DocType states and transitions so docstatus moves in valid forward-only paths (Draft→Submitted→Cancelled) and avoids illegal 0→2 or backwards transitions.
  • Role-based and conditional approvals: Ensures transitions use the correct allowed roles and safe condition expressions so actions appear only for permitted users and required document fields/thresholds.
  • Production-safe permission and self-approval handling: Covers workflow permission errors and self-approval control using allow_self_approval, plus the rule that you should not manually call doc.submit()/doc.cancel() for workflow-controlled documents.

Quick Start

Use this skill to produce a complete Workflow configuration for a given DocType by specifying the target document lifecycle, required approval roles, optional conditional transitions (based on document fields), and the correct doc_status values for each state.

Frequently Asked Questions about frappe-core-workflow

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

FAQPage Schema
Why does my Frappe workflow document get stuck during state transitions?

Frappe workflow documents get stuck during state transitions due to invalid docstatus changes or permission errors. Configure forward-only state paths like Draft→Submitted→Cancelled and apply transitions via the workflow engine rather than manually calling doc.submit() or doc.cancel().

How do I configure conditional workflow transitions in Frappe using safe_eval?

Conditional workflow transitions in Frappe use safe_eval-compatible Python expressions applied to document fields. Configure the condition expression on the transition so actions appear only when specific document thresholds or field values are met.

How do I prevent Frappe workflow permission errors for approval roles?

Prevent Frappe workflow permission errors by assigning the correct allowed roles to each transition. Ensure the workflow configuration specifies exactly which roles can trigger state changes so the system validates user permissions correctly.

Can I use allow_self_approval to let users approve their own Frappe workflow documents?

You can control self-approval in Frappe workflows using the allow_self_approval setting. Configure this parameter within the workflow engine to explicitly permit or restrict the document creator from triggering their own approval transitions.

What are the valid docstatus transition rules for Frappe workflows?

Valid docstatus transition rules for Frappe workflows require forward-only state paths: Draft (0) to Submitted (1) to Cancelled (2). The workflow engine enforces these rules to prevent illegal 0 to 2 transitions or backwards state movements.

What is the correct schema needed to set up a Frappe Workflow DocType?

A correct Frappe Workflow DocType schema requires defined states, transitions, allowed roles, and doc_status values. You need this schema to properly structure the workflow engine so documents move reliably between states without permission failures.