Production-Grade Engineering Skills for AI Coding Agents
AI coding agents have revolutionized how we write software. They can implement features, fix bugs, and review code at incredible speed. But there's a catch: AI agents default to the shortest path, which often means skipping specs, tests, security reviews, and the practices that make software reliable. The solution? Production-grade engineering skills for AI coding agents—structured workflows that enforce the same discipline senior engineers bring to production code. When you give an AI agent a vague prompt like "build a dashboard," it will produce something that looks functional. But will it be: ✅ Well-specified with clear success criteria? ✅ Tested with comprehensive coverage? ✅ Secure against common vulnerabilities? ✅ Performant and maintainable? Without structured workflows, the answer is often "no." The agent optimizes for "looks right" rather than "is right." Agent Skills is a production-grade collection of 20 structured workflows for AI coding agents. With 33,000+ stars on GitHub, it's become the de facto standard for reliable AI-assisted development. Each skill encodes hard-won engineering judgment from Google's engineering culture, including concepts from Software Engineering at Google and Google's engineering practices guide. Define Phase: Idea Refinement - Structured divergent/convergent thinking Spec-Driven Development - Write a PRD before any code Plan Phase: Planning and Task Breakdown - Decompose specs into verifiable tasks Build Phase: Incremental Implementation - Thin vertical slices with feature flags Context Engineering - Feed agents the right information at the right time Source-Driven Development - Ground decisions in official documentation Frontend UI Engineering - Component architecture, design systems, accessibility API and Interface Design - Contract-first design, error semantics Test-Driven Development - RED-GREEN-REFACTOR workflow Verify Phase: Browser Testing with DevTools - Chrome DevTools MCP for runtime data Debugging and Error Recovery - Five-step triage: reproduce, localize, reduce, fix, guard Review Phase: Code Review and Quality - Five-axis review, change sizing, severity labels Code Simplification - Chesterton's Fence, Rule of 500 Security and Hardening - OWASP Top 10 prevention, auth patterns Performance Optimization - Measure-first approach, Core Web Vitals Ship Phase: Git Workflow and Versioning - Trunk-based development, atomic commits CI/CD and Automation - Shift Left, Faster is Safer, feature flags Deprecation and Migration - Code-as-liability mindset Documentation and ADRs - Architecture Decision Records Shipping and Launch - Pre-launch checklists, staged rollouts The most critical skill is Spec-Driven Development. Before writing any code, the agent creates a specification covering: # Spec: [Project/Feature Name] ## Objective What we're building and why. User stories or acceptance criteria. ## Tech Stack Framework, language, key dependencies with versions ## Commands Build: npm run build Test: npm test -- --coverage Lint: npm run lint --fix Dev: npm run dev ## Project Structure src/ → Application source code src/components → React components src/lib → Shared utilities tests/ → Unit and integration tests ## Code Style Example snippet + key conventions ## Testing Strategy Framework, test locations, coverage requirements ## Boundaries - Always: Run tests before commits, follow naming conventions - Ask first: Database schema changes, adding dependencies - Never: Commit secrets, edit vendor directories ## Success Criteria Specific, testable conditions for completion ## Open Questions Anything unresolved that needs human input Surfaces Assumptions Early - The spec forces clarity before code Shared Source of Truth - Human and agent agree on what "done" means Prevents Rework - A 15-minute spec prevents hours of debugging Living Document - Updated when decisions change, committed to version control The Test-Driven Development skill enforces the RED-GREEN-REFACTOR cycle: RED: Write a test that fails (proves the test works) GREEN: Write minimal code to make it pass REFACTOR: Clean up the implementation Repeat for each new behavior // RED: This test fails because createTask doesn't exist yet describe('TaskService', () => { it('creates a task with title and default status', async () => { const task = await taskService.createTask({ title: 'Buy groceries' }); expect(task.id).toBeDefined(); expect(task.title).toBe('Buy groceries'); expect(task.status).toBe('pending'); expect(task.createdAt).toBeInstanceOf(Date); }); }); // GREEN: Minimal implementation export async function createTask(input: { title: string }): Promise { const task = { id: generateId(), title: input.title, status: 'pending' as const, createdAt: new Date(), }; await db.tasks.insert(task); return task; } 80% Unit Tests (small, fast, isolated) 15% Integration Tests (component interactions, API boundaries) 5% E2E Tests (full user flows, real browser) Bug Report: "Completing a task doesn't update completedAt timestamp" Agent writes failing test that reproduces the bug Test confirms bug exists (RED) Agent implements fix (GREEN) Agent runs full test suite to ensure no regressions Result: Bug fixed with guaranteed correctness Scenario: Full-stack feature implementation Agent 1 (backend): Implements API endpoints in feature branch A Agent 2 (frontend): Builds React components in feature branch B Agent 3 (tests): Writes integration tests in feature branch C Human: Reviews and merges all branches after parallel completion Result: 3x faster than sequential development Agent Skills includes security-and-hardening skill: OWASP Top 10 prevention patterns Authentication and authorization patterns Secrets management and dependency auditing Three-tier boundary system Before any code merge, the security skill runs automatically, catching vulnerabilities early. Problem: Long, repetitive, contradictory prompts confuse agents Solution: Say what you need once, clearly. Restate rather than append. Problem: Assuming AI-generated code is correct because it looks right Solution: Review every diff like a pull request from a teammate Problem: Running agents on main branch leads to conflicts Solution: Always use feature branches; use git worktrees for parallel agents Problem: One long session leads to context bloat and inconsistent decisions Solution: Start fresh sessions for new tasks; keep sessions focused Problem: Tests break when refactoring even if behavior unchanged Solution: Test inputs and outputs, not internal structure For Claude Code: /plugin marketplace add addyosmani/agent-skills /plugin install agent-skills@addy-agent-skills For Cursor: Copy SKILL.md files into .cursor/rules/ For Gemini CLI: gemini skills install https://github.com/addyosmani/agent-skills.git --path skills Create an AGENTS.md file at your repository root with: Project layout and important directories Build, test, lint commands Engineering conventions Constraints and do-not rules Create a new feature branch Run the spec-driven development skill Write the spec with human review Break into tasks with acceptance criteria Implement incrementally with tests AI coding agents are powerful but need guardrails. Production-grade engineering skills provide the structure, workflows, and best practices that make AI-assisted development reliable. The agents who write the best prompts aren't the most productive. The ones with the best processes around prompting are. Start with spec-driven development. Add test-driven development. Review everything. Manage context like a resource. And watch your AI coding agents transform from fast code generators to reliable engineering partners. Ready to level up your AI coding workflow? Start with the Agent Skills repository and implement one skill at a time. Your future self (and your production environment) will thank you. LinkedIn: https://www.linkedin.com/in/vikrant-bagal
