sdd-to-ralph

This skill should be used when the user wants to convert completed CCSDD specs into Ralph execution artifacts. Use when user says "bridge spec to ralph", "convert sdd to ralph", "sdd to ralph", "generate ralph from spec", "prepare spec for ralph", or wants to take a cc-sdd feature spec and run it through Ralph for autonomous implementation.

16 stars

Best use case

sdd-to-ralph is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

This skill should be used when the user wants to convert completed CCSDD specs into Ralph execution artifacts. Use when user says "bridge spec to ralph", "convert sdd to ralph", "sdd to ralph", "generate ralph from spec", "prepare spec for ralph", or wants to take a cc-sdd feature spec and run it through Ralph for autonomous implementation.

Teams using sdd-to-ralph should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/sdd-to-ralph/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/product/sdd-to-ralph/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/sdd-to-ralph/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How sdd-to-ralph Compares

Feature / Agentsdd-to-ralphStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

This skill should be used when the user wants to convert completed CCSDD specs into Ralph execution artifacts. Use when user says "bridge spec to ralph", "convert sdd to ralph", "sdd to ralph", "generate ralph from spec", "prepare spec for ralph", or wants to take a cc-sdd feature spec and run it through Ralph for autonomous implementation.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# SDD to Ralph Bridge

Convert completed CCSDD (cc-sdd) spec artifacts into Ralph execution artifacts for autonomous implementation.

- **Input**: `.kiro/specs/<feature>/` — requirements.md, design.md, tasks.md
- **Output**: `.ralph/PROMPT.md`, `.ralph/fix_plan.md`, updated `.ralphrc`, `.ralph/specs/`

## Prerequisites

Verify both systems are installed before proceeding:

1. **Ralph enabled**: `.ralph/` directory and `.ralphrc` file exist
   - If missing: instruct user to run `ralph-enable`
2. **CCSDD installed**: `.kiro/` directory exists with at least one spec
   - If missing: instruct user to run `npx cc-sdd@latest --claude`

If either prerequisite fails, stop and report the issue.

## Step 1: Detect and Select Feature Spec

Glob for `.kiro/specs/*/spec.json` to find available specs.

**If 0 specs found:**

- Error: "No CCSDD specs found in `.kiro/specs/`"
- Instruct: "Run `/kiro:spec-init <description>` to create a feature spec first"
- Stop

**If 1 spec found:**

- Read spec.json, extract `feature_name`
- Confirm: "Found spec: **<feature_name>**. Proceeding."

**If multiple specs found:**

- Read each spec.json to get feature names and phases
- Use AskUserQuestion to present the list with phase status:
  - Header: "Feature"
  - Question: "Which CCSDD spec should be bridged to Ralph?"
  - Options: list each feature with its current phase (e.g., "auth-system (tasks-generated)")

## Step 2: Validate Spec Completeness

Read the selected `.kiro/specs/<feature>/spec.json` and check:

1. `approvals.requirements.generated` is `true`
2. `approvals.design.generated` is `true`
3. `approvals.tasks.generated` is `true`

**If all phases complete:** proceed to Step 3.

**If incomplete phases detected:**

- List missing phases with suggested commands:
  - Requirements missing → `/kiro:spec-requirements <feature>`
  - Design missing → `/kiro:spec-design <feature>`
  - Tasks missing → `/kiro:spec-tasks <feature>`
- Use AskUserQuestion:
  - Header: "Incomplete"
  - Question: "Spec has incomplete phases. Proceed anyway?"
  - Options: "Proceed" (continue with available artifacts), "Stop" (exit to complete phases)

## Step 3: Read CCSDD Artifacts

Read all available artifacts from `.kiro/specs/<feature>/`:

1. `requirements.md` — EARS-format requirements
2. `design.md` — technical design
3. `tasks.md` — implementation tasks with parallel markers

Read steering docs if they exist (for additional project context):

1. `.kiro/steering/product.md` — project vision
2. `.kiro/steering/tech.md` — technology stack
3. `.kiro/steering/structure.md` — directory conventions

