{
  "name": "Bash call purpose",
  "description": "Primary purpose of each Bash tool call across 49 options derived from embedding clusters of agent shell commands. Decision model evaluator.",
  "definition": {
    "type": "DECISION_MODEL",
    "questions": [
      {
        "id": "bash_purpose",
        "scoreName": "bash_purpose",
        "type": "choice",
        "instructions": "`tool_call` is one shell command that an AI coding agent ran through a Bash tool, as JSON. `command` is the shell text. `description`, or `arguments.description`, is the agent's own one-line statement of why it ran the command when present. Which option best describes the primary purpose of this command? Judge the purpose from the command text and use the description to settle doubt. For a compound command, choose the purpose of its main step and ignore setup such as cd, export, date, sleep before a check, or output filters like head and tail. For a wrapper such as ssh, docker exec, timeout or bash -c, judge the inner command. Choose unclear when the purpose cannot be decided, and other when it is clear but no option fits.",
        "options": [
          {
            "value": "code_search",
            "description": "Search the current repository for a pattern or symbol (grep, rg, git grep, find -name) to locate code, docs or config."
          },
          {
            "value": "code_read_file",
            "description": "Read known files or line ranges in the current repository (cat, sed -n, head, nl), including tests, CI workflows and docs."
          },
          {
            "value": "code_list_structure",
            "description": "List or walk files and directories to learn the layout of a repository (ls, find, tree, du) without a content pattern."
          },
          {
            "value": "code_read_history",
            "description": "Read code as it was at another revision or in a past change (git show rev:path, git show or diff of a commit, git log -p)."
          },
          {
            "value": "code_read_dependency",
            "description": "Read the source, types or binaries of an installed third-party package or tool (site-packages, node_modules, strings on a binary)."
          },
          {
            "value": "knowledge_read_notes",
            "description": "Read or search project notes, agent memory or a knowledge base kept beside the code."
          },
          {
            "value": "edit_source",
            "description": "Change source, test or style files in place through an inline script, sed -i, a patch or a heredoc."
          },
          {
            "value": "edit_docs",
            "description": "Change documentation or prose pages such as Markdown guides and READMEs."
          },
          {
            "value": "edit_dependency_versions",
            "description": "Bump a package version or update a lockfile (uv lock, version fields in pyproject or package.json)."
          },
          {
            "value": "edit_diagram",
            "description": "Open, read or update a diagram file in a diagram editor or through its CLI."
          },
          {
            "value": "verify_unit_tests",
            "description": "Run a unit or integration test suite or selected tests and read the result (pytest, vitest, jest, go test)."
          },
          {
            "value": "verify_browser_tests",
            "description": "Run browser or end-to-end test suites (Playwright specs, e2e scripts, headless browser test runs)."
          },
          {
            "value": "verify_mutation_check",
            "description": "Deliberately break code in a scratch copy and rerun tests to prove that a test fails without the change."
          },
          {
            "value": "verify_lint_typecheck",
            "description": "Run linters, formatters or type checkers (ruff, mypy, eslint, prettier, tsc --noEmit, make lint)."
          },
          {
            "value": "verify_build_artifact",
            "description": "Build an artifact to check it compiles or renders: a docs site, web bundle, mobile app or slide deck."
          },
          {
            "value": "verify_visual_render",
            "description": "Render a page or image and inspect how it looks: screenshots, headless browser DOM or layout measurement, pixel analysis."
          },
          {
            "value": "verify_probe_script",
            "description": "Run a throwaway probe script against the code or a running system to observe one behaviour, outside a test suite."
          },
          {
            "value": "verify_read_saved_results",
            "description": "Read the saved output of an earlier test, build or benchmark run from a log or results file."
          },
          {
            "value": "git_inspect_changes",
            "description": "Inspect local git state: status, diff, diff --check, log or show of the working tree and recent commits."
          },
          {
            "value": "git_stage_commit",
            "description": "Stage and record changes: git add, commit, amend, cherry-pick."
          },
          {
            "value": "git_sync_remote",
            "description": "Exchange commits with a remote: fetch, pull, rebase onto a fetched branch, push."
          },
          {
            "value": "git_manage_worktrees",
            "description": "Create, list or remove git worktrees, including removing scratch worktrees after use."
          },
          {
            "value": "forge_issues_reviews",
            "description": "Read or change issues, pull requests, comments or labels on a code forge through its CLI or API."
          },
          {
            "value": "forge_ci_runs",
            "description": "Check continuous integration runs, job logs, commit statuses or release assets on a forge."
          },
          {
            "value": "forge_read_remote_repository",
            "description": "Read files, metadata or releases of another repository on a forge (gh repo read-file, contents and repo APIs)."
          },
          {
            "value": "agents_message",
            "description": "Send a message or report to another agent or teammate through the agent platform."
          },
          {
            "value": "agents_report_status",
            "description": "Report task phase or progress, attach a ticket, or register a wait or watch on the agent platform."
          },
          {
            "value": "agents_observe_sessions",
            "description": "Inspect other agent sessions or terminals (session lists, pane captures, workspace details)."
          },
          {
            "value": "service_start_stop",
            "description": "Start, stop, restart or kill a service or process, or free a port it holds."
          },
          {
            "value": "service_deploy",
            "description": "Deploy or redeploy an application: compose up, image build and swap, platform deploy commands."
          },
          {
            "value": "runtime_service_status",
            "description": "Read the status or configuration of a managed service (systemctl status or show)."
          },
          {
            "value": "runtime_processes",
            "description": "Inspect processes and their parents, states or resource use (ps, pgrep, /proc)."
          },
          {
            "value": "runtime_containers_hosts",
            "description": "Inspect containers or remote hosts (docker ps or inspect, ssh to look at a machine)."
          },
          {
            "value": "runtime_logs",
            "description": "Read or search service, daemon or container logs for errors and events (docker logs, journalctl, log files)."
          },
          {
            "value": "data_sql_query",
            "description": "Query a database with SQL (psql, ClickHouse, sqlite), directly or through docker exec or ssh."
          },
          {
            "value": "data_observability_api",
            "description": "Query an observability, gateway or internal service API for records (traces, spans, usage, model lists)."
          },
          {
            "value": "data_analyze_local_files",
            "description": "Analyze local data files with a throwaway script: parse JSON or JSONL, count, group or summarize records on disk."
          },
          {
            "value": "data_calculation",
            "description": "Compute values with an inline script, such as colour contrast, statistics or unit conversions."
          },
          {
            "value": "config_secrets",
            "description": "List, read or inject credentials through a secrets manager or environment file."
          },
          {
            "value": "config_tool_settings",
            "description": "Read or change the configuration of a tool or agent (config show, config files outside the repository)."
          },
          {
            "value": "config_cli_help",
            "description": "Read a command's help or usage text to learn its options (--help, help subcommands)."
          },
          {
            "value": "env_toolchain_versions",
            "description": "Locate runtimes and check their versions or PATH (which, node -v, version managers)."
          },
          {
            "value": "env_package_metadata",
            "description": "Query a package registry for versions, peer dependencies or tarballs (npm view, pip index)."
          },
          {
            "value": "env_install_dependencies",
            "description": "Install, sync or link dependencies into a workspace (npm ci, uv sync, linking node_modules)."
          },
          {
            "value": "research_fetch_web",
            "description": "Fetch public web pages or documentation to learn something, often parsed with a script."
          },
          {
            "value": "wait_sleep_or_poll",
            "description": "Wait for something to finish: sleep, or a loop or delayed read that re-checks output or status."
          },
          {
            "value": "shell_trivial",
            "description": "Only probe the shell or a single path: date, echo, pwd, ls of one file."
          },
          {
            "value": "other",
            "description": "The purpose is clear but no label above fits."
          },
          {
            "value": "unclear",
            "description": "The purpose cannot be decided from the command and description."
          }
        ]
      }
    ],
    "modelConfig": {
      "provider": "<your decision model connection>",
      "model": "<decision model, for example jev-latest>"
    },
    "variableMapping": [
      {
        "templateVariable": "tool_call",
        "selectedColumnId": "input"
      }
    ]
  }
}
