# My Developer Workbench

> Show the development tools I love and how I've automated setting up my development environment.

- Source: https://andrew.codes/posts/devtools/
- Author: Andrew Smith (https://andrew.codes)
- Published: 2023-05-19
- Category: engineering
- Topics: Software craftsmanship
- Reading time: 11 min

## Overview

Today, I'd like to share some of my developer workbench and the software I regularly use. I have categorized them as follows:

- Essential Software
- Implementation Software
- VS Code Extensions

> Note: My primary development machine runs on macOS.

## Essential Software

| Software | Description |
| :- | :- |
| [1Password](https://1password.com/) | Password manager. Also setup to [manage SSH keys](https://developer.1password.com/docs/ssh/). |
| [Racycast](https://www.raycast.com/) | Open apps, perform actions, and other workflows with hotkeys. |
| [Backblaze](https://www.backblaze.com/) | Continuous backups with unlimited storage. |
| [bash](https://www.gnu.org/software/bash/) | Preferred shell. |
| [BetterTouchTool](https://folivora.ai/) | Customize aspects of your mac's trackpad, touch-bar, snap areas, and more. |
| [Discord](https://discord.com/) | Chat application for personal dev communities and the React community. |
| [Docker](https://docs.docker.com/get-docker/) | Running containers/devcontainers locally. |
| [git](https://git-scm.com/) and [GitHub CLI](https://cli.github.com/) | Command-line access to GitHub specific functionality. |
| [Hazel](https://www.noodlesoft.com/manual/hazel/hazel-overview/) | Automated file organization. |
| [Homebrew / Cask](https://brew.sh/) | Enables installing software from the command line. |
| [iTerm 2](https://www.iterm2.com/) | Stand-alone terminal supporting different visual styles. |
| [Karabiner Elements](https://karabiner-elements.pqrs.org/) | Keyboard customizer. |
| [Lens](https://k8slens.dev/) | K8s IDE for managing K8s clusters. |
| [SnagIt](https://www.techsmith.com/screen-capture.html) | Capture screenshots or record your screen. Provides tooling to edit and markup images. |
| [Tailscale](https://tailscale.com/) | Securely access your network from anywhere. |
| [VS Code](https://code.visualstudio.com/) | Primary editor. |

## Implementation Software

| Software | Description |
| :- | :- |
| [ansible](https://www.ansible.com/) | Tool to help audomate IT and infrastructure. |
| [asdf](https://asdf-vm.com/) | Manage multiple versions of installed languages; such as Node.js, python, go, etc. |
| [D2](https://d2lang.com/) | Text based diagramming langugage. |
| [jq](https://stedolan.github.io/jq/) | Bash tool for parsing and manipulating JSON. |
| [jsonnet](https://github.com/google/go-jsonnet) | Bash tool for generating JSON from a template. |
| [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-with-homebrew-on-macos) | Kubernetes management |
| [Proxmox](https://www.proxmox.com/en/proxmox-ve) | Bare-metal hypervisor I use at home to manage and virtualize environments/machines. |
| [terraform](https://www.terraform.io/) | Automate the provision of virtual machines on a variety of platforms/hypervisors. |
| [yq](https://github.com/mikefarah/yq) | Bash tool for parsing and manipulating YAML. |

## VS Code Extensions

> I created a simple bash script to pull these extensions from my VS Code installation. You can find it at the bottom of this page.
>
> Assumes you have `jq` installed from the above list.

| Extension Name | Description |
| :- | :- |
| [1Password](https://marketplace.visualstudio.com/items?itemName=1Password.op-vscode) | Say goodbye to plaintext secrets in your code |
| [Elixir Test Explorer](https://marketplace.visualstudio.com/items?itemName=adamzapasnik.elixir-test-explorer) | Run Elixir tests in the Sidebar of Visual Studio Code |
| [Bookmarks](https://marketplace.visualstudio.com/items?itemName=alefragnani.Bookmarks) | Mark lines and jump to them |
| [Jest Snippets](https://marketplace.visualstudio.com/items?itemName=andrew-codes.jest-snippets) | Jest snippets |
| [Apollo GraphQL](https://marketplace.visualstudio.com/items?itemName=apollographql.vscode-apollo) | Rich editor support for GraphQL client and server development that seamlessly integrates with the Apollo platform |
| [ZipFS - a zip file system](https://marketplace.visualstudio.com/items?itemName=arcanis.vscode-zipfs) | Allows to easily inspect and modify files stored within zip archives. |
| [GitHub Markdown Preview](https://marketplace.visualstudio.com/items?itemName=bierner.github-markdown-preview) | Changes VS Code's built-in markdown preview to match GitHub |
| [Markdown Checkboxes](https://marketplace.visualstudio.com/items?itemName=bierner.markdown-checkbox) | Adds checkbox support to the built-in markdown preview |
| [Markdown Emoji](https://marketplace.visualstudio.com/items?itemName=bierner.markdown-emoji) | Adds emoji syntax support to VS Code's built-in markdown preview and markdown cells in notebook |
| [Markdown Footnotes](https://marketplace.visualstudio.com/items?itemName=bierner.markdown-footnotes) | Adds \[^footnote] syntax support to VS Code's built-in markdown preview |
| [Markdown Preview Mermaid Support](https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid) | Adds Mermaid diagram and flowchart support to VS Code's builtin markdown preview |
| [Markdown Preview Github Styling](https://marketplace.visualstudio.com/items?itemName=bierner.markdown-preview-github-styles) | Changes VS Code's built-in markdown preview to match Github's style |
| [Markdown yaml Preamble](https://marketplace.visualstudio.com/items?itemName=bierner.markdown-yaml-preamble) | Renders yaml front matter as a table in the built-in markdown preview |
| [exports autocomplete](https://marketplace.visualstudio.com/items?itemName=capaj.vscode-exports-autocomplete) | autocompletes javascript module exports from your project |
| [JS CodeFormer: Javascript Refactoring & Code Automation](https://marketplace.visualstudio.com/items?itemName=cmstead.js-codeformer) | A JavaScript/TypeScript refactoring and code automation tool for building better source |
| [JS Refactor :: JS CodeFormer](https://marketplace.visualstudio.com/items?itemName=cmstead.jsrefactor) | Automated refactoring tools to smooth your development workflow |
| [Codecov YAML Validator](https://marketplace.visualstudio.com/items?itemName=Codecov.codecov) | Codecov's official validator extension for Visual Studio Code, it helps with setup and configuration of new repositories. |
| [Jsonnet LSP](https://marketplace.visualstudio.com/items?itemName=cverge.jsonnet-lsp) | Jsonnet IDE Support. Autocomplete, lint, format, goto def, signature help. |
| [markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint) | Markdown linting and style checking for Visual Studio Code |
| [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) | Integrates ESLint JavaScript into VS Code. |
| [EJS language support](https://marketplace.visualstudio.com/items?itemName=DigitalBrainstem.javascript-ejs-support) | 2019 - EJS language support for Visual Studio Code. |
| [null](https://marketplace.visualstudio.com/items?itemName=null.null) | null |
| [eslint-disable-snippets](https://marketplace.visualstudio.com/items?itemName=drKnoxy.eslint-disable-snippets) | Simple snippets to disable eslint rules |
| [GitLens — Git supercharged](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) | Supercharge Git within VS Code — Visualize code authorship at a glance via Git blame annotations and CodeLens, seamlessly navigate and explore Git repositories, gain valuable insights via rich visualizations and powerful comparison commands, and so much more |
| [EditorConfig for VS Code](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) | EditorConfig Support for Visual Studio Code |
| [Prettier - Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) | Code formatter using prettier |
| [shell-format](https://marketplace.visualstudio.com/items?itemName=foxundermoon.shell-format) | A formatter for shell scripts, Dockerfile, gitignore, dotenv, /etc/hosts, jvmoptions, and other file types |
| [HCL Format](https://marketplace.visualstudio.com/items?itemName=fredwangwang.vscode-hcl-format) | format HCL (HashiCorp Configuration Language) |
| [GitHub Codespaces](https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces) | Your instant dev environment |
| [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) | Your AI pair programmer |
| [GitHub Copilot Chat](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat) | AI chat features powered by Copilot |
| [GitHub Repositories](https://marketplace.visualstudio.com/items?itemName=GitHub.remotehub) | Remotely browse and edit any GitHub repository |
| [GitHub Actions](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-github-actions) | GitHub Actions workflows and runs for github.com hosted repositories in VS Code |
| [GitHub Pull Requests](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github) | Pull Request and Issue Provider for GitHub |
| [Jsonnet Language Server](https://marketplace.visualstudio.com/items?itemName=Grafana.vscode-jsonnet) | Full code support (formatting, highlighting, navigation, debugging etc) for Jsonnet |
| [Excel Viewer](https://marketplace.visualstudio.com/items?itemName=GrapeCity.gc-excelviewer) | Edit Excel spreadsheets and CSV files in Visual Studio Code and VS Code for the Web. |
| [GraphQL: Language Feature Support](https://marketplace.visualstudio.com/items?itemName=GraphQL.vscode-graphql) | GraphQL LSP extension that adds autocompletion, validation, go to definition, hover, outline and more. |
| [GraphQL: Syntax Highlighting](https://marketplace.visualstudio.com/items?itemName=GraphQL.vscode-graphql-syntax) | Adds syntax highlighting support for .graphql & embedded support for javascript, typescript, vue, markdown, python, php, reason, ocaml and rescript |
| [HashiCorp Terraform](https://marketplace.visualstudio.com/items?itemName=HashiCorp.terraform) | Syntax highlighting and autocompletion for Terraform |
| [Test Explorer UI](https://marketplace.visualstudio.com/items?itemName=hbenl.vscode-test-explorer) | Run your tests in the Sidebar of Visual Studio Code |
| [Test Explorer Live Share](https://marketplace.visualstudio.com/items?itemName=hbenl.vscode-test-explorer-liveshare) | Use the Test Explorer in your Visual Studio Live Share sessions |
| [REST Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client) | REST Client for Visual Studio Code |
| [Flux](https://marketplace.visualstudio.com/items?itemName=influxdata.flux) | Flux language extension for VSCode |
| [ElixirLS: Elixir support and debugger](https://marketplace.visualstudio.com/items?itemName=JakeBecker.elixir-ls) | Elixir support with debugger, autocomplete, and more - Powered by ElixirLS. |
| [vscode-styled-sort](https://marketplace.visualstudio.com/items?itemName=johnuphoff.vscode-styled-sort) | Opinionated rule sorting for styled-components. |
| [Presentation Mode](https://marketplace.visualstudio.com/items?itemName=jspolancor.presentationmode) | Show your code properly in a presentation |
| [Jest Test Explorer](https://marketplace.visualstudio.com/items?itemName=kavod-io.vscode-jest-test-adapter) | Run your Jest tests in the Sidebar of Visual Studio Code |
| [CodeMetrics](https://marketplace.visualstudio.com/items?itemName=kisstkondoros.vscode-codemetrics) | Computes complexity in TypeScript / JavaScript files. |
| [DotENV](https://marketplace.visualstudio.com/items?itemName=mikestead.dotenv) | Support for dotenv file syntax |
| [File Downloader](https://marketplace.visualstudio.com/items?itemName=mindaro-dev.file-downloader) | Exposes an API that allows other extensions to download files. |
| [Docker](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker) | Makes it easy to create, manage, and debug containerized applications. |
| [C# Dev Kit](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit) | Official C# extension from Microsoft |
| [C#](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) | Base language support for C# |
| [.NET Install Tool](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.vscode-dotnet-runtime) | This extension installs and manages different versions of the .NET SDK and Runtime. |
| [autopep8](https://marketplace.visualstudio.com/items?itemName=ms-python.autopep8) | Formatting support for Python files using the autopep8 formatter. |
| [Python Debugger](https://marketplace.visualstudio.com/items?itemName=ms-python.debugpy) | Python Debugger extension using debugpy. |
| [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) | Python language support with extension access points for IntelliSense (Pylance), Debugging (Python Debugger), linting, formatting, refactoring, unit tests, and more. |
| [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) | A performant, feature-rich language server for Python in VS Code |
| [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) | Open any folder or repository inside a Docker container and take advantage of Visual Studio Code's full feature set. |
| [Remote - SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh) | Open any folder on a remote machine using SSH and take advantage of VS Code's full feature set. |
| [Remote - SSH: Editing Configuration Files](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh-edit) | Edit SSH configuration files |
| [WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) | Open any folder in the Windows Subsystem for Linux (WSL) and take advantage of Visual Studio Code's full feature set. |
| [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) | An extension pack that lets you open any folder in a container, on a remote machine, or in WSL and take advantage of VS Code's full feature set. |
| [Azure Account](https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account) | A common Sign In and Subscription management extension for VS Code. |
| [Live Preview](https://marketplace.visualstudio.com/items?itemName=ms-vscode.live-server) | Hosts a local server in your workspace for you to preview your webpages on. |
| [PowerShell](https://marketplace.visualstudio.com/items?itemName=ms-vscode.PowerShell) | Develop PowerShell modules, commands and scripts in Visual Studio Code! |
| [Remote Explorer](https://marketplace.visualstudio.com/items?itemName=ms-vscode.remote-explorer) | View remote machines for SSH and Tunnels. |
| [Remote Repositories](https://marketplace.visualstudio.com/items?itemName=ms-vscode.remote-repositories) | Remotely browse and edit git repositories |
| [Remote - Tunnels](https://marketplace.visualstudio.com/items?itemName=ms-vscode.remote-server) | Connect to a remote machine through a Tunnel |
| [Test Adapter Converter](https://marketplace.visualstudio.com/items?itemName=ms-vscode.test-adapter-converter) | Converter extension from the Test Adapter UI to native VS Code testing |
| [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) | Real-time collaborative development from the comfort of your favorite tools. |
| [Nx Console](https://marketplace.visualstudio.com/items?itemName=nrwl.angular-console) | The UI for Nx & Lerna |
| [Jest](https://marketplace.visualstudio.com/items?itemName=Orta.vscode-jest) | Use Facebook's Jest With Pleasure. |
| [CSS-in-JS](https://marketplace.visualstudio.com/items?itemName=paulmolluzzo.convert-css-in-js) | CSS-in-JS autocomplete and conversion |
| [Version Lens](https://marketplace.visualstudio.com/items?itemName=pflannery.vscode-versionlens) | Shows the latest version for each package using code lens |
| [Polacode](https://marketplace.visualstudio.com/items?itemName=pnp.polacode) | 📸 Polaroid for your code |
| [Prisma](https://marketplace.visualstudio.com/items?itemName=Prisma.prisma) | Adds syntax highlighting, formatting, auto-completion, jump-to-definition and linting for .prisma files. |
| [XML](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-xml) | XML Language Support by Red Hat |
| [YAML](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml) | YAML Language Support by Red Hat, with built-in Kubernetes syntax support |
| [VSMqtt](https://marketplace.visualstudio.com/items?itemName=rpdswtk.vsmqtt) | VSMqtt is a simple MQTT client integrated in vscode. |
| [Better Jinja](https://marketplace.visualstudio.com/items?itemName=samuelcolvin.jinjahtml) | Syntax highlighting for jinja(2) including HTML, Markdown, YAML, Ruby and LaTeX templates |
| [JavaScript Booster](https://marketplace.visualstudio.com/items?itemName=sburg.vscode-javascript-booster) | Boost your productivity with advanced JavaScript/TypeScript refactorings and commands |
| [Trx viewer](https://marketplace.visualstudio.com/items?itemName=scabana.trxviewer) | Allows visualizing .trx files. |
| [MDX (deprecated)](https://marketplace.visualstudio.com/items?itemName=silvenon.mdx) | Provides syntax highlighting and bracket matching for MDX (JSX in Markdown) files. |
| [Auto Import](https://marketplace.visualstudio.com/items?itemName=steoates.autoimport) | Automatically finds, parses and provides code actions and code completion for all available imports. Works with Typescript and TSX |
| [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker) | Spelling checker for source code |
| [vscode-styled-components](https://marketplace.visualstudio.com/items?itemName=styled-components.vscode-styled-components) | Syntax highlighting for styled-components |
| [Even Better TOML](https://marketplace.visualstudio.com/items?itemName=tamasfe.even-better-toml) | Fully-featured TOML support |
| [D2](https://marketplace.visualstudio.com/items?itemName=terrastruct.d2) | Support for .d2 files. |
| [MDX](https://marketplace.visualstudio.com/items?itemName=unifiedjs.vscode-mdx) | Language support for MDX |
| [BNF & EBNF Highlighting](https://marketplace.visualstudio.com/items?itemName=Vallentin.vscode-bnf) | BNF for Visual Studio Code |
| [CodeTour](https://marketplace.visualstudio.com/items?itemName=vsls-contrib.codetour) | VS Code extension that allows you to record and playback guided tours of codebases, directly within the editor |
| [Import Cost](https://marketplace.visualstudio.com/items?itemName=wix.vscode-import-cost) | Display import/require package size in the editor |
| [MDX Preview](https://marketplace.visualstudio.com/items?itemName=xyc.vscode-mdx-preview) | MDX Preview |
| [Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one) | All you need to write Markdown (keyboard shortcuts, table of contents, auto preview and more) |

```bash
code --install-extension 1password.op-vscode
code --install-extension adamzapasnik.elixir-test-explorer
code --install-extension alefragnani.bookmarks
code --install-extension andrew-codes.jest-snippets
code --install-extension apollographql.vscode-apollo
code --install-extension arcanis.vscode-zipfs
code --install-extension bierner.github-markdown-preview
code --install-extension bierner.markdown-checkbox
code --install-extension bierner.markdown-emoji
code --install-extension bierner.markdown-footnotes
code --install-extension bierner.markdown-mermaid
code --install-extension bierner.markdown-preview-github-styles
code --install-extension bierner.markdown-yaml-preamble
code --install-extension capaj.vscode-exports-autocomplete
code --install-extension cmstead.js-codeformer
code --install-extension cmstead.jsrefactor
code --install-extension codecov.codecov
code --install-extension cverge.jsonnet-lsp
code --install-extension davidanson.vscode-markdownlint
code --install-extension dbaeumer.vscode-eslint
code --install-extension digitalbrainstem.javascript-ejs-support
code --install-extension dracula-theme-pro.theme-dracula-pro
code --install-extension drknoxy.eslint-disable-snippets
code --install-extension eamodio.gitlens
code --install-extension editorconfig.editorconfig
code --install-extension esbenp.prettier-vscode
code --install-extension foxundermoon.shell-format
code --install-extension fredwangwang.vscode-hcl-format
code --install-extension github.codespaces
code --install-extension github.copilot
code --install-extension github.copilot-chat
code --install-extension github.remotehub
code --install-extension github.vscode-github-actions
code --install-extension github.vscode-pull-request-github
code --install-extension grafana.vscode-jsonnet
code --install-extension grapecity.gc-excelviewer
code --install-extension graphql.vscode-graphql
code --install-extension graphql.vscode-graphql-syntax
code --install-extension hashicorp.terraform
code --install-extension hbenl.vscode-test-explorer
code --install-extension hbenl.vscode-test-explorer-liveshare
code --install-extension humao.rest-client
code --install-extension influxdata.flux
code --install-extension jakebecker.elixir-ls
code --install-extension johnuphoff.vscode-styled-sort
code --install-extension jspolancor.presentationmode
code --install-extension kavod-io.vscode-jest-test-adapter
code --install-extension kisstkondoros.vscode-codemetrics
code --install-extension mikestead.dotenv
code --install-extension mindaro-dev.file-downloader
code --install-extension ms-azuretools.vscode-docker
code --install-extension ms-dotnettools.csdevkit
code --install-extension ms-dotnettools.csharp
code --install-extension ms-dotnettools.vscode-dotnet-runtime
code --install-extension ms-python.autopep8
code --install-extension ms-python.debugpy
code --install-extension ms-python.python
code --install-extension ms-python.vscode-pylance
code --install-extension ms-vscode-remote.remote-containers
code --install-extension ms-vscode-remote.remote-ssh
code --install-extension ms-vscode-remote.remote-ssh-edit
code --install-extension ms-vscode-remote.remote-wsl
code --install-extension ms-vscode-remote.vscode-remote-extensionpack
code --install-extension ms-vscode.azure-account
code --install-extension ms-vscode.live-server
code --install-extension ms-vscode.powershell
code --install-extension ms-vscode.remote-explorer
code --install-extension ms-vscode.remote-repositories
code --install-extension ms-vscode.remote-server
code --install-extension ms-vscode.test-adapter-converter
code --install-extension ms-vsliveshare.vsliveshare
code --install-extension nrwl.angular-console
code --install-extension orta.vscode-jest
code --install-extension paulmolluzzo.convert-css-in-js
code --install-extension pflannery.vscode-versionlens
code --install-extension pnp.polacode
code --install-extension prisma.prisma
code --install-extension redhat.vscode-xml
code --install-extension redhat.vscode-yaml
code --install-extension rpdswtk.vsmqtt
code --install-extension samuelcolvin.jinjahtml
code --install-extension sburg.vscode-javascript-booster
code --install-extension scabana.trxviewer
code --install-extension silvenon.mdx
code --install-extension steoates.autoimport
code --install-extension streetsidesoftware.code-spell-checker
code --install-extension styled-components.vscode-styled-components
code --install-extension tamasfe.even-better-toml
code --install-extension terrastruct.d2
code --install-extension unifiedjs.vscode-mdx
code --install-extension vallentin.vscode-bnf
code --install-extension vsls-contrib.codetour
code --install-extension wix.vscode-import-cost
code --install-extension xyc.vscode-mdx-preview
code --install-extension yzhang.markdown-all-in-one
```

### Bash Script

```bash
echo "Ensure the latest bash is installed if using OSX (brew install bash)"

markdown_list_output="| Extension Name | Description |
|:--|:--|"
markdown_install_output="\`\`\`bash"
readarray -t extensions < <(code --list-extensions)
echo "Total extensions: ${#extensions[@]}"
for val in "${extensions[@]}"; do

    markdown_install_output="$markdown_install_output
code --install-extension $val"

    echo "Looking up information on $val"
    extension_data=$(
        curl \
            -s \
            --data "{\"assetTypes\":null,\"filters\":[{\"criteria\":[{\"filterType\":7,\"value\":\"$val\"}],\"direction\":2,\"pageSize\":100,\"pageNumber\":1,\"sortBy\":0,\"sortOrder\":0,\"pagingToken\":null}],\"flags\":2151}" \
            --header "accept: application/json;api-version=3.0-preview.1" \
            --header "content-type: application/json" \
            https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery
    )

    extensionName="$(echo "$extension_data" | jq '.results[0].extensions[0].extensionName')"
    if [ extensionName == 'null' ]; then
        continue
    fi
    markdown_list_output="$markdown_list_output
$(
        echo "$extension_data" |
            jq '"|[\(.results[0].extensions[0].displayName)](https://marketplace.visualstudio.com/items?itemName=\(.results[0].extensions[0].publisher.publisherName).\(.results[0].extensions[0].extensionName)) | \(.results[0].extensions[0].shortDescription) |"' |
            sed 's/\"//g'
    )"
done

markdown_install_output="$markdown_install_output
\`\`\`"

output="$markdown_list_output

$markdown_install_output"

echo "$output"
```
