Add API documentation with GitHub Pages deployment - #181

Merged
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs
Nov 27, 2025
Merged

Add API documentation with GitHub Pages deployment#181
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs

Conversation

@jonathanhefner

Copy link
Copy Markdown
Member

This adds automated deployment of a versioned API documentation landing page using GitHub Pages. The landing page links to documentation hosted on RubyDoc.info, the de facto standard documentation site for the Ruby ecosystem. The landing page will update to reflect new releases.

Changes

  1. Documentation generation script (see bin/generate-gh-pages.sh)

    Copies and commits documentation files to the gh-pages branch. The script uses git worktrees to isolate the process from the main workspace.

    The script:

    • Creates the gh-pages branch as an orphan branch if it doesn't exist
    • Parses semantic versions from tag names, ignoring arbitrary prefixes (e.g., tags 1.2.3, v1.2.3, and release-1.2.3 all create v1.2.3)
    • Determines the latest version using semantic version sorting
    • Copies static Jekyll template files from docs/ to the gh-pages root (for the latest version only)
    • Generates docs/_data/versions.yml with a list of all versions for the Jekyll templates to consume
  2. Jekyll template files (see docs/ directory)

    • docs/_config.yml - Jekyll configuration
    • docs/index.md - Landing page template that links to all versions on RubyDoc.info based on generated docs/_data/versions.yml
    • docs/latest/index.html - Redirect page template that redirects to the latest documentation on RubyDoc.info
  3. GitHub Actions workflow (see .github/workflows/release.yml)

    Added a publish_gh_pages job that runs after the publish_gem job on release events. The job invokes the generation script with the release tag name, then pushes the updated gh-pages branch to deploy the documentation.

  4. CI validation (see .github/workflows/ci.yml)

    Added a yard job that runs YARD validation with --no-output. This ensures YARD can successfully parse the codebase (without generating output), catching documentation issues early in CI.

  5. YARD dependencies (see Gemfile)

    Added yard and yard-sorbet gems as development dependencies to support documentation validation in CI.

    YARD documentation is automatically generated and hosted by RubyDoc.info when the gem is published to RubyGems.org.

  6. Documentation links (see README.md and mcp.gemspec)

    Added links to the published API documentation on RubyDoc.info in the README and gemspec metadata.

Documentation URL

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

RubyDoc.info documentation will be accessible at:


You can see a preview of the landing page at: https://jonathan.hefner.pro/mcp-ruby-sdk/. (Ignore the v99.9.9 tag — I created that for testing purposes.)

Note that this page is fully customizable via docs/index.md, and it can link to SDK-specific guides in the future.

Eventually, I intend to link to this page from the modelcontextprotocol.ioSDKs page. And, ultimately, I think it would be nice have something like sdks.modelcontextprotocol.io such that https://sdks.modelcontextprotocol.io/ruby-sdk/ resolves to https://modelcontextprotocol.github.io/ruby-sdk/.

If desired, I can also submit a PR for the gh-pages branch to populate docs/index.md before the next release.

This adds automated deployment of a versioned API documentation landing
page using GitHub Pages. The landing page links to documentation hosted
on RubyDoc.info, the de facto standard documentation site for the Ruby
ecosystem. The landing page will update to reflect new releases.
Changes
-------
1. **Documentation generation script** (see `bin/generate-gh-pages.sh`)
Copies and commits documentation files to the gh-pages branch. The
script uses git worktrees to isolate the process from the main
workspace.
The script:
- Creates the gh-pages branch as an orphan branch if it doesn't exist
- Parses semantic versions from tag names, ignoring arbitrary
prefixes (e.g., tags `1.2.3`, `v1.2.3`, and `release-1.2.3` all
create `v1.2.3`)
- Determines the latest version using semantic version sorting
- Copies static Jekyll template files from `docs/` to the gh-pages
root (for the latest version only)
- Generates `docs/_data/versions.yml` with a list of all versions
for the Jekyll templates to consume
2. **Jekyll template files** (see `docs/` directory)
- `docs/_config.yml` - Jekyll configuration
- `docs/index.md` - Landing page template that links to all versions
on RubyDoc.info based on generated `docs/_data/versions.yml`
- `docs/latest/index.html` - Redirect page template that redirects
to the latest documentation on RubyDoc.info
3. **GitHub Actions workflow** (see `.github/workflows/release.yml`)
Added a `publish_gh_pages` job that runs after the `publish_gem` job
on release events. The job invokes the generation script with the
release tag name, then pushes the updated gh-pages branch to deploy
the documentation.
4. **CI validation** (see `.github/workflows/ci.yml`)
Added a `yard` job that runs YARD validation with `--no-output`.
This ensures YARD can successfully parse the codebase (without
generating output), catching documentation issues early in CI.
5. **YARD dependencies** (see `Gemfile`)
Added `yard` and `yard-sorbet` gems as development dependencies to
support documentation validation in CI.
YARD documentation is automatically generated and hosted by
RubyDoc.info when the gem is published to RubyGems.org.
6. **Documentation links** (see `README.md` and `mcp.gemspec`)
Added links to the published API documentation on RubyDoc.info in
the README and gemspec metadata.
Documentation URL
-----------------
Custom documentation will be available at:
https://modelcontextprotocol.github.io/ruby-sdk/
RubyDoc.info documentation will be accessible at:
- https://rubydoc.info/gems/mcp (latest version)
- https://rubydoc.info/gems/mcp/1.2.3 (specific versions)
Co-Authored-By: Claude <noreply@anthropic.com>

@koickoic left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

I confirmed that https://modelcontextprotocol.github.io/python-sdk/ already exists. Since users will likely refer to the documentation first, having this kind of documentation available should improve the overall user-friendly tool experience. Thank you for working on this!

@koic
koic merged commit 00392b6 into modelcontextprotocol:mainNov 27, 2025
6 checks passed
koic added a commit that referenced this pull request Mar 30, 2026
Accessing https://ruby.sdk.modelcontextprotocol.io/ is expected to show
the content of https://modelcontextprotocol.github.io/ruby-sdk/,
but it currently does not. This change fixes that issue.
The `generate-gh-pages.sh` script cleans all files from the gh-pages branch root
before copying from `docs/`. This removes the CNAME file that GitHub Pages uses for
the custom domain, causing `ruby.sdk.modelcontextprotocol.io` to break on every release.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L91-L93
By placing the CNAME file in `docs/`, it will be automatically copied to `gh-pages` during each deployment.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L95-L97
The following is a PR related to the configuration of ruby.sdk.modelcontextprotocol.io.
- #181
- modelcontextprotocol/dns#14
- modelcontextprotocol/modelcontextprotocol#2486
koic added a commit that referenced this pull request Apr 15, 2026
Follow-up to #181.
The landing page at https://ruby.sdk.modelcontextprotocol.io previously only listed version links
to RubyDoc.info. Add multi-page documentation using the just-the-docs Jekyll theme with
sidebar navigation, search, and code highlighting.
Pages: Introduction, Installation, Building Servers, and Building Clients.
This PR introduces a basic set of pages. Additional content can be added incrementally in future updates.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jonathanhefner@koic
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add API documentation with GitHub Pages deployment - #181

