con un clic
system-architecture
Design multi-service architectures with RAW workflows as components
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Design multi-service architectures with RAW workflows as components
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Writing effective dry_run.py mocks for workflow testing without external dependencies
Guide for creating structured plans with numbered steps and quality gates
Understanding and passing workflow quality gates (validate, dry, pytest, ruff, typecheck)
Test-driven development loop for workflows - write tests first, then implementation
Creating reusable tools in tools/ directory that workflows can import and use
Create Agent Skills that comply with the agentskills.io specification. Use when the user asks to create a new skill, add agent capabilities, or build reusable instructions.
Basado en la clasificación ocupacional SOC
| name | system-architecture |
| description | Design multi-service architectures with RAW workflows as components |
Use this skill when the user's requirements span multiple days, require webhooks, scheduling, or long-running state.
Use for:
Use when you need:
RAW workflows are pure functions that:
Example:
# .raw/workflows/analyze-cv/run.py
class AnalyzeCVWorkflow(BaseWorkflow[CVParams]):
@step("analyze")
def analyze(self) -> dict:
cv_text = self.params.cv_text
score = self.llm.score_candidate(cv_text)
return {"score": score, "qualified": score > 0.7}
FastAPI app provides:
subprocess or Python importsExample:
# api/main.py
from fastapi import FastAPI
import subprocess
app = FastAPI()
@app.post("/webhooks/cv-submission")
async def handle_cv_submission(cv: CVSubmission):
# Save to database
candidate = await db.candidates.create(cv)
# Run RAW workflow for analysis
result = subprocess.run([
"raw", "run", "analyze-cv",
"--cv-text", cv.text
], capture_output=True)
# Update state based on result
await update_candidate(candidate.id, result)
return {"status": "processing"}
Temporal workflows manage:
Example:
# workflows/temporal/hiring_process.py
@workflow.defn
class HiringProcess:
@workflow.run
async def run(self, candidate_id: str) -> str:
# Step 1: Analyze CV (RAW workflow)
analysis = await workflow.execute_activity(
run_raw_workflow,
args=["analyze-cv", f"--id={candidate_id}"],
start_to_close_timeout=timedelta(minutes=5)
)
if not analysis["qualified"]:
await send_rejection_email(candidate_id)
return "rejected"
# Step 2: Schedule call
await send_scheduling_email(candidate_id)
# Wait for calendar event (webhook will signal workflow)
call_scheduled = await workflow.wait_condition(
lambda: self.call_scheduled,
timeout=timedelta(days=7)
)
# Step 3: Day of call (sleep until call time)
await workflow.sleep_until(call_scheduled.call_time)
# Trigger Twilio call
await make_outbound_call(candidate_id)
# Wait for call completion webhook
await workflow.wait_condition(lambda: self.call_completed)
# Step 4: Generate summary (RAW workflow)
summary = await workflow.execute_activity(
run_raw_workflow,
args=["generate-call-summary", f"--id={candidate_id}"],
start_to_close_timeout=timedelta(minutes=3)
)
return "completed"
Production deployment requires:
Example structure:
docker-compose.yml # Local dev environment
k8s/
deployment.yml # API deployment
service.yml # API service
ingress.yml # External access
postgres.yml # Database
temporal.yml # Temporal server
Use case: Form submission triggers analysis and saves results
Components:
Flow:
raw run analyze --id=123Use case: Process spans multiple days with external events
Components:
Flow:
Use case: Daily/weekly reports generated and sent
Components:
Flow:
raw run generate-report --date=todayDoes it need state across days? ────NO───→ Single RAW Workflow
│
YES
│
↓
Does it need webhooks? ────NO───→ Temporal + RAW Workflows
│
YES
│
↓
FastAPI + Temporal + RAW Workflows + Deployment
When generating a multi-system architecture:
For multi-system architectures, add these gates:
builder:
gates:
default:
- validate # RAW workflow validation
- dry # RAW workflow dry run
optional:
api-test:
command: "pytest api/tests/ -v"
timeout_seconds: 60
temporal-validate:
command: "temporal workflow validate"
timeout_seconds: 30
docker-validate:
command: "docker-compose config"
timeout_seconds: 10
This pattern keeps RAW workflows simple and reusable while building complex systems around them.