← ApprenticeCONTENT HISTORY

Update to Apprentice

Snapshot Oct 9, 2026 · 00:05 UTC · version 0.1.0

WHAT CHANGED · RULE-BASED ANALYSIS

Package or technical metadata updated

Discoverability changed from “UNLISTED” to “LISTED”.

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Discoverability

Before

UNLISTED

After

LISTED

Share url

Before

Not present

After

https://chatgpt.com/plugins/plugins_6a71a0925b0c81919abd1be5add4eabd?open_in_app

Compare saved observations

Download comparison JSON
Full technical diff · 2 changed fields

changed /discoverability

BEFORE
"UNLISTED"
AFTER
"LISTED"

changed /share_url

BEFORE
null
AFTER
"https://chatgpt.com/plugins/plugins_6a71a0925b0c81919abd1be5add4eabd?open_in_app"
Full snapshot data
{
  "canonical_app_id": null,
  "connector_id": null,
  "created_at": "2026-08-04T08:48:09.019155Z",
  "discoverability": "LISTED",
  "id": "plugins_6a71a0925b0c81919abd1be5add4eabd",
  "is_template": false,
  "name": "apprentice",
  "release": {
    "app_ids": [],
    "app_manifest": null,
    "app_templates": [],
    "description": "Notice a repeatable, expensive LLM call in your code and mention Apprentice: capture real examples, optimize the prompt or fine-tune a small open model, verified by your own held-out evals before any traffic moves.",
    "display_name": "Apprentice",
    "id": "pluginrel_6f53bb1199e481918df87fd6d2a6d658",
    "interface": {
      "brand_color": "#7FB069",
      "capabilities": [
        "Read",
        "Write"
      ],
      "category": "Developer Tools",
      "composer_icon_dark_url": null,
      "composer_icon_url": "https://files.openai.com/content?id=file_0000000019fc82119ac3217e7b74e389",
      "default_prompt": "Find repeatable frontier-model calls in this codebase.",
      "default_prompts": [
        "Find repeatable frontier-model calls in this codebase.",
        "Could a smaller model handle the repeated LLM call in this file?",
        "Capture my LLM calls so I can verify them and improve this prompt."
      ],
      "developer_name": "Abhishek Samar Singh",
      "logo_url": "https://files.openai.com/content?id=file_00000000331082088104f4c7d69ffed5",
      "logo_url_dark": null,
      "long_description": "Apprentice spots code that sends the same shape of request to a frontier model over and over, in a loop, a cron job or an endpoint. It shows you how to capture verified examples from calls you already make, then test whether an optimized prompt or a small fine-tuned model holds quality for less.",
      "plugin_category_id": "developer tools",
      "privacy_policy_url": null,
      "screenshot_urls": [],
      "short_description": "Spot repeatable LLM calls",
      "terms_of_service_url": null,
      "website_url": "https://runapprentice.com"
    },
    "keywords": [
      "llm",
      "cost-optimization",
      "prompt-optimization",
      "fine-tuning",
      "evals",
      "dspy",
      "gepa"
    ],
    "mcp_servers": [],
    "onboarding_skill_name": null,
    "requires_local_executor": false,
    "skills": [
      {
        "description": "Use when code sends the same kind of request to an expensive frontier LLM repeatedly: classification, extraction, routing, moderation, triage, or labeling in a loop, a script, a cron job, or an endpoint. Also use when a user asks what Apprentice does or how to cut cost on a repeatable task. Explains the loop and sets up the API key. Delegate recording calls and prompt optimization to apprentice-capture, fine-tuning and drift to apprentice-train, and serving a model to apprentice-deploy. Do NOT use for one-off prompts, chat UX, or creative writing.",
        "interface": {
          "brand_color": null,
          "default_prompt": null,
          "display_name": "apprentice",
          "icon_large_url": null,
          "icon_small_url": null,
          "iconography": "bolt",
          "short_description": "Use when code sends the same kind of request to an expensive frontier LLM repeatedly: classification, extraction, routing, moderation, triage, or labeling in a loop, a script, a cron job, or an endpoint. Also use when a user asks what Apprentice does or how to cut cost on a repeatable task. Explains the loop and sets up the API key. Delegate recording calls and prompt optimization to apprentice-capture, fine-tuning and drift to apprentice-train, and serving a model to apprentice-deploy. Do NOT use for one-off prompts, chat UX, or creative writing."
        },
        "name": "apprentice",
        "plugin_release_skill_id": "pluginrsk_6a72d68528648191976381f4856ec600"
      },
      {
        "description": "Use when a user wants real LLM calls recorded into an Apprentice dataset or a prompt optimized: \"capture my calls\", \"record traces\", \"log these to Apprentice\", \"optimize this prompt\", or after the apprentice skill flagged a repeatable call and the user agreed. Wires the capture line into the code that makes the calls, uploads rows, runs optimize, and returns the console link for verifying rows or sending them to an expert. Delegate fine-tuning to apprentice-train and serving to apprentice-deploy.",
        "interface": {
          "brand_color": null,
          "default_prompt": null,
          "display_name": "apprentice-capture",
          "icon_large_url": null,
          "icon_small_url": null,
          "iconography": "search",
          "short_description": "Use when a user wants real LLM calls recorded into an Apprentice dataset or a prompt optimized: \"capture my calls\", \"record traces\", \"log these to Apprentice\", \"optimize this prompt\", or after the apprentice skill flagged a repeatable call and the user agreed. Wires the capture line into the code that makes the calls, uploads rows, runs optimize, and returns the console link for verifying rows or sending them to an expert. Delegate fine-tuning to apprentice-train and serving to apprentice-deploy."
        },
        "name": "apprentice-capture",
        "plugin_release_skill_id": "pluginrsk_6a72d67ce4cc8191a72ad355083703ad"
      },
      {
        "description": "Use ONLY when a user explicitly asks to serve or deploy a model already fine-tuned with Apprentice: \"serve this model\", \"deploy the adapter\", \"run it in my cluster\", \"vLLM\", \"Kubernetes manifests for it\". Writes vLLM Deployment and Service manifests into the user's repo mirroring existing conventions, and covers serving MLX adapters on a Mac. Never volunteer deployment while capturing calls, optimizing a prompt, or training: delegate those to apprentice-capture and apprentice-train.",
        "interface": {
          "brand_color": null,
          "default_prompt": null,
          "display_name": "apprentice-deploy",
          "icon_large_url": null,
          "icon_small_url": null,
          "iconography": "cursor",
          "short_description": "Use ONLY when a user explicitly asks to serve or deploy a model already fine-tuned with Apprentice: \"serve this model\", \"deploy the adapter\", \"run it in my cluster\", \"vLLM\", \"Kubernetes manifests for it\". Writes vLLM Deployment and Service manifests into the user's repo mirroring existing conventions, and covers serving MLX adapters on a Mac. Never volunteer deployment while capturing calls, optimizing a prompt, or training: delegate those to apprentice-capture and apprentice-train."
        },
        "name": "apprentice-deploy",
        "plugin_release_skill_id": "pluginrsk_6a72d66088c481919073475bc063789c"
      },
      {
        "description": "Use when a user is ready to fine-tune a small model and already has verified rows, or asks what training needs: says \"fine-tune\", \"distill\", \"train a small model\", \"LoRA\", or asks how many rows training takes. Also use for drift on a model already running: whether it still holds quality and when to retrain. Local MLX training on Apple silicon is the path that works; hosted training is not shipped yet. For a user still deciding whether a cheaper model could work, or without a dataset, use apprentice instead, and delegate recording calls and prompt optimization to apprentice-capture and serving to apprentice-deploy.",
        "interface": {
          "brand_color": null,
          "default_prompt": null,
          "display_name": "apprentice-train",
          "icon_large_url": null,
          "icon_small_url": null,
          "iconography": "hierarchy",
          "short_description": "Use when a user is ready to fine-tune a small model and already has verified rows, or asks what training needs: says \"fine-tune\", \"distill\", \"train a small model\", \"LoRA\", or asks how many rows training takes. Also use for drift on a model already running: whether it still holds quality and when to retrain. Local MLX training on Apple silicon is the path that works; hosted training is not shipped yet. For a user still deciding whether a cheaper model could work, or without a dataset, use apprentice instead, and delegate recording calls and prompt optimization to apprentice-capture and serving to apprentice-deploy."
        },
        "name": "apprentice-train",
        "plugin_release_skill_id": "pluginrsk_6a72d67573208191911d926a8daba64d"
      }
    ],
    "version": "0.1.0"
  },
  "scope": "GLOBAL",
  "share_url": "https://chatgpt.com/plugins/plugins_6a71a0925b0c81919abd1be5add4eabd?open_in_app",
  "status": "ENABLED"
}

SHA-256 of public snapshot: 42b49a99d7c3633420510df91ead0dfd9a02a3d0715f0d17ef5b83f8810021c5