CtrlK
BlogDocsLog inGet started
Tessl Logo

finkel/tasker-xml-authoring

Author and edit Android Tasker XML (tasks, profiles, projects, scenes) for import into the Tasker app — node skeleton, action codes, and per-arg encoding.

97

1.31x
Quality

97%

Does it follow best practices?

Impact

97%

1.31x

Average score across 4 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-3/

{
  "context": "Tests whether the agent correctly handles the limitation that Variable Search Replace (code 598) 'Store Matches' only captures the first match's groups — not all occurrences. The agent must use an iterative or list-based approach to collect all email addresses, use correct Tasker XML encoding conventions, look up the right action codes, and produce a valid .tsk.xml file.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Correct file suffix",
      "description": "The task export file uses the .tsk.xml suffix (not .xml, .task.xml, or any other variant)",
      "max_score": 8
    },
    {
      "name": "TaskerData skeleton",
      "description": "The root element is <TaskerData> with sr=\"\", dvi=\"1\", and tv attributes present",
      "max_score": 8
    },
    {
      "name": "Task sr naming",
      "description": "The Task node has its sr attribute set to task<id> format (e.g. sr=\"task10\"), matching its <id> value",
      "max_score": 8
    },
    {
      "name": "Correct VSR action code",
      "description": "The Variable Search Replace action uses <code>598</code> (not a guessed or incorrect code)",
      "max_score": 8
    },
    {
      "name": "All-match strategy",
      "description": "Does NOT rely on a single Variable Search Replace with 'Store Matches' to collect all addresses — uses an iterative loop, multiple search-replace passes, or pre-structures the source to return comma/newline-separated results",
      "max_score": 12
    },
    {
      "name": "Str text content encoding",
      "description": "Str argument elements hold their values as element text content (not in an attribute and not in a child element)",
      "max_score": 8
    },
    {
      "name": "Variable % prefix retained",
      "description": "All variable names inside Str elements retain their % prefix (e.g. %inputText, not inputText)",
      "max_score": 8
    },
    {
      "name": "No invented argument layout",
      "description": "Action argument slots (sr=\"arg0\", sr=\"arg1\", etc.) follow a plausible real export structure and are not clearly invented (e.g. does not place a regex pattern in a slot that would normally hold the variable name)",
      "max_score": 8
    },
    {
      "name": "notes.txt explains first-match limitation",
      "description": "notes.txt states (in any wording) that the pattern-match action only returns the first match / first occurrence, not all matches",
      "max_score": 12
    },
    {
      "name": "Flash action present",
      "description": "The task includes a Flash (or equivalent display) action intended to show the extracted addresses",
      "max_score": 8
    },
    {
      "name": "Int boolean encoding",
      "description": "Any boolean/checkbox argument in the XML is encoded as an Int with val=\"0\" or val=\"1\" (not as a string 'true'/'false')",
      "max_score": 6
    },
    {
      "name": "Internally consistent ids",
      "description": "All <id> values referenced inside the file are consistent — e.g. if an action references a task id, that id exists in the file",
      "max_score": 6
    }
  ]
}

tile.json