{"id":50406300,"url":"https://github.com/cheatmd-dev/cheatmd","last_synced_at":"2026-05-31T02:00:30.591Z","repository":{"id":335250156,"uuid":"1143702482","full_name":"cheatmd-dev/cheatmd","owner":"cheatmd-dev","description":"Executable Markdown cheatsheets. Write plain .md files that read like normal notes, then run them as interactive commands with variable prompts, pickers, and shell integration for bash/zsh/tmux/zellij.","archived":false,"fork":false,"pushed_at":"2026-05-31T00:00:48.000Z","size":877,"stargazers_count":16,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-31T01:17:58.645Z","etag":null,"topics":["bash","cheatmd","cheatsheet","cli","markdown","productivity","terminal","tmux","tui","zellij","zsh"],"latest_commit_sha":null,"homepage":"https://cheatmd.dev","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cheatmd-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-27T22:33:47.000Z","updated_at":"2026-05-30T23:57:48.000Z","dependencies_parsed_at":"2026-05-12T06:01:00.963Z","dependency_job_id":null,"html_url":"https://github.com/cheatmd-dev/cheatmd","commit_stats":null,"previous_names":["gubarz/cheatmd","cheatmd-dev/cheatmd"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/cheatmd-dev/cheatmd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheatmd-dev%2Fcheatmd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheatmd-dev%2Fcheatmd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheatmd-dev%2Fcheatmd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheatmd-dev%2Fcheatmd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cheatmd-dev","download_url":"https://codeload.github.com/cheatmd-dev/cheatmd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheatmd-dev%2Fcheatmd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33716339,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","cheatmd","cheatsheet","cli","markdown","productivity","terminal","tmux","tui","zellij","zsh"],"created_at":"2026-05-31T02:00:22.808Z","updated_at":"2026-05-31T02:00:30.510Z","avatar_url":"https://github.com/cheatmd-dev.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CheatMD\n\n[![CI](https://github.com/cheatmd-dev/cheatmd/actions/workflows/ci.yml/badge.svg)](https://github.com/cheatmd-dev/cheatmd/actions/workflows/ci.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/cheatmd-dev/cheatmd)](https://goreportcard.com/report/github.com/cheatmd-dev/cheatmd)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\nExecutable Markdown cheatsheets. Write readable docs, run interactive commands.\n\n![demo](assets/demo.gif)\n\n## Install\n\n```bash\ngo install github.com/cheatmd-dev/cheatmd/cmd/cheatmd@latest\n```\n\n## Quick Start\n\n```bash\ncheatmd                    # Browse current directory\ncheatmd ~/cheats           # Browse specific directory\ncheatmd -q \"docker\"        # Start with search query\ncheatmd --history          # Re-run from execution history\ncheatmd convert tldr tar.md -o ~/cheats/tar.md # convert a tldr cheat\ncheatmd packs list         # List installable cheat packs from the registry\ncheatmd packs install      # Pick and install cheat packs (interactive)\n```\n\n### First run\n\nThe first time you run `cheatmd` (before a config file exists) on an\ninteractive terminal, it offers to set you up: it writes a config to\n`~/.config/cheatmd/cheatmd.yaml` and lets you pick **starter cheat packs** to\ninstall from the [registry](https://github.com/cheatmd-dev/registry) into\n`~/.local/share/cheatmd/cheats`. Pick packs from the checklist with `space`, confirm\nwith `enter`. Point `registry_url` at a private/self-hosted `registry.yaml` to\ncustomize the offered packs. Setup is skipped in headless/piped invocations.\n\nYou can install packs any time with the `packs` command — it doesn't depend on\nthe first-run prompt:\n\n```bash\ncheatmd packs list                 # show available packs (and which are installed)\ncheatmd packs install              # interactive picker\ncheatmd packs install git docker   # install specific packs by name\n```\n\n## Features\n\n### Write cheats as Markdown\n\nAny heading with a code block is a cheat. Variables like `$container` become\ninteractive prompts powered by shell commands:\n\n````markdown\n## Docker: exec into container\n\n```sh title:\"Execute shell in container\"\ndocker exec -it $container /bin/sh\n```\n\u003c!-- cheat\nvar container = docker ps --format \"{{.Names}}\" --- --header \"Select container\"\n--\u003e\n````\n\n### Fuzzy search with frecency\n\nType to filter across titles, commands, descriptions, and tags. Cheats you\nrun often and recently float to the top.\n\n### Variables from shell output\n\nVariable values come from shell command output - 0 lines gives a text prompt,\n1 line pre-fills, 2+ lines give a filterable picker.\n\n### Reusable modules\n\nExport a variable definition once, import it in any cheat:\n\n```text\n\u003c!-- cheat\nexport docker_container\nvar container = docker ps --format \"{{.Names}}\"\n--\u003e\n```\n\n### Chains\n\nMulti-step workflows that advance one step per launch:\n\n```text\n/chain release     \u003c- search chains in the picker\n```\n\n### Tags\n\nCheats are tagged automatically from folder paths, YAML front matter, footer\nblocks, inline `#hashtags`, and heading text - all searchable from the picker.\n\n### Shell integration\n\nEmbed CheatMD directly into your shell prompt, tmux, or Zellij:\n\n```bash\neval \"$(cheatmd widget bash)\"   # Ctrl+G opens the selector\n```\n\n### Linting\n\nValidate DSL syntax, imports, chains, and undeclared variables:\n\n```bash\ncheatmd --lint ~/cheats\n```\n\nLanguage-aware: shell builtins like `$HOME` and PowerShell `$true` won't\ntrigger false positives.\n\n### Dump\n\nExport cheat metadata as JSON or CSV for indexing and tooling:\n\n```bash\ncheatmd dump ~/cheats --json\n```\n\n### Convert existing cheatsheets\n\nBring existing collections into CheatMD:\n\n```bash\ncheatmd convert navi ~/navi-cheats -o ~/cheats\ncheatmd convert tldr ~/tldr/pages/common/tar.md -o ~/cheats/tar.md\ncheatmd convert cheat ~/cheat/cheatsheets -o ~/cheats\n```\n\nSupported inputs are `navi`, `tldr`, and `cheat/cheatsheets`.\n\n### Headless Mode\n\nRun CheatMD without a TUI to integrate with other tools (like VS Code or Obsidian) using a JSON-RPC interface over standard I/O:\n\n```bash\ncheatmd --headless -q \"docker exec\"\n```\n\n## Editor Extensions\n\n- **[VS Code](../cheatmd.ext/cheatmd-vscode)** - syntax highlighting, lint diagnostics, completion, and CodeLens execution.\n- **[Neovim](../cheatmd.ext/cheatmd-neovim)** - syntax highlighting, async diagnostics, completion, and `:CheatMDRun`.\n- **[Obsidian](../cheatmd.ext/cheatmd-obsidian)** - inline run buttons, lint status, execution results, and variable autocomplete.\n\n## TUI Keys\n\n| Key | Action |\n|-----|--------|\n| `Ctrl-H` | Execution history |\n| `Ctrl-T` | Substitute search (env + shell history) |\n| `Ctrl-Y` | Markdown preview |\n| `Ctrl-O` | Open source file in editor |\n| `Tab` | Path completion / copy selection |\n\n## Documentation\n\nFull documentation lives in the **[Wiki](../../wiki)**:\n\n- **[Getting Started](../../wiki/Getting-Started)** - first steps with CheatMD\n- **[Writing Cheats](../../wiki/Writing-Cheats)** - heading structure, code blocks, metadata\n- **[Variables](../../wiki/Variables)** - prompt, shell, and literal forms\n- **[Selector Options](../../wiki/Selector-Options)** - `--header`, `--column`, `--map`\n- **[Conditionals](../../wiki/Conditionals)** - `if` / `fi` branching\n- **[Modules](../../wiki/Modules)** - `export` / `import`\n- **[Chains](../../wiki/Chains)** - multi-step workflows\n- **[Tags](../../wiki/Tags)** - five tag sources\n- **[Configuration](../../wiki/Configuration)** - `cheatmd.yaml` reference\n- **[Shell Integration](../../wiki/Shell-Integration)** - widget, tmux, zellij\n- **[Linting](../../wiki/Linting)** - syntax and reference validation\n- **[Dump](../../wiki/Dump)** - metadata export\n- **[Convert](../../wiki/Convert)** - import navi, tldr, and cheat/cheatsheets collections\n- **[Headless Mode](../../wiki/Headless-Mode)** - JSON-RPC programmatic interface\n- **[Recipes](../../wiki/Recipes)** - copy-pasteable patterns\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcheatmd-dev%2Fcheatmd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcheatmd-dev%2Fcheatmd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcheatmd-dev%2Fcheatmd/lists"}