Craft Apps Guide

Reverse Engineer Anything (REA): Trace One Export Feature

Reverse Engineer Anything, or REA, helps a coding agent investigate how an application behaves and where a feature is implemented. This guide starts with REA's own small export example. You will follow one button to a file writer, check one output rule, and turn that evidence into a plan for a feature in a creative app.

ArtCraft's Craft Apps rebuild familiar creative workflows in open-source Rust applications. REA is a separate project. The exercise below explains a way to study one workflow; it does not describe how ArtCraft's team built its apps. ArtCraft's app directory ↗ and REA's project ↗ describe their respective products.

What you will investigate

Choose a single question: when a user selects Export, what turns the current content into a saved file? A useful answer names the input, the action, the output and the code or observation supporting each step. A file extension alone cannot tell you whether the exported content is correct.

REA's official Notes example ↗ is a small Electron teaching app. Its export path is short enough to follow from the page to a CSV writer. The example teaches the investigation method. The command used for this JavaScript example is not a command for analyzing ArtCraft's native Rust apps.

Trace the example

  1. Use Node.js and npm that meet REA's current setup requirements ↗. If you use a coding agent, run npx rea-agents@latest setup, review the changes it proposes, and reconnect the agent when setup finishes.
  2. Download the official Notes example ZIP ↗ and unpack the notes-example folder. You do not need to launch an Electron app for this static exercise.
  3. Give your coding agent the full path to that folder and this request:
Use REA to trace the Export notes feature in this Notes example. Show which page action starts it, how the call reaches the file writer, which fields go into the CSV, and the exact files and lines that support your answer. Label anything the static analysis cannot prove.

You can run the same initial scan from a terminal, replacing the example path with the folder you unpacked:

npx -y rea-agents@latest analyze-javascript-application "/absolute/path/to/notes-example" --json

The official example's source shows the page calling notes.exportCsv(), a notes:export message reaching the main process, and a handler using csv.js to write notes.csv to the user's Downloads folder. REA's analysis connects the call and handler; reading the source establishes the expected destination. Static analysis does not prove that a file was written on your computer. See the official walkthrough ↗.

Check the evidence

Ask the agent to point to the export handler and formatter rather than giving only a summary. Then check a case that could break a simplistic CSV exporter: a title containing both a comma and quotation marks. Use the example's toCsv formatter with an input title such as Blue, "Sky". The title should remain one CSV field, with its quotation marks escaped. Compare the formatter's output with the prediction and keep both.

Your evidence should now answer four distinct questions:

QuestionEvidence to keep
What starts the export?The page action and the function it calls
Where does the request go?The named message and its matching handler
What should be saved?The formatter, fields and expected destination
What has actually been checked?The formatter result; a separate run is needed to confirm a file was written

This difference between observed, read from code and tested matters when you investigate a larger editor. An agent's confident description is not a replacement for an opened output file.

Apply it to a creative app

Practice with an app you own or are authorized to examine. For a PhotoCraft-like image editor, pick one action: export a small drawing as PNG. Use a test document with a known size, a visible shape and a transparent corner. Record what the app actually offers before asking REA to explain it. Write your own implementation; keep the target's code and artwork out of your new project.

  1. Record the user-visible behavior. Note the menu action, format choices, suggested filename, save location and any message after export.
  2. Choose REA's matching workflow. For a web app, follow its browser observation guide ↗. For an installed native app, follow its native analysis guide ↗ and its provider requirements. The Notes command above is specific to JavaScript and Electron application files.
  3. Ask one narrow question. “Trace this Export PNG action to the output it creates. Separate directly observed behavior, code evidence and unknowns.” Give the agent the authorized app or sample, its version, and the exact action you performed.
  4. Write a small feature specification of your own. State the input document, export action, expected filename and format, image dimensions, transparency behavior, and the response when saving fails. Build only that feature, then open the new file and compare it with the original observation. Differences belong in the result.

REA can help identify a path through a program. It does not supply a complete creative editor, guarantee file compatibility, or turn one observed button into every related feature. If you are evaluating a Craft App for your work, test a copy of your own file with the relevant app and release. How Was ArtCraft Built? explains what the public ArtCraft repositories do and do not establish about development.