Add a signed-out landing page
Reading the codebase and writing the prompt. This page updates on its own.
promptodo is a lightweight todo list for developers. Point a project at a codebase, write what needs doing in a sentence, and get back a prompt for Claude Code, Codex or Cursor with the file paths, constraints and acceptance criteria already in it.
No card. After 10, connect your own Anthropic or OpenAI key.
Add a signed-out landing page
Reading the codebase and writing the prompt. This page updates on its own.
Add a signed-out landing page
Keep the existing server-rendered shell and theme tokens.
Wrong? Edit the todo and regenerate.
Add a signed-out landing page at GET /. Context: the app is server-rendered HTML. layout() owns the doctype, the theme attribute, the header, main and footer, so the new renderer supplies body markup only. Scope: src/app.ts and src/views.ts. No new stylesheet, font or client framework. Acceptance criteria: - A signed-out visitor to / sees the landing body instead of a redirect to /login. - An authenticated visitor still redirects to /projects. - tests/views.test.ts covers both branches. Testing: npm test. The suite needs a real Postgres, so run npm run test:db:up first.
01How it works
Connect GitHub, upload a digest of a local folder, or paste what matters. A project is one codebase plus the todos you want prompts for.
One line about what needs doing. Attach a screenshot if the change is visual. No context assembly, no template to fill in.
The prompt lands with the files it was built from and the assumptions it made. Edit anything, copy it, hand it to your agent.
02What goes into a prompt
Split by how often each part changes and what it costs to produce, so the stable parts sit in the cached prefix and only the slice is rebuilt per todo.
Extracted mechanically on every refresh: the commands CI actually runs, the environment surface, routes, the data model, formatter and TypeScript conventions, and one real test file. Every one is checkable against the repo.
Free. Rebuilt on refresh.
Written once per commit and shared by every project on it: what the system is, its areas, its invariants, and what would surprise a newcomer. Claims citing a file that is not in the repo are dropped.
Cached per commit sha.
Per todo: the files that todo is probably about, with real code for the top few and signatures for a wider ring. Lexical, not embeddings, because todos use the codebase's own vocabulary.
Weak match? The prompt says so.
03Checkable output
Grounding is not a guarantee. A prompt lists the repository files it was built from and states what it had to assume, so a wrong choice is visible before you paste it into an agent rather than after.
Wrong? Edit the todo and regenerate.
Weak match on a todo? It says so, instead of naming the wrong file with conviction.
04Codebase context
All three produce the same digest: file tree, README, agent instruction files and root manifests, capped at 36 KB. Committed dotenv files are walked and listed, never read.
Public repositories work anonymously. Private ones use a read-only connection to contents and metadata, on the repositories you pick. Tokens are minted per fetch and never stored.
Read-only. No write access, ever.
A hosted app cannot read your disk, so a dependency-free script walks the tree, skips node_modules and build output, and posts the digest with your own API token.
One command, no install.
A textarea for anything the optimizer should know: stack, conventions, key paths. The fastest way to try it on a codebase that is not on GitHub.
Nothing to connect.
curl -fsSL https://promptodo.com/digest.mjs -o /tmp/digest.mjs && \ PROMPTODO_URL=https://promptodo.com PROMPTODO_TOKEN=<your token> PROMPTODO_PROJECT=<id> node /tmp/digest.mjs
05Target agent
Claude Code explores a repository itself, so it gets the files to start from rather than their contents. Codex gets a single self-contained specification. Cursor gets the change first and the orientation second. Detected from the instruction files in your repo, and changeable in one dropdown.
06Keys and cost
Asking for an API key before you have seen a single generated prompt is a hard sell, so you do not have to. The allowance is a counter, not a tier: nothing about the pipeline changes between the two.
10 prompts free
A lifetime allowance on our key, so you can read real output on your own repository before handing over a credential. No card, no plan, no feature gating.
Generation is limited to 10 per minute, whoever is paying.
Your key after that
Connect an Anthropic or OpenAI key and generation is unlimited and billed to you directly. Connecting your own key only changes who pays.
Keys are encrypted at rest, verified once with the provider, never returned by any endpoint, and shown only as their last four characters.
What it does
What it does not
Outside the MVP on purpose. It is a todo list that writes prompts, not a project manager.
Four palettes
One token layer, four themes. Your choice is written onto the page before the first paint, so it never flashes the wrong palette. Pick one here and it follows you through signup.