CtrlK
BlogDocsLog inGet started
Tessl Logo

ssong-skills/things-skill

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

2.04x
Quality

100%

Does it follow best practices?

Impact

96%

2.04x

Average score across 5 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-4/

{
  "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
    }
  ]
}

evals

README.md

tile.json