Automated Ticket Management and Issues-as-Code

Overview

  • Project: Operational Tool Stack
  • Status: Active — evaluating Issues-as-Code principles
  • Problem: Stagnant Linear backlog caused by impedance gap between planning tools and execution environment

Open Source Ticket Systems Evaluation

CandidateStackBest ForIaC Compatibility
FreeScoutPHP (Laravel)Lightweight customer supportModerate — excellent API, “Help Scout” feel
PeppermintNode.js/VueModern IT managementHigh — dev-friendly modern standards
UVdeskPHP (Symfony)E-commerce/multi-channelLow — merchant-customer focused
ZammadRuby on RailsEnterprise scalingModerate — strong REST API but heavy

Dark Horse: Local Markdown-based tracking (.imd format) synced to GitHub/GitLab — bypasses GUI helpdesk entirely.

Issues-as-Code Principles

  1. Versioned State — issues stored as flat files in docs/tickets/ or .github/issues/
  2. Git-Based Triage — status changes via branch creation or file metadata edits
  3. Single Source of Truth — IDE is the primary interface; leaving VS Code to update status = system failure

AI-Powered Automation Strategy

CLAUDE.md Grounding

Define project labels, “Definition of Done,” and CLI patterns in CLAUDE.md so agents understand the backlog context.

Agentic Triage Sweep

claude "Read the last 10 issues. Label by priority. Suggest 5-line fixes."

Spec-Driven Development

  1. Raw ticket from FreeScout/Linear
  2. copilot /specify → technical spec
  3. copilot /plan → implementation steps
  4. Claude Code executes, tests, submits PR
  • Inbound: FreeScout (best simple UI for non-technical users)
  • Sync: Webhook mirrors “Developer Needed” tickets as Markdown files in GitHub repo
  • Engine: Claude Code (CLI) + GitHub Copilot (IDE)
  • Workflow: Open IDE → pull backlog → /ask for context → implement fix