{
 "flight": {
  "id": 887001,
  "agent": "cursor",
  "state": "merged",
  "title": "Export CLI commands as functions",
  "number": 286,
  "source": "aidev",
  "commits": 17,
  "debrief": "Cursor opened a feature PR in epicweb-dev/epicshop to export workshop CLI commands as functions, adding a programmatic API and splitting the CLI into modular files. The change spans 13 files across 17 commits, with 98899 additions and 98328 deletions. It merged clean in 0.57 hours, with zero change requests and zero review comments.",
  "outcome": "merged_clean",
  "signals": [
   "aidev:Cursor"
  ],
  "index_ok": true,
  "additions": 98899,
  "closed_at": "2025-07-18T00:42:52+00:00",
  "deletions": 98328,
  "merged_at": "2025-07-18T00:42:52+00:00",
  "opened_at": "2025-07-18T00:08:33+00:00",
  "task_type": "feat",
  "body_chars": 928,
  "confidence": "dataset",
  "updated_at": "2026-11-04T01:20:12.499202+00:00",
  "enriched_at": null,
  "body_excerpt": "<!-- One very short sentence on the WHAT and WHY of the PR. E.g. \"Remove pathHash attribute because it is confirmed unused.\" or \"Add DNS round robin to improve load distribution.\" -->\nIntroduce a programmatic API for workshop CLI commands and refactor the CLI into modular files.\n\n<!-- OPTIONAL: If t",
  "review_count": 5,
  "files_changed": 13,
  "hours_to_merge": 0.57,
  "metrics_source": "aidev_commit_sum",
  "change_requests": 0,
  "og_generated_at": "2026-11-04T01:20:12.499202+00:00",
  "reviewer_excerpt": null,
  "review_comment_count": 0,
  "reviewer_excerpt_url": null
 },
 "repo": {
  "name": "epicshop",
  "owner": "epicweb-dev",
  "stars": 247,
  "license": "NOASSERTION",
  "full_name": "epicweb-dev/epicshop",
  "primary_language": "TypeScript"
 },
 "author": {
  "login": "kentcdodds",
  "name": "Kent C. Dodds",
  "github_profile": "https://github.com/kentcdodds",
  "page": "https://agentriders.com/logs/author/kentcdodds/"
 },
 "claim": null,
 "events": [
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Cursor Agent"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Cursor Agent"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Cursor Agent"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Cursor Agent"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Cursor Agent"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Kent C. Dodds"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Kent C. Dodds"
  },
  {
   "at": null,
   "url": null,
   "kind": "reviewed",
   "actor_login": null
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Kent C. Dodds"
  },
  {
   "at": null,
   "url": null,
   "kind": "reviewed",
   "actor_login": null
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Cursor Agent"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Kent C. Dodds"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Kent C. Dodds"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Kent C. Dodds"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Kent C. Dodds"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Kent C. Dodds"
  },
  {
   "at": null,
   "url": null,
   "kind": "reviewed",
   "actor_login": null
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Kent C. Dodds"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Kent C. Dodds"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Kent C. Dodds"
  },
  {
   "at": null,
   "url": null,
   "kind": "reviewed",
   "actor_login": null
  },
  {
   "at": null,
   "url": null,
   "kind": "reviewed",
   "actor_login": null
  },
  {
   "at": "2025-07-18T00:42:52+00:00",
   "url": null,
   "kind": "merged",
   "actor_login": "kentcdodds"
  },
  {
   "at": "2025-07-18T00:42:52+00:00",
   "url": null,
   "kind": "closed",
   "actor_login": "kentcdodds"
  }
 ],
 "related": [
  {
   "agent": "cursor",
   "state": "merged",
   "title": "Fix workshop-cli start command issue",
   "number": 292,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 363,
   "deletions": 341,
   "merged_at": "2025-07-18T19:46:36+00:00",
   "opened_at": "2025-07-18T18:17:09+00:00",
   "task_type": "fix",
   "files_changed": 3,
   "hours_to_merge": 1.49
  },
  {
   "agent": "cursor",
   "state": "merged",
   "title": "Fix directory cleanup script vulnerabilities and logic",
   "number": 278,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 48572,
   "deletions": 48530,
   "merged_at": "2025-07-14T20:58:38+00:00",
   "opened_at": "2025-07-14T20:56:42+00:00",
   "task_type": "fix",
   "files_changed": 3,
   "hours_to_merge": 0.03
  },
  {
   "agent": "cursor",
   "state": "merged",
   "title": "Ignore empty directories in exercises",
   "number": 277,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 41,
   "deletions": 2,
   "merged_at": "2025-07-14T21:02:31+00:00",
   "opened_at": "2025-07-14T20:56:15+00:00",
   "task_type": "fix",
   "files_changed": 1,
   "hours_to_merge": 0.1
  }
 ],
 "pr_url": "https://github.com/epicweb-dev/epicshop/pull/286",
 "page": "https://agentriders.com/logs/epicweb-dev/epicshop/286/"
}