Read Ralph configuration:

1. `.ralphrc` — current settings

If a file doesn't exist, note it and proceed with what's available. At minimum, `tasks.md` must exist (it provides the fix_plan content).

<critical>
If `tasks.md` does not exist or is empty, stop and report: "Cannot generate fix_plan.md without tasks. Run `/kiro:spec-tasks <feature>` first."
</critical>

## Step 4: Generate PROMPT.md

Create `.ralph/PROMPT.md` with two parts.

### Part 1: Project-Specific Content

Synthesize from the CCSDD artifacts read in Step 3:

```markdown
# Ralph Development Instructions

## Context

[2-3 sentences from design.md overview/summary section describing what is being built]

You are Ralph, building [brief description].

## Technology Stack

[Extract from design.md "Technology Stack" section or .kiro/steering/tech.md]
[Include version numbers when available]

- [Language] [version]
- [Framework] [version]
- [Library] [version] - [purpose]

## Key Principles

[Extract top 5 design decisions/principles from design.md]

- [Principle 1]
- [Principle 2]

## Current Objectives

[Extract high-level requirement titles from requirements.md — NOT full EARS criteria]

1. [Requirement group title] - [brief description]
2. [Requirement group title] - [brief description]

## Requirements Summary

[Numbered list with brief descriptions — point to full specs for detail]

1. [Requirement name] ([N] acceptance criteria)
   - [Key criteria summary]
2. [Requirement name] ([N] acceptance criteria)
   - [Key criteria summary]

Full EARS-format requirements: `.ralph/specs/requirements.md`

## Design Reference

[Key architecture decisions from design.md, ~500 words max]
[Include architecture diagram if present (Mermaid syntax)]

Full technical design: `.ralph/specs/design.md`

## Quality Standards

[Extract testing/quality requirements from design.md or requirements.md]

- [Standard 1]
- [Standard 2]
```

<guidelines type="prompt-context">
- Summarize, don't dump — Ralph reads PROMPT.md every loop, so it must be concise
- Full specs are in `.ralph/specs/` for reference when Ralph needs detail
- Include version numbers for all technologies
- Make principles actionable — things Claude can verify
- Keep Requirements Summary to titles and key criteria only
- Design Reference should focus on architecture decisions that affect implementation
</guidelines>

### Part 2: Ralph Operational Instructions

Read [references/ralph-operational-instructions.md](references/ralph-operational-instructions.md) and append the content block (everything inside the ` ```markdown ` fence, lines 8-139) to the end of the generated PROMPT.md.

<critical>
The operational instructions section is MANDATORY. Without it:
- Claude won't output the RALPH_STATUS block that Ralph parses for exit signals
- Claude won't know when to set EXIT_SIGNAL: true vs false
- Ralph will either never exit or exit prematurely
- The circuit breaker and response analyzer depend on structured status output
</critical>

Write the complete PROMPT.md to `.ralph/PROMPT.md`.

## Step 5: Generate fix_plan.md

Convert CCSDD's `tasks.md` into Ralph's `fix_plan.md` using `/kiro:spec-impl` commands.

### Conversion Algorithm

1. **Parse tasks.md** — extract all checkbox items (`- [ ]` or `- [x]`)
2. **Identify leaf tasks** — tasks with no sub-tasks (e.g., `1.1`, `1.2`, `2.3`). Skip parent-only tasks (e.g., `1.` if it has `1.1`, `1.2` children)
3. **Extract task IDs** — the numeric prefix of each leaf task (e.g., `1.1`, `2.3`)
4. **Generate spec-impl commands** — one per leaf task, in order
5. **Add closing task** — `/kiro:validate-impl` as final item
6. **Add standard sections**: Completed, Discovered

### Output Format

```markdown
# Fix Plan - <feature-name>

## Tasks

- [ ] /kiro:spec-impl <feature-name> 1.1
- [ ] /kiro:spec-impl <feature-name> 1.2
- [ ] /kiro:spec-impl <feature-name> 1.3
- [ ] /kiro:spec-impl <feature-name> 2.1
- [ ] /kiro:spec-impl <feature-name> 2.2
- [ ] /kiro:validate-impl <feature-name>

## Completed

## Discovered

<!-- Ralph will add discovered tasks here -->
```

<guidelines type="fix-plan">
- Only include leaf tasks — parent tasks are organizational groupings, not implementable units
- Preserve the task ordering from tasks.md (respects dependency structure via P0/P1/P2 ordering)
- The /kiro:validate-impl task is always last — it closes the spec→implementation→validation loop
</guidelines>

Write the complete fix_plan.md to `.ralph/fix_plan.md`.

## Step 6: Update .ralphrc

Read `.ralphrc` and update project-specific fields. Preserve all other settings.

**Update PROJECT_NAME:**

- Set to `feature_name` from spec.json

**Detect and update PROJECT_TYPE:**

- Scan design.md tech stack for keywords:
  - "TypeScript", "Node.js", "npm", "React", "Next.js" → `typescript`
  - "Python", "FastAPI", "Django", "Flask" → `python`
  - "Rust", "Cargo" → `rust`
  - "Go", "golang" → `go`
  - No match → leave as current value

**Update ALLOWED_TOOLS based on PROJECT_TYPE:**

| Project Type | Add to ALLOWED_TOOLS                           |
| ------------ | ---------------------------------------------- |
| typescript   | `Bash(npm *),Bash(npx *)`                      |
| python       | `Bash(pip *),Bash(python *),Bash(pytest)`      |
| rust         | `Bash(cargo *)`                                |
| go           | `Bash(go *)`                                   |
| All types    | `Write,Read,Edit,Bash(git *)` (always include) |

**Do NOT modify:** MAX_CALLS_PER_HOUR, CLAUDE_TIMEOUT_MINUTES, SESSION_CONTINUITY, SESSION_EXPIRY_HOURS, circuit breaker thresholds, or any other existing settings.

Write updated `.ralphrc`.

## Step 7: Copy Spec Files to Ralph

Create `.ralph/specs/` directory if it doesn't exist. Copy CCSDD spec files so Ralph can reference them during implementation:

1. `.kiro/specs/<feature>/requirements.md` → `.ralph/specs/requirements.md`
2. `.kiro/specs/<feature>/design.md` → `.ralph/specs/design.md`
3. `.kiro/specs/<feature>/research.md` → `.ralph/specs/research.md` (if exists)

## Step 8: Verify Generated Files

Read back generated files and verify:

### PROMPT.md checks

1. Contains `---RALPH_STATUS---` (exact string)
2. Contains `EXIT_SIGNAL` examples
3. Contains project-specific context sections (Context, Technology Stack, Current Objectives)
4. Is at least 100 lines (both parts present)

### fix_plan.md checks

1. Has `## Tasks` section
2. Has at least one `- [ ] /kiro:spec-impl` item
3. Has `## Completed` section
4. Has `## Discovered` section
5. Contains `/kiro:validate-impl` as final task item

**If any check fails:** report the specific failure but do NOT delete files. Suggest re-running or manual fix.

## Step 9: Present Summary

Display results to the user:

```
Successfully bridged CCSDD spec to Ralph!

Feature: <feature-name>

Tasks: N spec-impl commands + validation
  /kiro:spec-impl <feature-name> 1.1
  /kiro:spec-impl <feature-name> 1.2
  ...
  /kiro:validate-impl <feature-name>

Files Generated:
  .ralph/PROMPT.md
  .ralph/fix_plan.md
  .ralph/specs/requirements.md
  .ralph/specs/design.md

Configuration Updated:
  .ralphrc PROJECT_NAME = "<feature-name>"
  .ralphrc PROJECT_TYPE = "<type>"

[Any warnings about incomplete phases, etc.]

Next Steps:
  1. Review .ralph/PROMPT.md and .ralph/fix_plan.md
  2. Run: ralph --monitor
```

## Error Handling

**No `.ralph/` directory:**

- "Ralph is not enabled. Run `ralph-enable` first."

**No `.kiro/` directory:**

- "CCSDD is not installed. Run `npx cc-sdd@latest --claude` first."

**Empty or missing `tasks.md`:**

- "No tasks found. Run `/kiro:spec-tasks <feature>` to generate tasks."

**Missing steering docs:**

- Warning only. Extract context from design.md alone.

**Tasks without parallel markers:**

- Infer from parent or position. Log in Notes section.

**Corrupted spec.json:**

- Show parse error. Suggest manual inspection.

Related Skills

ralph-wiggum

16
from diegosouzapw/awesome-omni-skill

Iterative AI development loops - start, monitor, review, and iterate on tasks using the Ralph Wiggum technique with Kiro CLI - use only when explicitly requested by the user

ralph

16
from diegosouzapw/awesome-omni-skill

Convert PRDs to prd.json format for the Ralph autonomous agent system. Use when you have an existing PRD and need to convert it to Ralph's JSON format. Triggers on: convert this prd, turn this into ralph format, create prd.json from this, ralph json.

ralph-prd-starter

16
from diegosouzapw/awesome-omni-skill

Project-agnostic agent setup wizard for Ralph Orchestra with Quick Start, Standard, and Expert modes

ralph-wiggum-loop

16
from diegosouzapw/awesome-omni-skill

The Ralph Wiggum technique for autonomous AI development loops. Use when the user wants to run an agent in a loop for greenfield projects, reverse engineering, code migrations, large refactors, overnight batch work, or any task requiring persistent iteration until completion. Triggers include "ralph loop", "gumloop", "run ralph", "autonomous loop", "overnight coding", "while loop agent", "iterative development", "let it ralph", "run until done", "agentic loop", "context rotation", or when users want to set up autonomous coding that runs unattended. This skill implements Geoffrey Huntley's original philosophy: context rotation with git persistence, not complex multi-agent orchestration.

ralph-loop

16
from diegosouzapw/awesome-omni-skill

Detect requests for iterative AI task loops and invoke the Ralph command

factory-ralph-loop

16
from diegosouzapw/awesome-omni-skill

Iterative task execution using the Ralph Loop pattern (named after Ralph Wiggum). Use when you need to repeatedly run an agent until a condition is met—fixing all lint errors, passing all tests, or exhausting PRD tasks. The filesystem serves as memory between iterations.

bgo

10
from diegosouzapw/awesome-omni-skill

Automates the complete Blender build-go workflow, from building and packaging your extension/add-on to removing old versions, installing, enabling, and launching Blender for quick testing and iteration.

Coding & Development

acc-psr-coding-style-knowledge

16
from diegosouzapw/awesome-omni-skill

PSR-1 and PSR-12 coding standards knowledge base for PHP 8.5 projects. Provides quick reference for basic coding standard and extended coding style with detection patterns, examples, and antipattern identification. Use for code style audits and compliance reviews.

acc-detect-test-smells

16
from diegosouzapw/awesome-omni-skill

Detects test antipatterns and code smells in PHP test suites. Identifies 15 smells (Logic in Test, Mock Overuse, Fragile Tests, Mystery Guest, etc.) with fix recommendations and refactoring patterns for testability.

acc-create-value-object

16
from diegosouzapw/awesome-omni-skill

Generates DDD Value Objects for PHP 8.5. Creates immutable, self-validating objects with equality comparison. Includes unit tests.

acc-create-unit-test

16
from diegosouzapw/awesome-omni-skill

Generates PHPUnit unit tests for PHP 8.5. Creates isolated tests with AAA pattern, proper naming, attributes, and one behavior per test. Supports Value Objects, Entities, Services.

acc-create-test-double

16
from diegosouzapw/awesome-omni-skill

Generates test doubles (Mocks, Stubs, Fakes, Spies) for PHP 8.5. Creates appropriate double type based on testing needs with PHPUnit MockBuilder patterns.