agentsclimarketplace

Tdd loop

Skill mpuig/raw/builder/skills/tdd-loop

Test-driven development loop for workflows - write tests first, then implementationFrom its SKILL.md

Install
npx -y skills add mpuig/raw --skill tdd-loop

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

3.3 KB, 755 tokens by cl100k_base, as published. Nobody here has run it

TDD Loop Skill

Use this skill to follow test-driven development practices for workflow implementation.

TDD Cycle

  1. Write Test First: Define expected behavior in test.py
  2. Run Test (Red): Verify test fails with clear error
  3. Write Implementation: Add minimal code to make test pass
  4. Run Test (Green): Verify test passes
  5. Refactor: Clean up code while keeping tests green
  6. Repeat: Move to next test case

Workflow Testing Pattern

test.py Structure

#!/usr/bin/env python3
"""Tests for workflow."""

from pathlib import Path
from workflow_name import WorkflowClass, WorkflowParams

def test_workflow_basic():
    """Test basic workflow execution."""
    params = WorkflowParams()
    workflow = WorkflowClass(params, workflow_dir=Path(__file__).parent)

    result = workflow.run()

    assert result == 0  # Success
    # Add more assertions

def test_workflow_with_params():
    """Test workflow with specific parameters."""
    params = WorkflowParams(param1="value")
    workflow = WorkflowClass(params, workflow_dir=Path(__file__).parent)

    result = workflow.run()

    assert result == 0
    # Verify outputs, side effects, etc.

def test_workflow_error_handling():
    """Test workflow handles errors gracefully."""
    params = WorkflowParams(invalid="value")
    workflow = WorkflowClass(params, workflow_dir=Path(__file__).parent)

    # Should handle error, not crash
    result = workflow.run()
    assert result != 0  # Non-zero exit code for errors

dry_run.py Testing

The dry run is a form of integration testing with mocks:

#!/usr/bin/env python3
"""Dry run with mock data."""

from raw_runtime import DryRunContext

def mock_external_api(ctx: DryRunContext):
    """Mock API call that would normally fetch real data."""
    return {
        "data": "mock_value",
        "status": "success"
    }

def mock_file_write(ctx: DryRunContext):
    """Mock file writing - don't actually write."""
    ctx.log("Would write to file: results/output.json")
    return True

TDD Benefits

  1. Clear Requirements: Tests document expected behavior
  2. Regression Prevention: Existing tests catch breaking changes
  3. Refactoring Safety: Change internals without breaking API
  4. Design Feedback: Hard-to-test code signals design issues

When to Use

  • Adding new workflow functionality
  • Fixing bugs (write failing test, then fix)
  • Refactoring existing code
  • Integrating new tools

Red-Green-Refactor Example

# 1. RED: Write failing test
def test_fetch_stock_data():
    result = fetch_stock_data("AAPL")
    assert result["symbol"] == "AAPL"
    assert "price" in result
# Run: pytest test.py -k test_fetch (FAILS - function doesn't exist)

# 2. GREEN: Minimal implementation
def fetch_stock_data(symbol: str) -> dict:
    return {"symbol": symbol, "price": 150.0}  # Hardcoded for now
# Run: pytest test.py -k test_fetch (PASSES)

# 3. REFACTOR: Real implementation
def fetch_stock_data(symbol: str) -> dict:
    from tools.yahoo_finance import get_quote
    data = get_quote(symbol)
    return {"symbol": data.symbol, "price": data.current_price}
# Run: pytest test.py -k test_fetch (PASSES)

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.