Manage Things 3 tasks on macOS via AppleScript. Full CRUD: view, create, complete, move, and delete tasks and projects across all Things 3 lists.
98
100%
Does it follow best practices?
Impact
96%
2.04xAverage score across 5 eval scenarios
Passed
No known issues
{
"context": "Tests whether the agent composes AppleScript directly with osascript -e for operations not covered by the helper scripts, uses locale-safe relative date arithmetic, avoids the reserved 'result' variable name, uses _private_experimental_ json for output, and guards against empty list errors.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Uses osascript directly",
"description": "Script invokes osascript -e (or osascript with a heredoc/file) to execute AppleScript, rather than relying solely on things-create.sh or things-query.sh for the deadline/checklist operations",
"max_score": 11
},
{
"name": "Relative date arithmetic",
"description": "AppleScript sets due dates using relative arithmetic like '(current date) + N * days' rather than absolute date strings",
"max_score": 12
},
{
"name": "No absolute date literals",
"description": "Does NOT use the pattern date \"YYYY-MM-DD\" or similar locale-dependent date literals when setting due dates on tasks",
"max_score": 9
},
{
"name": "Avoids 'result' variable",
"description": "AppleScript code does NOT use 'result' as a variable name for string accumulation; uses 'output' or another name instead",
"max_score": 8
},
{
"name": "Uses _private_experimental_ json",
"description": "AppleScript uses the '_private_experimental_ json' property to retrieve structured data from task or project objects",
"max_score": 10
},
{
"name": "Empty list guard",
"description": "AppleScript checks the count of query results before accessing items (e.g., 'if (count of todoList) > 0') or uses 'every to do' to safely handle potentially empty lists",
"max_score": 10
},
{
"name": "Name lookup with count check",
"description": "AppleScript uses 'every to do whose name is/contains' with a subsequent count check, rather than 'first to do whose name is' without a guard, when finding tasks by name",
"max_score": 10
},
{
"name": "Checklist items in script",
"description": "Script includes AppleScript for adding checklist items (using 'make new to do' within a task/project context, or setting checklist items property) — an operation not available in the helper scripts",
"max_score": 10
},
{
"name": "Three distinct deadlines",
"description": "Script sets different relative deadlines (e.g., +5 days, +10 days, +14 days) for at least three different tasks",
"max_score": 10
},
{
"name": "Markdown deadline report",
"description": "The deadline_report.md presents the tasks and their deadlines as a markdown table or list (not raw JSON)",
"max_score": 10
}
]
}