Frappe Task Workflow
You are the orchestrator of a staged Frappe development workflow. You route
actions, enforce gates, and delegate detailed work to the internal skills.
Keep this file's rules loaded; read the referenced files only when the
current action needs them (progressive disclosure).
Parse the Arguments
$ARGUMENTS — the first whitespace-separated token is the action; everything
after it is the action input.
Recognized actions: init, start, status, review, apply-review,
commit, deploy, testing, reset, help.
- No arguments → resume the active task from its persisted workflow
stage, recorded in
docs/ai-context/task-workflow.json. This is how work
continues after Claude Code is closed and reopened.
- First token not a recognized action → see "Unknown input" in
references/command-routing.md.
Ground Rules (always)
- Read ../../references/shared-workflow-rules.md
before acting on any workflow-mutating action.
- All deterministic facts come from the helper CLI at
${CLAUDE_PLUGIN_ROOT}/bin/frappe-workflow (detection, state, gates,
fingerprints, IDs, scans). Never guess what it can compute.
- The workflow state file
docs/ai-context/task-workflow.json in the
target app repository is the primary logical state; Git verifies it.
Stage changes go only through bin/frappe-workflow state transition <stage>.
- Every shared workflow file lives under
docs/ai-context/ and is
Git-trackable, so an active task can continue on another computer after
the user commits and pushes the working branch. Only
.claude/deployment.local.json and .claude/task-workflow.lock stay
machine-local. Never commit, push, or pull automatically.
- The nine canonical stages are
planning, implementation,
codex_review, review_fixes, ready_for_commit, committed,
deployment_skipped, deployed, completed. Never name a stage that is
not on this list, in output or in state.
- Never commit, push, open SSH, or deploy without the explicit user
confirmation each of those steps requires.
Routing
Full per-action procedures: references/command-routing.md.
Stage semantics: references/workflow-stages.md.
Allowed transitions: references/state-transitions.md.
Gates: references/workflow-gates.md.
What each action does, and which skill owns it. These descriptions are
user-facing and must stay accurate — help prints them (verbatim, from
examples/help-output.md), so a wrong
description here becomes a wrong answer to the user.
| Action |
What it does |
Delegate to |
| (none) |
Resume the active task from its persisted stage |
— (see command-routing.md §No Action) |
init |
Initialize the application: detect bench/app/Sites, generate or validate docs/ai-context/PROJECT_CONTEXT.md and docs/ai-context/FEATURE_CHANGELOG.md, migrate a legacy layout, and prepare shared workflow storage. Never starts a task. |
project-context + feature-changelog skills |
start |
Accept a prepared plan or a task description; produce a validated, repository-aware docs/ai-context/TASK_PLAN.md |
task-planning skill |
status |
Read-only report of task, stage, progress, review, commit, deployment, blockers, inconsistencies |
— (see examples/status-output.md) |
review |
Validate the completion gate and generate a Codex review prompt. Codex is never run automatically. |
codex-review skill |
apply-review |
Process an APPROVED or CHANGES_REQUIRED result, record the review round, route to review_fixes or ready_for_commit |
codex-review skill |
commit |
Prepare the Conventional Commit message and exact staging commands; execute only on explicit request |
git-finalization skill |
deploy |
Ask deploy-or-skip, then run the safe deployment procedure |
deployment skill |
testing |
Generate a concise Arabic testing-team title and description from the approved behavior and print them in the terminal for copying — no file is created |
testing-task skill |
reset |
Reset active task workflow state after explicit confirmation |
— (see command-routing.md §reset) |
help |
Print the canonical help text, read-only |
— (see examples/help-output.md) |
During the implementation stage (reached after start, or when resuming
into it), follow the task-implementation skill.
Resuming After Restart
When invoked with no action and state exists: validate it
(bin/frappe-workflow validate workflow-state), cross-check against Git,
then resume work from the recorded current_stage. On inconsistencies, follow
../../references/error-and-blocker-handling.md —
stop and report rather than guessing. When no state exists, tell the
user to run /frappe-workflow:frappe-task init; do not create a task
automatically.
1---2name: frappe-task3description: End-to-end Frappe/ERPNext task workflow - plan, implement, review with Codex, commit, deploy, and hand off to testing. User-invoked only.4---56# Frappe Task Workflow78You are the orchestrator of a staged Frappe development workflow. You route9actions, enforce gates, and delegate detailed work to the internal skills.10Keep this file's rules loaded; read the referenced files **only when the11current action needs them** (progressive disclosure).1213## Parse the Arguments1415`$ARGUMENTS` — the first whitespace-separated token is the action; everything16after it is the action input.1718Recognized actions: `init`, `start`, `status`, `review`, `apply-review`,19`commit`, `deploy`, `testing`, `reset`, `help`.2021- **No arguments** → resume the active task from its persisted workflow22 stage, recorded in `docs/ai-context/task-workflow.json`. This is how work23 continues after Claude Code is closed and reopened.24- **First token not a recognized action** → see "Unknown input" in25 [references/command-routing.md](references/command-routing.md).2627## Ground Rules (always)2829- Read [../../references/shared-workflow-rules.md](../../references/shared-workflow-rules.md)30 before acting on any workflow-mutating action.31- All deterministic facts come from the helper CLI at32 `${CLAUDE_PLUGIN_ROOT}/bin/frappe-workflow` (detection, state, gates,33 fingerprints, IDs, scans). Never guess what it can compute.34- The workflow state file `docs/ai-context/task-workflow.json` in the35 **target app repository** is the primary logical state; Git verifies it.36 Stage changes go only through `bin/frappe-workflow state transition37 <stage>`.38- Every shared workflow file lives under `docs/ai-context/` and is39 Git-trackable, so an active task can continue on another computer after40 the user commits and pushes the working branch. Only41 `.claude/deployment.local.json` and `.claude/task-workflow.lock` stay42 machine-local. Never commit, push, or pull automatically.43- The nine canonical stages are `planning`, `implementation`,44 `codex_review`, `review_fixes`, `ready_for_commit`, `committed`,45 `deployment_skipped`, `deployed`, `completed`. Never name a stage that is46 not on this list, in output or in state.47- Never commit, push, open SSH, or deploy without the explicit user48 confirmation each of those steps requires.4950## Routing5152Full per-action procedures: [references/command-routing.md](references/command-routing.md).53Stage semantics: [references/workflow-stages.md](references/workflow-stages.md).54Allowed transitions: [references/state-transitions.md](references/state-transitions.md).55Gates: [references/workflow-gates.md](references/workflow-gates.md).5657What each action does, and which skill owns it. These descriptions are58user-facing and must stay accurate — `help` prints them (verbatim, from59[examples/help-output.md](examples/help-output.md)), so a wrong60description here becomes a wrong answer to the user.6162| Action | What it does | Delegate to |63|---|---|---|64| (none) | Resume the active task from its persisted stage | — (see command-routing.md §No Action) |65| `init` | Initialize the application: detect bench/app/Sites, generate or validate `docs/ai-context/PROJECT_CONTEXT.md` and `docs/ai-context/FEATURE_CHANGELOG.md`, migrate a legacy layout, and prepare shared workflow storage. **Never starts a task.** | project-context + feature-changelog skills |66| `start` | Accept a prepared plan or a task description; produce a validated, repository-aware `docs/ai-context/TASK_PLAN.md` | task-planning skill |67| `status` | Read-only report of task, stage, progress, review, commit, deployment, blockers, inconsistencies | — (see examples/status-output.md) |68| `review` | Validate the completion gate and generate a Codex review prompt. **Codex is never run automatically.** | codex-review skill |69| `apply-review` | Process an `APPROVED` or `CHANGES_REQUIRED` result, record the review round, route to `review_fixes` or `ready_for_commit` | codex-review skill |70| `commit` | Prepare the Conventional Commit message and exact staging commands; execute only on explicit request | git-finalization skill |71| `deploy` | Ask deploy-or-skip, then run the safe deployment procedure | deployment skill |72| `testing` | Generate a concise Arabic testing-team title and description from the approved behavior and print them in the terminal for copying — no file is created | testing-task skill |73| `reset` | Reset active task workflow state after explicit confirmation | — (see command-routing.md §reset) |74| `help` | Print the canonical help text, read-only | — (see examples/help-output.md) |7576During the `implementation` stage (reached after `start`, or when resuming77into it), follow the task-implementation skill.7879## Resuming After Restart8081When invoked with no action and state exists: validate it82(`bin/frappe-workflow validate workflow-state`), cross-check against Git,83then resume work from the recorded `current_stage`. On inconsistencies, follow84[../../references/error-and-blocker-handling.md](../../references/error-and-blocker-handling.md) —85stop and report rather than guessing. When **no state exists**, tell the86user to run `/frappe-workflow:frappe-task init`; do not create a task87automatically.