{
 "schema": "aiblocks-page/1",
 "id": "course-wide-implementation-planner",
 "type": "skill",
 "name": "TypeScript agent worker builder",
 "summary": "Adapt a starter TypeScript agent worker to your project. Get local Redis setup, Slack command checks and a startup test plan. Draft code only.",
 "headline": "TypeScript agent worker builder",
 "subhead": "Give it your project and how you plan to run Redis and Slack. It reads a small starter for an AI agent worker, lists what the starter leaves out and plans the changes. You get a file plan, a local setup, a readiness review and a test plan. Nothing is run.",
 "job": {
  "id": "build-software",
  "name": "Build and ship software"
 },
 "level": "intermediate",
 "thinking": "medium",
 "tested": true,
 "updated": "2026-11-03",
 "first_published": "2026-10-25",
 "inputs": [
  {
   "type": "codebase",
   "required": true,
   "label": "Codebase",
   "what": "a project's code, in a folder or repo the AI can open"
  }
 ],
 "outputs": [
  {
   "type": "code_change",
   "required": true,
   "label": "Code change",
   "what": "a change to the code, with what it fixes and how it was checked"
  }
 ],
 "you_give": [
  "Your project folder, or its package file and main folders",
  "Your Node version and package manager",
  "Where Redis will run, such as Docker on your laptop or a hosted service",
  "Your Slack setup by name only: Socket Mode on or off, bot scopes and the ops channel name (never tokens)",
  "The agents you want first, and whether their work is for one client or several"
 ],
 "you_get": [
  "Nothing is run: you get a plan and draft code, and the two example agents are placeholders to replace",
  "A list of gaps in the starter, each with a fix",
  "A file plan that maps each starter file to your project",
  "A local setup for Redis and Postgres, and the environment variable names to fill in",
  "Expected startup log lines, and a shutdown order",
  "A 30-point readiness review marked pass, fail or not checked",
  "A test plan using made-up data"
 ],
 "use_when": [
  "You want an AI agent to run all day, taking jobs from a queue and replying in Slack.",
  "You have a starter worker and need to know what it is missing before you rely on it.",
  "You want Redis and a database running on your laptop so you can test the worker before it goes online.",
  "Your agents will work for more than one client and you need each job to carry its scope."
 ],
 "skip_when": [
  "You want to put the worker online. Use the Render worker deployment planner, after this.",
  "You only need the job queue, with retries and failed-job handling. Use the Redis BullMQ job queue code planner or the Recoverable agent job queue builder.",
  "You only want a Slack bot that answers commands. Use the Slack bot build brief writer.",
  "You don't write TypeScript or run a Slack workspace. The starter needs both, so it will not fit."
 ],
 "output_sample": {
  "input": [
   "Your project folder, or its package file and main folders",
   "Your Node version, and where Redis will run",
   "Your Slack setup by name, and the agents you want first"
  ],
  "prerequisites": [
   "An AI that can read your project files, or the files pasted in",
   "Docker on your laptop, if you want to run Redis and Postgres locally",
   "A Slack app with Socket Mode, if you want the Slack commands"
  ],
  "output": [
   {
    "name": "Gaps in the starter",
    "contains": "What the starter leaves out, why it matters for your project and the fix for each gap."
   },
   {
    "name": "File plan",
    "contains": "Each starter file, what it becomes in your project and the scope and safety checks added."
   },
   {
    "name": "Local setup",
    "contains": "How Redis and Postgres run on your laptop, what to change first and the variable names to fill."
   },
   {
    "name": "Startup and shutdown",
    "contains": "The log lines a healthy start prints, what a missing line means and the shutdown order."
   },
   {
    "name": "Readiness review",
    "contains": "Thirty checks, each marked pass, fail or not checked, with the evidence."
   },
   {
    "name": "Test plan",
    "contains": "Tests on made-up data, such as Redis down or a command from a blocked channel."
   },
   {
    "name": "Checks missed",
    "contains": "One line for each check that failed or could not run, or none."
   }
  ]
 },
 "output_shape": "BASIS\n<what was read; nothing was run>\nMISSING: <inputs and what each stops>\n\nGAPS IN THE STARTER\n<#> | <what it does> | <why it matters> | <fix>\n\nFILE PLAN\n<starter file> | <becomes in your project> | <what changes>\n\nLOCAL SETUP\n<service> | <how it runs> | <change before use>\nENVIRONMENT NAMES\n<name> | <what it holds> | <where the value comes from>\n\nSTARTUP AND SHUTDOWN\n<expected log line> | <what a missing line means>\n\nREADINESS REVIEW\n<#> | <check> | <pass / fail / not checked> | <evidence>\n\nTEST PLAN\n<name> | <made-up set-up> | <expected result> | <needs real Slack>\n\nNEXT STEP\n<the smallest useful step>\n\nCHECKS MISSED\n<one line per check that failed or could not run, or none>",
 "how_to_use": [
  "Open the skill in an AI that can read your project, such as Claude Code or Codex. A chat AI works if you paste your package file and folder list.",
  "Give your Node version, where Redis will run and your Slack setup by name. Never paste a token.",
  "Read GAPS IN THE STARTER first. Mark each one as a problem for you or not.",
  "Check the FILE PLAN against your own folders. Say yes only to changes you understand.",
  "Read the READINESS REVIEW. Treat every \"not checked\" as work still to do.",
  "Run the tests in your own project, on your laptop, with a test Slack channel. This skill never runs anything."
 ],
 "checks": [],
 "next": [
  {
   "name": "Slack agent message router builder",
   "url": "https://useaiblocks.com/skills/how-messages-reach-your-agent-implementation-planner",
   "why": "Build it"
  },
  {
   "name": "Desktop app engineer agent",
   "url": "https://useaiblocks.com/skills/agency-engineering-desktop-app-engineer",
   "why": "Build it"
  },
  {
   "name": "Developer tools engineer",
   "url": "https://useaiblocks.com/skills/agency-engineering-developer-tooling-engineer",
   "why": "Build it"
  }
 ],
 "source": null,
 "credits": [],
 "files": [
  "references/docker-compose.yml",
  "references/method-notes.md",
  "references/visual-reference-notes.md",
  "references/worker-bootstrap-method.md",
  "references/worker-starter/lib/agents/core/base-agent.ts",
  "references/worker-starter/lib/agents/core/heartbeat-runner.ts",
  "references/worker-starter/lib/agents/core/job-queue.ts",
  "references/worker-starter/lib/agents/core/slack-router.ts",
  "references/worker-starter/lib/agents/echo/agent.ts",
  "references/worker-starter/lib/agents/monitor/agent.ts",
  "references/worker-starter/package.json",
  "references/worker-starter/README.md",
  "references/worker-starter/tsconfig.json",
  "references/worker-starter/worker/agent-system.ts"
 ],
 "links": {
  "page": "https://useaiblocks.com/skills/course-wide-implementation-planner",
  "markdown": "https://useaiblocks.com/skills/course-wide-implementation-planner.md",
  "json": "https://useaiblocks.com/skills/course-wide-implementation-planner.json",
  "instructions": "https://useaiblocks.com/skills/course-wide-implementation-planner/SKILL.md",
  "download": "https://useaiblocks.com/skills/course-wide-implementation-planner.zip",
  "api_item": "https://useaiblocks.com/api/v1/items/course-wide-implementation-planner",
  "api_document": "https://useaiblocks.com/api/v1/documents/skill/course-wide-implementation-planner",
  "mcp": "https://useaiblocks.com/mcp"
 }
}
