diff --git a/pkg/jobparser/jobparser_test.go b/pkg/jobparser/jobparser_test.go
index 6725785..454d9e4 100644
--- a/pkg/jobparser/jobparser_test.go
+++ b/pkg/jobparser/jobparser_test.go
@@ -42,6 +42,11 @@ func TestParse(t *testing.T) {
 			options: nil,
 			wantErr: false,
 		},
+		{
+			name:    "empty_step",
+			options: nil,
+			wantErr: false,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
diff --git a/pkg/jobparser/model.go b/pkg/jobparser/model.go
index 4cbdc6d..3236704 100644
--- a/pkg/jobparser/model.go
+++ b/pkg/jobparser/model.go
@@ -40,6 +40,13 @@ func (w *SingleWorkflow) jobs() ([]string, []*Job, error) {
 			if err := item.Decode(job); err != nil {
 				return nil, nil, fmt.Errorf("yaml.Unmarshal: %w", err)
 			}
+			steps := make([]*Step, 0, len(job.Steps))
+			for _, s := range job.Steps {
+				if s != nil {
+					steps = append(steps, s)
+				}
+			}
+			job.Steps = steps
 			jobs = append(jobs, job)
 			expectKey = true
 		}
diff --git a/pkg/jobparser/testdata/empty_step.in.yaml b/pkg/jobparser/testdata/empty_step.in.yaml
new file mode 100644
index 0000000..737ac0b
--- /dev/null
+++ b/pkg/jobparser/testdata/empty_step.in.yaml
@@ -0,0 +1,8 @@
+name: test
+jobs:
+  job1:
+    name: job1
+    runs-on: linux
+    steps:
+      - run: echo job-1
+      -
diff --git a/pkg/jobparser/testdata/empty_step.out.yaml b/pkg/jobparser/testdata/empty_step.out.yaml
new file mode 100644
index 0000000..06828e0
--- /dev/null
+++ b/pkg/jobparser/testdata/empty_step.out.yaml
@@ -0,0 +1,7 @@
+name: test
+jobs:
+  job1:
+    name: job1
+    runs-on: linux
+    steps:
+      - run: echo job-1