Skip to main content
skill CX Codex

code-assist — Claude Code skill: TDD workflow Explore, Plan, Code

A skill that walks the agent through Explore, Plan, Code, Commit: research and a plan first, then failing tests, then code. Useful when a task should go through TDD instead of straight to implementation.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add mikeyobrien/ralph-orchestrator --skill code-assist -a claude-code
Open on GitHub

What code-assist does

The skill pins down the order of work on a task: read the requirements, study existing patterns in the repo, design test scenarios, write the tests, confirm they fail, and only then implement. Refactoring comes last, with tests and builds verified along the way. These are hard constraints on each step, not suggestions.

Two modes. interactive pauses at decision points and asks for confirmation; auto runs on its own and records decisions in progress.md. Planning docs live in {documentation_dir} (default .sop/planning), while code and tests belong in repo_root — the skill forbids mixing them. If a CODEASSIST.md sits in the repo root, the skill reads it and applies its constraints.

Before you run it, check that the project has a test framework. The skill requires following the testing conventions already used in the codebase and running tests after each step, so an empty repo with no tests will stall that part.

What it helps with

  • turn a rough task into requirements and acceptance criteria
  • find similar implementations and the interfaces they touch
  • design test scenarios before any code exists
  • run implementation through the RED → GREEN → REFACTOR cycle
  • match new code to the conventions of neighbouring modules

Example prompts for the agent

  • Run code-assist on this task: add CSV export for reports, interactive mode
  • Use code-assist with task_description pointing at .code-task.md, docs in .sop/planning
  • Run code-assist in auto mode to rework the config parser

How to install code-assist

1Skills CLI (Vercel)

npx skills add mikeyobrien/ralph-orchestrator --skill code-assist -a claude-code

2Manually: put the files in place

~/.claude/skills/code-assist/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/code-assist/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about code-assist

How do I install code-assist in Claude?

Run npx skills add mikeyobrien/ralph-orchestrator --skill code-assist -a claude-code. The skill lands at ~/.claude/skills/code-assist/SKILL.md.

What does code-assist do?

It drives a coding task through Explore, Plan, Code, Commit: gathering requirements, searching the repo for patterns, planning tests, writing them before the code, and refactoring with build checks.

What is the difference between interactive and auto mode?

In interactive the skill presents actions for confirmation and asks clarifying questions. In auto it executes the steps itself and documents decisions in progress.md.

Source text

SKILL.md · MIT
---
name: code-assist
description: Guides implementation of code tasks using test-driven development in an Explore, Plan, Code, Commit workflow. Acts as a Technical Implementation Partner and TDD Coach — following existing patterns, avoiding over-engineering, and producing idiomatic, modern code.
type: anthropic-skill
version: "1.1"
metadata:
  internal: true
---

# Code Assist

## Overview

Guides implementation of code tasks using test-driven development in an Explore, Plan, Code, Commit workflow. Balances automation with user collaboration while adhering to existing package patterns and prioritizing readability and extensibility.

## Parameters

- **task_description** (required): Task specification, rough idea, file path to `.code-task.md`, or URL
- **additional_context** (optional): Supplementary information for implementation context
- **documentation_dir** (optional, default: ".sop/planning"): Directory for planning documents
- **repo_root** (optional, default: current working directory): Repository root for code implementation
- **task_name** (optional): Short descriptive name (auto-generated if not provided)
- **mode** (optional, default: "auto"): "interactive" (confirmation at each step) or "auto" (autonomous execution)

**Constraints:**
- You MUST ask for all parameters upfront in a single prompt to avoid repeated interruptions
- You MUST validate inputs: normalize mode to "interactive"/"auto", verify paths, generate task_name if needed

## Mode Behavior

Apply these patterns throughout all steps:

**Interactive Mode:** Present actions for confirmation. Explain pros/cons when multiple approaches exist. Ask clarifying questions. Pause at key decision points. Provide educational context.

**Auto Mode:** Execute autonomously. Document all decisions and reasoning in progress.md. Select the most appropriate approach and document why. Provide comprehensive summaries at completion.

## Important Notes

**Separation of Concerns:**
Documentation goes in `{documentation_dir}`. Code (tests and implementation) goes in `repo_root`. Never mix them. Documentation should guide implementation with high-level concepts — not provide it. When including code snippets in documentation, keep them brief and clearly label them as examples or references.

**CODEASSIST.md Integration:**
If CODEASSIST.md exists in repo_root, read it and apply its constraints throughout.

## Steps

### 1. Setup

Initialize the project environment and create necessary directory structures.

**Constraints:**
- You MUST create `{documentation_dir}/implementation/{task_name}/` (with logs subdirectory) and verify it exists before proceeding
- You MUST discover instruction files (CODEASSIST.md, README.md, CONTRIBUTING.md, ARCHITECTURE.md, etc.) and summarize relevant information in context.md
- You MUST create context.md (project structure, requirements, patterns, dependencies) and progress.md (execution tracking with markdown checklists)
- If task_description points to a `.code-task.md` with YAML frontmatter, update `status: in_progress` and `started: <date>` (if not already set)