Merged
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs
Nov 27, 2025
Merged

Add API documentation with GitHub Pages deployment#181
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs

Conversation

@jonathanhefner

Copy link
Copy Markdown
Member

This adds automated deployment of a versioned API documentation landing page using GitHub Pages. The landing page links to documentation hosted on RubyDoc.info, the de facto standard documentation site for the Ruby ecosystem. The landing page will update to reflect new releases.

Changes

  1. Documentation generation script (see bin/generate-gh-pages.sh)

    Copies and commits documentation files to the gh-pages branch. The script uses git worktrees to isolate the process from the main workspace.

    The script:

    • Creates the gh-pages branch as an orphan branch if it doesn't exist
    • Parses semantic versions from tag names, ignoring arbitrary prefixes (e.g., tags 1.2.3, v1.2.3, and release-1.2.3 all create v1.2.3)
    • Determines the latest version using semantic version sorting
    • Copies static Jekyll template files from docs/ to the gh-pages root (for the latest version only)
    • Generates docs/_data/versions.yml with a list of all versions for the Jekyll templates to consume
  2. Jekyll template files (see docs/ directory)

    • docs/_config.yml - Jekyll configuration
    • docs/index.md - Landing page template that links to all versions on RubyDoc.info based on generated docs/_data/versions.yml
    • docs/latest/index.html - Redirect page template that redirects to the latest documentation on RubyDoc.info
  3. GitHub Actions workflow (see .github/workflows/release.yml)

    Added a publish_gh_pages job that runs after the publish_gem job on release events. The job invokes the generation script with the release tag name, then pushes the updated gh-pages branch to deploy the documentation.

  4. CI validation (see .github/workflows/ci.yml)

    Added a yard job that runs YARD validation with --no-output. This ensures YARD can successfully parse the codebase (without generating output), catching documentation issues early in CI.

  5. YARD dependencies (see Gemfile)

    Added yard and yard-sorbet gems as development dependencies to support documentation validation in CI.

    YARD documentation is automatically generated and hosted by RubyDoc.info when the gem is published to RubyGems.org.

  6. Documentation links (see README.md and mcp.gemspec)

    Added links to the published API documentation on RubyDoc.info in the README and gemspec metadata.

Documentation URL

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

RubyDoc.info documentation will be accessible at:


You can see a preview of the landing page at: https://jonathan.hefner.pro/mcp-ruby-sdk/. (Ignore the v99.9.9 tag — I created that for testing purposes.)

Note that this page is fully customizable via docs/index.md, and it can link to SDK-specific guides in the future.

Eventually, I intend to link to this page from the modelcontextprotocol.ioSDKs page. And, ultimately, I think it would be nice have something like sdks.modelcontextprotocol.io such that https://sdks.modelcontextprotocol.io/ruby-sdk/ resolves to https://modelcontextprotocol.github.io/ruby-sdk/.

If desired, I can also submit a PR for the gh-pages branch to populate docs/index.md before the next release.

This adds automated deployment of a versioned API documentation landing
page using GitHub Pages. The landing page links to documentation hosted
on RubyDoc.info, the de facto standard documentation site for the Ruby
ecosystem. The landing page will update to reflect new releases.
Changes
-------
1. **Documentation generation script** (see `bin/generate-gh-pages.sh`)
Copies and commits documentation files to the gh-pages branch. The
script uses git worktrees to isolate the process from the main
workspace.
The script:
- Creates the gh-pages branch as an orphan branch if it doesn't exist
- Parses semantic versions from tag names, ignoring arbitrary
prefixes (e.g., tags `1.2.3`, `v1.2.3`, and `release-1.2.3` all
create `v1.2.3`)
- Determines the latest version using semantic version sorting
- Copies static Jekyll template files from `docs/` to the gh-pages
root (for the latest version only)
- Generates `docs/_data/versions.yml` with a list of all versions
for the Jekyll templates to consume
2. **Jekyll template files** (see `docs/` directory)
- `docs/_config.yml` - Jekyll configuration
- `docs/index.md` - Landing page template that links to all versions
on RubyDoc.info based on generated `docs/_data/versions.yml`
- `docs/latest/index.html` - Redirect page template that redirects
to the latest documentation on RubyDoc.info
3. **GitHub Actions workflow** (see `.github/workflows/release.yml`)
Added a `publish_gh_pages` job that runs after the `publish_gem` job
on release events. The job invokes the generation script with the
release tag name, then pushes the updated gh-pages branch to deploy
the documentation.
4. **CI validation** (see `.github/workflows/ci.yml`)
Added a `yard` job that runs YARD validation with `--no-output`.
This ensures YARD can successfully parse the codebase (without
generating output), catching documentation issues early in CI.
5. **YARD dependencies** (see `Gemfile`)
Added `yard` and `yard-sorbet` gems as development dependencies to
support documentation validation in CI.
YARD documentation is automatically generated and hosted by
RubyDoc.info when the gem is published to RubyGems.org.
6. **Documentation links** (see `README.md` and `mcp.gemspec`)
Added links to the published API documentation on RubyDoc.info in
the README and gemspec metadata.
Documentation URL
-----------------
Custom documentation will be available at:
https://modelcontextprotocol.github.io/ruby-sdk/
RubyDoc.info documentation will be accessible at:
- https://rubydoc.info/gems/mcp (latest version)
- https://rubydoc.info/gems/mcp/1.2.3 (specific versions)
Co-Authored-By: Claude <noreply@anthropic.com>

@koickoic left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

I confirmed that https://modelcontextprotocol.github.io/python-sdk/ already exists. Since users will likely refer to the documentation first, having this kind of documentation available should improve the overall user-friendly tool experience. Thank you for working on this!

@koic
koic merged commit 00392b6 into modelcontextprotocol:mainNov 27, 2025
6 checks passed
koic added a commit that referenced this pull request Mar 30, 2026
Accessing https://ruby.sdk.modelcontextprotocol.io/ is expected to show
the content of https://modelcontextprotocol.github.io/ruby-sdk/,
but it currently does not. This change fixes that issue.
The `generate-gh-pages.sh` script cleans all files from the gh-pages branch root
before copying from `docs/`. This removes the CNAME file that GitHub Pages uses for
the custom domain, causing `ruby.sdk.modelcontextprotocol.io` to break on every release.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L91-L93
By placing the CNAME file in `docs/`, it will be automatically copied to `gh-pages` during each deployment.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L95-L97
The following is a PR related to the configuration of ruby.sdk.modelcontextprotocol.io.
- #181
- modelcontextprotocol/dns#14
- modelcontextprotocol/modelcontextprotocol#2486
koic added a commit that referenced this pull request Apr 15, 2026
Follow-up to #181.
The landing page at https://ruby.sdk.modelcontextprotocol.io previously only listed version links
to RubyDoc.info. Add multi-page documentation using the just-the-docs Jekyll theme with
sidebar navigation, search, and code highlighting.
Pages: Introduction, Installation, Building Servers, and Building Clients.
This PR introduces a basic set of pages. Additional content can be added incrementally in future updates.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jonathanhefner@koic
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add API documentation with GitHub Pages deployment - #181

