\n\n"
+
+ all_schemas.each do |schema|
+ schema_title = schema[:name].split("_").map(&:capitalize).join(" ")
+ md += <<~CARD
+
+
+ CARD
+ end
+
+ md += "
\n\n"
+ md
+ end
+ end
+end
diff --git a/tools/internal-gems/schema_doc_gen/lib/schema_doc_gen/version.rb b/tools/internal-gems/schema_doc_gen/lib/schema_doc_gen/version.rb
new file mode 100644
index 0000000000..04de285dea
--- /dev/null
+++ b/tools/internal-gems/schema_doc_gen/lib/schema_doc_gen/version.rb
@@ -0,0 +1,8 @@
+# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+# SPDX-License-Identifier: BSD-3-Clause-Clear
+
+# frozen_string_literal: true
+
+module SchemaDocGen
+ VERSION = "0.1.0"
+end
diff --git a/tools/internal-gems/schema_doc_gen/schema_doc_gen.gemspec b/tools/internal-gems/schema_doc_gen/schema_doc_gen.gemspec
new file mode 100644
index 0000000000..62e69b9b0d
--- /dev/null
+++ b/tools/internal-gems/schema_doc_gen/schema_doc_gen.gemspec
@@ -0,0 +1,36 @@
+# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+# SPDX-License-Identifier: BSD-3-Clause-Clear
+
+# frozen_string_literal: true
+
+require_relative "lib/schema_doc_gen/version"
+
+Gem::Specification.new do |s|
+ s.name = "schema_doc_gen"
+ s.version = SchemaDocGen::VERSION
+ s.summary = "JSON Schema documentation generator for UDB"
+ s.description = <<~DESC
+ Generates Markdown documentation from JSON Schema files for the
+ RISC-V Unified Database documentation site.
+ DESC
+ s.date = "2024-01-01"
+ s.authors = ["Derek Hower"]
+ s.email = ["dhower@qti.qualcomm.com"]
+ s.homepage = "https://github.com/riscv/riscv-unified-db"
+ s.files = Dir["lib/**/*.rb", "bin/*"]
+ s.license = "BSD-3-Clause-Clear"
+ s.metadata = {
+ "homepage_uri" => "https://github.com/riscv/riscv-unified-db",
+ "bug_tracker_uri" => "https://github.com/riscv/riscv-unified-db/issues"
+ }
+ s.required_ruby_version = "~> 3.2"
+
+ s.require_paths = ["lib"]
+ s.bindir = "bin"
+ s.executables << "schema-doc-gen"
+
+ s.add_dependency "tty-option"
+ s.add_dependency "tty-exit"
+
+ s.add_development_dependency "rake"
+end
diff --git a/tools/ruby-gems/udb_helpers/REUSE.toml b/tools/ruby-gems/udb_helpers/REUSE.toml
deleted file mode 100644
index 99eb1c9003..0000000000
--- a/tools/ruby-gems/udb_helpers/REUSE.toml
+++ /dev/null
@@ -1,10 +0,0 @@
-version = 1
-
-# Computer-generated files that are checked in
-[[annotations]]
-path = [
- "sorbet/**",
- "Gemfile.lock",
-]
-SPDX-FileCopyrightText = "NONE"
-SPDX-License-Identifier = "CC0-1.0"
diff --git a/tools/test/regress-tests.yaml b/tools/test/regress-tests.yaml
index b5accad7f4..800177563d 100644
--- a/tools/test/regress-tests.yaml
+++ b/tools/test/regress-tests.yaml
@@ -366,6 +366,14 @@ tests:
- name: Check schema versions against published URLs
run: ./do gen:schemas && ./bin/ruby tools/scripts/check_schema_versions.rb
+ regress-schema-docs:
+ ci_stage: pr
+ tags:
+ - smoke
+ test:
+ - name: Generate schema documentation
+ run: ./bin/chore gen -f schema-docs
+
build-idl-doc:
ci_stage: merge_queue
gh_save_artifact: