yaml-configuration

YAML Configuration Management Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "yaml-configuration" with this command: npx skills add vamseeachanta/workspace-hub/vamseeachanta-workspace-hub-yaml-configuration

YAML Configuration Management Skill

Master YAML for configuration-driven engineering workflows, enabling reproducible analyses and automated model generation.

When to Use This Skill

Use YAML configuration when you need:

  • Configuration-driven workflows - Separate data from code

  • Reproducible analyses - Version-controlled parameters

  • Model templates - Reusable configurations

  • Complex nested structures - Hierarchical data organization

  • Human-readable configs - Easy to review and modify

  • Automated model generation - OrcaFlex, FEA, CAD models

Avoid when:

  • Binary data needed (use pickle, HDF5)

  • Extremely large datasets (use CSV, databases)

  • Real-time performance critical (use JSON)

Core Capabilities

  1. Basic YAML Syntax

Scalars:

Strings

project_name: "FPSO Mooring Analysis" description: Simple mooring system

Numbers

water_depth: 1500 # Integer wave_height: 8.5 # Float scientific: 1.5e-3 # Scientific notation

Booleans

include_current: true dynamic_analysis: false

Null values

optional_parameter: null

or

optional_parameter: ~

Lists:

Inline list

mooring_lines: [1, 2, 3, 4, 5, 6]

Block list

vessel_types:

  • FPSO
  • Semi-submersible
  • TLP
  • SPAR

List of dictionaries

load_cases:

  • name: "Operating" Hs: 4.5 Tp: 10.0
  • name: "Storm" Hs: 8.5 Tp: 12.0

Dictionaries:

Nested dictionaries

vessel: name: "FPSO Vessel" dimensions: length: 320 beam: 58 draft: 22 mass_properties: displacement: 150000 lcg: 160 vcg: 15

  1. Advanced Features

Anchors and Aliases (Reuse):

Define anchor

default_material: &steel name: "Steel" density: 7850 youngs_modulus: 200e9

Reuse with alias

chain_material: *steel

mooring_line: material: *steel # References same data

Merge keys

base_config: &base version: 1.0 author: "Engineering Team"

analysis_1: <<: *base # Merge base_config name: "Analysis 1" parameters: duration: 3600

analysis_2: <<: *base # Merge base_config name: "Analysis 2" parameters: duration: 7200

Multi-line Strings:

Preserve newlines (literal style)

description: | This is a multi-line string. Newlines are preserved. Use for comments or descriptions.

Fold newlines (folded style)

notes: > This string will have newlines replaced with spaces, except for blank lines.

This starts a new paragraph.

Comments:

This is a comment

project: "Mooring Analysis" # Inline comment

Comments for documentation

vessel:

Main dimensions

length: 320 # meters beam: 58 # meters

Complete Examples

Example 1: OrcaFlex Mooring Configuration

config/mooring_analysis.yaml


metadata: analysis_name: "FPSO Mooring System" analysis_type: "dynamic_mooring" created: "2026-01-06" author: "Marine Engineering Team" version: 1.0

environment: water_depth: 1500 # meters wave: type: "JONSWAP" Hs: 8.5 # meters Tp: 12.0 # seconds gamma: 3.3 direction: 0 # degrees current: surface_speed: 1.2 # m/s direction: 0 # degrees profile: "linear" # or "power_law" wind: speed: 25 # m/s direction: 0 # degrees

vessel: name: "FPSO_Model" type: "Vessel" dimensions: length: 320 # meters beam: 58 draft: 22 mass_properties: mass: 150000 # tonnes lcg: 160 # from aft perpendicular vcg: 15 # from keel radii_of_gyration: roll: 22 pitch: 95 yaw: 95

mooring_system: configuration: "spread" # or "turret" number_of_lines: 12 lines: - name: "Line_1" type: "chain_wire_chain" azimuth: 0 # degrees segments: - type: "chain" length: 500 diameter: 127 # mm grade: "R4" - type: "wire" length: 1000 diameter: 120 # mm - type: "chain" length: 500 diameter: 127 # mm anchor: type: "drag_embedment" capacity: 5000 # kN - name: "Line_2" type: "chain_wire_chain" azimuth: 30 # ... similar structure

pretension: method: "automatic" # or "manual" target: 2000 # kN

analysis_parameters: static: tolerance: 0.001 max_iterations: 100 dynamic: duration: 10800 # seconds (3 hours) time_step: 0.05 # seconds ramp_time: 300 # seconds output_interval: 1.0 # seconds