Merged
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs
Nov 27, 2025
Merged

Add API documentation with GitHub Pages deployment#181
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs

Conversation

@jonathanhefner

Copy link
Copy Markdown
Member

This adds automated deployment of a versioned API documentation landing page using GitHub Pages. The landing page links to documentation hosted on RubyDoc.info, the de facto standard documentation site for the Ruby ecosystem. The landing page will update to reflect new releases.

Changes

  1. Documentation generation script (see bin/generate-gh-pages.sh)

    Copies and commits documentation files to the gh-pages branch. The script uses git worktrees to isolate the process from the main workspace.

    The script:

    • Creates the gh-pages branch as an orphan branch if it doesn't exist
    • Parses semantic versions from tag names, ignoring arbitrary prefixes (e.g., tags 1.2.3, v1.2.3, and release-1.2.3 all create v1.2.3)
    • Determines the latest version using semantic version sorting
    • Copies static Jekyll template files from docs/ to the gh-pages root (for the latest version only)
    • Generates docs/_data/versions.yml with a list of all versions for the Jekyll templates to consume
  2. Jekyll template files (see docs/ directory)

    • docs/_config.yml - Jekyll configuration
    • docs/index.md - Landing page template that links to all versions on RubyDoc.info based on generated docs/_data/versions.yml
    • docs/latest/index.html - Redirect page template that redirects to the latest documentation on RubyDoc.info
  3. GitHub Actions workflow (see .github/workflows/release.yml)

    Added a publish_gh_pages job that runs after the publish_gem job on release events. The job invokes the generation script with the release tag name, then pushes the updated gh-pages branch to deploy the documentation.

  4. CI validation (see .github/workflows/ci.yml)

    Added a yard job that runs YARD validation with --no-output. This ensures YARD can successfully parse the codebase (without generating output), catching documentation issues early in CI.

  5. YARD dependencies (see Gemfile)

    Added yard and yard-sorbet gems as development dependencies to support documentation validation in CI.

    YARD documentation is automatically generated and hosted by RubyDoc.info when the gem is published to RubyGems.org.

  6. Documentation links (see README.md and mcp.gemspec)

    Added links to the published API documentation on RubyDoc.info in the README and gemspec metadata.

Documentation URL

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

RubyDoc.info documentation will be accessible at:


You can see a preview of the landing page at: https://jonathan.hefner.pro/mcp-ruby-sdk/. (Ignore the v99.9.9 tag — I created that for testing purposes.)

Note that this page is fully customizable via docs/index.md, and it can link to SDK-specific guides in the future.

Eventually, I intend to link to this page from the modelcontextprotocol.ioSDKs page. And, ultimately, I think it would be nice have something like sdks.modelcontextprotocol.io such that https://sdks.modelcontextprotocol.io/ruby-sdk/ resolves to https://modelcontextprotocol.github.io/ruby-sdk/.

If desired, I can also submit a PR for the gh-pages branch to populate docs/index.md before the next release.

This adds automated deployment of a versioned API documentation landing
page using GitHub Pages. The landing page links to documentation hosted
on RubyDoc.info, the de facto standard documentation site for the Ruby
ecosystem. The landing page will update to reflect new releases.
Changes
-------
1. **Documentation generation script** (see `bin/generate-gh-pages.sh`)
Copies and commits documentation files to the gh-pages branch. The
script uses git worktrees to isolate the process from the main
workspace.
The script:
- Creates the gh-pages branch as an orphan branch if it doesn't exist
- Parses semantic versions from tag names, ignoring arbitrary
prefixes (e.g., tags `1.2.3`, `v1.2.3`, and `release-1.2.3` all
create `v1.2.3`)
- Determines the latest version using semantic version sorting
- Copies static Jekyll template files from `docs/` to the gh-pages
root (for the latest version only)
- Generates `docs/_data/versions.yml` with a list of all versions
for the Jekyll templates to consume
2. **Jekyll template files** (see `docs/` directory)
- `docs/_config.yml` - Jekyll configuration
- `docs/index.md` - Landing page template that links to all versions
on RubyDoc.info based on generated `docs/_data/versions.yml`
- `docs/latest/index.html` - Redirect page template that redirects
to the latest documentation on RubyDoc.info
3. **GitHub Actions workflow** (see `.github/workflows/release.yml`)
Added a `publish_gh_pages` job that runs after the `publish_gem` job
on release events. The job invokes the generation script with the
release tag name, then pushes the updated gh-pages branch to deploy
the documentation.
4. **CI validation** (see `.github/workflows/ci.yml`)
Added a `yard` job that runs YARD validation with `--no-output`.
This ensures YARD can successfully parse the codebase (without
generating output), catching documentation issues early in CI.
5. **YARD dependencies** (see `Gemfile`)
Added `yard` and `yard-sorbet` gems as development dependencies to
support documentation validation in CI.
YARD documentation is automatically generated and hosted by
RubyDoc.info when the gem is published to RubyGems.org.
6. **Documentation links** (see `README.md` and `mcp.gemspec`)
Added links to the published API documentation on RubyDoc.info in
the README and gemspec metadata.
Documentation URL
-----------------
Custom documentation will be available at:
https://modelcontextprotocol.github.io/ruby-sdk/
RubyDoc.info documentation will be accessible at:
- https://rubydoc.info/gems/mcp (latest version)
- https://rubydoc.info/gems/mcp/1.2.3 (specific versions)
Co-Authored-By: Claude <noreply@anthropic.com>

@koickoic left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

I confirmed that https://modelcontextprotocol.github.io/python-sdk/ already exists. Since users will likely refer to the documentation first, having this kind of documentation available should improve the overall user-friendly tool experience. Thank you for working on this!

@koic
koic merged commit 00392b6 into modelcontextprotocol:mainNov 27, 2025
6 checks passed
koic added a commit that referenced this pull request Mar 30, 2026
Accessing https://ruby.sdk.modelcontextprotocol.io/ is expected to show
the content of https://modelcontextprotocol.github.io/ruby-sdk/,
but it currently does not. This change fixes that issue.
The `generate-gh-pages.sh` script cleans all files from the gh-pages branch root
before copying from `docs/`. This removes the CNAME file that GitHub Pages uses for
the custom domain, causing `ruby.sdk.modelcontextprotocol.io` to break on every release.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L91-L93
By placing the CNAME file in `docs/`, it will be automatically copied to `gh-pages` during each deployment.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L95-L97
The following is a PR related to the configuration of ruby.sdk.modelcontextprotocol.io.
- #181
- modelcontextprotocol/dns#14
- modelcontextprotocol/modelcontextprotocol#2486
koic added a commit that referenced this pull request Apr 15, 2026
Follow-up to #181.
The landing page at https://ruby.sdk.modelcontextprotocol.io previously only listed version links
to RubyDoc.info. Add multi-page documentation using the just-the-docs Jekyll theme with
sidebar navigation, search, and code highlighting.
Pages: Introduction, Installation, Building Servers, and Building Clients.
This PR introduces a basic set of pages. Additional content can be added incrementally in future updates.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jonathanhefner@koic
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add API documentation with GitHub Pages deployment - #181

Merged
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs
Nov 27, 2025
Merged

