Documentation Index
Fetch the complete documentation index at: https://agentapplications.io/llms.txt
Use this file to discover all available pages before exploring further.
agentic-to-do is a self-contained Agent Application package that demonstrates every part of the v1 contract in one place: an APP.md manifest, a JSON-first CLI, application-owned state, a local skill for agents, and automated tests.
Source: davetist/agentapplications
What it demonstrates
agentic-to-do shows how to build an Agent Application that an agent can inspect and operate safely without relying on prompt memory:
APP.mdas the contract — the manifest defines the CLI entry command, every command signature, output shape, state location, scheduling support, and confirmation requirements.- JSON-first CLI — every command writes structured JSON to stdout. Errors also return JSON with a non-zero exit code, so agents can parse success and failure the same way.
- Application-owned state — to-do items are stored in
app/state/todos.json. The application manages reads and writes; agents interact only through the CLI. - Stable IDs — items get IDs like
td_0001,td_0002that persist across runs and are safe to reference in subsequent commands. - Local skill —
skills/agentic-to-do-usage/SKILL.mdgives agents concise operating guidance without embedding it in the manifest. - Scheduling support — items accept an optional
--due-atISO date, surfaced in bothaddandupdate. - Confirmation guard —
removerequires--confirmso agents cannot delete items accidentally.
Package structure
| Path | Role |
|---|---|
APP.md | Manifest and CLI contract |
app/cli.js | JSON-first CLI entrypoint |
app/state/todos.json | Application-owned persistent state |
skills/agentic-to-do-usage/SKILL.md | Local skill for agent operating guidance |
The APP.md frontmatter
The manifest opens with a YAML frontmatter block that a runtime reads at catalog time:CLI commands
Run any command from the package root with:add
title is required. --description and --due-at are optional.
list
all when --status is omitted.
get
update
--clear-due-at to remove a previously set due date.
complete
remove
--confirm flag is required because the operation is destructive.
JSON output
Every command writes JSON to stdout. You parse the same structure whether the command succeeded or failed.Success
Failure
When a command fails, the CLI writes a structured error payload and exits with a non-zero code:Always check the
ok field first. A non-zero exit code means ok is false and the error object contains a machine-readable code and a human-readable message.State model
The application stores all to-do items inapp/state/todos.json. The file is created automatically on the first command if it does not exist.
IDs are stable and increment as td_0001, td_0002, and so on. Once assigned, an ID never changes.
Each item has the following fields:
| Field | Type | Description |
|---|---|---|
id | string | Stable identifier, e.g. td_0001 |
title | string | Required non-empty string |
description | string | Optional text, defaults to "" |
status | "open" or "completed" | Current state of the item |
dueAt | string or null | ISO-8601 date or datetime, or null |
createdAt | string | ISO-8601 timestamp set at creation |
updatedAt | string | ISO-8601 timestamp updated on every write |
completedAt | string or null | ISO-8601 timestamp set by complete, otherwise null |
Scheduling support
The manifest declaresscheduling: supported. In practice, this means add and update both accept a --due-at flag that takes an ISO-8601 date or datetime string.
Confirmation rule
The manifest declaresconfirmationRequired: [remove]. The CLI enforces this by requiring --confirm on every remove call. Omitting the flag causes the command to fail with a CONFIRMATION_REQUIRED error rather than silently deleting data.
Isolated runs and testing
You can point the CLI at a different state file by setting theAGENTIC_TODO_STATE_FILE environment variable: