The core of the CircleCI experience is creating a deterministic build with the config.yml file. A deterministic build is one that can be run live at commit time, tomorrow, or even next month and will end with the exact same results.

Config Introduction Configuration Reference
Introduction to Config in CircleCI.     Complete specification for config.yml syntax.    

Writing YAML CircleCI CLI
A primer for YAML syntax basics.      Use the CircleCI CLI to run jobs locally.

Debug Config Locally
Use a shell script to debug your config locally.     

Video: Introduction to .circleci/config.yml