← All Posts

From Bash Scripts to Autonomous Agents: A Migration Story

5 min readFebruary 12, 2026
agentsarchitectureevolutionclaude-code

From Bash Scripts to Autonomous Agents

From Bash Scripts to Autonomous Agents: A Migration Story
From Bash Scripts to Autonomous Agents: A Migration Story

Every agent ecosystem starts with a script. Mine started with a cron job that pulled Jira data.

Phase 1: The Script Era (Oct 2025)

#!/bin/bash
# daily-update.sh — the humble beginning
curl -s "https://your-company.atlassian.net/rest/agile/..." \
  -H "Authorization: Bearer $JIRA_TOKEN" | jq '.issues[] | .fields.summary'

It worked. Barely. No error handling, no formatting, no intelligence.

Phase 2: Claude Code Discovery (Nov 2025)

The wedding site project was the turning point. Building a complete Next.js application with Claude Code in 2 days proved that AI-assisted development wasn't a gimmick — it was a force multiplier.

But the real insight came from MCP integrations. When I connected the Atlassian MCP server, Claude Code could:

  • Search Jira with JQL
  • Read Confluence pages
  • Cross-reference across systems

This was different from scripts. Scripts followed predetermined paths. Agents could reason about data.

Phase 3: First Agents (Dec 2025)

The daily-update-publisher was my first real agent. Instead of a bash script, it was a Claude Code subagent with:

  • A system prompt describing its purpose
  • Access to Jira MCP tools
  • Formatting instructions for Slack output

The quality difference was immediate. The agent would:

  • Categorize tickets intelligently (Done/In Progress/Blocked)
  • Calculate sprint velocity metrics
  • Flag risk items proactively

Phase 4: The Ecosystem (Jan-Feb 2026)

From 1 agent to 17 in 8 weeks. Key patterns that emerged:

  1. Hierarchical dispatch — A team-lead orchestrator routes to specialists
  2. Tiered models — Opus for synthesis, Sonnet for structure
  3. DB-first fallback — Every data function has a static backup
  4. Report output rules — Save locally, upload to Drive, never block on upload failure

The Meta-Lesson

The biggest lesson wasn't technical. It was this: the agents I built to help me do TPM work taught me more about AI than any course or tutorial could have.

Building agents forced me to:

  • Understand prompt engineering deeply (bad prompts = bad agents)
  • Learn multi-model orchestration patterns
  • Think about reliability and failure modes
  • Design systems that degrade gracefully