Add API documentation with GitHub Pages deployment#181
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs

Conversation

@jonathanhefner

Copy link
Copy Markdown
Member

This adds automated deployment of a versioned API documentation landing page using GitHub Pages. The landing page links to documentation hosted on RubyDoc.info, the de facto standard documentation site for the Ruby ecosystem. The landing page will update to reflect new releases.

Changes

  1. Documentation generation script (see bin/generate-gh-pages.sh)

    Copies and commits documentation files to the gh-pages branch. The script uses git worktrees to isolate the process from the main workspace.

    The script:

    • Creates the gh-pages branch as an orphan branch if it doesn't exist
    • Parses semantic versions from tag names, ignoring arbitrary prefixes (e.g., tags 1.2.3, v1.2.3, and release-1.2.3 all create v1.2.3)
    • Determines the latest version using semantic version sorting
    • Copies static Jekyll template files from docs/ to the gh-pages root (for the latest version only)
    • Generates docs/_data/versions.yml with a list of all versions for the Jekyll templates to consume
  2. Jekyll template files (see docs/ directory)

    • docs/_config.yml - Jekyll configuration
    • docs/index.md - Landing page template that links to all versions on RubyDoc.info based on generated docs/_data/versions.yml
    • docs/latest/index.html - Redirect page template that redirects to the latest documentation on RubyDoc.info
  3. GitHub Actions workflow (see .github/workflows/release.yml)

    Added a publish_gh_pages job that runs after the publish_gem job on release events. The job invokes the generation script with the release tag name, then pushes the updated gh-pages branch to deploy the documentation.

  4. CI validation (see .github/workflows/ci.yml)

    Added a yard job that runs YARD validation with --no-output. This ensures YARD can successfully parse the codebase (without generating output), catching documentation issues early in CI.

  5. YARD dependencies (see Gemfile)

    Added yard and yard-sorbet gems as development dependencies to support documentation validation in CI.

    YARD documentation is automatically generated and hosted by RubyDoc.info when the gem is published to RubyGems.org.

  6. Documentation links (see README.md and mcp.gemspec)

    Added links to the published API documentation on RubyDoc.info in the README and gemspec metadata.

Documentation URL

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

RubyDoc.info documentation will be accessible at:


You can see a preview of the landing page at: https://jonathan.hefner.pro/mcp-ruby-sdk/. (Ignore the v99.9.9 tag — I created that for testing purposes.)

Note that this page is fully customizable via docs/index.md, and it can link to SDK-specific guides in the future.

Eventually, I intend to link to this page from the modelcontextprotocol.ioSDKs page. And, ultimately, I think it would be nice have something like sdks.modelcontextprotocol.io such that https://sdks.modelcontextprotocol.io/ruby-sdk/ resolves to https://modelcontextprotocol.github.io/ruby-sdk/.

If desired, I can also submit a PR for the gh-pages branch to populate docs/index.md before the next release.

This adds automated deployment of a versioned API documentation landing
page using GitHub Pages. The landing page links to documentation hosted
on RubyDoc.info, the de facto standard documentation site for the Ruby
ecosystem. The landing page will update to reflect new releases.
Changes
-------
1. **Documentation generation script** (see `bin/generate-gh-pages.sh`)
Copies and commits documentation files to the gh-pages branch. The
script uses git worktrees to isolate the process from the main
workspace.
The script:
- Creates the gh-pages branch as an orphan branch if it doesn't exist
- Parses semantic versions from tag names, ignoring arbitrary
prefixes (e.g., tags `1.2.3`, `v1.2.3`, and `release-1.2.3` all
create `v1.2.3`)
- Determines the latest version using semantic version sorting
- Copies static Jekyll template files from `docs/` to the gh-pages
root (for the latest version only)
- Generates `docs/_data/versions.yml` with a list of all versions
for the Jekyll templates to consume
2. **Jekyll template files** (see `docs/` directory)
- `docs/_config.yml` - Jekyll configuration
- `docs/index.md` - Landing page template that links to all versions
on RubyDoc.info based on generated `docs/_data/versions.yml`
- `docs/latest/index.html` - Redirect page template that redirects
to the latest documentation on RubyDoc.info
3. **GitHub Actions workflow** (see `.github/workflows/release.yml`)
Added a `publish_gh_pages` job that runs after the `publish_gem` job
on release events. The job invokes the generation script with the
release tag name, then pushes the updated gh-pages branch to deploy
the documentation.
4. **CI validation** (see `.github/workflows/ci.yml`)
Added a `yard` job that runs YARD validation with `--no-output`.
This ensures YARD can successfully parse the codebase (without
generating output), catching documentation issues early in CI.
5. **YARD dependencies** (see `Gemfile`)
Added `yard` and `yard-sorbet` gems as development dependencies to
support documentation validation in CI.
YARD documentation is automatically generated and hosted by
RubyDoc.info when the gem is published to RubyGems.org.
6. **Documentation links** (see `README.md` and `mcp.gemspec`)
Added links to the published API documentation on RubyDoc.info in
the README and gemspec metadata.
Documentation URL
-----------------
Custom documentation will be available at:
https://modelcontextprotocol.github.io/ruby-sdk/
RubyDoc.info documentation will be accessible at:
- https://rubydoc.info/gems/mcp (latest version)
- https://rubydoc.info/gems/mcp/1.2.3 (specific versions)
Co-Authored-By: Claude <noreply@anthropic.com>

@koickoic left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

I confirmed that https://modelcontextprotocol.github.io/python-sdk/ already exists. Since users will likely refer to the documentation first, having this kind of documentation available should improve the overall user-friendly tool experience. Thank you for working on this!

@koic
koic merged commit 00392b6 into modelcontextprotocol:mainNov 27, 2025
6 checks passed
koic added a commit that referenced this pull request Mar 30, 2026
Accessing https://ruby.sdk.modelcontextprotocol.io/ is expected to show
the content of https://modelcontextprotocol.github.io/ruby-sdk/,
but it currently does not. This change fixes that issue.
The `generate-gh-pages.sh` script cleans all files from the gh-pages branch root
before copying from `docs/`. This removes the CNAME file that GitHub Pages uses for
the custom domain, causing `ruby.sdk.modelcontextprotocol.io` to break on every release.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L91-L93
By placing the CNAME file in `docs/`, it will be automatically copied to `gh-pages` during each deployment.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L95-L97
The following is a PR related to the configuration of ruby.sdk.modelcontextprotocol.io.
- #181
- modelcontextprotocol/dns#14
- modelcontextprotocol/modelcontextprotocol#2486
koic added a commit that referenced this pull request Apr 15, 2026
Follow-up to #181.
The landing page at https://ruby.sdk.modelcontextprotocol.io previously only listed version links
to RubyDoc.info. Add multi-page documentation using the just-the-docs Jekyll theme with
sidebar navigation, search, and code highlighting.
Pages: Introduction, Installation, Building Servers, and Building Clients.
This PR introduces a basic set of pages. Additional content can be added incrementally in future updates.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jonathanhefner@koic
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add API documentation with GitHub Pages deployment - #181

Merged
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs
Nov 27, 2025
Merged

Add API documentation with GitHub Pages deployment#181
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs

