# Ipe: writing scripts and ipelets > Ipe is an extensible drawing editor with a Lua scripting interface. This documentation explains how to write Ipe scripts and ipelets (extensions of the editor) in Lua, with complete examples and a reference for all Lua functions. Ipe scripts run from the command line (`ipescript`) and process Ipe documents. Ipelets run inside the Ipe editor and must register undo items instead of modifying the document directly. Read the guide first: it lists the most common mistakes. Test ipelets without the editor with `ipescript run-ipelet`. ## Documentation - [Guide](https://otfried.github.io/ipe/llms-guide.txt): introduction, rules and pitfalls, tutorial with tested examples for scripts and ipelets - [Lua API reference](https://otfried.github.io/ipe/llms-api.txt): all Lua functions of Ipe (geometry, objects, pages, documents, stylesheets, the editor, dialogs and menus) - [Complete documentation](https://otfried.github.io/ipe/llms-full.txt): guide and reference in one file ## Optional - [AGENTS.md for ipelet folders](https://otfried.github.io/ipe/AGENTS-ipelets.md): a short instruction file that users can place in the folder with their ipelets; it points coding assistants to this documentation and tells them to test - [Ipe manual](https://otfried.github.io/ipe/): the user manual, in HTML - [Ipelib documentation](https://otfried.github.io/ipe/ipelib/): C++ library and Lua bindings, as generated by Doxygen - [Source code](https://github.com/otfried/ipe): includes the scripts, the ipelets, and the examples used in this documentation (Ipe 7.3.1, generated 2026-10-26 from commit 278ee7ba5506)