output: format: "html" # or "csv", "excel" include_plots: true statistics: ["max", "min", "mean", "std"] results: - "vessel_motions" - "mooring_tensions" - "anchor_loads"

Example 2: Hydrodynamic Analysis Configuration

config/hydrodynamic_analysis.yaml


analysis: type: "frequency_domain" software: "AQWA" # or "WAMIT", "OrcaWave"

geometry: input_file: "../models/vessel_geometry.gdf" mesh: element_size: 2.0 # meters refinement_zones: - location: "bow" size: 0.5 - location: "stern" size: 0.5

wave_directions: start: 0 end: 180 step: 15 # degrees

wave_frequencies: min: 0.1 # rad/s max: 2.0 number: 40 spacing: "logarithmic" # or "linear"

mass_properties: displacement: 150000 # tonnes center_of_gravity: x: 160 # from origin y: 0 z: 15 radii_of_gyration: Rxx: 22 # roll Ryy: 95 # pitch Rzz: 95 # yaw

water_depth: 1500 # meters, or "infinite"

output: added_mass: true damping: true wave_excitation: true raos: true drift_forces: true qtf: false # Quadratic Transfer Functions (slow)

export_formats: - "txt" - "csv" - "yml"

plots: - "added_mass_vs_frequency" - "damping_vs_frequency" - "rao_amplitude_vs_frequency" - "rao_phase_vs_frequency"

Example 3: Fatigue Analysis Configuration

config/fatigue_analysis.yaml


analysis: name: "Mooring Line Fatigue Assessment" type: "spectral_fatigue" standard: "DNV-RP-C203"

input_data: tension_rao: file: "../results/mooring_rao.csv" format: "csv" columns: frequency: "freq_rad_s" amplitude: "tension_amplitude_kN"

wave_scatter: file: "../data/wave_scatter_diagram.yml" annual_probability: true

material: type: "chain" grade: "R4" diameter: 127 # mm sn_curve: class: "F3" # DNV classification m: 3.0 # S-N curve slope a: 1.52e12 # S-N curve constant thickness_exponent: 0.25

stress_concentration: factor: 1.2 # SCF location: "connector"

analysis_parameters: short_term: duration: 3 # hours bins: 100

long_term: design_life: 25 # years damage_limit: 1.0

output: damage_per_sea_state: true annual_damage: true fatigue_life: true utilization: true

plots: - "damage_vs_hs_tp" - "cumulative_damage" - "rainflow_histogram"

export: format: ["html", "csv"] include_raw_data: false

Example 4: Multi-Analysis Workflow

config/workflow_config.yaml


workflow: name: "Complete Mooring Analysis Workflow" version: 1.0

stages:

  • stage: 1 name: "Hydrodynamic Analysis" config: "../config/hydrodynamic_analysis.yaml" outputs:

    • "../results/added_mass.csv"
    • "../results/damping.csv"
    • "../results/raos.csv"
  • stage: 2 name: "Mooring Static Analysis" config: "../config/mooring_static.yaml" inputs:

    • "../results/vessel_properties.yml" outputs:
    • "../results/mooring_configuration.yml"
    • "../results/static_tensions.csv"
  • stage: 3 name: "Mooring Dynamic Analysis" config: "../config/mooring_dynamic.yaml" dependencies: [1, 2] # Requires stages 1 and 2 inputs:

    • "../results/raos.csv"
    • "../results/mooring_configuration.yml" outputs:
    • "../results/dynamic_tensions.csv"
    • "../reports/mooring_report.html"
  • stage: 4 name: "Fatigue Assessment" config: "../config/fatigue_analysis.yaml" dependencies: [3] inputs:

    • "../results/dynamic_tensions.csv" outputs:
    • "../results/fatigue_damage.csv"
    • "../reports/fatigue_report.html"

execution: parallel: false # Run stages sequentially stop_on_error: true save_intermediate: true

Example 5: Vessel Library

config/vessel_library.yaml


Vessel templates library

vessels: fpso_standard: &fpso type: "FPSO" dimensions: length: 320 beam: 58 draft: 22 mass: 150000 mooring: "spread"

semi_sub_standard: &semi type: "Semi-submersible" dimensions: length: 110 beam: 78 draft: 25 mass: 45000 mooring: "tendon"

spar_standard: &spar type: "SPAR" dimensions: length: 200 # height diameter: 40 draft: 180 mass: 30000 mooring: "taut"

Use templates in specific projects

project_1: vessel: <<: *fpso name: "Project_1_FPSO" custom_modifications: draft: 24 # Override default

project_2: vessel: <<: *semi name: "Project_2_SemiSub"

Example 6: Parameter Variations

