Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/Venkateshvenki404224/frappe-apps-managerWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/venkateshvenki404224/frappe-apps-manager/frappe-plan-doctype)<a href="https://agentmods.dev/commands/venkateshvenki404224/frappe-apps-manager/frappe-plan-doctype"><img src="https://agentmods.dev/badge/commands/venkateshvenki404224/frappe-apps-manager/frappe-plan-doctype/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/venkateshvenki404224/frappe-apps-manager/frappe-plan-doctype"><img src="https://agentmods.dev/badge/commands/venkateshvenki404224/frappe-apps-manager/frappe-plan-doctype.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00017 | $0.01062 |
| Opus 5 | $0.00009 | $0.00531 |
| Sonnet 5 | $0.00003 | $0.00212 |
| Haiku 4.5 | $0.00002 | $0.00106 |
Grade A, and why
frappe-plan-doctype scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 35 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Frappe Plan DocType Command
Plan the DocType architecture for a feature exactly like a seasoned Frappe lead developer — interview the user, map the entities, propose DocType names and links, and lay out a flowchart of how everything connects. This command is a thin wrapper that defers to the frappe-doctype-architect skill.
The feature to design is provided in $ARGUMENTS.
Steps:
-
Get the feature. If
$ARGUMENTSis non-empty, treat it as the feature description (e.g., "an evaluation system for issuing certificates"). If it is empty, ask the user one question: "What feature do you want to design the DocType architecture for?" and wait for the answer. -
ALWAYS open with the interview — never the deliverable. No matter how detailed
$ARGUMENTSis, your first response is Stage-1 questions with proposed defaults, not the diagram or spec tables. A rich prompt is a starting point to interrogate, not a finished spec. Then run the frappe-doctype-architect staged Interview Engine end to end:- Reconnaissance (read-only, before drawing anything): scan the target app (and installed apps) for existing doctypes and decide reuse > extend > create for each entity — reuse
User/Contact/Print Formatrather than re-modeling; extend an existing doctype via own-app fields or Custom Field fixtures (other-app) before creating a new one. Locate doctypes atapps/<app>/**/doctype/*/*.json; checkhooks.pyfixtures for existing custom fields. Surface the verdict as deliverable item (b). - Stage 1 — Domain & actors (roles, the core "thing", the driving lifecycle).
- Stage 2 — Entities & cardinality (nouns → master vs transaction; 1:N vs M:N; persist vs compute).
- Stage 3 — Lifecycle & status (docstatus vs status field vs Workflow; states + legal transitions + triggers; audit trail).
- Stage 4 — Relationships (Link vs Dynamic Link; child table vs separate doctype; M:N → join doctype; trees; single-hop
fetch_from). - Stage 5 — Fields & data (required/computed,
fetch_from, naming strategy, uniqueness, conditional fields). - Stage 6 — Permissions & visibility (roles, owner-based, User Permissions, sharing).
- Stage 7 — Integrations & automation (Log doctypes, notifications, scheduled jobs, Single settings).
- Obey the operating rules: a stage is NOT one turn — pick only the 2–4 highest-leverage questions per turn, propose a sensible production-grade default with each (cite the real app it comes from), push back on weak/non-scaling answers, restate the FULL running model after every turn, and fill obvious gaps yourself. Do not emit the deliverable until the user has answered questions covering Stages 1–4 across at least 2–3 turns and has explicitly confirmed the running model at least once ("decidable" = user-confirmed, not self-assessed).
- Reconnaissance (read-only, before drawing anything): scan the target app (and installed apps) for existing doctypes and decide reuse > extend > create for each entity — reuse
-
Produce output items (a)–(f) from the skill's Output Format, in that exact order: (a) restated understanding, (b) the reuse & extension plan (per entity: reuse
X/ extendX(add …) / create new, with the reason, and the mechanism for each extend — own-app field vs Custom Field/Property Setter fixture), (c) a MermaiderDiagramflowchart of every doctype and its links (mark reused vs new nodes; every edge backed by a real field; Link targets must match the spec rows; a master-driven status is aLink, a hardcoded set is aSelect), (d) a per-DocType spec table framed as input to the builder (kind, naming strategy, key fields with fieldname | fieldtype | options/target | reqd | why; plus one table per extended doctype listing only the added fields + mechanism), (e) the relationship map in prose, (f) open questions / assumptions made. -
Then deliver item (g), the handoff offer — and do NOT write any files. Ask whether to:
- generate the actual DocType JSON via the frappe-doctype-builder skill (doctype by doctype, masters → child tables → transactions);
- generate status-transition controller code via the frappe-state-machine-helper skill (
validate_state_transition/on_submit;on_cancelonly if the design is made submittable); - escalate system-wide architecture to the frappe-architect agent.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 35 lines · 17 tokens per session scan A b08f4b059201
frappe-plan-doctype is a command published in the GitHub repository Venkateshvenki404224/frappe-apps-manager (27 stars, last pushed 3mo ago), licensed MIT. It adds 17 tokens to every session and 1,062 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
init
Initialize configurations for Supabase local development.
database-setup
Use when a project needs to store data and has no database yet. Setting up Supabase, creating tables, writing queries, and connecting them to the frontend. Written for designers.
ingest
Manually add knowledge to the Weaviate store.
json.batch_delete
Delete multiple JSON documents or paths in one itemwise batch.
json.batch_get
Read multiple JSON values by document and path.
kv.batch_get
Read multiple KV values by key.