Skip to content
CAI
Software that uses CAICheck a score

k0kubun/md2key

52.1

Weak · 20 September 2026

572

lines of production code

Ruby

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

md2key is a command-line tool that converts Markdown documents into Apple Keynote presentations. It utilizes a modular architecture with a dedicated AST parser to handle complex Markdown features like tables and diagrams, while employing dynamic AppleScript templates to automate slide creation and formatting within Keynote. The system supports live file watching and customizable master slide configurations via YAML.

Features

Added md2key executable entry point

A new executable script named md2key has been added to the exe directory. This script sets up the Ruby load path to include the local lib directory and invokes the Md2key::CLI to handle command-line arguments, enabling users to run the md2key tool directly from the command line.

exe · high confidence

Behavioural changes

5 commits (0 fixes) modifying assets

A change to existing behaviour in assets — 5 commits, 4 files.

assets · medium confidence · unverified

Keynote automation scripts converted to ERB templates

The Keynote automation scripts in the scripts directory have been converted from standard AppleScript files (.scpt) to ERB templates (.scpt.erb). This change allows the build system to inject Ruby code into the scripts at generation time, enabling dynamic behavior such as passing master slide names to slide creators and applying specific slide masters programmatically. The scripts now support more complex interactions with Keynote, including creating slides with specific templates, inserting tables and images with calculated dimensions, and updating slide content based on generated parameters.

scripts · high confidence

Md2key v0.10.2: Complete rewrite with CLI, AST parser, and Keynote automation

The library has been refactored from a monolithic converter into a modular architecture featuring a Thor-based CLI, a dedicated Markdown AST parser (using Oga and Redcarpet), and a Keynote automation layer. Users can now generate presentation configurations via the new \md2key init\ command, which auto-detects Keynote master slides, and benefit from improved Markdown support including nested lists, tables, and Mermaid diagrams. The tool now supports live file watching via \md2key listen\ and allows custom master slide assignment through a YAML configuration loader.

lib/md2key · high confidence

Refine development environment scripts for consistency and robustness

The development environment scripts have been updated to improve consistency and reliability. In bin/console, the explicit loading of the 'pry' library and its associated comments have been removed in favor of using 'irb', with the require statement simplified to use single quotes. In bin/setup, the shebang line was updated to use the portable '/usr/bin/env bash' syntax, and the 'set -vx' option was added to enable verbose output and exit-on-error behavior, ensuring that setup failures are caught and displayed clearly.

bin · high confidence

Dependencies

Update gem dependencies and metadata for md2key

The md2key gem now explicitly depends on thor (\>= 0.19), redcarpet (\>= 3.3), and oga (\>= 1.2) for its core functionality, replacing previous unspecified or implicit dependencies. Development dependencies on bundler and rake have been relaxed to allow any version. The Gemfile conditionally adds the listen gem (\>= 3.0) for Ruby versions 2.2.5 and above. Additionally, the gemspec has been updated with a proper summary, description, homepage, license (MIT), and changelog URI, and the required Ruby version is set to \>= 2.6.0.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 52.

Lenses

  • Code Health 98
  • Architecture 69
  • Maturity 52
  • Readiness 39
  • Security 74

Changes since last survey

  • 202 commits — 188 feature/other, 14 fixes

By area

  • (root) — 83 commits
  • lib/md2key — 80 commits
  • (repo) — 25 commits
  • .github/workflows — 4 commits
  • scripts/create_slide_and_insert_table.scpt.erb — 2 commits
  • assets/background.png — 1 commit
  • assets/default.key — 1 commit
  • scripts/create_slide.scpt — 1 commit
  • scripts/create_slide_and_insert_table.scpt — 1 commit
  • scripts/insert_image.scpt — 1 commit
  • scripts/insert_note.scpt.erb — 1 commit
  • scripts/paste_and_indent.scpt — 1 commit
  • scripts/paste_and_indent.scpt.erb — 1 commit

Notable commits

  • fix: Fix TravisCI build failure
  • fix: Fix a bug in #show_template_slide
  • fix: Fix applescripts path
  • fix: Fix description for figure 1
  • fix: Fix insert_note.scpt to be erb
  • fix: Fix require structure
  • fix: Fix screenshot size
  • fix: Fix the interupt of table creation
  • fix: Fix the position of an image
  • fix: Fix unclosed function
  • fix: Merge pull request #47 from JLHwung/fix-undefined-tempfile
  • fix: fix image link
  • fix: fix(diagram): adapt to mmdc usage
  • fix: fix: undefined tempfile on ruby 2.3
  • change: Aboid using shell to execute AppleScript
  • change: Add .travis.yml
  • change: Add CHANGELOG.md
  • change: Add README.md
  • change: Add Ruby 4.0 to tested versions
  • change: Add a workflow for trusted publishing
  • …and 182 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

k0kubun/md2key was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 5666e5d45d9b7639b67d71e8e85d0018ffaf5ba3 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.