{
  "schemaVersion": "1.0",
  "item": {
    "slug": "research-tracker",
    "name": "Research Tracker",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/julian1645/research-tracker",
    "canonicalUrl": "https://clawhub.ai/julian1645/research-tracker",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/research-tracker",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=research-tracker",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "research-tracker",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-08T05:03:21.532Z",
      "expiresAt": "2026-05-15T05:03:21.532Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=research-tracker",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=research-tracker",
        "contentDisposition": "attachment; filename=\"research-tracker-0.1.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "research-tracker"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/research-tracker"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/research-tracker",
    "agentPageUrl": "https://openagent3.xyz/skills/research-tracker/agent",
    "manifestUrl": "https://openagent3.xyz/skills/research-tracker/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/research-tracker/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Research Tracker",
        "body": "CLI tool for managing autonomous research agents with append-only state, instruction queues, and oversight."
      },
      {
        "title": "Prerequisites",
        "body": "brew tap 1645labs/tap\nbrew install julians-research-tracker\n\nOr: go install github.com/1645labs/julians-research-tracker/cmd/research@latest"
      },
      {
        "title": "Start a research project",
        "body": "research init market-q1 --name \"Q1 Market Analysis\" --objective \"Analyze competitor pricing and positioning\""
      },
      {
        "title": "As the research agent — log progress",
        "body": "export RESEARCH_SESSION_ID=\"$SESSION_KEY\"  # Track which agent is writing\n\nresearch log market-q1 STEP_BEGIN --step 1 --payload '{\"task\":\"gather sources\"}'\n# ... do work ...\nresearch log market-q1 STEP_COMPLETE --step 1\nresearch heartbeat market-q1"
      },
      {
        "title": "Check status (from main session or heartbeat)",
        "body": "research status market-q1 --json\nresearch context market-q1 --last 5  # Truncated context for prompts"
      },
      {
        "title": "Send instructions to running agent",
        "body": "research instruct market-q1 \"Focus on enterprise segment\" --priority URGENT\nresearch stop-signal market-q1  # Request graceful stop"
      },
      {
        "title": "Agent checks for instructions",
        "body": "research pending market-q1 --json\nresearch ack market-q1 --all  # Acknowledge after processing\nresearch check-stop market-q1  # Exit 0 = stop, Exit 1 = continue"
      },
      {
        "title": "Commands Reference",
        "body": "CommandPurposeinit <id> -o \"...\"Create project with objectivelist [--status active|done|all]List projects (includes needs_attention flag)show <id>Project details + recent eventsstop <id>Stop project, send STOP instructionarchive <id>Archive completed projectlog <id> <event> [--step N]Log event (STEP_BEGIN, CHECKPOINT, BLOCKED, etc.)heartbeat <id>Update alive timestampblock <id> --reason \"...\"Mark blocked, needs inputcomplete <id>Mark donestatus <id> [--json]Current state summarycontext <id> [--last N]Truncated context for agent promptsinstruct <id> \"text\"Send instructionpending <id>List unacked instructionsack <id> [--all]Acknowledge instructionscheck-stop <id>Exit code: 0=stop, 1=continueaudit <id> --verdict pass|driftLog audit result"
      },
      {
        "title": "Event Types",
        "body": "STARTED, STEP_BEGIN, STEP_COMPLETE, CHECKPOINT, BLOCKED, UNBLOCKED, AUDIT_PASS, AUDIT_DRIFT, HEARTBEAT, DONE, STOPPED, TIMEOUT"
      },
      {
        "title": "Spawning a research agent",
        "body": "1. research init <project> --objective \"...\"\n2. sessions_spawn with task including:\n   - Project ID and objective\n   - Instructions to use research CLI for state\n   - Check stop signal before each step\n   - Log progress with heartbeat\n3. Heartbeat monitors: research list --json | check needs_attention\n4. Send instructions via: research instruct <project> \"...\""
      },
      {
        "title": "Agent loop (in spawned agent)",
        "body": "while research check-stop $PROJECT; [ $? -eq 1 ]; do\n  research pending $PROJECT --json  # Check instructions\n  research log $PROJECT STEP_BEGIN --step $STEP\n  # ... do work ...\n  research log $PROJECT STEP_COMPLETE --step $STEP\n  research heartbeat $PROJECT\n  STEP=$((STEP + 1))\ndone\nresearch complete $PROJECT"
      },
      {
        "title": "Attention Detection",
        "body": "research list --json includes needs_attention: true when:\n\nLast event is BLOCKED\nHas unacked URGENT or STOP instructions\nHeartbeat stale (>5 min since last HEARTBEAT event)\nLast audit was AUDIT_DRIFT"
      },
      {
        "title": "Database",
        "body": "SQLite at ~/.config/research-tracker/research.db (WAL mode, append-only events).\n\nRun research db migrate after install. Schema auto-migrates on first use."
      }
    ],
    "body": "Research Tracker\n\nCLI tool for managing autonomous research agents with append-only state, instruction queues, and oversight.\n\nPrerequisites\nbrew tap 1645labs/tap\nbrew install julians-research-tracker\n\n\nOr: go install github.com/1645labs/julians-research-tracker/cmd/research@latest\n\nQuick Start\nStart a research project\nresearch init market-q1 --name \"Q1 Market Analysis\" --objective \"Analyze competitor pricing and positioning\"\n\nAs the research agent — log progress\nexport RESEARCH_SESSION_ID=\"$SESSION_KEY\"  # Track which agent is writing\n\nresearch log market-q1 STEP_BEGIN --step 1 --payload '{\"task\":\"gather sources\"}'\n# ... do work ...\nresearch log market-q1 STEP_COMPLETE --step 1\nresearch heartbeat market-q1\n\nCheck status (from main session or heartbeat)\nresearch status market-q1 --json\nresearch context market-q1 --last 5  # Truncated context for prompts\n\nSend instructions to running agent\nresearch instruct market-q1 \"Focus on enterprise segment\" --priority URGENT\nresearch stop-signal market-q1  # Request graceful stop\n\nAgent checks for instructions\nresearch pending market-q1 --json\nresearch ack market-q1 --all  # Acknowledge after processing\nresearch check-stop market-q1  # Exit 0 = stop, Exit 1 = continue\n\nCommands Reference\nCommand\tPurpose\ninit <id> -o \"...\"\tCreate project with objective\nlist [--status active|done|all]\tList projects (includes needs_attention flag)\nshow <id>\tProject details + recent events\nstop <id>\tStop project, send STOP instruction\narchive <id>\tArchive completed project\nlog <id> <event> [--step N]\tLog event (STEP_BEGIN, CHECKPOINT, BLOCKED, etc.)\nheartbeat <id>\tUpdate alive timestamp\nblock <id> --reason \"...\"\tMark blocked, needs input\ncomplete <id>\tMark done\nstatus <id> [--json]\tCurrent state summary\ncontext <id> [--last N]\tTruncated context for agent prompts\ninstruct <id> \"text\"\tSend instruction\npending <id>\tList unacked instructions\nack <id> [--all]\tAcknowledge instructions\ncheck-stop <id>\tExit code: 0=stop, 1=continue\naudit <id> --verdict pass|drift\tLog audit result\nEvent Types\n\nSTARTED, STEP_BEGIN, STEP_COMPLETE, CHECKPOINT, BLOCKED, UNBLOCKED, AUDIT_PASS, AUDIT_DRIFT, HEARTBEAT, DONE, STOPPED, TIMEOUT\n\nIntegration Pattern\nSpawning a research agent\n1. research init <project> --objective \"...\"\n2. sessions_spawn with task including:\n   - Project ID and objective\n   - Instructions to use research CLI for state\n   - Check stop signal before each step\n   - Log progress with heartbeat\n3. Heartbeat monitors: research list --json | check needs_attention\n4. Send instructions via: research instruct <project> \"...\"\n\nAgent loop (in spawned agent)\nwhile research check-stop $PROJECT; [ $? -eq 1 ]; do\n  research pending $PROJECT --json  # Check instructions\n  research log $PROJECT STEP_BEGIN --step $STEP\n  # ... do work ...\n  research log $PROJECT STEP_COMPLETE --step $STEP\n  research heartbeat $PROJECT\n  STEP=$((STEP + 1))\ndone\nresearch complete $PROJECT\n\nAttention Detection\n\nresearch list --json includes needs_attention: true when:\n\nLast event is BLOCKED\nHas unacked URGENT or STOP instructions\nHeartbeat stale (>5 min since last HEARTBEAT event)\nLast audit was AUDIT_DRIFT\nDatabase\n\nSQLite at ~/.config/research-tracker/research.db (WAL mode, append-only events).\n\nRun research db migrate after install. Schema auto-migrates on first use."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/julian1645/research-tracker",
    "publisherUrl": "https://clawhub.ai/julian1645/research-tracker",
    "owner": "julian1645",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/research-tracker",
    "downloadUrl": "https://openagent3.xyz/downloads/research-tracker",
    "agentUrl": "https://openagent3.xyz/skills/research-tracker/agent",
    "manifestUrl": "https://openagent3.xyz/skills/research-tracker/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/research-tracker/agent.md"
  }
}