config/parametric_study.yaml


parametric_study: name: "Mooring Pretension Sensitivity" base_config: "../config/mooring_analysis.yaml"

parameters: - name: "pretension" type: "linear" min: 1000 max: 3000 steps: 11 unit: "kN"

- name: "water_depth"
  type: "list"
  values: [1000, 1500, 2000, 2500]
  unit: "m"

combinations: "full_factorial" # or "latin_hypercube"

output: summary_table: true plots: - type: "line" x: "pretension" y: "max_tension" - type: "contour" x: "pretension" y: "water_depth" z: "max_offset"

Python Integration

Loading YAML in Python

import yaml from pathlib import Path

def load_config(config_file: str) -> dict: """Load YAML configuration file.""" with open(config_file, 'r') as f: config = yaml.safe_load(f) return config

Usage

config = load_config('../config/mooring_analysis.yaml')

water_depth = config['environment']['water_depth'] vessel_name = config['vessel']['name'] num_lines = config['mooring_system']['number_of_lines']

Writing YAML from Python

import yaml

def save_config(config: dict, output_file: str): """Save configuration to YAML file.""" with open(output_file, 'w') as f: yaml.dump(config, f, default_flow_style=False, sort_keys=False)

Create configuration

config = { 'analysis': { 'name': 'Test Analysis', 'duration': 3600 }, 'parameters': { 'Hs': 8.5, 'Tp': 12.0 } }

save_config(config, '../config/generated_config.yaml')

Validation

import yaml from jsonschema import validate, ValidationError

def validate_config(config_file: str, schema_file: str) -> bool: """Validate YAML against JSON schema.""" with open(config_file) as f: config = yaml.safe_load(f)

with open(schema_file) as f:
    schema = yaml.safe_load(f)

try:
    validate(instance=config, schema=schema)
    return True
except ValidationError as e:
    print(f"Validation error: {e.message}")
    return False

Merging Configs

def merge_configs(base_config: dict, override_config: dict) -> dict: """Deep merge two configuration dictionaries.""" import copy

result = copy.deepcopy(base_config)

for key, value in override_config.items():
    if key in result and isinstance(result[key], dict) and isinstance(value, dict):
        result[key] = merge_configs(result[key], value)
    else:
        result[key] = value

return result

Usage

base = load_config('../config/default.yaml') custom = load_config('../config/custom.yaml') merged = merge_configs(base, custom)

Best Practices

  1. Use Consistent Indentation

✅ Good: 2 spaces

vessel: dimensions: length: 320 beam: 58

❌ Bad: Mixed indentation

vessel: dimensions: length: 320 beam: 58

  1. Quote Strings When Needed

Quote strings that could be interpreted as numbers or booleans

name: "12345" # Without quotes, would be number flag: "true" # Without quotes, would be boolean

Quote strings with special characters

description: "Wave height: 8.5m"

  1. Use Anchors for Reusability

Define common material

steel: &steel density: 7850 E: 200e9

Reuse

chain_material: *steel pipe_material: *steel

  1. Add Comments for Clarity

environment: water_depth: 1500 # meters, site-specific wave: Hs: 8.5 # 100-year return period Tp: 12.0 # Associated peak period

  1. Organize Logically

Group related items

analysis:

... analysis settings

environment:

... environmental parameters

vessel:

... vessel properties

mooring:

... mooring system

Common Patterns

Pattern 1: Configuration Hierarchy

Global defaults

defaults: &defaults version: 1.0 units: "SI" precision: 6

Project-specific configs inherit defaults

project_a: <<: *defaults name: "Project A"

... specific settings

project_b: <<: *defaults name: "Project B"

... specific settings

Pattern 2: Environment-Specific Configs

development.yaml

database: host: "localhost" port: 5432

production.yaml

database: host: "prod-server.example.com" port: 5432

Pattern 3: Parameterized Templates

template.yaml

analysis: name: "${PROJECT_NAME}" water_depth: ${WATER_DEPTH} wave_height: ${HS}

Installation

Python YAML library

pip install pyyaml

With validation

pip install pyyaml jsonschema

Advanced features

pip install ruamel.yaml # Preserves comments and formatting

Resources

Use this skill to create maintainable, version-controlled configurations for all DigitalModel analyses!

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

echarts

No summary provided by upstream source.

Repository SourceNeeds Review
General

pandoc

No summary provided by upstream source.

Repository SourceNeeds Review
General

mkdocs

No summary provided by upstream source.

Repository SourceNeeds Review
General

gis

No summary provided by upstream source.

Repository SourceNeeds Review