Conversation

@jonathanhefner

Copy link
Copy Markdown
Member

This adds automated deployment of a versioned API documentation landing page using GitHub Pages. The landing page links to documentation hosted on RubyDoc.info, the de facto standard documentation site for the Ruby ecosystem. The landing page will update to reflect new releases.

Changes

  1. Documentation generation script (see bin/generate-gh-pages.sh)

    Copies and commits documentation files to the gh-pages branch. The script uses git worktrees to isolate the process from the main workspace.

    The script:

    • Creates the gh-pages branch as an orphan branch if it doesn't exist
    • Parses semantic versions from tag names, ignoring arbitrary prefixes (e.g., tags 1.2.3, v1.2.3, and release-1.2.3 all create v1.2.3)
    • Determines the latest version using semantic version sorting
    • Copies static Jekyll template files from docs/ to the gh-pages root (for the latest version only)
    • Generates docs/_data/versions.yml with a list of all versions for the Jekyll templates to consume
  2. Jekyll template files (see docs/ directory)

    • docs/_config.yml - Jekyll configuration
    • docs/index.md - Landing page template that links to all versions on RubyDoc.info based on generated docs/_data/versions.yml
    • docs/latest/index.html - Redirect page template that redirects to the latest documentation on RubyDoc.info
  3. GitHub Actions workflow (see .github/workflows/release.yml)

    Added a publish_gh_pages job that runs after the publish_gem job on release events. The job invokes the generation script with the release tag name, then pushes the updated gh-pages branch to deploy the documentation.

  4. CI validation (see .github/workflows/ci.yml)

    Added a yard job that runs YARD validation with --no-output. This ensures YARD can successfully parse the codebase (without generating output), catching documentation issues early in CI.

  5. YARD dependencies (see Gemfile)

    Added yard and yard-sorbet gems as development dependencies to support documentation validation in CI.

    YARD documentation is automatically generated and hosted by RubyDoc.info when the gem is published to RubyGems.org.

  6. Documentation links (see README.md and mcp.gemspec)

    Added links to the published API documentation on RubyDoc.info in the README and gemspec metadata.

Documentation URL

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

RubyDoc.info documentation will be accessible at:


You can see a preview of the landing page at: https://jonathan.hefner.pro/mcp-ruby-sdk/. (Ignore the v99.9.9 tag — I created that for testing purposes.)

Note that this page is fully customizable via docs/index.md, and it can link to SDK-specific guides in the future.

Eventually, I intend to link to this page from the modelcontextprotocol.ioSDKs page. And, ultimately, I think it would be nice have something like sdks.modelcontextprotocol.io such that https://sdks.modelcontextprotocol.io/ruby-sdk/ resolves to https://modelcontextprotocol.github.io/ruby-sdk/.

If desired, I can also submit a PR for the gh-pages branch to populate docs/index.md before the next release.

This adds automated deployment of a versioned API documentation landing
page using GitHub Pages. The landing page links to documentation hosted
on RubyDoc.info, the de facto standard documentation site for the Ruby
ecosystem. The landing page will update to reflect new releases.
Changes
-------
1. **Documentation generation script** (see `bin/generate-gh-pages.sh`)
Copies and commits documentation files to the gh-pages branch. The
script uses git worktrees to isolate the process from the main
workspace.
The script:
- Creates the gh-pages branch as an orphan branch if it doesn't exist
- Parses semantic versions from tag names, ignoring arbitrary
prefixes (e.g., tags `1.2.3`, `v1.2.3`, and `release-1.2.3` all
create `v1.2.3`)
- Determines the latest version using semantic version sorting
- Copies static Jekyll template files from `docs/` to the gh-pages
root (for the latest version only)
- Generates `docs/_data/versions.yml` with a list of all versions
for the Jekyll templates to consume
2. **Jekyll template files** (see `docs/` directory)
- `docs/_config.yml` - Jekyll configuration
- `docs/index.md` - Landing page template that links to all versions
on RubyDoc.info based on generated `docs/_data/versions.yml`
- `docs/latest/index.html` - Redirect page template that redirects
to the latest documentation on RubyDoc.info
3. **GitHub Actions workflow** (see `.github/workflows/release.yml`)
Added a `publish_gh_pages` job that runs after the `publish_gem` job
on release events. The job invokes the generation script with the
release tag name, then pushes the updated gh-pages branch to deploy
the documentation.
4. **CI validation** (see `.github/workflows/ci.yml`)
Added a `yard` job that runs YARD validation with `--no-output`.
This ensures YARD can successfully parse the codebase (without
generating output), catching documentation issues early in CI.
5. **YARD dependencies** (see `Gemfile`)
Added `yard` and `yard-sorbet` gems as development dependencies to
support documentation validation in CI.
YARD documentation is automatically generated and hosted by
RubyDoc.info when the gem is published to RubyGems.org.
6. **Documentation links** (see `README.md` and `mcp.gemspec`)
Added links to the published API documentation on RubyDoc.info in
the README and gemspec metadata.
Documentation URL
-----------------
Custom documentation will be available at:
https://modelcontextprotocol.github.io/ruby-sdk/
RubyDoc.info documentation will be accessible at:
- https://rubydoc.info/gems/mcp (latest version)
- https://rubydoc.info/gems/mcp/1.2.3 (specific versions)
Co-Authored-By: Claude <noreply@anthropic.com>

@koickoic left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

I confirmed that https://modelcontextprotocol.github.io/python-sdk/ already exists. Since users will likely refer to the documentation first, having this kind of documentation available should improve the overall user-friendly tool experience. Thank you for working on this!

@koic
koic merged commit 00392b6 into modelcontextprotocol:mainNov 27, 2025
6 checks passed
koic added a commit that referenced this pull request Mar 30, 2026
Accessing https://ruby.sdk.modelcontextprotocol.io/ is expected to show
the content of https://modelcontextprotocol.github.io/ruby-sdk/,
but it currently does not. This change fixes that issue.
The `generate-gh-pages.sh` script cleans all files from the gh-pages branch root
before copying from `docs/`. This removes the CNAME file that GitHub Pages uses for
the custom domain, causing `ruby.sdk.modelcontextprotocol.io` to break on every release.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L91-L93
By placing the CNAME file in `docs/`, it will be automatically copied to `gh-pages` during each deployment.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L95-L97
The following is a PR related to the configuration of ruby.sdk.modelcontextprotocol.io.
- #181
- modelcontextprotocol/dns#14
- modelcontextprotocol/modelcontextprotocol#2486
koic added a commit that referenced this pull request Apr 15, 2026
Follow-up to #181.
The landing page at https://ruby.sdk.modelcontextprotocol.io previously only listed version links
to RubyDoc.info. Add multi-page documentation using the just-the-docs Jekyll theme with
sidebar navigation, search, and code highlighting.
Pages: Introduction, Installation, Building Servers, and Building Clients.
This PR introduces a basic set of pages. Additional content can be added incrementally in future updates.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jonathanhefner@koic
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add API documentation with GitHub Pages deployment - #181

Merged
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs
Nov 27, 2025
Merged

Add API documentation with GitHub Pages deployment#181
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs

Conversation

@jonathanhefner