> 💬 See [Mode Behavior](#mode-behavior) for mode-specific interaction guidance

### 2. Explore Phase

#### 2.1 Analyze Requirements and Context

Analyze the task description and existing documentation to identify core functionality, edge cases, and constraints.

**Constraints:**
- You MUST produce a clear list of functional requirements and acceptance criteria, even from rough descriptions
- You MUST determine appropriate file paths, language, and alignment with existing project structure
- In interactive mode, discuss requirements with the user, clarify ambiguities, and validate your understanding

> 💬 See [Mode Behavior](#mode-behavior) for mode-specific interaction guidance

#### 2.2 Research Existing Patterns

Search for similar implementations and identify interfaces, libraries, and components the implementation will interact with.

**Constraints:**
- You MUST search the repository for relevant code, patterns, and conventions
- You MUST create a dependency map and update context.md with implementation paths

> 💬 See [Mode Behavior](#mode-behavior) for mode-specific interaction guidance

### 3. Plan Phase

#### 3.1 Design Test Strategy

Create test scenarios covering normal operation, edge cases, and error conditions.

**Constraints:**
- You MUST cover all acceptance criteria with at least one test scenario
- You MUST define explicit input/output pairs and save scenarios to plan.md
- You MUST design tests that will initially fail (no mock implementations during design)

> 💬 See [Mode Behavior](#mode-behavior) for mode-specific interaction guidance

#### 3.2 Implementation Planning & Tracking

Outline the high-level structure and create an implementation plan.

**Constraints:**
- You MUST save the plan to plan.md with key implementation tasks
- You MUST maintain an implementation checklist in progress.md using markdown checkbox format
- In interactive mode, present multiple approaches with pros/cons and discuss trade-offs

> 💬 See [Mode Behavior](#mode-behavior) for mode-specific interaction guidance

### 4. Code Phase

**Phase-wide constraints:**
- You MUST place all code (tests and implementation) in repo_root, never in documentation_dir
- You MUST verify tests/builds pass before advancing to the next sub-step
- You MUST follow the existing codebase's conventions (naming, patterns, error handling, testing style)
- Pipe build output to `{documentation_dir}/implementation/{task_name}/logs/` and search for success/failure indicators

#### 4.1 Implement Test Cases

Write test cases following strict TDD principles.

**Constraints:**
- You MUST implement tests for ALL requirements before writing ANY implementation code
- You MUST execute tests to verify they fail as expected, documenting failure reasons
- You MUST follow the testing framework conventions used in the existing codebase

> 💬 See [Mode Behavior](#mode-behavior) for mode-specific interaction guidance

#### 4.2 Develop Implementation Code

Write implementation code to pass the tests, focusing on simplicity and correctness first.

**Constraints:**
- You MUST follow the TDD cycle: RED → GREEN → REFACTOR
- You MUST implement only what is needed to make current tests pass (YAGNI, KISS, SOLID)
- You MUST execute tests after each implementation step to verify they pass

> 💬 See [Mode Behavior](#mode-behavior) for mode-specific interaction guidance

#### 4.3 Refactor and Optimize

Review the implementation for simplification, improvement, and convention alignment.

**Constraints:**
- You MUST verify all tests and builds pass before starting — fix any failures first
- You MUST align implementation with surrounding codebase conventions (naming, structure, error handling, imports, logging)
- You MUST maintain test-passing status throughout refactoring

> 💬 See [Mode Behavior](#mode-behavior) for mode-specific interaction guidance

#### 4.4 Validate Implementation

Verify the implementation is complete and correct.

**Constraints:**
- You MUST run the full test suite and build, verifying all pass
- You MUST verify all implementation plan items are completed
- You MUST NOT claim completion while any tests are failing

> 💬 See [Mode Behavior](#mode-behavior) for mode-specific interaction guidance

### 5. Commit Phase

Draft a conventional commit message and perform the git commit.

**Constraints:**
- You MUST NOT commit until builds AND tests are verified passing
- You MUST follow the Conventional Commits specification
- You MUST NOT push to remote repositories
- If task_description was a `.code-task.md`, update frontmatter to `status: completed` and `completed: <date>` before committing
- Document the commit hash in progress.md

> 💬 See [Mode Behavior](#mode-behavior) for mode-specific interaction guidance

## Desired Outcome

* Complete, well-tested implementation meeting all requirements
* Comprehensive test suite validating the implementation
* Clean code following existing patterns, prioritizing readability, avoiding over-engineering
* Implementation artifacts in `{documentation_dir}/implementation/{task_name}/` (context.md, plan.md, progress.md, logs/)
* Properly committed changes with conventional commit messages

## Examples

### Feature Implementation

**Input:**
```
task_description: "Create a utility function that validates email addresses"
mode: "interactive"
```

**Expected Process:**
1. Check for CODEASSIST.md and discover instruction files
2. Detect project type from existing files (pom.xml, package.json, etc.)
3. Set up directory structure in .sop/planning/implementation/email-validator/
4. Explore requirements and create context documentation
5. Plan test scenarios for valid/invalid email formats
6. Implement tests first (TDD approach)
7. Implement the validation function
8. Commit with conventional commit message

## Troubleshooting

**Directory/Permission Issues:** Create directories if possible, inform user of permission issues, suggest alternatives.

**Build Failures:** Check CODEASSIST.md for guidance, verify correct directory, try clean builds, check dependencies.

**Multi-Package Coordination:** Verify dependency order, build in order, create separate commits per package.

**Task File Frontmatter Issues:** Skip frontmatter updates if missing/malformed. Don't fail the task due to frontmatter issues.

**Implementation Challenges:** Document in progress.md, propose alternatives. In interactive mode ask for guidance; in auto mode select the most promising approach and document the decision.

## Artifacts

• `{documentation_dir}/implementation/{task_name}/context.md` — Workspace structure, requirements, patterns, dependencies, implementation paths
• `{documentation_dir}/implementation/{task_name}/plan.md` — Test scenarios, implementation strategy
• `{documentation_dir}/implementation/{task_name}/progress.md` — Execution tracking, TDD cycles, commit status, challenges
• `{documentation_dir}/implementation/{task_name}/logs/` — Build outputs

© mikeyobrien · MIT · mikeyobrien/ralph-orchestrator

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set4

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor