k0kubun/md2key
52.1
Weak · 20 September 2026
572
lines of production code
Ruby
primary language
1
measurement over time
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.