Copy link
Copy Markdown
Member

This adds automated deployment of a versioned API documentation landing page using GitHub Pages. The landing page links to documentation hosted on RubyDoc.info, the de facto standard documentation site for the Ruby ecosystem. The landing page will update to reflect new releases.

Changes

  1. Documentation generation script (see bin/generate-gh-pages.sh)

    Copies and commits documentation files to the gh-pages branch. The script uses git worktrees to isolate the process from the main workspace.

    The script:

    • Creates the gh-pages branch as an orphan branch if it doesn't exist
    • Parses semantic versions from tag names, ignoring arbitrary prefixes (e.g., tags 1.2.3, v1.2.3, and release-1.2.3 all create v1.2.3)
    • Determines the latest version using semantic version sorting
    • Copies static Jekyll template files from docs/ to the gh-pages root (for the latest version only)
    • Generates docs/_data/versions.yml with a list of all versions for the Jekyll templates to consume
  2. Jekyll template files (see docs/ directory)

    • docs/_config.yml - Jekyll configuration
    • docs/index.md - Landing page template that links to all versions on RubyDoc.info based on generated docs/_data/versions.yml
    • docs/latest/index.html - Redirect page template that redirects to the latest documentation on RubyDoc.info
  3. GitHub Actions workflow (see .github/workflows/release.yml)

    Added a publish_gh_pages job that runs after the publish_gem job on release events. The job invokes the generation script with the release tag name, then pushes the updated gh-pages branch to deploy the documentation.

  4. CI validation (see .github/workflows/ci.yml)

    Added a yard job that runs YARD validation with --no-output. This ensures YARD can successfully parse the codebase (without generating output), catching documentation issues early in CI.

  5. YARD dependencies (see Gemfile)

    Added yard and yard-sorbet gems as development dependencies to support documentation validation in CI.

    YARD documentation is automatically generated and hosted by RubyDoc.info when the gem is published to RubyGems.org.

  6. Documentation links (see README.md and mcp.gemspec)

    Added links to the published API documentation on RubyDoc.info in the README and gemspec metadata.

Documentation URL

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

RubyDoc.info documentation will be accessible at:


You can see a preview of the landing page at: https://jonathan.hefner.pro/mcp-ruby-sdk/. (Ignore the v99.9.9 tag — I created that for testing purposes.)

Note that this page is fully customizable via docs/index.md, and it can link to SDK-specific guides in the future.

Eventually, I intend to link to this page from the modelcontextprotocol.ioSDKs page. And, ultimately, I think it would be nice have something like sdks.modelcontextprotocol.io such that https://sdks.modelcontextprotocol.io/ruby-sdk/ resolves to https://modelcontextprotocol.github.io/ruby-sdk/.

If desired, I can also submit a PR for the gh-pages branch to populate docs/index.md before the next release.

This adds automated deployment of a versioned API documentation landing
page using GitHub Pages. The landing page links to documentation hosted
on RubyDoc.info, the de facto standard documentation site for the Ruby
ecosystem. The landing page will update to reflect new releases.
Changes
-------
1. **Documentation generation script** (see `bin/generate-gh-pages.sh`)
Copies and commits documentation files to the gh-pages branch. The
script uses git worktrees to isolate the process from the main
workspace.
The script:
- Creates the gh-pages branch as an orphan branch if it doesn't exist
- Parses semantic versions from tag names, ignoring arbitrary
prefixes (e.g., tags `1.2.3`, `v1.2.3`, and `release-1.2.3` all
create `v1.2.3`)
- Determines the latest version using semantic version sorting
- Copies static Jekyll template files from `docs/` to the gh-pages
root (for the latest version only)
- Generates `docs/_data/versions.yml` with a list of all versions
for the Jekyll templates to consume
2. **Jekyll template files** (see `docs/` directory)
- `docs/_config.yml` - Jekyll configuration
- `docs/index.md` - Landing page template that links to all versions
on RubyDoc.info based on generated `docs/_data/versions.yml`
- `docs/latest/index.html` - Redirect page template that redirects
to the latest documentation on RubyDoc.info
3. **GitHub Actions workflow** (see `.github/workflows/release.yml`)
Added a `publish_gh_pages` job that runs after the `publish_gem` job
on release events. The job invokes the generation script with the
release tag name, then pushes the updated gh-pages branch to deploy
the documentation.
4. **CI validation** (see `.github/workflows/ci.yml`)
Added a `yard` job that runs YARD validation with `--no-output`.
This ensures YARD can successfully parse the codebase (without
generating output), catching documentation issues early in CI.
5. **YARD dependencies** (see `Gemfile`)
Added `yard` and `yard-sorbet` gems as development dependencies to
support documentation validation in CI.
YARD documentation is automatically generated and hosted by
RubyDoc.info when the gem is published to RubyGems.org.
6. **Documentation links** (see `README.md` and `mcp.gemspec`)
Added links to the published API documentation on RubyDoc.info in
the README and gemspec metadata.
Documentation URL
-----------------
Custom documentation will be available at:
https://modelcontextprotocol.github.io/ruby-sdk/
RubyDoc.info documentation will be accessible at:
- https://rubydoc.info/gems/mcp (latest version)
- https://rubydoc.info/gems/mcp/1.2.3 (specific versions)
Co-Authored-By: Claude <noreply@anthropic.com>

@koickoic left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

I confirmed that https://modelcontextprotocol.github.io/python-sdk/ already exists. Since users will likely refer to the documentation first, having this kind of documentation available should improve the overall user-friendly tool experience. Thank you for working on this!

@koic
koic merged commit 00392b6 into modelcontextprotocol:mainNov 27, 2025
6 checks passed
koic added a commit that referenced this pull request Mar 30, 2026
Accessing https://ruby.sdk.modelcontextprotocol.io/ is expected to show
the content of https://modelcontextprotocol.github.io/ruby-sdk/,
but it currently does not. This change fixes that issue.
The `generate-gh-pages.sh` script cleans all files from the gh-pages branch root
before copying from `docs/`. This removes the CNAME file that GitHub Pages uses for
the custom domain, causing `ruby.sdk.modelcontextprotocol.io` to break on every release.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L91-L93
By placing the CNAME file in `docs/`, it will be automatically copied to `gh-pages` during each deployment.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L95-L97
The following is a PR related to the configuration of ruby.sdk.modelcontextprotocol.io.
- #181
- modelcontextprotocol/dns#14
- modelcontextprotocol/modelcontextprotocol#2486
koic added a commit that referenced this pull request Apr 15, 2026
Follow-up to #181.
The landing page at https://ruby.sdk.modelcontextprotocol.io previously only listed version links
to RubyDoc.info. Add multi-page documentation using the just-the-docs Jekyll theme with
sidebar navigation, search, and code highlighting.
Pages: Introduction, Installation, Building Servers, and Building Clients.
This PR introduces a basic set of pages. Additional content can be added incrementally in future updates.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jonathanhefner@koic
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add API documentation with GitHub Pages deployment - #181

Merged
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs
Nov 27, 2025
Merged

Add API documentation with GitHub Pages deployment#181
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs

Conversation

@jonathanhefner

Copy link
Copy Markdown
Member

