Cold-Formed Steel (CFS) column design agent with Claude API integration.
-
Install dependencies:
pip install -r requirements.txt
-
Configure API Key:
- Copy
.env.exampleto.env - Add your Anthropic API key to
.env:ANTHROPIC_API_KEY=your-api-key-here
- Copy
-
Run the agent:
python -m src.cfs_design_agent
cfs-workspace/
├── .env.example # Example environment variables
├── README.md # This file
├── PROJECT_SUMMARY.md # Comprehensive project overview
├── requirements.txt # Python dependencies
├── .gitignore # Git ignore rules
│
├── src/ # Source code
│ ├── cfs_design_agent.py # Main agent implementation
│ ├── cfs_calculator.py # CFS design calculations (AISI S100-16)
│ ├── section_catalog.py # Section database
│ └── tools/ # MCP tool definitions (future)
│
├── scripts/ # Utility scripts
│ ├── convert_bristol_database.py # Bristol database converter
│ └── process_bristol_study.py # Bristol validation processor
│
├── tests/ # Unit tests
│ └── test_calculator.py
│
├── data/ # Data files (gitignored except examples)
│ ├── bristol/
│ │ ├── raw/ # Original test database
│ │ └── processed/ # Converted test cases
│ ├── sections/ # Section catalogs
│ └── examples/ # Sample inputs (committed)
│ ├── column_specs.csv
│ └── design_parameters.json
│
├── outputs/ # Generated results (gitignored)
│ ├── validation/ # Bristol validation outputs
│ │ ├── bristol_validation_results.json
│ │ ├── bristol_validation_analysis.json
│ │ └── validation_report.json
│ └── designs/ # Design outputs
│ └── failure_analysis.md
│
└── docs/ # Documentation
├── BRISTOL_VALIDATION_GUIDE.md
├── examples/
│ └── cfs_agent_examples.py # Usage examples
└── archive/ # Old versions
- check_cfs_capacity: Validate a section against a load
- find_optimal_section: Find the best section from a family
- list_available_sections: Show available sections by family
- Code: AISI S100-16, Section C3 (Columns with Flexural Buckling)
- Design approach: Load and Resistance Factor Design (LRFD)
- Resistance factor φ = 0.85
The CFS agent can be validated against real test data from the Bristol University CFS database (207 test specimens).
-
Convert Bristol database to agent format:
python scripts/convert_bristol_database.py "data/bristol/raw/bristol_cfs_database.csv"Outputs:
data/bristol/processed/bristol_agent_study.csv- 207 test cases formatted for agent processingoutputs/validation/validation_report.json- Database summary statistics
-
Run agent predictions on test cases:
python scripts/process_bristol_study.py
Outputs:
outputs/validation/bristol_validation_results.json- Agent capacity predictions for all 207 testsoutputs/validation/bristol_validation_analysis.json- Accuracy statistics and error analysis
- 207 tests from Bristol University CFS column research
- Section types: C-2C, O-2C, HC-2C+U, C-2C+2U, C-2U, O-2U, C-U+C
- Load range: 7.50 - 753.00 kN
- Length range: 503 - 3500 mm
- Boundary conditions: Pinned (176), Fixed (23), Semi-Fixed (8)
- Failure modes: Flexural (F), Local buckling (L), Distortional (D), Hinge
The analysis compares:
- Agent predicted capacity vs. Actual test load (Pt)
- DSM predicted capacity vs. Actual test load (Pt)
- Accuracy by section type, length range, and failure mode