This adds automated deployment of a versioned API documentation landing page using GitHub Pages. The landing page links to documentation hosted on RubyDoc.info, the de facto standard documentation site for the Ruby ecosystem. The landing page will update to reflect new releases.

Changes

  1. Documentation generation script (see bin/generate-gh-pages.sh)

    Copies and commits documentation files to the gh-pages branch. The script uses git worktrees to isolate the process from the main workspace.

    The script:

    • Creates the gh-pages branch as an orphan branch if it doesn't exist
    • Parses semantic versions from tag names, ignoring arbitrary prefixes (e.g., tags 1.2.3, v1.2.3, and release-1.2.3 all create v1.2.3)
    • Determines the latest version using semantic version sorting
    • Copies static Jekyll template files from docs/ to the gh-pages root (for the latest version only)
    • Generates docs/_data/versions.yml with a list of all versions for the Jekyll templates to consume
  2. Jekyll template files (see docs/ directory)

    • docs/_config.yml - Jekyll configuration
    • docs/index.md - Landing page template that links to all versions on RubyDoc.info based on generated docs/_data/versions.yml
    • docs/latest/index.html - Redirect page template that redirects to the latest documentation on RubyDoc.info
  3. GitHub Actions workflow (see .github/workflows/release.yml)

    Added a publish_gh_pages job that runs after the publish_gem job on release events. The job invokes the generation script with the release tag name, then pushes the updated gh-pages branch to deploy the documentation.

  4. CI validation (see .github/workflows/ci.yml)

    Added a yard job that runs YARD validation with --no-output. This ensures YARD can successfully parse the codebase (without generating output), catching documentation issues early in CI.

  5. YARD dependencies (see Gemfile)

    Added yard and yard-sorbet gems as development dependencies to support documentation validation in CI.

    YARD documentation is automatically generated and hosted by RubyDoc.info when the gem is published to RubyGems.org.

  6. Documentation links (see README.md and mcp.gemspec)

    Added links to the published API documentation on RubyDoc.info in the README and gemspec metadata.

Documentation URL

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

RubyDoc.info documentation will be accessible at:


You can see a preview of the landing page at: https://jonathan.hefner.pro/mcp-ruby-sdk/. (Ignore the v99.9.9 tag — I created that for testing purposes.)

Note that this page is fully customizable via docs/index.md, and it can link to SDK-specific guides in the future.

Eventually, I intend to link to this page from the modelcontextprotocol.ioSDKs page. And, ultimately, I think it would be nice have something like sdks.modelcontextprotocol.io such that https://sdks.modelcontextprotocol.io/ruby-sdk/ resolves to https://modelcontextprotocol.github.io/ruby-sdk/.

If desired, I can also submit a PR for the gh-pages branch to populate docs/index.md before the next release.

This adds automated deployment of a versioned API documentation landing
page using GitHub Pages. The landing page links to documentation hosted
on RubyDoc.info, the de facto standard documentation site for the Ruby
ecosystem. The landing page will update to reflect new releases.
Changes
-------
1. **Documentation generation script** (see `bin/generate-gh-pages.sh`)
Copies and commits documentation files to the gh-pages branch. The
script uses git worktrees to isolate the process from the main
workspace.
The script:
- Creates the gh-pages branch as an orphan branch if it doesn't exist
- Parses semantic versions from tag names, ignoring arbitrary
prefixes (e.g., tags `1.2.3`, `v1.2.3`, and `release-1.2.3` all
create `v1.2.3`)
- Determines the latest version using semantic version sorting
- Copies static Jekyll template files from `docs/` to the gh-pages
root (for the latest version only)
- Generates `docs/_data/versions.yml` with a list of all versions
for the Jekyll templates to consume
2. **Jekyll template files** (see `docs/` directory)
- `docs/_config.yml` - Jekyll configuration
- `docs/index.md` - Landing page template that links to all versions
on RubyDoc.info based on generated `docs/_data/versions.yml`
- `docs/latest/index.html` - Redirect page template that redirects
to the latest documentation on RubyDoc.info
3. **GitHub Actions workflow** (see `.github/workflows/release.yml`)
Added a `publish_gh_pages` job that runs after the `publish_gem` job
on release events. The job invokes the generation script with the
release tag name, then pushes the updated gh-pages branch to deploy
the documentation.
4. **CI validation** (see `.github/workflows/ci.yml`)
Added a `yard` job that runs YARD validation with `--no-output`.
This ensures YARD can successfully parse the codebase (without
generating output), catching documentation issues early in CI.
5. **YARD dependencies** (see `Gemfile`)
Added `yard` and `yard-sorbet` gems as development dependencies to
support documentation validation in CI.
YARD documentation is automatically generated and hosted by
RubyDoc.info when the gem is published to RubyGems.org.
6. **Documentation links** (see `README.md` and `mcp.gemspec`)
Added links to the published API documentation on RubyDoc.info in
the README and gemspec metadata.
Documentation URL
-----------------
Custom documentation will be available at:
https://modelcontextprotocol.github.io/ruby-sdk/
RubyDoc.info documentation will be accessible at:
- https://rubydoc.info/gems/mcp (latest version)
- https://rubydoc.info/gems/mcp/1.2.3 (specific versions)
Co-Authored-By: Claude <noreply@anthropic.com>

@koickoic left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

I confirmed that https://modelcontextprotocol.github.io/python-sdk/ already exists. Since users will likely refer to the documentation first, having this kind of documentation available should improve the overall user-friendly tool experience. Thank you for working on this!

@koic
koic merged commit 00392b6 into modelcontextprotocol:mainNov 27, 2025
6 checks passed
koic added a commit that referenced this pull request Mar 30, 2026
Accessing https://ruby.sdk.modelcontextprotocol.io/ is expected to show
the content of https://modelcontextprotocol.github.io/ruby-sdk/,
but it currently does not. This change fixes that issue.
The `generate-gh-pages.sh` script cleans all files from the gh-pages branch root
before copying from `docs/`. This removes the CNAME file that GitHub Pages uses for
the custom domain, causing `ruby.sdk.modelcontextprotocol.io` to break on every release.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L91-L93
By placing the CNAME file in `docs/`, it will be automatically copied to `gh-pages` during each deployment.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L95-L97
The following is a PR related to the configuration of ruby.sdk.modelcontextprotocol.io.
- #181
- modelcontextprotocol/dns#14
- modelcontextprotocol/modelcontextprotocol#2486
koic added a commit that referenced this pull request Apr 15, 2026
Follow-up to #181.
The landing page at https://ruby.sdk.modelcontextprotocol.io previously only listed version links
to RubyDoc.info. Add multi-page documentation using the just-the-docs Jekyll theme with
sidebar navigation, search, and code highlighting.
Pages: Introduction, Installation, Building Servers, and Building Clients.
This PR introduces a basic set of pages. Additional content can be added incrementally in future updates.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jonathanhefner@koic
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add API documentation with GitHub Pages deployment - #181

Merged
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs
Nov 27, 2025
Merged

Add API documentation with GitHub Pages deployment#181
koic merged 1 commit into
modelcontextprotocol:mainfrom
jonathanhefner:generate-api-docs

Conversation

@jonathanhefner

Copy link
Copy Markdown
Member

This adds automated deployment of a versioned API documentation landing page using GitHub Pages. The landing page links to documentation hosted on RubyDoc.info, the de facto standard documentation site for the Ruby ecosystem. The landing page will update to reflect new releases.

Changes

  1. Documentation generation script (see bin/generate-gh-pages.sh)

    Copies and commits documentation files to the gh-pages branch. The script uses git worktrees to isolate the process from the main workspace.

    The script:

    • Creates the gh-pages branch as an orphan branch if it doesn't exist
    • Parses semantic versions from tag names, ignoring arbitrary prefixes (e.g., tags 1.2.3, v1.2.3, and release-1.2.3 all create v1.2.3)
    • Determines the latest version using semantic version sorting
    • Copies static Jekyll template files from docs/ to the gh-pages root (for the latest version only)
    • Generates docs/_data/versions.yml with a list of all versions for the Jekyll templates to consume
  2. Jekyll template files (see docs/ directory)

    • docs/_config.yml - Jekyll configuration
    • docs/index.md - Landing page template that links to all versions on RubyDoc.info based on generated docs/_data/versions.yml
    • docs/latest/index.html - Redirect page template that redirects to the latest documentation on RubyDoc.info
  3. GitHub Actions workflow (see .github/workflows/release.yml)

    Added a publish_gh_pages job that runs after the publish_gem job on release events. The job invokes the generation script with the release tag name, then pushes the updated gh-pages branch to deploy the documentation.

  4. CI validation (see .github/workflows/ci.yml)

    Added a yard job that runs YARD validation with --no-output. This ensures YARD can successfully parse the codebase (without generating output), catching documentation issues early in CI.

  5. YARD dependencies (see Gemfile)

    Added yard and yard-sorbet gems as development dependencies to support documentation validation in CI.

    YARD documentation is automatically generated and hosted by RubyDoc.info when the gem is published to RubyGems.org.

  6. Documentation links (see README.md and mcp.gemspec)

    Added links to the published API documentation on RubyDoc.info in the README and gemspec metadata.

Documentation URL

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

RubyDoc.info documentation will be accessible at:


You can see a preview of the landing page at: https://jonathan.hefner.pro/mcp-ruby-sdk/. (Ignore the v99.9.9 tag — I created that for testing purposes.)

Note that this page is fully customizable via docs/index.md, and it can link to SDK-specific guides in the future.

Eventually, I intend to link to this page from the modelcontextprotocol.ioSDKs page. And, ultimately, I think it would be nice have something like sdks.modelcontextprotocol.io such that https://sdks.modelcontextprotocol.io/ruby-sdk/ resolves to https://modelcontextprotocol.github.io/ruby-sdk/.

If desired, I can also submit a PR for the gh-pages branch to populate docs/index.md before the next release.

This adds automated deployment of a versioned API documentation landing
page using GitHub Pages. The landing page links to documentation hosted
on RubyDoc.info, the de facto standard documentation site for the Ruby
ecosystem. The landing page will update to reflect new releases.
Changes
-------
1. **Documentation generation script** (see `bin/generate-gh-pages.sh`)
Copies and commits documentation files to the gh-pages branch. The
script uses git worktrees to isolate the process from the main
workspace.
The script:
- Creates the gh-pages branch as an orphan branch if it doesn't exist
- Parses semantic versions from tag names, ignoring arbitrary
prefixes (e.g., tags `1.2.3`, `v1.2.3`, and `release-1.2.3` all
create `v1.2.3`)
- Determines the latest version using semantic version sorting
- Copies static Jekyll template files from `docs/` to the gh-pages
root (for the latest version only)
- Generates `docs/_data/versions.yml` with a list of all versions
for the Jekyll templates to consume
2. **Jekyll template files** (see `docs/` directory)
- `docs/_config.yml` - Jekyll configuration
- `docs/index.md` - Landing page template that links to all versions
on RubyDoc.info based on generated `docs/_data/versions.yml`
- `docs/latest/index.html` - Redirect page template that redirects
to the latest documentation on RubyDoc.info
3. **GitHub Actions workflow** (see `.github/workflows/release.yml`)
Added a `publish_gh_pages` job that runs after the `publish_gem` job
on release events. The job invokes the generation script with the
release tag name, then pushes the updated gh-pages branch to deploy
the documentation.
4. **CI validation** (see `.github/workflows/ci.yml`)
Added a `yard` job that runs YARD validation with `--no-output`.
This ensures YARD can successfully parse the codebase (without
generating output), catching documentation issues early in CI.
5. **YARD dependencies** (see `Gemfile`)
Added `yard` and `yard-sorbet` gems as development dependencies to
support documentation validation in CI.
YARD documentation is automatically generated and hosted by
RubyDoc.info when the gem is published to RubyGems.org.
6. **Documentation links** (see `README.md` and `mcp.gemspec`)
Added links to the published API documentation on RubyDoc.info in
the README and gemspec metadata.
Documentation URL
-----------------
Custom documentation will be available at:
https://modelcontextprotocol.github.io/ruby-sdk/
RubyDoc.info documentation will be accessible at:
- https://rubydoc.info/gems/mcp (latest version)
- https://rubydoc.info/gems/mcp/1.2.3 (specific versions)
Co-Authored-By: Claude <noreply@anthropic.com>

@koickoic left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Custom documentation will be available at: https://modelcontextprotocol.github.io/ruby-sdk/

I confirmed that https://modelcontextprotocol.github.io/python-sdk/ already exists. Since users will likely refer to the documentation first, having this kind of documentation available should improve the overall user-friendly tool experience. Thank you for working on this!

@koic
koic merged commit 00392b6 into modelcontextprotocol:mainNov 27, 2025
6 checks passed
koic added a commit that referenced this pull request Mar 30, 2026
Accessing https://ruby.sdk.modelcontextprotocol.io/ is expected to show
the content of https://modelcontextprotocol.github.io/ruby-sdk/,
but it currently does not. This change fixes that issue.
The `generate-gh-pages.sh` script cleans all files from the gh-pages branch root
before copying from `docs/`. This removes the CNAME file that GitHub Pages uses for
the custom domain, causing `ruby.sdk.modelcontextprotocol.io` to break on every release.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L91-L93
By placing the CNAME file in `docs/`, it will be automatically copied to `gh-pages` during each deployment.
https://github.com/modelcontextprotocol/ruby-sdk/blob/v0.10.0/bin/generate-gh-pages.sh#L95-L97
The following is a PR related to the configuration of ruby.sdk.modelcontextprotocol.io.
- #181
- modelcontextprotocol/dns#14
- modelcontextprotocol/modelcontextprotocol#2486
koic added a commit that referenced this pull request Apr 15, 2026
Follow-up to #181.
The landing page at https://ruby.sdk.modelcontextprotocol.io previously only listed version links
to RubyDoc.info. Add multi-page documentation using the just-the-docs Jekyll theme with
sidebar navigation, search, and code highlighting.
Pages: Introduction, Installation, Building Servers, and Building Clients.
This PR introduces a basic set of pages. Additional content can be added incrementally in future updates.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jonathanhefner@koic